Statistics
| Branch: | Tag: | Revision:

root / test / hs / htest.hs @ e4dac3e1

History | View | Annotate | Download (4.2 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.Filter
63
import Test.Ganeti.Query.Language
64
import Test.Ganeti.Query.Network
65
import Test.Ganeti.Query.Query
66
import Test.Ganeti.Rpc
67
import Test.Ganeti.Runtime
68
import Test.Ganeti.Ssconf
69
import Test.Ganeti.Storage.Diskstats.Parser
70
import Test.Ganeti.Storage.Drbd.Parser
71
import Test.Ganeti.Storage.Drbd.Types
72
import Test.Ganeti.Storage.Lvm.LVParser
73
import Test.Ganeti.THH
74
import Test.Ganeti.Types
75
import Test.Ganeti.Utils
76

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

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

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