Instance tests are run with or without the exclusive-storage flag set. More configurations can be added easily.
Signed-off-by: Bernardo Dal Seno <[email protected]> --- qa/ganeti-qa.py | 85 ++++++++++++++++++++++++++++++++----------------------- qa/qa-sample.json | 6 +++- 2 files changed, 55 insertions(+), 36 deletions(-) diff --git a/qa/ganeti-qa.py b/qa/ganeti-qa.py index 25ebf8e..dd35a18 100755 --- a/qa/ganeti-qa.py +++ b/qa/ganeti-qa.py @@ -480,6 +480,46 @@ def RunExclusiveStorageTests(): qa_config.ReleaseNode(node) +def RunInstanceTests(): + """Create and exercise instances.""" + instance_tests = [ + ("instance-add-plain-disk", constants.DT_PLAIN, + qa_instance.TestInstanceAddWithPlainDisk, 1), + ("instance-add-drbd-disk", constants.DT_DRBD8, + qa_instance.TestInstanceAddWithDrbdDisk, 2), + ] + + for (test_name, templ, create_fun, num_nodes) in instance_tests: + if (qa_config.TestEnabled(test_name) and + qa_config.IsTemplateSupported(templ)): + inodes = qa_config.AcquireManyNodes(num_nodes) + try: + instance = RunTest(create_fun, inodes) + + RunTestIf("cluster-epo", qa_cluster.TestClusterEpo) + RunDaemonTests(instance) + for node in inodes: + RunTestIf("haskell-confd", qa_node.TestNodeListDrbd, node) + if len(inodes) > 1: + RunTestIf("group-rwops", qa_group.TestAssignNodesIncludingSplit, + constants.INITIAL_NODE_GROUP_NAME, + inodes[0]["primary"], inodes[1]["primary"]) + if qa_config.TestEnabled("instance-convert-disk"): + RunTest(qa_instance.TestInstanceShutdown, instance) + RunTest(qa_instance.TestInstanceConvertDiskToPlain, instance, inodes) + RunTest(qa_instance.TestInstanceStartup, instance) + RunCommonInstanceTests(instance) + RunGroupListTests() + RunExportImportTests(instance, inodes) + RunHardwareFailureTests(instance, inodes) + RunRepairDiskSizes() + RunTest(qa_instance.TestInstanceRemove, instance) + del instance + finally: + qa_config.ReleaseManyNodes(inodes) + qa_cluster.AssertClusterVerify() + + def RunQa(): """Main QA body. @@ -534,42 +574,17 @@ def RunQa(): finally: qa_config.ReleaseNode(pnode) - instance_tests = [ - ("instance-add-plain-disk", constants.DT_PLAIN, - qa_instance.TestInstanceAddWithPlainDisk, 1), - ("instance-add-drbd-disk", constants.DT_DRBD8, - qa_instance.TestInstanceAddWithDrbdDisk, 2), + config_list = [ + ("default-instance-tests", lambda: None, lambda: None), + ("exclusive-storage-instance-tests", + lambda: qa_cluster.TestSetExclStorCluster(True), + lambda: qa_cluster.TestSetExclStorCluster(False)), ] - - for (test_name, templ, create_fun, num_nodes) in instance_tests: - if (qa_config.TestEnabled(test_name) and - qa_config.IsTemplateSupported(templ)): - inodes = qa_config.AcquireManyNodes(num_nodes) - try: - instance = RunTest(create_fun, inodes) - - RunTestIf("cluster-epo", qa_cluster.TestClusterEpo) - RunDaemonTests(instance) - for node in inodes: - RunTestIf("haskell-confd", qa_node.TestNodeListDrbd, node) - if len(inodes) > 1: - RunTestIf("group-rwops", qa_group.TestAssignNodesIncludingSplit, - constants.INITIAL_NODE_GROUP_NAME, - inodes[0]["primary"], inodes[1]["primary"]) - if qa_config.TestEnabled("instance-convert-disk"): - RunTest(qa_instance.TestInstanceShutdown, instance) - RunTest(qa_instance.TestInstanceConvertDiskToPlain, instance, inodes) - RunTest(qa_instance.TestInstanceStartup, instance) - RunCommonInstanceTests(instance) - RunGroupListTests() - RunExportImportTests(instance, inodes) - RunHardwareFailureTests(instance, inodes) - RunRepairDiskSizes() - RunTest(qa_instance.TestInstanceRemove, instance) - del instance - finally: - qa_config.ReleaseManyNodes(inodes) - qa_cluster.AssertClusterVerify() + for (conf_name, setup_conf_f, restore_conf_f) in config_list: + if qa_config.TestEnabled(conf_name): + setup_conf_f() + RunInstanceTests() + restore_conf_f() pnode = qa_config.AcquireNode() try: diff --git a/qa/qa-sample.json b/qa/qa-sample.json index f6f4e6e..dc8f89e 100644 --- a/qa/qa-sample.json +++ b/qa/qa-sample.json @@ -169,7 +169,11 @@ "instance-recreate-disks": false, "# Whether to test the tools/move-instance utility": null, - "inter-cluster-instance-move": false + "inter-cluster-instance-move": false, + + "# Run instance tests with different cluster configurations": null, + "default-instance-tests": true, + "exclusive-storage-instance-tests": false }, "options": { -- 1.8.1 -- You received this message because you are subscribed to the Google Groups "ganeti-devel" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/groups/opt_out.
