Statistics
| Branch: | Tag: | Revision:

root / test / hs / htest.hs @ ca7b4f48

History | View | Annotate | Download (3.8 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.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.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.JSON
55
import Test.Ganeti.Jobs
56
import Test.Ganeti.JQueue
57
import Test.Ganeti.Luxi
58
import Test.Ganeti.Network
59
import Test.Ganeti.Objects
60
import Test.Ganeti.OpCodes
61
import Test.Ganeti.Query.Filter
62
import Test.Ganeti.Query.Language
63
import Test.Ganeti.Query.Query
64
import Test.Ganeti.Rpc
65
import Test.Ganeti.Runtime
66
import Test.Ganeti.Ssconf
67
import Test.Ganeti.THH
68
import Test.Ganeti.Types
69
import Test.Ganeti.Utils
70

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

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

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