Rename test/hs/test to htest
[ganeti-local] / test / hs / htest.hs
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.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.Ssconf
66 import Test.Ganeti.THH
67 import Test.Ganeti.Types
68 import Test.Ganeti.Utils
69
70 -- | Our default test options, overring the built-in test-framework
71 -- ones (but not the supplied command line parameters).
72 defOpts :: TestOptions
73 defOpts = TestOptions
74        { topt_seed                               = Nothing
75        , topt_maximum_generated_tests            = Just 500
76        , topt_maximum_unsuitable_generated_tests = Just 5000
77        , topt_maximum_test_size                  = Nothing
78        , topt_maximum_test_depth                 = Nothing
79        , topt_timeout                            = Nothing
80        }
81
82 -- | All our defined tests.
83 allTests :: [Test]
84 allTests =
85   [ testBasicTypes
86   , testAttoparsec
87   , testCommon
88   , testConfd_Types
89   , testConfd_Utils
90   , testDaemon
91   , testBlock_Drbd_Parser
92   , testBlock_Drbd_Types
93   , testErrors
94   , testHTools_Backend_Simu
95   , testHTools_Backend_Text
96   , testHTools_CLI
97   , testHTools_Cluster
98   , testHTools_Container
99   , testHTools_Graph
100   , testHTools_Instance
101   , testHTools_Loader
102   , testHTools_Node
103   , testHTools_PeerMap
104   , testHTools_Types
105   , testJSON
106   , testJobs
107   , testJQueue
108   , testLuxi
109   , testNetwork
110   , testObjects
111   , testOpCodes
112   , testQuery_Filter
113   , testQuery_Language
114   , testQuery_Query
115   , testRpc
116   , testSsconf
117   , testTHH
118   , testTypes
119   , testUtils
120   ]
121
122 -- | Main function. Note we don't use defaultMain since we want to
123 -- control explicitly our test sizes (and override the default).
124 main :: IO ()
125 main = do
126   ropts <- getArgs >>= interpretArgsOrExit
127   let opts = maybe defOpts (defOpts `mappend`) $ ropt_test_options ropts
128   -- silence the logging system, so that tests can execute I/O actions
129   -- which create logs without polluting stderr
130   -- FIXME: improve this by allowing tests to use logging if needed
131   updateGlobalLogger rootLoggerName (setLevel EMERGENCY)
132   defaultMainWithOpts allTests (ropts { ropt_test_options = Just opts })