Statistics
| Branch: | Tag: | Revision:

root / htest / test.hs @ a664325e

History | View | Annotate | Download (3.7 kB)

1
{-| Unittest runner for ganeti-htools.
2

    
3
-}
4

    
5
{-
6

    
7
Copyright (C) 2009, 2011, 2012 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.Ganeti.TestImports ()
34
import Test.Ganeti.Attoparsec
35
import Test.Ganeti.BasicTypes
36
import Test.Ganeti.Block.Drbd.Parser
37
import Test.Ganeti.Block.Drbd.Types
38
import Test.Ganeti.Common
39
import Test.Ganeti.Confd.Utils
40
import Test.Ganeti.Daemon
41
import Test.Ganeti.Errors
42
import Test.Ganeti.HTools.Backend.Simu
43
import Test.Ganeti.HTools.Backend.Text
44
import Test.Ganeti.HTools.CLI
45
import Test.Ganeti.HTools.Cluster
46
import Test.Ganeti.HTools.Container
47
import Test.Ganeti.HTools.Graph
48
import Test.Ganeti.HTools.Instance
49
import Test.Ganeti.HTools.Loader
50
import Test.Ganeti.HTools.Node
51
import Test.Ganeti.HTools.PeerMap
52
import Test.Ganeti.HTools.Types
53
import Test.Ganeti.JSON
54
import Test.Ganeti.Jobs
55
import Test.Ganeti.Luxi
56
import Test.Ganeti.Network
57
import Test.Ganeti.Objects
58
import Test.Ganeti.OpCodes
59
import Test.Ganeti.Query.Filter
60
import Test.Ganeti.Query.Language
61
import Test.Ganeti.Query.Query
62
import Test.Ganeti.Rpc
63
import Test.Ganeti.Ssconf
64
import Test.Ganeti.THH
65
import Test.Ganeti.Types
66
import Test.Ganeti.Utils
67

    
68
-- | Our default test options, overring the built-in test-framework
69
-- ones (but not the supplied command line parameters).
70
defOpts :: TestOptions
71
defOpts = TestOptions
72
       { topt_seed                               = Nothing
73
       , topt_maximum_generated_tests            = Just 500
74
       , topt_maximum_unsuitable_generated_tests = Just 5000
75
       , topt_maximum_test_size                  = Nothing
76
       , topt_maximum_test_depth                 = Nothing
77
       , topt_timeout                            = Nothing
78
       }
79

    
80
-- | All our defined tests.
81
allTests :: [Test]
82
allTests =
83
  [ testBasicTypes
84
  , testAttoparsec
85
  , testCommon
86
  , testConfd_Utils
87
  , testDaemon
88
  , testBlock_Drbd_Parser
89
  , testBlock_Drbd_Types
90
  , testErrors
91
  , testHTools_Backend_Simu
92
  , testHTools_Backend_Text
93
  , testHTools_CLI
94
  , testHTools_Cluster
95
  , testHTools_Container
96
  , testHTools_Graph
97
  , testHTools_Instance
98
  , testHTools_Loader
99
  , testHTools_Node
100
  , testHTools_PeerMap
101
  , testHTools_Types
102
  , testJSON
103
  , testJobs
104
  , testLuxi
105
  , testNetwork
106
  , testObjects
107
  , testOpCodes
108
  , testQuery_Filter
109
  , testQuery_Language
110
  , testQuery_Query
111
  , testRpc
112
  , testSsconf
113
  , testTHH
114
  , testTypes
115
  , testUtils
116
  ]
117

    
118
-- | Main function. Note we don't use defaultMain since we want to
119
-- control explicitly our test sizes (and override the default).
120
main :: IO ()
121
main = do
122
  ropts <- getArgs >>= interpretArgsOrExit
123
  let opts = maybe defOpts (defOpts `mappend`) $ ropt_test_options ropts
124
  -- silence the logging system, so that tests can execute I/O actions
125
  -- which create logs without polluting stderr
126
  -- FIXME: improve this by allowing tests to use logging if needed
127
  updateGlobalLogger rootLoggerName (setLevel EMERGENCY)
128
  defaultMainWithOpts allTests (ropts { ropt_test_options = Just opts })