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.


Reply via email to