summary refs log tree commit diff stats
path: root/tests/migration/guestperf
diff options
context:
space:
mode:
Diffstat (limited to 'tests/migration/guestperf')
-rw-r--r--tests/migration/guestperf/engine.py29
-rw-r--r--tests/migration/guestperf/plot.py17
-rw-r--r--tests/migration/guestperf/shell.py19
3 files changed, 34 insertions, 31 deletions
diff --git a/tests/migration/guestperf/engine.py b/tests/migration/guestperf/engine.py
index e14d4320b2..398e3f2706 100644
--- a/tests/migration/guestperf/engine.py
+++ b/tests/migration/guestperf/engine.py
@@ -1,3 +1,4 @@
+from __future__ import print_function
 #
 # Migration test main engine
 #
@@ -117,7 +118,7 @@ class Engine(object):
         # XXX how to get dst timings on remote host ?
 
         if self._verbose:
-            print "Sleeping %d seconds for initial guest workload run" % self._sleep
+            print("Sleeping %d seconds for initial guest workload run" % self._sleep)
         sleep_secs = self._sleep
         while sleep_secs > 1:
             src_qemu_time.append(self._cpu_timing(src_pid))
@@ -126,7 +127,7 @@ class Engine(object):
             sleep_secs -= 1
 
         if self._verbose:
-            print "Starting migration"
+            print("Starting migration")
         if scenario._auto_converge:
             resp = src.command("migrate-set-capabilities",
                                capabilities = [
@@ -216,7 +217,7 @@ class Engine(object):
 
                 if progress._status == "completed":
                     if self._verbose:
-                        print "Sleeping %d seconds for final guest workload run" % self._sleep
+                        print("Sleeping %d seconds for final guest workload run" % self._sleep)
                     sleep_secs = self._sleep
                     while sleep_secs > 1:
                         time.sleep(1)
@@ -227,23 +228,23 @@ class Engine(object):
                 return [progress_history, src_qemu_time, src_vcpu_time]
 
             if self._verbose and (loop % 20) == 0:
-                print "Iter %d: remain %5dMB of %5dMB (total %5dMB @ %5dMb/sec)" % (
+                print("Iter %d: remain %5dMB of %5dMB (total %5dMB @ %5dMb/sec)" % (
                     progress._ram._iterations,
                     progress._ram._remaining_bytes / (1024 * 1024),
                     progress._ram._total_bytes / (1024 * 1024),
                     progress._ram._transferred_bytes / (1024 * 1024),
                     progress._ram._transfer_rate_mbs,
-                )
+                ))
 
             if progress._ram._iterations > scenario._max_iters:
                 if self._verbose:
-                    print "No completion after %d iterations over RAM" % scenario._max_iters
+                    print("No completion after %d iterations over RAM" % scenario._max_iters)
                 src.command("migrate_cancel")
                 continue
 
             if time.time() > (start + scenario._max_time):
                 if self._verbose:
-                    print "No completion after %d seconds" % scenario._max_time
+                    print("No completion after %d seconds" % scenario._max_time)
                 src.command("migrate_cancel")
                 continue
 
@@ -251,7 +252,7 @@ class Engine(object):
                 progress._ram._iterations >= scenario._post_copy_iters and
                 not post_copy):
                 if self._verbose:
-                    print "Switching to post-copy after %d iterations" % scenario._post_copy_iters
+                    print("Switching to post-copy after %d iterations" % scenario._post_copy_iters)
                 resp = src.command("migrate-start-postcopy")
                 post_copy = True
 
@@ -259,7 +260,7 @@ class Engine(object):
                 progress._ram._iterations >= scenario._pause_iters and
                 not paused):
                 if self._verbose:
-                    print "Pausing VM after %d iterations" % scenario._pause_iters
+                    print("Pausing VM after %d iterations" % scenario._pause_iters)
                 resp = src.command("stop")
                 paused = True
 
@@ -348,7 +349,7 @@ class Engine(object):
         if not log:
             return []
         if self._debug:
-            print log
+            print(log)
 
         regex = r"[^\s]+\s\((\d+)\):\sINFO:\s(\d+)ms\scopied\s\d+\sGB\sin\s(\d+)ms"
         matcher = re.compile(regex)
@@ -407,7 +408,7 @@ class Engine(object):
             if uri[0:5] == "unix:":
                 os.remove(uri[5:])
             if self._verbose:
-                print "Finished migration"
+                print("Finished migration")
 
             src.shutdown()
             dst.shutdown()
@@ -420,7 +421,7 @@ class Engine(object):
                           self._initrd, self._transport, self._sleep)
         except Exception as e:
             if self._debug:
-                print "Failed: %s" % str(e)
+                print("Failed: %s" % str(e))
             try:
                 src.shutdown()
             except:
@@ -431,7 +432,7 @@ class Engine(object):
                 pass
 
             if self._debug:
-                print src.get_log()
-                print dst.get_log()
+                print(src.get_log())
+                print(dst.get_log())
             raise
 
diff --git a/tests/migration/guestperf/plot.py b/tests/migration/guestperf/plot.py
index bc42249e16..aa98912a82 100644
--- a/tests/migration/guestperf/plot.py
+++ b/tests/migration/guestperf/plot.py
@@ -1,3 +1,4 @@
+from __future__ import print_function
 #
 # Migration test graph plotting
 #
@@ -588,7 +589,7 @@ class Plot(object):
 """
 
     def generate_html(self, fh):
-        print >>fh, """<html>
+        print("""<html>
   <head>
     <script type="text/javascript" src="plotly.min.js">
     </script>
@@ -601,19 +602,19 @@ class Plot(object):
     <h1>Migration report</h1>
     <h2>Chart summary</h2>
     <div id="chart">
-""" % self._generate_style()
-        print >>fh, self._generate_chart()
-        print >>fh, """
+""" % self._generate_style(), file=fh)
+        print(self._generate_chart(), file=fh)
+        print("""
     </div>
     <h2>Report details</h2>
     <div id="report">
-"""
-        print >>fh, self._generate_report()
-        print >>fh, """
+""", file=fh)
+        print(self._generate_report(), file=fh)
+        print("""
     </div>
   </body>
 </html>
-"""
+""", file=fh)
 
     def generate(self, filename):
         if filename is None:
diff --git a/tests/migration/guestperf/shell.py b/tests/migration/guestperf/shell.py
index b272978f47..a6b8cec1e0 100644
--- a/tests/migration/guestperf/shell.py
+++ b/tests/migration/guestperf/shell.py
@@ -1,3 +1,4 @@
+from __future__ import print_function
 #
 # Migration test command line shell integration
 #
@@ -160,13 +161,13 @@ class Shell(BaseShell):
         try:
             report = engine.run(hardware, scenario)
             if args.output is None:
-                print report.to_json()
+                print(report.to_json())
             else:
                 with open(args.output, "w") as fh:
-                    print >>fh, report.to_json()
+                    print(report.to_json(), file=fh)
             return 0
         except Exception as e:
-            print >>sys.stderr, "Error: %s" % str(e)
+            print("Error: %s" % str(e), file=sys.stderr)
             if args.debug:
                 raise
             return 1
@@ -199,11 +200,11 @@ class BatchShell(BaseShell):
                     name = os.path.join(comparison._name, scenario._name)
                     if not fnmatch.fnmatch(name, args.filter):
                         if args.verbose:
-                            print "Skipping %s" % name
+                            print("Skipping %s" % name)
                         continue
 
                     if args.verbose:
-                        print "Running %s" % name
+                        print("Running %s" % name)
 
                     dirname = os.path.join(args.output, comparison._name)
                     filename = os.path.join(dirname, scenario._name + ".json")
@@ -211,9 +212,9 @@ class BatchShell(BaseShell):
                         os.makedirs(dirname)
                     report = engine.run(hardware, scenario)
                     with open(filename, "w") as fh:
-                        print >>fh, report.to_json()
+                        print(report.to_json(), file=fh)
         except Exception as e:
-            print >>sys.stderr, "Error: %s" % str(e)
+            print("Error: %s" % str(e), file=sys.stderr)
             if args.debug:
                 raise
 
@@ -246,14 +247,14 @@ class PlotShell(object):
 
 
         if len(args.reports) == 0:
-            print >>sys.stderr, "At least one report required"
+            print("At least one report required", file=sys.stderr)
             return 1
 
         if not (args.qemu_cpu or
                 args.vcpu_cpu or
                 args.total_guest_cpu or
                 args.split_guest_cpu):
-            print >>sys.stderr, "At least one chart type is required"
+            print("At least one chart type is required", file=sys.stderr)
             return 1
 
         reports = []