Generators for disks
authorHelga Velroyen <helgav@google.com>
Wed, 15 May 2013 12:52:47 +0000 (14:52 +0200)
committerHelga Velroyen <helgav@google.com>
Wed, 15 May 2013 14:43:42 +0000 (16:43 +0200)
This patch adds generators for Disk instances to the Haskell
test code. It uses somewhat more reasonable generators to
fill the fields instead of just arbitrary values.
'genDiskWithChildren' is a generator that generates a disk
with a specified number of disk children. To avoid shooting
ourselves in the foot we do not generate further (grand)
child disks for the child disks. 'genDisk' calls
'genDiskWithChildren' by requesting three children as a
resonable default.

Signed-off-by: Helga Velroyen <helgav@google.com>
Reviewed-by: Klaus Aehlig <aehlig@google.com>

test/hs/Test/Ganeti/Objects.hs

index 23ea054..9fdaec4 100644 (file)
@@ -31,6 +31,8 @@ module Test.Ganeti.Objects
   ( testObjects
   , Node(..)
   , genConfigDataWithNetworks
+  , genDisk
+  , genDiskWithChildren
   , genEmptyCluster
   , genInstWithNets
   , genValidNetwork
@@ -140,6 +142,21 @@ genInstWithNets nets = do
       new_inst = plain_inst { instNics = partial_nics }
   return new_inst
 
+genDiskWithChildren :: Int -> Gen Disk
+genDiskWithChildren num_children = do
+  logicalid <- arbitrary
+  children <- vectorOf num_children (genDiskWithChildren 0)
+  ivname <- genName
+  size <- arbitrary
+  mode <- arbitrary
+  name <- genMaybe genName
+  uuid <- genName
+  let disk = Disk logicalid children ivname size mode name uuid
+  return disk
+
+genDisk :: Gen Disk
+genDisk = genDiskWithChildren 3
+
 -- | FIXME: This generates completely random data, without normal
 -- validation rules.
 $(genArbitrary ''PartialISpecParams)