Statistics
| Branch: | Tag: | Revision:

root / test / hs / htest.hs @ 31d3b918

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.Types
78
import Test.Ganeti.Utils
79

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

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

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