reviewed list options parsing
[tests.git] / system / TestBox.py
index 6c24959..9ad138f 100644 (file)
@@ -1,17 +1,20 @@
-# $Id$
+# Thierry Parmentelat <thierry.parmentelat@inria.fr>
+# Copyright (C) 2010 INRIA 
+#
 # this models a box that hosts qemu nodes
 # could probably also be used for boxes that host plc instances
 import os.path
 import utils
 from TestSsh import TestSsh
 
+# xxx this should probably inherit TestSsh
 class TestBox:
 
     def __init__(self,hostname,buildname,key=None):
         self.hostname_value=hostname
         self.buildname=buildname
         self.key=key
-        self.test_ssh=TestSsh(self)
+        self.test_ssh=TestSsh(self.hostname_value,self.buildname,self.key)
         
     def hostname (self):
         return self.hostname_value
@@ -19,29 +22,28 @@ class TestBox:
     def is_local(self):
         return self.test_ssh.is_local()
     
-    def tar_logs(self):
-        if os.path.isdir("nodeslogs"):
-            tar_command="tar cvf nodeslogs.tar nodeslogs/"
-            self.run_in_buildname (tar_command)
-            return True
-        return False
-    
-    def run_in_buildname (self,command):
-        return self.test_ssh.run_in_buildname (command)
-    # should use rsync instead
+    def run_in_buildname (self,command,background=False):
+        message="On %s: running %s"%(self.hostname(),command)
+        if background: message += " &"
+        utils.header(message)
+        return self.test_ssh.run_in_buildname (command,background)
+
+    # xxx could/should use rsync instead
     def copy (self,local_file,recursive=False):
-        return self.test_ssh.copy (local_file,recursive=False)
-        
-    def clean_dir (self):
-        if self.is_local():
-            return 0
-        return utils.system("rm -rf %s"%self.buildname)            
-
-    def mkdir (self):
-        if self.is_local():
-            return 0
-        return utils.system("mkdir %s"%self.buildname)            
-
-    def kill_all_qemus(self):
-        self.run_in_buildname("killall qemu")
+        return self.test_ssh.copy (local_file,recursive)
+
+    def clean_dir (self,dirname):
+        return self.test_ssh.clean_dir(dirname)
+
+    def mkdir (self,dirname):
+        return self.test_ssh.mkdir(dirname)
+
+    # we need at least one nodename, as template-qemu is not synced on remote testboxes
+    def kill_all_qemus(self,nodedir):
+        self.run_in_buildname("%s/qemu-kill-node"%nodedir)
+        return True
+
+    def list_all_qemus(self):
+        self.run_in_buildname("template-qemu/qemu-kill-node -l")
+        return True