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 <[email protected]> --- test/hs/Test/Ganeti/Objects.hs | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/test/hs/Test/Ganeti/Objects.hs b/test/hs/Test/Ganeti/Objects.hs index 23ea054..9fdaec4 100644 --- a/test/hs/Test/Ganeti/Objects.hs +++ b/test/hs/Test/Ganeti/Objects.hs @@ -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) -- 1.8.2.1
