root / test / hs / Test / Ganeti / Query / Network.hs @ 36162faf
History | View | Annotate | Download (2.9 kB)
1 | 834bea99 | Helga Velroyen | {-# LANGUAGE TemplateHaskell #-} |
---|---|---|---|
2 | 834bea99 | Helga Velroyen | {-# OPTIONS_GHC -fno-warn-orphans #-} |
3 | 834bea99 | Helga Velroyen | |
4 | 834bea99 | Helga Velroyen | {-| Unittests for Network Queries. |
5 | 834bea99 | Helga Velroyen | |
6 | 834bea99 | Helga Velroyen | -} |
7 | 834bea99 | Helga Velroyen | |
8 | 834bea99 | Helga Velroyen | {- |
9 | 834bea99 | Helga Velroyen | |
10 | 834bea99 | Helga Velroyen | Copyright (C) 2013 Google Inc. |
11 | 834bea99 | Helga Velroyen | |
12 | 834bea99 | Helga Velroyen | This program is free software; you can redistribute it and/or modify |
13 | 834bea99 | Helga Velroyen | it under the terms of the GNU General Public License as published by |
14 | 834bea99 | Helga Velroyen | the Free Software Foundation; either version 2 of the License, or |
15 | 834bea99 | Helga Velroyen | (at your option) any later version. |
16 | 834bea99 | Helga Velroyen | |
17 | 834bea99 | Helga Velroyen | This program is distributed in the hope that it will be useful, but |
18 | 834bea99 | Helga Velroyen | WITHOUT ANY WARRANTY; without even the implied warranty of |
19 | 834bea99 | Helga Velroyen | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
20 | 834bea99 | Helga Velroyen | General Public License for more details. |
21 | 834bea99 | Helga Velroyen | |
22 | 834bea99 | Helga Velroyen | You should have received a copy of the GNU General Public License |
23 | 834bea99 | Helga Velroyen | along with this program; if not, write to the Free Software |
24 | 834bea99 | Helga Velroyen | Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA |
25 | 834bea99 | Helga Velroyen | 02110-1301, USA. |
26 | 834bea99 | Helga Velroyen | |
27 | 834bea99 | Helga Velroyen | -} |
28 | 834bea99 | Helga Velroyen | |
29 | 834bea99 | Helga Velroyen | module Test.Ganeti.Query.Network |
30 | 834bea99 | Helga Velroyen | ( testQuery_Network |
31 | 834bea99 | Helga Velroyen | ) where |
32 | 834bea99 | Helga Velroyen | |
33 | 834bea99 | Helga Velroyen | import Ganeti.JSON |
34 | 834bea99 | Helga Velroyen | import Ganeti.Objects |
35 | 834bea99 | Helga Velroyen | import Ganeti.Query.Network |
36 | 834bea99 | Helga Velroyen | import Ganeti.Types |
37 | 834bea99 | Helga Velroyen | |
38 | 834bea99 | Helga Velroyen | import Test.Ganeti.Objects |
39 | 834bea99 | Helga Velroyen | import Test.Ganeti.TestCommon |
40 | 834bea99 | Helga Velroyen | import Test.Ganeti.TestHelper |
41 | 834bea99 | Helga Velroyen | |
42 | 834bea99 | Helga Velroyen | import Test.QuickCheck |
43 | 834bea99 | Helga Velroyen | |
44 | 834bea99 | Helga Velroyen | import qualified Data.Map as Map |
45 | 834bea99 | Helga Velroyen | import Data.Maybe |
46 | 834bea99 | Helga Velroyen | |
47 | 834bea99 | Helga Velroyen | instance Arbitrary ConfigData where |
48 | 834bea99 | Helga Velroyen | arbitrary = genEmptyCluster 0 >>= genConfigDataWithNetworks |
49 | 834bea99 | Helga Velroyen | |
50 | 834bea99 | Helga Velroyen | -- | Check if looking up a valid network ID of a nodegroup yields |
51 | 834bea99 | Helga Velroyen | -- a non-Nothing result. |
52 | 834bea99 | Helga Velroyen | prop_getGroupConnection :: NodeGroup -> Property |
53 | 834bea99 | Helga Velroyen | prop_getGroupConnection group = |
54 | 834bea99 | Helga Velroyen | let net_keys = (Map.keys . fromContainer . groupNetworks) group |
55 | 834bea99 | Helga Velroyen | in True ==? all |
56 | 834bea99 | Helga Velroyen | (\nk -> isJust (getGroupConnection nk group)) net_keys |
57 | 834bea99 | Helga Velroyen | |
58 | 834bea99 | Helga Velroyen | -- | Checks if looking up an ID of a non-existing network in a node group |
59 | 834bea99 | Helga Velroyen | -- yields 'Nothing'. |
60 | 834bea99 | Helga Velroyen | prop_getGroupConnection_notFound :: NodeGroup -> String -> Property |
61 | 834bea99 | Helga Velroyen | prop_getGroupConnection_notFound group uuid = |
62 | 834bea99 | Helga Velroyen | let net_keys = (Map.keys . fromContainer . groupNetworks) group |
63 | 834bea99 | Helga Velroyen | in notElem uuid net_keys ==> isNothing (getGroupConnection uuid group) |
64 | 834bea99 | Helga Velroyen | |
65 | 834bea99 | Helga Velroyen | -- | Checks whether actually connected instances are identified as such. |
66 | 834bea99 | Helga Velroyen | prop_instIsConnected :: ConfigData -> Property |
67 | 834bea99 | Helga Velroyen | prop_instIsConnected cfg = |
68 | 834bea99 | Helga Velroyen | let nets = (fromContainer . configNetworks) cfg |
69 | 834bea99 | Helga Velroyen | net_keys = Map.keys nets |
70 | 834bea99 | Helga Velroyen | net_names = map (fromNonEmpty . networkName) (Map.elems nets) |
71 | 834bea99 | Helga Velroyen | in forAll (genInstWithNets net_names) $ \inst -> |
72 | 834bea99 | Helga Velroyen | True ==? all (\nk -> instIsConnected cfg nk inst) net_keys |
73 | 834bea99 | Helga Velroyen | |
74 | 834bea99 | Helga Velroyen | -- | Tests whether instances that are not connected to a network are |
75 | 834bea99 | Helga Velroyen | -- correctly classified as such. |
76 | 834bea99 | Helga Velroyen | prop_instIsConnected_notFound :: ConfigData -> String -> Property |
77 | 834bea99 | Helga Velroyen | prop_instIsConnected_notFound cfg network_uuid = |
78 | 834bea99 | Helga Velroyen | let nets = (fromContainer . configNetworks) cfg |
79 | 834bea99 | Helga Velroyen | net_keys = Map.keys nets |
80 | 834bea99 | Helga Velroyen | net_names = map (fromNonEmpty . networkName) (Map.elems nets) |
81 | 834bea99 | Helga Velroyen | in notElem network_uuid net_keys ==> |
82 | 834bea99 | Helga Velroyen | forAll (genInstWithNets net_names) $ \inst -> |
83 | 834bea99 | Helga Velroyen | not (instIsConnected cfg network_uuid inst) |
84 | 834bea99 | Helga Velroyen | |
85 | 834bea99 | Helga Velroyen | testSuite "Query_Network" |
86 | 0b08c8bf | Helga Velroyen | [ 'prop_getGroupConnection |
87 | 834bea99 | Helga Velroyen | , 'prop_getGroupConnection_notFound |
88 | 834bea99 | Helga Velroyen | , 'prop_instIsConnected |
89 | 834bea99 | Helga Velroyen | , 'prop_instIsConnected_notFound |
90 | 834bea99 | Helga Velroyen | ] |
91 | 834bea99 | Helga Velroyen |