Revision 6e94b75c test/hs/Test/Ganeti/OpCodes.hs

b/test/hs/Test/Ganeti/OpCodes.hs
45 45
import Test.Ganeti.TestHelper
46 46
import Test.Ganeti.TestCommon
47 47
import Test.Ganeti.Types ()
48
import Test.Ganeti.Query.Language
48
import Test.Ganeti.Query.Language ()
49 49

  
50 50
import Ganeti.BasicTypes
51 51
import qualified Ganeti.Constants as C
......
65 65
                    , pure OpCodes.TagCluster
66 66
                    ]
67 67

  
68
arbitraryOpTagsGet :: Gen OpCodes.OpCode
69
arbitraryOpTagsGet = do
70
  kind <- arbitrary
71
  OpCodes.OpTagsSet kind <$> arbitrary <*> genOpCodesTagName kind
72

  
73
arbitraryOpTagsSet :: Gen OpCodes.OpCode
74
arbitraryOpTagsSet = do
75
  kind <- arbitrary
76
  OpCodes.OpTagsSet kind <$> genTags <*> genOpCodesTagName kind
77

  
78
arbitraryOpTagsDel :: Gen OpCodes.OpCode
79
arbitraryOpTagsDel = do
80
  kind <- arbitrary
81
  OpCodes.OpTagsDel kind <$> genTags <*> genOpCodesTagName kind
82

  
68 83
$(genArbitrary ''OpCodes.ReplaceDisksMode)
69 84

  
70 85
$(genArbitrary ''DiskAccess)
......
74 89

  
75 90
instance Arbitrary INicParams where
76 91
  arbitrary = INicParams <$> genMaybe genNameNE <*> genMaybe genName <*>
77
              genMaybe genNameNE <*> genMaybe genNameNE <*> genMaybe genNameNE
78
              <*> genMaybe genNameNE
92
              genMaybe genNameNE <*> genMaybe genNameNE <*>
93
              genMaybe genNameNE <*> genMaybe genNameNE <*>
94
              genMaybe genNameNE
79 95

  
80 96
instance Arbitrary IDiskParams where
81 97
  arbitrary = IDiskParams <$> arbitrary <*> arbitrary <*>
......
125 141
          return Nothing <*> arbitrary <*> arbitrary <*> arbitrary <*>
126 142
          genMaybe genNameNE <*> arbitrary
127 143
      "OP_TAGS_GET" ->
128
        OpCodes.OpTagsGet <$> arbitrary <*> arbitrary
144
        arbitraryOpTagsGet
129 145
      "OP_TAGS_SEARCH" ->
130 146
        OpCodes.OpTagsSearch <$> genNameNE
131 147
      "OP_TAGS_SET" ->
132
        OpCodes.OpTagsSet <$> arbitrary <*> genTags
148
        arbitraryOpTagsSet
133 149
      "OP_TAGS_DEL" ->
134
        OpCodes.OpTagsSet <$> arbitrary <*> genTags
150
        arbitraryOpTagsDel
135 151
      "OP_CLUSTER_POST_INIT" -> pure OpCodes.OpClusterPostInit
136 152
      "OP_CLUSTER_DESTROY" -> pure OpCodes.OpClusterDestroy
137 153
      "OP_CLUSTER_QUERY" -> pure OpCodes.OpClusterQuery
......
156 172
        OpCodes.OpClusterRename <$> genNameNE
157 173
      "OP_CLUSTER_SET_PARAMS" ->
158 174
        OpCodes.OpClusterSetParams <$> arbitrary <*> emptyMUD <*> emptyMUD <*>
159
          arbitrary <*> genMaybe (listOf1 arbitrary >>= mkNonEmpty) <*>
175
          arbitrary <*> genMaybe arbitrary <*>
160 176
          genMaybe genEmptyContainer <*> emptyMUD <*>
161 177
          genMaybe genEmptyContainer <*> genMaybe genEmptyContainer <*>
162 178
          genMaybe genEmptyContainer <*> genMaybe arbitrary <*>
......
172 188
      "OP_CLUSTER_DEACTIVATE_MASTER_IP" ->
173 189
        pure OpCodes.OpClusterDeactivateMasterIp
174 190
      "OP_QUERY" ->
175
        OpCodes.OpQuery <$> arbitrary <*> arbitrary <*> arbitrary <*> genFilter
191
        OpCodes.OpQuery <$> arbitrary <*> arbitrary <*> arbitrary <*>
192
        pure Nothing
176 193
      "OP_QUERY_FIELDS" ->
177 194
        OpCodes.OpQueryFields <$> arbitrary <*> arbitrary
178 195
      "OP_OOB_COMMAND" ->
......
183 200
        OpCodes.OpNodeRemove <$> genNodeNameNE <*> return Nothing
184 201
      "OP_NODE_ADD" ->
185 202
        OpCodes.OpNodeAdd <$> genNodeNameNE <*> emptyMUD <*> emptyMUD <*>
186
          genMaybe genName <*> genMaybe genNameNE <*> arbitrary <*>
203
          genNameNE <*> genMaybe genNameNE <*> arbitrary <*>
187 204
          genMaybe genNameNE <*> arbitrary <*> arbitrary <*> emptyMUD
188 205
      "OP_NODE_QUERY" ->
189 206
        OpCodes.OpNodeQuery <$> genFieldsNE <*> genNamesNE <*> arbitrary
......
191 208
        OpCodes.OpNodeQueryvols <$> arbitrary <*> genNodeNamesNE
192 209
      "OP_NODE_QUERY_STORAGE" ->
193 210
        OpCodes.OpNodeQueryStorage <$> arbitrary <*> arbitrary <*>
194
          genNodeNamesNE <*> genNameNE
211
          genNodeNamesNE <*> genMaybe genNameNE
195 212
      "OP_NODE_MODIFY_STORAGE" ->
196 213
        OpCodes.OpNodeModifyStorage <$> genNodeNameNE <*> return Nothing <*>
197
          arbitrary <*> genNameNE <*> pure emptyJSObject
214
          arbitrary <*> genMaybe genNameNE <*> pure emptyJSObject
198 215
      "OP_REPAIR_NODE_STORAGE" ->
199 216
        OpCodes.OpRepairNodeStorage <$> genNodeNameNE <*> return Nothing <*>
200
          arbitrary <*> genNameNE <*> arbitrary
217
          arbitrary <*> genMaybe genNameNE <*> arbitrary
201 218
      "OP_NODE_SET_PARAMS" ->
202 219
        OpCodes.OpNodeSetParams <$> genNodeNameNE <*> return Nothing <*>
203 220
          arbitrary <*> emptyMUD <*> emptyMUD <*> arbitrary <*> arbitrary <*>
......
216 233
          genMaybe genNameNE <*> arbitrary
217 234
      "OP_INSTANCE_CREATE" ->
218 235
        OpCodes.OpInstanceCreate <$> genFQDN <*> arbitrary <*>
219
          arbitrary <*> arbitrary <*> arbitrary <*> pure emptyJSObject <*>
220
          arbitrary <*> arbitrary <*> arbitrary <*> genMaybe genNameNE <*>
221
          pure emptyJSObject <*> arbitrary <*> genMaybe genNameNE <*>
222 236
          arbitrary <*> arbitrary <*> arbitrary <*> arbitrary <*>
223
          arbitrary <*> arbitrary <*> pure emptyJSObject <*>
224
          genMaybe genNameNE <*>
225
          genMaybe genNodeNameNE <*> return Nothing <*>
226
          genMaybe genNodeNameNE <*> return Nothing <*>
227
          genMaybe (pure []) <*> genMaybe genNodeNameNE <*>
228
          arbitrary <*> genMaybe genNodeNameNE <*> return Nothing <*>
229
          genMaybe genNodeNameNE <*> genMaybe genNameNE <*>
230
          arbitrary <*> arbitrary <*> (genTags >>= mapM mkNonEmpty)
237
          pure emptyJSObject <*> arbitrary <*> arbitrary <*> arbitrary <*>
238
          genMaybe genNameNE <*> pure emptyJSObject <*> arbitrary <*>
239
          genMaybe genNameNE <*> arbitrary <*> arbitrary <*> arbitrary <*>
240
          arbitrary <*> arbitrary <*> arbitrary <*> pure emptyJSObject <*>
241
          genMaybe genNameNE <*> genMaybe genNodeNameNE <*> return Nothing <*>
242
          genMaybe genNodeNameNE <*> return Nothing <*> genMaybe (pure []) <*>
243
          genMaybe genNodeNameNE <*> arbitrary <*> genMaybe genNodeNameNE <*>
244
          return Nothing <*> genMaybe genNodeNameNE <*> genMaybe genNameNE <*>
245
          arbitrary <*> (genTags >>= mapM mkNonEmpty)
231 246
      "OP_INSTANCE_MULTI_ALLOC" ->
232
        OpCodes.OpInstanceMultiAlloc <$> genMaybe genNameNE <*> pure [] <*>
233
          arbitrary
247
        OpCodes.OpInstanceMultiAlloc <$> arbitrary <*> genMaybe genNameNE <*>
248
        pure []
234 249
      "OP_INSTANCE_REINSTALL" ->
235 250
        OpCodes.OpInstanceReinstall <$> genFQDN <*> return Nothing <*>
236 251
          arbitrary <*> genMaybe genNameNE <*> genMaybe (pure emptyJSObject)
......
267 282
          arbitrary <*> genNodeNamesNE <*> return Nothing <*>
268 283
          genMaybe genNameNE
269 284
      "OP_INSTANCE_QUERY" ->
270
        OpCodes.OpInstanceQuery <$> genFieldsNE <*> genNamesNE <*> arbitrary
285
        OpCodes.OpInstanceQuery <$> genFieldsNE <*> arbitrary <*> genNamesNE
271 286
      "OP_INSTANCE_QUERY_DATA" ->
272 287
        OpCodes.OpInstanceQueryData <$> arbitrary <*>
273 288
          genNodeNamesNE <*> arbitrary
......
323 338
        OpCodes.OpBackupRemove <$> genFQDN <*> return Nothing
324 339
      "OP_TEST_ALLOCATOR" ->
325 340
        OpCodes.OpTestAllocator <$> arbitrary <*> arbitrary <*>
326
          genNameNE <*> pure [] <*> pure [] <*>
341
          genNameNE <*> genMaybe (pure []) <*> genMaybe (pure []) <*>
327 342
          arbitrary <*> genMaybe genNameNE <*>
328 343
          (genTags >>= mapM mkNonEmpty) <*>
329 344
          arbitrary <*> arbitrary <*> genMaybe genNameNE <*>
......
336 351
        OpCodes.OpTestDummy <$> pure J.JSNull <*> pure J.JSNull <*>
337 352
          pure J.JSNull <*> pure J.JSNull
338 353
      "OP_NETWORK_ADD" ->
339
        OpCodes.OpNetworkAdd <$> genNameNE <*> genIp4Net <*>
340
          genMaybe genIp4Addr <*> pure Nothing <*> pure Nothing <*>
341
          genMaybe genMacPrefix <*> genMaybe (listOf genIp4Addr) <*>
354
        OpCodes.OpNetworkAdd <$> genNameNE <*> genIPv4Network <*>
355
          genMaybe genIPv4Address <*> pure Nothing <*> pure Nothing <*>
356
          genMaybe genMacPrefix <*> genMaybe (listOf genIPv4Address) <*>
342 357
          arbitrary <*> (genTags >>= mapM mkNonEmpty)
343 358
      "OP_NETWORK_REMOVE" ->
344 359
        OpCodes.OpNetworkRemove <$> genNameNE <*> arbitrary
345 360
      "OP_NETWORK_SET_PARAMS" ->
346 361
        OpCodes.OpNetworkSetParams <$> genNameNE <*>
347
          genMaybe genIp4Addr <*> pure Nothing <*> pure Nothing <*>
348
          genMaybe genMacPrefix <*> genMaybe (listOf genIp4Addr) <*>
349
          genMaybe (listOf genIp4Addr)
362
          genMaybe genIPv4Address <*> pure Nothing <*> pure Nothing <*>
363
          genMaybe genMacPrefix <*> genMaybe (listOf genIPv4Address) <*>
364
          genMaybe (listOf genIPv4Address)
350 365
      "OP_NETWORK_CONNECT" ->
351 366
        OpCodes.OpNetworkConnect <$> genNameNE <*> genNameNE <*>
352 367
          arbitrary <*> genNameNE <*> arbitrary
353 368
      "OP_NETWORK_DISCONNECT" ->
354 369
        OpCodes.OpNetworkDisconnect <$> genNameNE <*> genNameNE
355 370
      "OP_NETWORK_QUERY" ->
356
        OpCodes.OpNetworkQuery <$> genFieldsNE <*> genNamesNE <*> arbitrary
371
        OpCodes.OpNetworkQuery <$> genFieldsNE <*> arbitrary <*> genNamesNE
357 372
      "OP_RESTRICTED_COMMAND" ->
358 373
        OpCodes.OpRestrictedCommand <$> arbitrary <*> genNodeNamesNE <*>
359 374
          return Nothing <*> genNameNE
......
445 460
     runPython "from ganeti import opcodes\n\
446 461
               \from ganeti import serializer\n\
447 462
               \import sys\n\
448
               \print serializer.Dump([opid for opid in opcodes.OP_MAPPING])\n" ""
463
               \print serializer.Dump([opid for opid in opcodes.OP_MAPPING])\n"
464
               ""
449 465
     >>= checkPythonResult
450 466
  py_ops <- case J.decode py_stdout::J.Result [String] of
451 467
               J.Ok ops -> return ops
......
493 509
        ) opcodes
494 510
  py_stdout <-
495 511
     runPython "from ganeti import opcodes\n\
496
               \import sys\n\
497 512
               \from ganeti import serializer\n\
513
               \import sys\n\
498 514
               \op_data = serializer.Load(sys.stdin.read())\n\
499 515
               \decoded = [opcodes.OpCode.LoadOpCode(o) for o in op_data]\n\
500 516
               \for op in decoded:\n\

Also available in: Unified diff