Revision d2e4e099
b/test/py/ganeti.hypervisor.hv_xen_unittest.py | ||
---|---|---|
37 | 37 |
from ganeti import errors |
38 | 38 |
from ganeti import compat |
39 | 39 |
|
40 |
from ganeti.hypervisor import hv_base |
|
40 | 41 |
from ganeti.hypervisor import hv_xen |
41 | 42 |
|
42 | 43 |
import testutils |
... | ... | |
137 | 138 |
self.assertEqual(result[0][3], 1) |
138 | 139 |
|
139 | 140 |
# State |
140 |
self.assertEqual(result[0][4], "r-----")
|
|
141 |
self.assertEqual(result[0][4], hv_base.HvInstanceState.RUNNING)
|
|
141 | 142 |
|
142 | 143 |
# Time |
143 | 144 |
self.assertAlmostEqual(result[0][5], 121152.6) |
... | ... | |
166 | 167 |
def testTimeout(self): |
167 | 168 |
fn = testutils.CallCounter(self._Fail) |
168 | 169 |
try: |
169 |
hv_xen._GetInstanceList(fn, False, _timeout=0.1) |
|
170 |
hv_xen._GetRunningInstanceList(fn, False, _timeout=0.1)
|
|
170 | 171 |
except errors.HypervisorError, err: |
171 | 172 |
self.assertTrue("timeout exceeded" in str(err)) |
172 | 173 |
else: |
... | ... | |
184 | 185 |
|
185 | 186 |
fn = testutils.CallCounter(compat.partial(self._Success, data)) |
186 | 187 |
|
187 |
result = hv_xen._GetInstanceList(fn, True, _timeout=0.1) |
|
188 |
result = hv_xen._GetRunningInstanceList(fn, True, _timeout=0.1)
|
|
188 | 189 |
|
189 | 190 |
self.assertEqual(len(result), 4) |
190 | 191 |
|
... | ... | |
379 | 380 |
|
380 | 381 |
def testNoHvparams(self): |
381 | 382 |
expected_xen_cmd = "xm" |
382 |
mock_run_cmd = mock.Mock( return_value=self.RESULT_OK )
|
|
383 |
mock_run_cmd = mock.Mock(return_value=self.RESULT_OK)
|
|
383 | 384 |
hv = hv_xen.XenHypervisor(_cfgdir=NotImplemented, |
384 | 385 |
_run_cmd_fn=mock_run_cmd) |
385 | 386 |
self.assertRaises(errors.HypervisorError, hv._GetInstanceList, True, None) |
... | ... | |
387 | 388 |
def testFromHvparams(self): |
388 | 389 |
expected_xen_cmd = "xl" |
389 | 390 |
hvparams = {constants.HV_XEN_CMD: constants.XEN_CMD_XL} |
390 |
mock_run_cmd = mock.Mock( return_value=self.RESULT_OK )
|
|
391 |
mock_run_cmd = mock.Mock(return_value=self.RESULT_OK)
|
|
391 | 392 |
hv = hv_xen.XenHypervisor(_cfgdir=NotImplemented, |
392 | 393 |
_run_cmd_fn=mock_run_cmd) |
393 | 394 |
hv._GetInstanceList(True, hvparams) |
... | ... | |
401 | 402 |
|
402 | 403 |
def testNoHvparams(self): |
403 | 404 |
expected_xen_cmd = "xm" |
404 |
mock_run_cmd = mock.Mock( return_value=self.RESULT_OK )
|
|
405 |
mock_run_cmd = mock.Mock(return_value=self.RESULT_OK)
|
|
405 | 406 |
hv = hv_xen.XenHypervisor(_cfgdir=NotImplemented, |
406 | 407 |
_run_cmd_fn=mock_run_cmd) |
407 | 408 |
self.assertRaises(errors.HypervisorError, hv.ListInstances) |
... | ... | |
409 | 410 |
def testHvparamsXl(self): |
410 | 411 |
expected_xen_cmd = "xl" |
411 | 412 |
hvparams = {constants.HV_XEN_CMD: constants.XEN_CMD_XL} |
412 |
mock_run_cmd = mock.Mock( return_value=self.RESULT_OK )
|
|
413 |
mock_run_cmd = mock.Mock(return_value=self.RESULT_OK)
|
|
413 | 414 |
hv = hv_xen.XenHypervisor(_cfgdir=NotImplemented, |
414 | 415 |
_run_cmd_fn=mock_run_cmd) |
415 | 416 |
hv.ListInstances(hvparams=hvparams) |
... | ... | |
446 | 447 |
def testCheckToolstackXlNotConfigured(self): |
447 | 448 |
RESULT_FAILED = utils.RunResult( |
448 | 449 |
1, None, "", |
449 |
"ERROR: A different toolstack (xm) have been selected!",
|
|
450 |
"ERROR: A different toolstack (xm) has been selected!",
|
|
450 | 451 |
"", None, None) |
451 | 452 |
mock_run_cmd = mock.Mock(return_value=RESULT_FAILED) |
452 | 453 |
hv = hv_xen.XenHypervisor(_cfgdir=NotImplemented, |
... | ... | |
610 | 611 |
self.assertEqual(instid, 1) |
611 | 612 |
self.assertEqual(memory, 1024) |
612 | 613 |
self.assertEqual(vcpus, 1) |
613 |
self.assertEqual(state, "-b----")
|
|
614 |
self.assertEqual(state, hv_base.HvInstanceState.RUNNING)
|
|
614 | 615 |
self.assertAlmostEqual(runtime, 167643.2) |
615 | 616 |
|
616 | 617 |
def testGetInstanceInfoDom0(self): |
... | ... | |
625 | 626 |
self.assertEqual(instid, 0) |
626 | 627 |
self.assertEqual(memory, 1023) |
627 | 628 |
self.assertEqual(vcpus, 1) |
628 |
self.assertEqual(state, "r-----")
|
|
629 |
self.assertEqual(state, hv_base.HvInstanceState.RUNNING)
|
|
629 | 630 |
self.assertAlmostEqual(runtime, 154706.1) |
630 | 631 |
|
631 | 632 |
def testGetInstanceInfoUnknown(self): |
... | ... | |
738 | 739 |
self.assertTrue(("extra = '%s'" % extra) in lines) |
739 | 740 |
|
740 | 741 |
def _StopInstanceCommand(self, instance_name, force, fail, cmd): |
741 |
if ((force and cmd[:2] == [self.CMD, "destroy"]) or |
|
742 |
(not force and cmd[:2] == [self.CMD, "shutdown"])): |
|
742 |
if (cmd == [self.CMD, "list"]): |
|
743 |
output = "Name ID Mem VCPUs State Time(s)\n" \ |
|
744 |
"Domain-0 0 1023 1 r----- 142691.0\n" \ |
|
745 |
"%s 417 128 1 r----- 3.2\n" % instance_name |
|
746 |
elif cmd[:2] == [self.CMD, "destroy"]: |
|
743 | 747 |
self.assertEqual(cmd[2:], [instance_name]) |
744 | 748 |
output = "" |
749 |
elif not force and cmd[:3] == [self.CMD, "shutdown", "-w"]: |
|
750 |
self.assertEqual(cmd[3:], [instance_name]) |
|
751 |
output = "" |
|
745 | 752 |
else: |
746 | 753 |
self.fail("Unhandled command: %s" % (cmd, )) |
747 | 754 |
|
... | ... | |
770 | 777 |
try: |
771 | 778 |
hv._StopInstance(name, force, None) |
772 | 779 |
except errors.HypervisorError, err: |
773 |
self.assertTrue(str(err).startswith("Failed to stop instance")) |
|
780 |
self.assertTrue(str(err).startswith("listing instances failed"), |
|
781 |
msg=str(err)) |
|
774 | 782 |
else: |
775 | 783 |
self.fail("Exception was not raised") |
776 | 784 |
self.assertEqual(utils.ReadFile(cfgfile), cfgdata, |
b/test/py/ganeti.query_unittest.py | ||
---|---|---|
34 | 34 |
from ganeti import cmdlib |
35 | 35 |
|
36 | 36 |
import ganeti.masterd.instance as gmi |
37 |
from ganeti.hypervisor import hv_base |
|
37 | 38 |
|
38 | 39 |
import testutils |
39 | 40 |
|
... | ... | |
806 | 807 |
disks_active=False, |
807 | 808 |
beparams={}, |
808 | 809 |
osparams={}), |
810 |
objects.Instance(name="inst9", hvparams={}, nics=[], |
|
811 |
uuid="inst9-uuid", |
|
812 |
ctime=None, mtime=None, serial_no=19478, |
|
813 |
admin_state=constants.ADMINST_UP, hypervisor=constants.HT_XEN_HVM, |
|
814 |
os="deb99", |
|
815 |
primary_node="node6-uuid", |
|
816 |
disk_template=constants.DT_DISKLESS, |
|
817 |
disks=[], |
|
818 |
disks_active=False, |
|
819 |
beparams={}, |
|
820 |
osparams={}), |
|
809 | 821 |
] |
810 | 822 |
|
811 | 823 |
assert not utils.FindDuplicates(inst.uuid for inst in instances) |
... | ... | |
828 | 840 |
live_data = { |
829 | 841 |
"inst2-uuid": { |
830 | 842 |
"vcpus": 3, |
843 |
"state": hv_base.HvInstanceState.RUNNING, |
|
831 | 844 |
}, |
832 | 845 |
"inst4-uuid": { |
833 | 846 |
"memory": 123, |
847 |
"state": hv_base.HvInstanceState.RUNNING, |
|
834 | 848 |
}, |
835 | 849 |
"inst6-uuid": { |
836 | 850 |
"memory": 768, |
851 |
"state": hv_base.HvInstanceState.RUNNING, |
|
837 | 852 |
}, |
838 | 853 |
"inst7-uuid": { |
839 | 854 |
"vcpus": 3, |
855 |
"state": hv_base.HvInstanceState.RUNNING, |
|
856 |
}, |
|
857 |
"inst9-uuid": { |
|
858 |
"vcpus": 3, |
|
859 |
"state": hv_base.HvInstanceState.SHUTDOWN, |
|
840 | 860 |
}, |
841 | 861 |
} |
842 | 862 |
wrongnode_inst = set(["inst7-uuid"]) |
... | ... | |
880 | 900 |
elif inst.uuid in live_data: |
881 | 901 |
if inst.uuid in wrongnode_inst: |
882 | 902 |
exp_status = constants.INSTST_WRONGNODE |
883 |
elif inst.admin_state == constants.ADMINST_UP: |
|
884 |
exp_status = constants.INSTST_RUNNING |
|
885 | 903 |
else: |
886 |
exp_status = constants.INSTST_ERRORUP |
|
887 |
elif inst.admin_state == constants.ADMINST_UP: |
|
888 |
exp_status = constants.INSTST_ERRORDOWN |
|
889 |
elif inst.admin_state == constants.ADMINST_DOWN: |
|
890 |
exp_status = constants.INSTST_ADMINDOWN |
|
904 |
instance_state = live_data[inst.uuid]["state"] |
|
905 |
if hv_base.HvInstanceState.IsShutdown(instance_state): |
|
906 |
if inst.admin_state == constants.ADMINST_UP: |
|
907 |
exp_status = constants.INSTST_USERDOWN |
|
908 |
else: |
|
909 |
exp_status = constants.INSTST_ADMINDOWN |
|
910 |
else: |
|
911 |
if inst.admin_state == constants.ADMINST_UP: |
|
912 |
exp_status = constants.INSTST_RUNNING |
|
913 |
else: |
|
914 |
exp_status = constants.INSTST_ERRORUP |
|
891 | 915 |
else: |
892 |
exp_status = constants.INSTST_ADMINOFFLINE |
|
916 |
if inst.admin_state == constants.ADMINST_UP: |
|
917 |
exp_status = constants.INSTST_ERRORDOWN |
|
918 |
elif inst.admin_state == constants.ADMINST_DOWN: |
|
919 |
exp_status = constants.INSTST_ADMINDOWN |
|
920 |
else: |
|
921 |
exp_status = constants.INSTST_ADMINOFFLINE |
|
893 | 922 |
|
894 | 923 |
self.assertEqual(row[fieldidx["status"]], |
895 | 924 |
(constants.RS_NORMAL, exp_status)) |
... | ... | |
975 | 1004 |
self._CheckInstanceConsole(inst, row[fieldidx["console"]]) |
976 | 1005 |
|
977 | 1006 |
# Ensure all possible status' have been tested |
978 |
self.assertEqual(tested_status, constants.INSTST_ALL)
|
|
1007 |
self.assertEqual(tested_status, set(constants.INSTST_ALL))
|
|
979 | 1008 |
|
980 | 1009 |
def _CheckInstanceConsole(self, instance, (status, consdata)): |
981 | 1010 |
if instance.name == "inst7": |
Also available in: Unified diff