Add test suite for some names in 'AutoConf'
[ganeti-local] / test / hs / htest.hs
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 })