diff --git a/htest/Test/Ganeti/OpCodes.hs b/htest/Test/Ganeti/OpCodes.hs index 983be4f925dcbd122ee38f8d9e53de84d1b76abf..cf17dd91c9ef35d0b63d6d5ed261fb03fb7cad70 100644 --- a/htest/Test/Ganeti/OpCodes.hs +++ b/htest/Test/Ganeti/OpCodes.hs @@ -66,7 +66,9 @@ $(genArbitrary ''OpCodes.ReplaceDisksMode) instance Arbitrary OpCodes.DiskIndex where arbitrary = choose (0, C.maxDisks - 1) >>= OpCodes.mkDiskIndex -$(genArbitrary ''INicParams) +instance Arbitrary INicParams where + arbitrary = INicParams <$> getMaybe genNameNE <*> getMaybe getName <*> + getMaybe genNameNE <*> getMaybe genNameNE instance Arbitrary OpCodes.OpCode where arbitrary = do @@ -77,7 +79,8 @@ instance Arbitrary OpCodes.OpCode where <*> genNodeNames "OP_INSTANCE_REPLACE_DISKS" -> OpCodes.OpInstanceReplaceDisks <$> getFQDN <*> - getMaybe genNodeNameNE <*> arbitrary <*> genDiskIndices <*> arbitrary + getMaybe genNodeNameNE <*> arbitrary <*> genDiskIndices <*> + getMaybe genNameNE "OP_INSTANCE_FAILOVER" -> OpCodes.OpInstanceFailover <$> getFQDN <*> arbitrary <*> getMaybe genNodeNameNE @@ -93,21 +96,22 @@ instance Arbitrary OpCodes.OpCode where "OP_CLUSTER_QUERY" -> pure OpCodes.OpClusterQuery "OP_CLUSTER_VERIFY" -> OpCodes.OpClusterVerify <$> arbitrary <*> arbitrary <*> - genSet Nothing <*> genSet Nothing <*> arbitrary <*> arbitrary + genSet Nothing <*> genSet Nothing <*> arbitrary <*> + getMaybe genNameNE "OP_CLUSTER_VERIFY_CONFIG" -> OpCodes.OpClusterVerifyConfig <$> arbitrary <*> arbitrary <*> genSet Nothing <*> arbitrary "OP_CLUSTER_VERIFY_GROUP" -> - OpCodes.OpClusterVerifyGroup <$> arbitrary <*> arbitrary <*> + OpCodes.OpClusterVerifyGroup <$> genNameNE <*> arbitrary <*> arbitrary <*> genSet Nothing <*> genSet Nothing <*> arbitrary "OP_CLUSTER_VERIFY_DISKS" -> pure OpCodes.OpClusterVerifyDisks "OP_GROUP_VERIFY_DISKS" -> - OpCodes.OpGroupVerifyDisks <$> arbitrary + OpCodes.OpGroupVerifyDisks <$> genNameNE "OP_CLUSTER_REPAIR_DISK_SIZES" -> OpCodes.OpClusterRepairDiskSizes <$> resize maxNodes (listOf (getFQDN >>= mkNonEmpty)) "OP_CLUSTER_CONFIG_QUERY" -> - OpCodes.OpClusterConfigQuery <$> resize maxNodes arbitrary + OpCodes.OpClusterConfigQuery <$> genFieldsNE "OP_CLUSTER_RENAME" -> OpCodes.OpClusterRename <$> (getName >>= mkNonEmpty) "OP_CLUSTER_SET_PARAMS" -> @@ -135,37 +139,36 @@ instance Arbitrary OpCodes.OpCode where arbitrary <*> arbitrary <*> (arbitrary `suchThat` (>0)) "OP_NODE_REMOVE" -> OpCodes.OpNodeRemove <$> (getFQDN >>= mkNonEmpty) "OP_NODE_ADD" -> - OpCodes.OpNodeAdd <$> (getFQDN >>= mkNonEmpty) <*> - emptyMUD <*> emptyMUD <*> - arbitrary <*> arbitrary <*> arbitrary <*> arbitrary <*> - arbitrary <*> arbitrary <*> emptyMUD + OpCodes.OpNodeAdd <$> genNodeNameNE <*> emptyMUD <*> emptyMUD <*> + getMaybe getName <*> getMaybe genNameNE <*> arbitrary <*> + getMaybe genNameNE <*> arbitrary <*> arbitrary <*> emptyMUD "OP_NODE_QUERY" -> OpCodes.OpNodeQuery <$> arbitrary <*> arbitrary <*> arbitrary "OP_NODE_QUERYVOLS" -> OpCodes.OpNodeQueryvols <$> arbitrary <*> genNodeNamesNE "OP_NODE_QUERY_STORAGE" -> OpCodes.OpNodeQueryStorage <$> arbitrary <*> arbitrary <*> - genNodeNamesNE <*> arbitrary + genNodeNamesNE <*> genNameNE "OP_NODE_MODIFY_STORAGE" -> OpCodes.OpNodeModifyStorage <$> genNodeNameNE <*> arbitrary <*> - arbitrary <*> pure emptyJSObject + genNameNE <*> pure emptyJSObject "OP_REPAIR_NODE_STORAGE" -> OpCodes.OpRepairNodeStorage <$> genNodeNameNE <*> arbitrary <*> - arbitrary <*> arbitrary + genNameNE <*> arbitrary "OP_NODE_SET_PARAMS" -> OpCodes.OpNodeSetParams <$> genNodeNameNE <*> arbitrary <*> emptyMUD <*> emptyMUD <*> arbitrary <*> arbitrary <*> arbitrary <*> - arbitrary <*> arbitrary <*> arbitrary <*> arbitrary <*> + arbitrary <*> arbitrary <*> arbitrary <*> getMaybe genNameNE <*> emptyMUD "OP_NODE_POWERCYCLE" -> OpCodes.OpNodePowercycle <$> genNodeNameNE <*> arbitrary "OP_NODE_MIGRATE" -> OpCodes.OpNodeMigrate <$> genNodeNameNE <*> arbitrary <*> - arbitrary <*> arbitrary <*> arbitrary <*> arbitrary <*> - arbitrary + arbitrary <*> getMaybe genNodeNameNE <*> arbitrary <*> + arbitrary <*> getMaybe genNameNE "OP_NODE_EVACUATE" -> OpCodes.OpNodeEvacuate <$> arbitrary <*> genNodeNameNE <*> - getMaybe genNodeNameNE <*> arbitrary <*> arbitrary + getMaybe genNodeNameNE <*> getMaybe genNameNE <*> arbitrary _ -> fail $ "Undefined arbitrary for opcode " ++ op_id -- * Helper functions @@ -200,6 +203,14 @@ genNodeNamesNE = genNodeNames >>= mapM (mkNonEmpty) genNodeNameNE :: Gen NonEmptyString genNodeNameNE = getFQDN >>= mkNonEmpty +-- | Gets a name (non-fqdn) in non-empty type. +genNameNE :: Gen NonEmptyString +genNameNE = getName >>= mkNonEmpty + +-- | Returns a list of non-empty fields. +genFieldsNE :: Gen [NonEmptyString] +genFieldsNE = getFields >>= mapM mkNonEmpty + -- * Test cases -- | Check that opcode serialization is idempotent.