Statistics
| Branch: | Tag: | Revision:

root / test / hs / htest.hs @ e3b02e1f

History | View | Annotate | Download (4.5 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.Locking.Allocation
60
import Test.Ganeti.Locking.Locks
61
import Test.Ganeti.Luxi
62
import Test.Ganeti.Network
63
import Test.Ganeti.Objects
64
import Test.Ganeti.OpCodes
65
import Test.Ganeti.Query.Aliases
66
import Test.Ganeti.Query.Filter
67
import Test.Ganeti.Query.Instance
68
import Test.Ganeti.Query.Language
69
import Test.Ganeti.Query.Network
70
import Test.Ganeti.Query.Query
71
import Test.Ganeti.Rpc
72
import Test.Ganeti.Runtime
73
import Test.Ganeti.Ssconf
74
import Test.Ganeti.Storage.Diskstats.Parser
75
import Test.Ganeti.Storage.Drbd.Parser
76
import Test.Ganeti.Storage.Drbd.Types
77
import Test.Ganeti.Storage.Lvm.LVParser
78
import Test.Ganeti.THH
79
import Test.Ganeti.THH.Types
80
import Test.Ganeti.Types
81
import Test.Ganeti.Utils
82

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

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

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