Statistics
| Branch: | Tag: | Revision:

root / test / hs / htest.hs @ 36820089

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

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

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

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