[Spice-commits] 2 commits - server/tests tests/migrate.py

Alon Levy alon at kemper.freedesktop.org
Fri Feb 11 09:13:17 PST 2011


 server/tests/basic_event_loop.c |    1 
 tests/migrate.py                |  132 ++++++++++++++++++++++++----------------
 2 files changed, 82 insertions(+), 51 deletions(-)

New commits:
commit 0f4a0aa07ea90c15fe337c9de1b0efaedb5e197c
Author: Alon Levy <alevy at redhat.com>
Date:   Mon Jan 17 09:46:22 2011 +0200

    server/tests/basic_event_loop: fix bzero warning

diff --git a/server/tests/basic_event_loop.c b/server/tests/basic_event_loop.c
index 99c086c..7e8a1df 100644
--- a/server/tests/basic_event_loop.c
+++ b/server/tests/basic_event_loop.c
@@ -1,6 +1,7 @@
 #include <stdlib.h>
 #include <stdio.h>
 #include <sys/time.h>
+#include <strings.h>
 
 #include "test_util.h"
 #include "basic_event_loop.h"
commit 2f9d1e77155aff7eb8e70b06ecfad716a741fdd4
Author: Alon Levy <alevy at redhat.com>
Date:   Mon Jan 17 01:28:55 2011 +0200

    tests/migrate.py: refactor to allow importing for later use

diff --git a/tests/migrate.py b/tests/migrate.py
index c01b107..c5c87dc 100644
--- a/tests/migrate.py
+++ b/tests/migrate.py
@@ -22,7 +22,7 @@ Will leave a log file, migrate_test.log, in current directory.
 #  active migrate tcp:localhost:9000
 #  _wait for event of quit
 #  active stop, active<->passive
-# 
+#
 # wait until it's active
 #  command query-status, if running good
 #  if not listen to events until event of running
@@ -47,9 +47,10 @@ import atexit
 QMP_1, QMP_2 = "/tmp/migrate_test.1.qmp", "/tmp/migrate_test.2.qmp"
 SPICE_PORT_1, SPICE_PORT_2 = 5911, 6911
 MIGRATE_PORT = 9000
+SPICEC_COUNT = 1
 QEMU = "qemu.upstream"
 LOG_FILENAME = "migrate_log.log"
-IMAGE = "/store/images/f14_regular.qcow2"
+IMAGE = "/store/images/F14_CCID.testing.qcow2"
 
 qemu_exec = os.popen("which %s" % QEMU).read().strip()
 
@@ -105,54 +106,83 @@ def wait_for_event(q, event):
                 return
         time.sleep(0.5)
 
-def cleanup(*args):
+def cleanup(migrator):
     print "doing cleanup"
-    os.system("killall %s" % qemu_exec)
-    for x in [QMP_1, QMP_2]:
-        if os.path.exists(x):
-            os.unlink(x)
-
-#################### Main #######################
-
-cleanup()
-atexit.register(cleanup)
-
-active = start_qemu(spice_port=SPICE_PORT_1, qmp_filename=QMP_1)
-target = start_qemu(spice_port=SPICE_PORT_2, qmp_filename=QMP_2,
-                    incoming_port=MIGRATE_PORT)
-
-i = 0
-spicec = None
-log = open(LOG_FILENAME, "a+")
-log.write("# "+str(datetime.datetime.now())+"\n")
-
-while True:
-    wait_active(active.qmp, True)
-    wait_active(target.qmp, False)
-    if spicec == None:
-        spicec = start_spicec(spice_port=SPICE_PORT_1)
-        wait_for_event(active.qmp, 'SPICE_INITIALIZED')
-        print "waiting for Enter to start migrations"
-        raw_input()
-    active.qmp.cmd('client_migrate_info', {'protocol':'spice',
-        'hostname':'localhost', 'port':target.spice_port})
-    active.qmp.cmd('migrate', {'uri': 'tcp:localhost:%s' % MIGRATE_PORT})
-    wait_active(active.qmp, False)
-    wait_active(target.qmp, True)
-    wait_for_event(target.qmp, 'SPICE_CONNECTED')
-    dead = active
-    dead.qmp.cmd("quit")
-    dead.qmp.close()
-    dead.wait()
-    new_spice_port = dead.spice_port
-    new_qmp_filename = dead.qmp_filename
-    log.write("# STDOUT dead %s\n" % dead.pid)
-    log.write(dead.stdout.read())
-    del dead
-    active = target
-    target = start_qemu(spice_port=new_spice_port,
-                        qmp_filename=new_qmp_filename,
-                        incoming_port=MIGRATE_PORT)
-    print i
-    i += 1
+    migrator.close()
+
+class Migrator(object):
+
+    migration_count = 0
+
+    def __init__(self, log, monitor_files, spicec_count, spice_ports, migration_port):
+        self.log = log
+        self.migration_port = migration_port
+        self.spicec_count = spicec_count
+        self.monitor_files = monitor_files
+        self.spice_ports = spice_ports
+        self.active = start_qemu(spice_port=SPICE_PORT_1, qmp_filename=QMP_1)
+        self.target = start_qemu(spice_port=SPICE_PORT_2, qmp_filename=QMP_2,
+                            incoming_port=MIGRATE_PORT)
+        self.remove_monitor_files()
+        self.spicec = []
+
+    def close(self):
+        self.remove_monitor_files()
+        self.kill_qemu()
+
+    def kill_qemu(self):
+        for p in [self.active, self.target]:
+            print "killing and waiting for qemu pid %s" % p.pid
+            p.kill()
+            p.wait()
+
+    def remove_monitor_files(self):
+        for x in self.monitor_files:
+            if os.path.exists(x):
+                os.unlink(x)
+
+    def iterate(self, wait_for_user_input=False):
+        wait_active(self.active.qmp, True)
+        wait_active(self.target.qmp, False)
+        if len(self.spicec) == 0:
+            for i in range(self.spicec_count):
+                self.spicec.append(start_spicec(spice_port=SPICE_PORT_1))
+                wait_for_event(self.active.qmp, 'SPICE_INITIALIZED')
+            if wait_for_user_input:
+                print "waiting for Enter to start migrations"
+                raw_input()
+        self.active.qmp.cmd('client_migrate_info', {'protocol':'spice',
+            'hostname':'localhost', 'port':self.target.spice_port})
+        self.active.qmp.cmd('migrate', {'uri': 'tcp:localhost:%s' % MIGRATE_PORT})
+        wait_active(self.active.qmp, False)
+        wait_active(self.target.qmp, True)
+        wait_for_event(self.target.qmp, 'SPICE_CONNECTED')
+        dead = self.active
+        dead.qmp.cmd("quit")
+        dead.qmp.close()
+        dead.wait()
+        new_spice_port = dead.spice_port
+        new_qmp_filename = dead.qmp_filename
+        self.log.write("# STDOUT dead %s\n" % dead.pid)
+        self.log.write(dead.stdout.read())
+        del dead
+        self.active = self.target
+        self.target = start_qemu(spice_port=new_spice_port,
+                            qmp_filename=new_qmp_filename,
+                            incoming_port=MIGRATE_PORT)
+        print self.migration_count
+        self.migration_count += 1
+
+def main():
+    log = open(LOG_FILENAME, "a+")
+    log.write("# "+str(datetime.datetime.now())+"\n")
+
+    migrator = Migrator(log = log, monitor_files = [QMP_1, QMP_2], migration_port = MIGRATE_PORT,
+        spice_ports = [SPICE_PORT_1, SPICE_PORT_2], spicec_count = SPICEC_COUNT)
+    atexit.register(cleanup, migrator)
+    while True:
+        migrator.iterate()
+
+if __name__ == '__main__':
+    main()
 


More information about the Spice-commits mailing list