LGTM, thanks
On Thu, Jan 24, 2013 at 5:24 PM, Michael Hanselmann <[email protected]>wrote: > Test starting an instance in normal mode, in paused mode, and in case of > failure. > --- > test/py/ganeti.hypervisor.hv_xen_unittest.py | 80 > ++++++++++++++++++++++++++++ > 1 file changed, 80 insertions(+) > > diff --git a/test/py/ganeti.hypervisor.hv_xen_unittest.py b/test/py/ > ganeti.hypervisor.hv_xen_unittest.py > index 18b94a1..78af86f 100755 > --- a/test/py/ganeti.hypervisor.hv_xen_unittest.py > +++ b/test/py/ganeti.hypervisor.hv_xen_unittest.py > @@ -403,6 +403,86 @@ class _TestXenHypervisor(object): > hv = self._GetHv(run_cmd=self._FailingCommand) > self.assertTrue("failed:" in hv.Verify()) > > + def _StartInstanceCommand(self, inst, paused, failcreate, cmd): > + if cmd == [self.CMD, "info"]: > + output = testutils.ReadTestData("xen-xm-info-4.0.1.txt") > + elif cmd == [self.CMD, "list"]: > + output = testutils.ReadTestData("xen-xm-list-4.0.1-dom0-only.txt") > + elif cmd[:2] == [self.CMD, "create"]: > + args = cmd[2:] > + cfgfile = utils.PathJoin(self.tmpdir, inst.name) > + > + if paused: > + self.assertEqual(args, ["-p", cfgfile]) > + else: > + self.assertEqual(args, [cfgfile]) > + > + if failcreate: > + return self._FailingCommand(cmd) > + > + output = "" > + else: > + self.fail("Unhandled command: %s" % (cmd, )) > + > + return self._SuccessCommand(output, cmd) > + #return self._FailingCommand(cmd) > + > + def _MakeInstance(self): > + # Copy default parameters > + bep = objects.FillDict(constants.BEC_DEFAULTS, {}) > + hvp = objects.FillDict(constants.HVC_DEFAULTS[self.HVNAME], {}) > + > + # Override default VNC password file path > + if constants.HV_VNC_PASSWORD_FILE in hvp: > + hvp[constants.HV_VNC_PASSWORD_FILE] = self.vncpw_path > + > + disks = [ > + (objects.Disk(dev_type=constants.LD_LV, mode=constants.DISK_RDWR), > + utils.PathJoin(self.tmpdir, "disk0")), > + (objects.Disk(dev_type=constants.LD_LV, mode=constants.DISK_RDONLY), > + utils.PathJoin(self.tmpdir, "disk1")), > + ] > + > + inst = objects.Instance(name="server01.example.com", > + hvparams=hvp, beparams=bep, > + osparams={}, nics=[], os="deb1", > + disks=map(compat.fst, disks)) > + inst.UpgradeConfig() > + > + return (inst, disks) > + > + def testStartInstance(self): > + (inst, disks) = self._MakeInstance() > + > + for failcreate in [False, True]: > + for paused in [False, True]: > + run_cmd = compat.partial(self._StartInstanceCommand, > + inst, paused, failcreate) > + > + hv = self._GetHv(run_cmd=run_cmd) > + > + # Ensure instance is not listed > + self.assertTrue(inst.name not in hv.ListInstances()) > + > + # Remove configuration > + cfgfile = utils.PathJoin(self.tmpdir, inst.name) > + utils.RemoveFile(cfgfile) > + > + if failcreate: > + self.assertRaises(errors.HypervisorError, hv.StartInstance, > + inst, disks, paused) > + else: > + hv.StartInstance(inst, disks, paused) > + > + # Check if configuration was updated > + lines = utils.ReadFile(cfgfile).splitlines() > + > + if constants.HV_VNC_PASSWORD_FILE in inst.hvparams: > + self.assertTrue(("vncpasswd = '%s'" % self.vncpw) in lines) > + else: > + extra = inst.hvparams[constants.HV_KERNEL_ARGS] > + self.assertTrue(("extra = '%s'" % extra) in lines) > + > > def _MakeTestClass(cls, cmd): > """Makes a class for testing. > -- > 1.8.1 > > --
