Statistics
| Branch: | Tag: | Revision:

root / htest / test.hs @ fef919b7

History | View | Annotate | Download (3.7 kB)

1
{-| Unittest runner for ganeti-htools.
2

    
3
-}
4

    
5
{-
6

    
7
Copyright (C) 2009, 2011, 2012 Google Inc.
8

    
9
This program is free software; you can redistribute it and/or modify
10
it under the terms of the GNU General Public License as published by
11
the Free Software Foundation; either version 2 of the License, or
12
(at your option) any later version.
13

    
14
This program is distributed in the hope that it will be useful, but
15
WITHOUT ANY WARRANTY; without even the implied warranty of
16
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
17
General Public License for more details.
18

    
19
You should have received a copy of the GNU General Public License
20
along with this program; if not, write to the Free Software
21
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
22
02110-1301, USA.
23

    
24
-}
25

    
26
module Main(main) where
27

    
28
import Data.Monoid (mappend)
29
import Test.Framework
30
import System.Environment (getArgs)
31
import System.Log.Logger
32

    
33
import Test.Ganeti.TestImports ()
34
import Test.Ganeti.Attoparsec
35
import Test.Ganeti.BasicTypes
36
import Test.Ganeti.Block.Drbd.Parser
37
import Test.Ganeti.Block.Drbd.Types
38
import Test.Ganeti.Common
39
import Test.Ganeti.Confd.Utils
40
import Test.Ganeti.Confd.Types
41
import Test.Ganeti.Daemon
42
import Test.Ganeti.Errors
43
import Test.Ganeti.HTools.Backend.Simu
44
import Test.Ganeti.HTools.Backend.Text
45
import Test.Ganeti.HTools.CLI
46
import Test.Ganeti.HTools.Cluster
47
import Test.Ganeti.HTools.Container
48
import Test.Ganeti.HTools.Graph
49
import Test.Ganeti.HTools.Instance
50
import Test.Ganeti.HTools.Loader
51
import Test.Ganeti.HTools.Node
52
import Test.Ganeti.HTools.PeerMap
53
import Test.Ganeti.HTools.Types
54
import Test.Ganeti.JSON
55
import Test.Ganeti.Jobs
56
import Test.Ganeti.Luxi
57
import Test.Ganeti.Network
58
import Test.Ganeti.Objects
59
import Test.Ganeti.OpCodes
60
import Test.Ganeti.Query.Filter
61
import Test.Ganeti.Query.Language
62
import Test.Ganeti.Query.Query
63
import Test.Ganeti.Rpc
64
import Test.Ganeti.Ssconf
65
import Test.Ganeti.THH
66
import Test.Ganeti.Types
67
import Test.Ganeti.Utils
68

    
69
-- | Our default test options, overring the built-in test-framework
70
-- ones (but not the supplied command line parameters).
71
defOpts :: TestOptions
72
defOpts = TestOptions
73
       { topt_seed                               = Nothing
74
       , topt_maximum_generated_tests            = Just 500
75
       , topt_maximum_unsuitable_generated_tests = Just 5000
76
       , topt_maximum_test_size                  = Nothing
77
       , topt_maximum_test_depth                 = Nothing
78
       , topt_timeout                            = Nothing
79
       }
80

    
81
-- | All our defined tests.
82
allTests :: [Test]
83
allTests =
84
  [ testBasicTypes
85
  , testAttoparsec
86
  , testCommon
87
  , testConfd_Types
88
  , testConfd_Utils
89
  , testDaemon
90
  , testBlock_Drbd_Parser
91
  , testBlock_Drbd_Types
92
  , testErrors
93
  , testHTools_Backend_Simu
94
  , testHTools_Backend_Text
95
  , testHTools_CLI
96
  , testHTools_Cluster
97
  , testHTools_Container
98
  , testHTools_Graph
99
  , testHTools_Instance
100
  , testHTools_Loader
101
  , testHTools_Node
102
  , testHTools_PeerMap
103
  , testHTools_Types
104
  , testJSON
105
  , testJobs
106
  , testLuxi
107
  , testNetwork
108
  , testObjects
109
  , testOpCodes
110
  , testQuery_Filter
111
  , testQuery_Language
112
  , testQuery_Query
113
  , testRpc
114
  , testSsconf
115
  , testTHH
116
  , testTypes
117
  , testUtils
118
  ]
119

    
120
-- | Main function. Note we don't use defaultMain since we want to
121
-- control explicitly our test sizes (and override the default).
122
main :: IO ()
123
main = do
124
  ropts <- getArgs >>= interpretArgsOrExit
125
  let opts = maybe defOpts (defOpts `mappend`) $ ropt_test_options ropts
126
  -- silence the logging system, so that tests can execute I/O actions
127
  -- which create logs without polluting stderr
128
  -- FIXME: improve this by allowing tests to use logging if needed
129
  updateGlobalLogger rootLoggerName (setLevel EMERGENCY)
130
  defaultMainWithOpts allTests (ropts { ropt_test_options = Just opts })