fine-grain & brute force qemu kill (kill_qemus and kill_all_qemus)
[tests.git] / system / utils.py
index 971ff52..4468b20 100644 (file)
@@ -1,7 +1,50 @@
 # $Id$
 import time
+import os
+import commands
+import pprint
 
 # how could this accept a list again ?
 def header(message):
     now=time.strftime("%H:%M:%S", time.localtime())
     print "*",now,'--',message
+
+def show_spec(message,spec,depth=2):
+    now=time.strftime("%H:%M:%S", time.localtime())
+    print ">",now,"--",message
+    pprint.PrettyPrinter(indent=6,depth=depth).pprint(spec)
+
+def system(command):
+    now=time.strftime("%H:%M:%S", time.localtime())
+    print "+",now,':',command
+    return os.system("set -x; " + command)
+
+# checks whether a given hostname/ip responds to ping
+ping_timeout_option = None
+def check_ping (hostname):
+    # check OS (support for macos)
+    global ping_timeout_option
+    if not ping_timeout_option:
+        (status,osname) = commands.getstatusoutput("uname -s")
+        if status != 0:
+            raise Exception, "Cannot figure your OS name"
+        if osname == "Linux":
+            ping_timeout_option="-w"
+        elif osname == "Darwin":
+            ping_timeout_option="-t"
+
+    command="ping -c 1 %s 1 %s"%(ping_timeout_option,hostname)
+    (status,output) = commands.getstatusoutput(command)
+    return status == 0
+
+# inserts a backslash before each occurence of the following chars
+# \ " ' < > & | ; ( ) $ * ~ 
+def backslash_shell_specials (command):
+    result=''
+    for char in command:
+        if char in "\\\"'<>&|;()$*~":
+            result +='\\'+char
+        else:
+            result +=char
+    return result
+