From 1ae7a904bae825f74f32ae92aa66429f261c0f2d Mon Sep 17 00:00:00 2001 From: Iustin Pop <iustin@google.com> Date: Mon, 31 Aug 2009 23:22:47 +0100 Subject: [PATCH] Add some more instance tests This include instance text load tests. --- Ganeti/HTools/QC.hs | 52 ++++++++++++++++++++++++++++++++++++++++++- Ganeti/HTools/Text.hs | 1 + test.hs | 1 + 3 files changed, 53 insertions(+), 1 deletion(-) diff --git a/Ganeti/HTools/QC.hs b/Ganeti/HTools/QC.hs index fe214cd36..e20e1af8e 100644 --- a/Ganeti/HTools/QC.hs +++ b/Ganeti/HTools/QC.hs @@ -28,6 +28,7 @@ module Ganeti.HTools.QC , test_Container , test_Instance , test_Node + , test_Text ) where import Test.QuickCheck @@ -61,7 +62,10 @@ instance Arbitrary Instance.Instance where name <- arbitrary mem <- choose(0, 100) dsk <- choose(0, 100) - run_st <- arbitrary + run_st <- elements ["ERROR_up", "ERROR_down", "ADMIN_down" + , "ERROR_nodedown", "ERROR_nodeoffline" + , "running" + , "no_such_status1", "no_such_status2"] pn <- arbitrary sn <- arbitrary vcpus <- arbitrary @@ -162,12 +166,58 @@ prop_Instance_setBoth inst pdx sdx = where _types = (inst::Instance.Instance, pdx::Types.Ndx, sdx::Types.Ndx) si = Instance.setBoth inst pdx sdx +prop_Instance_runStatus_True inst = + let run_st = Instance.running inst + run_tx = Instance.run_st inst + in + run_tx == "running" || run_tx == "ERROR_up" ==> run_st == True + +prop_Instance_runStatus_False inst = + let run_st = Instance.running inst + run_tx = Instance.run_st inst + in + run_tx /= "running" && run_tx /= "ERROR_up" ==> run_st == False + test_Instance = [ run prop_Instance_setIdx , run prop_Instance_setName , run prop_Instance_setPri , run prop_Instance_setSec , run prop_Instance_setBoth + , run prop_Instance_runStatus_True + , run prop_Instance_runStatus_False + ] + +-- Instance text loader tests + +prop_Text_Load_Instance name mem dsk vcpus status pnode snode pdx sdx = + let vcpus_s = show vcpus + dsk_s = show dsk + mem_s = show mem + rsnode = snode ++ "a" -- non-empty secondary node + rsdx = if pdx == sdx + then sdx + 1 + else sdx + ndx = [(pnode, pdx), (rsnode, rsdx)] + inst = Text.loadInst ndx + (name:mem_s:dsk_s:vcpus_s:status:pnode:rsnode:[]):: + Maybe (String, Instance.Instance) + _types = ( name::String, mem::Int, dsk::Int + , vcpus::Int, status::String + , pnode::String, snode::String + , pdx::Types.Ndx, sdx::Types.Ndx) + in + case inst of + Nothing -> False + Just (_, i) -> + (Instance.name i == name && + Instance.vcpus i == vcpus && + Instance.mem i == mem && + Instance.pnode i == pdx && + Instance.snode i == rsdx) + +test_Text = + [ run prop_Text_Load_Instance ] -- Node tests diff --git a/Ganeti/HTools/Text.hs b/Ganeti/HTools/Text.hs index 3db802e01..aea0c00ed 100644 --- a/Ganeti/HTools/Text.hs +++ b/Ganeti/HTools/Text.hs @@ -29,6 +29,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA module Ganeti.HTools.Text ( loadData + , loadInst ) where import Control.Monad diff --git a/test.hs b/test.hs index 59d6f101d..ab90f0169 100644 --- a/test.hs +++ b/test.hs @@ -38,3 +38,4 @@ main = do runTests "Container" options test_Container runTests "Instance" options test_Instance runTests "Node" options test_Node + runTests "Text" options test_Text -- GitLab