1 {-# LANGUAGE TemplateHaskell #-}
2 {-# OPTIONS_GHC -fno-warn-orphans #-}
4 {-| Unittests for ganeti-htools.
10 Copyright (C) 2009, 2010, 2011, 2012 Google Inc.
12 This program is free software; you can redistribute it and/or modify
13 it under the terms of the GNU General Public License as published by
14 the Free Software Foundation; either version 2 of the License, or
15 (at your option) any later version.
17 This program is distributed in the hope that it will be useful, but
18 WITHOUT ANY WARRANTY; without even the implied warranty of
19 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
20 General Public License for more details.
22 You should have received a copy of the GNU General Public License
23 along with this program; if not, write to the Free Software
24 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
29 module Test.Ganeti.Jobs (testJobs) where
31 import Test.QuickCheck
33 import qualified Text.JSON as J
35 import Test.Ganeti.TestHelper
36 import Test.Ganeti.TestCommon
38 import qualified Ganeti.Jobs as Jobs
40 -- * Arbitrary instances
42 instance Arbitrary Jobs.OpStatus where
43 arbitrary = elements [minBound..maxBound]
45 instance Arbitrary Jobs.JobStatus where
46 arbitrary = elements [minBound..maxBound]
50 -- | Check that (queued) job\/opcode status serialization is idempotent.
51 prop_OpStatus_serialization :: Jobs.OpStatus -> Property
52 prop_OpStatus_serialization os =
53 case J.readJSON (J.showJSON os) of
54 J.Error e -> failTest $ "Cannot deserialise: " ++ e
55 J.Ok os' -> os ==? os'
57 prop_JobStatus_serialization :: Jobs.JobStatus -> Property
58 prop_JobStatus_serialization js =
59 case J.readJSON (J.showJSON js) of
60 J.Error e -> failTest $ "Cannot deserialise: " ++ e
61 J.Ok js' -> js ==? js'
64 [ 'prop_OpStatus_serialization
65 , 'prop_JobStatus_serialization