From d9b681ea9c8ed4368b488fa7032b19b25c49e3be Mon Sep 17 00:00:00 2001 From: Helga Velroyen <helgav@google.com> Date: Wed, 15 May 2013 14:52:47 +0200 Subject: [PATCH] Generators for disks 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 | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/test/hs/Test/Ganeti/Objects.hs b/test/hs/Test/Ganeti/Objects.hs index 23ea054eb..9fdaec4b3 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) -- GitLab