Many of the KVM related unittests are multiple tests in a single method and include non-trivial logic. This patch splits the tests in multiple methods, each of which has trivial logic.
Signed-off-by: Aaron Karper <[email protected]> --- test/py/ganeti.hypervisor.hv_kvm_unittest.py | 122 +++++++++++++++------------ 1 file changed, 69 insertions(+), 53 deletions(-) diff --git a/test/py/ganeti.hypervisor.hv_kvm_unittest.py b/test/py/ganeti.hypervisor.hv_kvm_unittest.py index a99157b..c831461 100755 --- a/test/py/ganeti.hypervisor.hv_kvm_unittest.py +++ b/test/py/ganeti.hypervisor.hv_kvm_unittest.py @@ -319,73 +319,89 @@ class TestConsole(unittest.TestCase): class TestVersionChecking(testutils.GanetiTestCase): - def testParseVersion(self): - parse = hv_kvm.KVMHypervisor._ParseKVMVersion - help_112 = testutils.ReadTestData("kvm_1.1.2_help.txt") - help_10 = testutils.ReadTestData("kvm_1.0_help.txt") - help_01590 = testutils.ReadTestData("kvm_0.15.90_help.txt") - help_0125 = testutils.ReadTestData("kvm_0.12.5_help.txt") - help_091 = testutils.ReadTestData("kvm_0.9.1_help.txt") - self.assertEqual(parse(help_112), ("1.1.2", 1, 1, 2)) - self.assertEqual(parse(help_10), ("1.0", 1, 0, 0)) - self.assertEqual(parse(help_01590), ("0.15.90", 0, 15, 90)) - self.assertEqual(parse(help_0125), ("0.12.5", 0, 12, 5)) - self.assertEqual(parse(help_091), ("0.9.1", 0, 9, 1)) + @staticmethod + def ParseTestData(name): + help = testutils.ReadTestData(name) + return hv_kvm.KVMHypervisor._ParseKVMVersion(help) + def testParseVersion112(self): + self.assertEqual( + self.ParseTestData("kvm_1.1.2_help.txt"), ("1.1.2", 1, 1, 2)) -class TestSpiceParameterList(unittest.TestCase): - def test(self): - defaults = constants.HVC_DEFAULTS[constants.HT_KVM] + def testParseVersion10(self): + self.assertEqual(self.ParseTestData("kvm_1.0_help.txt"), ("1.0", 1, 0, 0)) + + def testParseVersion01590(self): + self.assertEqual( + self.ParseTestData("kvm_0.15.90_help.txt"), ("0.15.90", 0, 15, 90)) + + def testParseVersion0125(self): + self.assertEqual( + self.ParseTestData("kvm_0.12.5_help.txt"), ("0.12.5", 0, 12, 5)) - params = \ - compat.UniqueFrozenset(getattr(constants, name) - for name in dir(constants) - if name.startswith("HV_KVM_SPICE_")) + def testParseVersion091(self): + self.assertEqual( + self.ParseTestData("kvm_0.9.1_help.txt"), ("0.9.1", 0, 9, 1)) - # Parameters whose default value evaluates to True and don't need to be set - defaults_true = frozenset(filter(defaults.__getitem__, params)) - self.assertEqual(defaults_true, frozenset([ - constants.HV_KVM_SPICE_AUDIO_COMPR, - constants.HV_KVM_SPICE_USE_VDAGENT, - constants.HV_KVM_SPICE_TLS_CIPHERS, - ])) +class TestSpiceParameterList(unittest.TestCase): + def setUp(self): + self.defaults = constants.HVC_DEFAULTS[constants.HT_KVM] + + def testAudioCompressionDefaultOn(self): + self.assertTrue(self.defaults[constants.HV_KVM_SPICE_AUDIO_COMPR]) - # HV_KVM_SPICE_BIND decides whether the other parameters must be set if - # their default evaluates to False - assert constants.HV_KVM_SPICE_BIND in params - assert constants.HV_KVM_SPICE_BIND not in defaults_true + def testVdAgentDefaultOn(self): + self.assertTrue(self.defaults[constants.HV_KVM_SPICE_USE_VDAGENT]) - # Exclude some parameters - params -= defaults_true | frozenset([ - constants.HV_KVM_SPICE_BIND, - ]) + def testTlsCiphersDefaultOn(self): + self.assertTrue(self.defaults[constants.HV_KVM_SPICE_TLS_CIPHERS]) - self.assertEqual(hv_kvm._SPICE_ADDITIONAL_PARAMS, params) + def testBindDefaultOff(self): + self.assertFalse(self.defaults[constants.HV_KVM_SPICE_BIND]) + + def testAdditionalParams(self): + params = compat.UniqueFrozenset( + getattr(constants, name) + for name in dir(constants) + if name.startswith("HV_KVM_SPICE_")) + fixed = set([ + constants.HV_KVM_SPICE_BIND, constants.HV_KVM_SPICE_TLS_CIPHERS, + constants.HV_KVM_SPICE_USE_VDAGENT, constants.HV_KVM_SPICE_AUDIO_COMPR]) + self.assertEqual(hv_kvm._SPICE_ADDITIONAL_PARAMS, params - fixed) class TestHelpRegexps(testutils.GanetiTestCase): - def testBootRe(self): - """Check _BOOT_RE + """Check _BOOT_RE - It has too match -drive.*boot=on|off except if there is another dash-option - at the beginning of the line. + It has too match -drive.*boot=on|off except if there is another dash-option + at the beginning of the line. - """ + """ + + @staticmethod + def SearchTestData(name): boot_re = hv_kvm.KVMHypervisor._BOOT_RE - help_112 = testutils.ReadTestData("kvm_1.1.2_help.txt") - help_10 = testutils.ReadTestData("kvm_1.0_help.txt") - help_01590 = testutils.ReadTestData("kvm_0.15.90_help.txt") - help_0125 = testutils.ReadTestData("kvm_0.12.5_help.txt") - help_091 = testutils.ReadTestData("kvm_0.9.1_help.txt") - help_091_fake = testutils.ReadTestData("kvm_0.9.1_help_boot_test.txt") - - self.assertTrue(boot_re.search(help_091)) - self.assertTrue(boot_re.search(help_0125)) - self.assertFalse(boot_re.search(help_091_fake)) - self.assertFalse(boot_re.search(help_112)) - self.assertFalse(boot_re.search(help_10)) - self.assertFalse(boot_re.search(help_01590)) + help = testutils.ReadTestData(name) + return boot_re.search(help) + + def testBootRe112(self): + self.assertFalse(self.SearchTestData("kvm_1.1.2_help.txt")) + + def testBootRe10(self): + self.assertFalse(self.SearchTestData("kvm_1.0_help.txt")) + + def testBootRe01590(self): + self.assertFalse(self.SearchTestData("kvm_0.15.90_help.txt")) + + def testBootRe0125(self): + self.assertTrue(self.SearchTestData("kvm_0.12.5_help.txt")) + + def testBootRe091(self): + self.assertTrue(self.SearchTestData("kvm_0.9.1_help.txt")) + + def testBootRe091_fake(self): + self.assertFalse(self.SearchTestData("kvm_0.9.1_help_boot_test.txt")) class TestGetTunFeatures(unittest.TestCase): -- 2.1.0.rc2.206.gedb03e5
