1 {-| Unittest runner for ganeti-htools.
7 Copyright (C) 2009, 2011, 2012 Google Inc.
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.
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.
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
26 module Main(main) where
28 import Data.Monoid (mappend)
30 import System.Environment (getArgs)
31 import System.Log.Logger
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
68 -- | Our default test options, overring the built-in test-framework
69 -- ones (but not the supplied command line parameters).
70 defOpts :: TestOptions
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
80 -- | All our defined tests.
88 , testBlock_Drbd_Parser
89 , testBlock_Drbd_Types
91 , testHTools_Backend_Simu
92 , testHTools_Backend_Text
95 , testHTools_Container
118 -- | Main function. Note we don't use defaultMain since we want to
119 -- control explicitly our test sizes (and override the default).
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 })