Statistics
| Branch: | Tag: | Revision:

root / test / hs / htest.hs @ 93f1e606

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

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

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

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