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

Reply via email to