Statistics
| Branch: | Tag: | Revision:

root / test / hs / htest.hs @ 63571096

History | View | Annotate | Download (4.3 kB)

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

    
3
-}
4

    
5
{-
6

    
7
Copyright (C) 2009, 2011, 2012, 2013 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.AutoConf
34
import Test.Ganeti.TestImports ()
35
import Test.Ganeti.Attoparsec
36
import Test.Ganeti.BasicTypes
37
import Test.Ganeti.Common
38
import Test.Ganeti.Constants
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.Hypervisor.Xen.XmParser
55
import Test.Ganeti.JSON
56
import Test.Ganeti.Jobs
57
import Test.Ganeti.JQueue
58
import Test.Ganeti.Kvmd
59
import Test.Ganeti.Luxi
60
import Test.Ganeti.Network
61
import Test.Ganeti.Objects
62
import Test.Ganeti.OpCodes
63
import Test.Ganeti.Query.Aliases
64
import Test.Ganeti.Query.Filter
65
import Test.Ganeti.Query.Instance
66
import Test.Ganeti.Query.Language
67
import Test.Ganeti.Query.Network
68
import Test.Ganeti.Query.Query
69
import Test.Ganeti.Rpc
70
import Test.Ganeti.Runtime
71
import Test.Ganeti.Ssconf
72
import Test.Ganeti.Storage.Diskstats.Parser
73
import Test.Ganeti.Storage.Drbd.Parser
74
import Test.Ganeti.Storage.Drbd.Types
75
import Test.Ganeti.Storage.Lvm.LVParser
76
import Test.Ganeti.THH
77
import Test.Ganeti.THH.Types
78
import Test.Ganeti.Types
79
import Test.Ganeti.Utils
80

    
81
-- | Our default test options, overring the built-in test-framework
82
-- ones (but not the supplied command line parameters).
83
defOpts :: TestOptions
84
defOpts = TestOptions
85
       { topt_seed                               = Nothing
86
       , topt_maximum_generated_tests            = Just 500
87
       , topt_maximum_unsuitable_generated_tests = Just 5000
88
       , topt_maximum_test_size                  = Nothing
89
       , topt_maximum_test_depth                 = Nothing
90
       , topt_timeout                            = Nothing
91
       }
92

    
93
-- | All our defined tests.
94
allTests :: [Test]
95
allTests =
96
  [ testAutoConf
97
  , testBasicTypes
98
  , testAttoparsec
99
  , testCommon
100
  , testConstants
101
  , testConfd_Types
102
  , testConfd_Utils
103
  , testDaemon
104
  , testBlock_Diskstats_Parser
105
  , testBlock_Drbd_Parser
106
  , testBlock_Drbd_Types
107
  , testErrors
108
  , testHTools_Backend_Simu
109
  , testHTools_Backend_Text
110
  , testHTools_CLI
111
  , testHTools_Cluster
112
  , testHTools_Container
113
  , testHTools_Graph
114
  , testHTools_Instance
115
  , testHTools_Loader
116
  , testHTools_Node
117
  , testHTools_PeerMap
118
  , testHTools_Types
119
  , testHypervisor_Xen_XmParser
120
  , testJSON
121
  , testJobs
122
  , testJQueue
123
  , testKvmd
124
  , testLuxi
125
  , testNetwork
126
  , testObjects
127
  , testOpCodes
128
  , testQuery_Aliases
129
  , testQuery_Filter
130
  , testQuery_Instance
131
  , testQuery_Language
132
  , testQuery_Network
133
  , testQuery_Query
134
  , testRpc
135
  , testRuntime
136
  , testSsconf
137
  , testStorage_Lvm_LVParser
138
  , testTHH
139
  , testTHH_Types
140
  , testTypes
141
  , testUtils
142
  ]
143

    
144
-- | Main function. Note we don't use defaultMain since we want to
145
-- control explicitly our test sizes (and override the default).
146
main :: IO ()
147
main = do
148
  ropts <- getArgs >>= interpretArgsOrExit
149
  let opts = maybe defOpts (defOpts `mappend`) $ ropt_test_options ropts
150
  -- silence the logging system, so that tests can execute I/O actions
151
  -- which create logs without polluting stderr
152
  -- FIXME: improve this by allowing tests to use logging if needed
153
  updateGlobalLogger rootLoggerName (setLevel EMERGENCY)
154
  defaultMainWithOpts allTests (ropts { ropt_test_options = Just opts })