Revision 75bf3149 test/py/ganeti.hypervisor.hv_xen_unittest.py

b/test/py/ganeti.hypervisor.hv_xen_unittest.py
412 412
    mock_run_cmd.assert_called_with([expected_xen_cmd, self.XEN_LIST])
413 413

  
414 414

  
415
class TestXenHypervisorCheckToolstack(unittest.TestCase):
416

  
417
  def setUp(self):
418
    self.tmpdir = tempfile.mkdtemp()
419
    self.cfg_name = "xen_config"
420
    self.cfg_path = utils.PathJoin(self.tmpdir, self.cfg_name)
421
    self.hv = hv_xen.XenHypervisor()
422

  
423
  def tearDown(self):
424
    shutil.rmtree(self.tmpdir)
425

  
426
  def testBinaryNotFound(self):
427
    RESULT_FAILED = utils.RunResult(1, None, "", "", "", None, None)
428
    mock_run_cmd = mock.Mock(return_value=RESULT_FAILED)
429
    hv = hv_xen.XenHypervisor(_cfgdir=NotImplemented,
430
                              _run_cmd_fn=mock_run_cmd)
431
    result = hv._CheckToolstackBinary("xl")
432
    self.assertFalse(result)
433

  
434
  def testCheckToolstackXlConfigured(self):
435
    RESULT_OK = utils.RunResult(0, None, "", "", "", None, None)
436
    mock_run_cmd = mock.Mock(return_value=RESULT_OK)
437
    hv = hv_xen.XenHypervisor(_cfgdir=NotImplemented,
438
                              _run_cmd_fn=mock_run_cmd)
439
    result = hv._CheckToolstackXlConfigured()
440
    self.assertTrue(result)
441

  
442
  def testCheckToolstackXlNotConfigured(self):
443
    RESULT_FAILED = utils.RunResult(
444
        1, None, "",
445
        "ERROR:  A different toolstack (xm) have been selected!",
446
        "", None, None)
447
    mock_run_cmd = mock.Mock(return_value=RESULT_FAILED)
448
    hv = hv_xen.XenHypervisor(_cfgdir=NotImplemented,
449
                              _run_cmd_fn=mock_run_cmd)
450
    result = hv._CheckToolstackXlConfigured()
451
    self.assertFalse(result)
452

  
453
  def testCheckToolstackXlFails(self):
454
    RESULT_FAILED = utils.RunResult(
455
        1, None, "",
456
        "ERROR: The pink bunny hid the binary.",
457
        "", None, None)
458
    mock_run_cmd = mock.Mock(return_value=RESULT_FAILED)
459
    hv = hv_xen.XenHypervisor(_cfgdir=NotImplemented,
460
                              _run_cmd_fn=mock_run_cmd)
461
    self.assertRaises(errors.HypervisorError, hv._CheckToolstackXlConfigured)
462

  
463

  
415 464
class TestXenHypervisorWriteConfigFile(unittest.TestCase):
416 465
  def setUp(self):
417 466
    self.tmpdir = tempfile.mkdtemp()
......
436 485
      self.fail("Exception was not raised")
437 486

  
438 487

  
488
class TestXenHypervisorVerify(unittest.TestCase):
489

  
490
  def setUp(self):
491
    output = testutils.ReadTestData("xen-xm-info-4.0.1.txt")
492
    self._result_ok = utils.RunResult(0, None, output, "", "", None, None)
493

  
494
  def testVerify(self):
495
    hvparams = {constants.HV_XEN_CMD : constants.XEN_CMD_XL}
496
    mock_run_cmd = mock.Mock(return_value=self._result_ok)
497
    hv = hv_xen.XenHypervisor(_cfgdir=NotImplemented,
498
                              _run_cmd_fn=mock_run_cmd)
499
    hv._CheckToolstack = mock.Mock(return_value=True)
500
    result = hv.Verify(hvparams)
501
    self.assertTrue(result is None)
502

  
503
  def testVerifyToolstackNotOk(self):
504
    hvparams = {constants.HV_XEN_CMD : constants.XEN_CMD_XL}
505
    mock_run_cmd = mock.Mock(return_value=self._result_ok)
506
    hv = hv_xen.XenHypervisor(_cfgdir=NotImplemented,
507
                              _run_cmd_fn=mock_run_cmd)
508
    hv._CheckToolstack = mock.Mock()
509
    hv._CheckToolstack.side_effect = errors.HypervisorError("foo")
510
    result = hv.Verify(hvparams)
511
    self.assertTrue(result is not None)
512

  
513
  def testVerifyFailing(self):
514
    result_failed = utils.RunResult(1, None, "", "", "", None, None)
515
    mock_run_cmd = mock.Mock(return_value=result_failed)
516
    hv = hv_xen.XenHypervisor(_cfgdir=NotImplemented,
517
                              _run_cmd_fn=mock_run_cmd)
518
    hv._CheckToolstack = mock.Mock(return_value=True)
519
    result = hv.Verify()
520
    self.assertTrue(result is not None)
521

  
522

  
439 523
class _TestXenHypervisor(object):
440 524
  TARGET = NotImplemented
441 525
  CMD = NotImplemented
......
565 649
      "testinstance.example.com",
566 650
      ])
567 651

  
568
  def testVerify(self):
569
    output = testutils.ReadTestData("xen-xm-info-4.0.1.txt")
570
    hv = self._GetHv(run_cmd=compat.partial(self._SuccessCommand,
571
                                            output))
572
    self.assertTrue(hv.Verify() is None)
573

  
574
  def testVerifyFailing(self):
575
    hv = self._GetHv(run_cmd=self._FailingCommand)
576
    self.assertTrue("failed:" in hv.Verify())
577

  
578 652
  def _StartInstanceCommand(self, inst, paused, failcreate, cmd):
579 653
    if cmd == [self.CMD, "info"]:
580 654
      output = testutils.ReadTestData("xen-xm-info-4.0.1.txt")

Also available in: Unified diff