From 2df929903f07f77cd2a5cd17d67589a8f5df05a5 Mon Sep 17 00:00:00 2001
From: Michael Hanselmann <hansmi@google.com>
Date: Thu, 21 Feb 2013 16:27:22 +0100
Subject: [PATCH] QA: Add virtual cluster support to queue drain test

The path to the queue drain file must use the virtual node path.

Signed-off-by: Michael Hanselmann <hansmi@google.com>
Reviewed-by: Bernardo Dal Seno <bdalseno@google.com>
---
 qa/qa_cluster.py | 32 +++++++++++++++++++++++---------
 1 file changed, 23 insertions(+), 9 deletions(-)

diff --git a/qa/qa_cluster.py b/qa/qa_cluster.py
index 813036c95..ac3419ca0 100644
--- a/qa/qa_cluster.py
+++ b/qa/qa_cluster.py
@@ -576,34 +576,48 @@ def TestClusterMasterFailover():
     failovermaster.Release()
 
 
+def _NodeQueueDrainFile(node):
+  """Returns path to queue drain file for a node.
+
+  """
+  return qa_utils.MakeNodePath(node, pathutils.JOB_QUEUE_DRAIN_FILE)
+
+
+def _AssertDrainFile(node, **kwargs):
+  """Checks for the queue drain file.
+
+  """
+  AssertCommand(["test", "-f", _NodeQueueDrainFile(node)], node=node, **kwargs)
+
+
 def TestClusterMasterFailoverWithDrainedQueue():
   """gnt-cluster master-failover with drained queue"""
-  drain_check = ["test", "-f", pathutils.JOB_QUEUE_DRAIN_FILE]
-
   master = qa_config.GetMasterNode()
   failovermaster = qa_config.AcquireNode(exclude=master)
 
   # Ensure queue is not drained
   for node in [master, failovermaster]:
-    AssertCommand(drain_check, node=node, fail=True)
+    _AssertDrainFile(node, fail=True)
 
   # Drain queue on failover master
-  AssertCommand(["touch", pathutils.JOB_QUEUE_DRAIN_FILE], node=failovermaster)
+  AssertCommand(["touch", _NodeQueueDrainFile(failovermaster)],
+                node=failovermaster)
 
   cmd = ["gnt-cluster", "master-failover"]
   try:
-    AssertCommand(drain_check, node=failovermaster)
+    _AssertDrainFile(failovermaster)
     AssertCommand(cmd, node=failovermaster)
-    AssertCommand(drain_check, fail=True)
-    AssertCommand(drain_check, node=failovermaster, fail=True)
+    _AssertDrainFile(master, fail=True)
+    _AssertDrainFile(failovermaster, fail=True)
 
     # Back to original master node
     AssertCommand(cmd, node=master)
   finally:
     failovermaster.Release()
 
-  AssertCommand(drain_check, fail=True)
-  AssertCommand(drain_check, node=failovermaster, fail=True)
+  # Ensure queue is not drained
+  for node in [master, failovermaster]:
+    _AssertDrainFile(node, fail=True)
 
 
 def TestClusterCopyfile():
-- 
GitLab