This patch adds a few tests that make sure the state is handled properly, using examples taken from a running cluster.
Signed-off-by: Hrvoje Ribicic <[email protected]> --- Makefile.am | 1 + test/data/xen-xl-list-4.4-crashed-instances.txt | 5 +++++ test/py/ganeti.hypervisor.hv_xen_unittest.py | 30 +++++++++++++++++++++++++ 3 files changed, 36 insertions(+) create mode 100644 test/data/xen-xl-list-4.4-crashed-instances.txt diff --git a/Makefile.am b/Makefile.am index 79c964e..939f88c 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1698,6 +1698,7 @@ TEST_FILES = \ test/data/vgreduce-removemissing-2.02.66-ok.txt \ test/data/vgs-missing-pvs-2.02.02.txt \ test/data/vgs-missing-pvs-2.02.66.txt \ + test/data/xen-xl-list-4.4-crashed-instances.txt \ test/data/xen-xm-info-4.0.1.txt \ test/data/xen-xm-list-4.0.1-dom0-only.txt \ test/data/xen-xm-list-4.0.1-four-instances.txt \ diff --git a/test/data/xen-xl-list-4.4-crashed-instances.txt b/test/data/xen-xl-list-4.4-crashed-instances.txt new file mode 100644 index 0000000..aa8ae49 --- /dev/null +++ b/test/data/xen-xl-list-4.4-crashed-instances.txt @@ -0,0 +1,5 @@ +Name ID Mem VCPUs State Time(s) +Domain-0 0 1023 1 r----- 154706.1 +server01.example.com 1 1024 1 -b---- 167643.2 +(null) 28441 789 1 --psc- 1.2 +alsodying.example.com 28448 1024 1 --psc- 1.4 diff --git a/test/py/ganeti.hypervisor.hv_xen_unittest.py b/test/py/ganeti.hypervisor.hv_xen_unittest.py index ddb92d4..ba6324e 100755 --- a/test/py/ganeti.hypervisor.hv_xen_unittest.py +++ b/test/py/ganeti.hypervisor.hv_xen_unittest.py @@ -198,6 +198,19 @@ class TestInstanceStateParsing(unittest.TestCase): self.assertEqual(hv_xen._XenToHypervisorInstanceState(state), hv_base.HvInstanceState.SHUTDOWN) + def testCrashingStates(self): + states = [ + "--psc-", + "---sc-", + "---scd", + "--p-c-", + "----c-", + "----cd", + ] + for state in states: + self.assertRaises(hv_xen._InstanceCrashed, + hv_xen._XenToHypervisorInstanceState, state) + class TestGetInstanceList(testutils.GanetiTestCase): def _Fail(self): @@ -241,6 +254,23 @@ class TestGetInstanceList(testutils.GanetiTestCase): self.assertEqual(fn.Count(), 1) + def testOmitCrashed(self): + data = testutils.ReadTestData("xen-xl-list-4.4-crashed-instances.txt") + + fn = testutils.CallCounter(compat.partial(self._Success, data)) + + result = hv_xen._GetAllInstanceList(fn, True, delays=(0.02, 1.0, 0.03), + timeout=0.1) + + self.assertEqual(len(result), 2) + + self.assertEqual(map(compat.fst, result), [ + "Domain-0", + "server01.example.com", + ]) + + self.assertEqual(fn.Count(), 1) + class TestParseNodeInfo(testutils.GanetiTestCase): def testEmpty(self): -- 2.4.3.573.g4eafbef
