From patchwork Thu Dec 8 16:03:50 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John McNamara X-Patchwork-Id: 17772 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [IPv6:::1]) by dpdk.org (Postfix) with ESMTP id B7AB92B8E; Thu, 8 Dec 2016 17:04:06 +0100 (CET) Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by dpdk.org (Postfix) with ESMTP id 2C57C2B8E for ; Thu, 8 Dec 2016 17:04:03 +0100 (CET) Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by orsmga105.jf.intel.com with ESMTP; 08 Dec 2016 08:04:02 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.33,320,1477983600"; d="scan'208";a="40408868" Received: from sivswdev02.ir.intel.com (HELO localhost.localdomain) ([10.237.217.46]) by fmsmga005.fm.intel.com with ESMTP; 08 Dec 2016 08:04:01 -0800 From: John McNamara To: dev@dpdk.org Cc: mkletzan@redhat.com, John McNamara Date: Thu, 8 Dec 2016 16:03:50 +0000 Message-Id: <1481213032-14935-2-git-send-email-john.mcnamara@intel.com> X-Mailer: git-send-email 1.7.0.7 In-Reply-To: <1481212265-10229-1-git-send-email-john.mcnamara@intel.com> References: <1481212265-10229-1-git-send-email-john.mcnamara@intel.com> Subject: [dpdk-dev] [PATCH v2 2/4] app: make python apps python2/3 compliant X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Make all the DPDK Python apps work with Python 2 or 3 to allow them to work with whatever is the system default. Signed-off-by: John McNamara --- app/cmdline_test/cmdline_test.py | 26 ++++++++++++------------ app/cmdline_test/cmdline_test_data.py | 2 +- app/test/autotest.py | 10 ++++----- app/test/autotest_runner.py | 37 +++++++++++++++++----------------- tools/cpu_layout.py | 38 ++++++++++++++++++----------------- tools/dpdk-pmdinfo.py | 12 ++++++----- 6 files changed, 64 insertions(+), 61 deletions(-) diff --git a/app/cmdline_test/cmdline_test.py b/app/cmdline_test/cmdline_test.py index 4729987..229f71f 100755 --- a/app/cmdline_test/cmdline_test.py +++ b/app/cmdline_test/cmdline_test.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/env python # BSD LICENSE # @@ -32,7 +32,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # Script that runs cmdline_test app and feeds keystrokes into it. - +from __future__ import print_function import cmdline_test_data import os import pexpect @@ -81,38 +81,38 @@ def runHistoryTest(child): # the path to cmdline_test executable is supplied via command-line. if len(sys.argv) < 2: - print "Error: please supply cmdline_test app path" + print("Error: please supply cmdline_test app path") sys.exit(1) test_app_path = sys.argv[1] if not os.path.exists(test_app_path): - print "Error: please supply cmdline_test app path" + print("Error: please supply cmdline_test app path") sys.exit(1) child = pexpect.spawn(test_app_path) -print "Running command-line tests..." +print("Running command-line tests...") for test in cmdline_test_data.tests: - print (test["Name"] + ":").ljust(30), + testname = (test["Name"] + ":").ljust(30) try: runTest(child, test) - print "PASS" + print(testname, "PASS") except: - print "FAIL" - print child + print(testname, "FAIL") + print(child) sys.exit(1) # since last test quits the app, run new instance child = pexpect.spawn(test_app_path) -print ("History fill test:").ljust(30), +testname = ("History fill test:").ljust(30) try: runHistoryTest(child) - print "PASS" + print(testname, "PASS") except: - print "FAIL" - print child + print(testname, "FAIL") + print(child) sys.exit(1) child.close() sys.exit(0) diff --git a/app/cmdline_test/cmdline_test_data.py b/app/cmdline_test/cmdline_test_data.py index 3ce6cbc..9cc966b 100644 --- a/app/cmdline_test/cmdline_test_data.py +++ b/app/cmdline_test/cmdline_test_data.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/env python # BSD LICENSE # diff --git a/app/test/autotest.py b/app/test/autotest.py index 3a00538..5c19a02 100644 --- a/app/test/autotest.py +++ b/app/test/autotest.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/env python # BSD LICENSE # @@ -32,15 +32,15 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # Script that uses either test app or qemu controlled by python-pexpect - +from __future__ import print_function import autotest_data import autotest_runner import sys def usage(): - print"Usage: autotest.py [test app|test iso image]", - print "[target] [whitelist|-blacklist]" + print("Usage: autotest.py [test app|test iso image] ", + "[target] [whitelist|-blacklist]") if len(sys.argv) < 3: usage() @@ -63,7 +63,7 @@ def usage(): cmdline = "%s -c f -n 4" % (sys.argv[1]) -print cmdline +print(cmdline) runner = autotest_runner.AutotestRunner(cmdline, target, test_blacklist, test_whitelist) diff --git a/app/test/autotest_runner.py b/app/test/autotest_runner.py index 55b63a8..7aeb0bd 100644 --- a/app/test/autotest_runner.py +++ b/app/test/autotest_runner.py @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/env python # BSD LICENSE # @@ -271,15 +271,16 @@ def __process_results(self, results): total_time = int(cur_time - self.start) # print results, test run time and total time since start - print ("%s:" % test_name).ljust(30), - print result_str.ljust(29), - print "[%02dm %02ds]" % (test_time / 60, test_time % 60), + result = ("%s:" % test_name).ljust(30) + result += result_str.ljust(29) + result += "[%02dm %02ds]" % (test_time / 60, test_time % 60) # don't print out total time every line, it's the same anyway if i == len(results) - 1: - print "[%02dm %02ds]" % (total_time / 60, total_time % 60) + print(result, + "[%02dm %02ds]" % (total_time / 60, total_time % 60)) else: - print "" + print(result) # if test failed and it wasn't a "start" test if test_result < 0 and not i == 0: @@ -294,7 +295,7 @@ def __process_results(self, results): f = open("%s_%s_report.rst" % (self.target, test_name), "w") except IOError: - print "Report for %s could not be created!" % test_name + print("Report for %s could not be created!" % test_name) else: with f: f.write(report) @@ -360,12 +361,10 @@ def run_all_tests(self): try: # create table header - print "" - print "Test name".ljust(30), - print "Test result".ljust(29), - print "Test".center(9), - print "Total".center(9) - print "=" * 80 + print("") + print("Test name".ljust(30), "Test result".ljust(29), + "Test".center(9), "Total".center(9)) + print("=" * 80) # make a note of tests start time self.start = time.time() @@ -407,11 +406,11 @@ def run_all_tests(self): total_time = int(cur_time - self.start) # print out summary - print "=" * 80 - print "Total run time: %02dm %02ds" % (total_time / 60, - total_time % 60) + print("=" * 80) + print("Total run time: %02dm %02ds" % (total_time / 60, + total_time % 60)) if self.fails != 0: - print "Number of failed tests: %s" % str(self.fails) + print("Number of failed tests: %s" % str(self.fails)) # write summary to logfile self.logfile.write("Summary\n") @@ -420,8 +419,8 @@ def run_all_tests(self): self.logfile.write("Failed tests: ".ljust( 15) + "%i\n" % self.fails) except: - print "Exception occurred" - print sys.exc_info() + print("Exception occurred") + print(sys.exc_info()) self.fails = 1 # drop logs from all executions to a logfile diff --git a/tools/cpu_layout.py b/tools/cpu_layout.py index ccc22ec..0e049a6 100755 --- a/tools/cpu_layout.py +++ b/tools/cpu_layout.py @@ -1,4 +1,5 @@ -#! /usr/bin/python +#!/usr/bin/env python + # # BSD LICENSE # @@ -31,7 +32,7 @@ # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # - +from __future__ import print_function import sys sockets = [] @@ -55,7 +56,7 @@ for core in core_details: for field in ["processor", "core id", "physical id"]: if field not in core: - print "Error getting '%s' value from /proc/cpuinfo" % field + print("Error getting '%s' value from /proc/cpuinfo" % field) sys.exit(1) core[field] = int(core[field]) @@ -68,29 +69,30 @@ core_map[key] = [] core_map[key].append(core["processor"]) -print "============================================================" -print "Core and Socket Information (as reported by '/proc/cpuinfo')" -print "============================================================\n" -print "cores = ", cores -print "sockets = ", sockets -print "" +print("============================================================") +print("Core and Socket Information (as reported by '/proc/cpuinfo')") +print("============================================================\n") +print("cores = ", cores) +print("sockets = ", sockets) +print("") max_processor_len = len(str(len(cores) * len(sockets) * 2 - 1)) max_core_map_len = max_processor_len * 2 + len('[, ]') + len('Socket ') max_core_id_len = len(str(max(cores))) -print " ".ljust(max_core_id_len + len('Core ')), +output = " ".ljust(max_core_id_len + len('Core ')) for s in sockets: - print "Socket %s" % str(s).ljust(max_core_map_len - len('Socket ')), -print "" + output += " Socket %s" % str(s).ljust(max_core_map_len - len('Socket ')) +print(output) -print " ".ljust(max_core_id_len + len('Core ')), +output = " ".ljust(max_core_id_len + len('Core ')) for s in sockets: - print "--------".ljust(max_core_map_len), -print "" + output += " --------".ljust(max_core_map_len) + output += " " +print(output) for c in cores: - print "Core %s" % str(c).ljust(max_core_id_len), + output = "Core %s" % str(c).ljust(max_core_id_len) for s in sockets: - print str(core_map[(s, c)]).ljust(max_core_map_len), - print "" + output += " " + str(core_map[(s, c)]).ljust(max_core_map_len) + print(output) diff --git a/tools/dpdk-pmdinfo.py b/tools/dpdk-pmdinfo.py index 3d3ad7d..097982e 100755 --- a/tools/dpdk-pmdinfo.py +++ b/tools/dpdk-pmdinfo.py @@ -1,9 +1,11 @@ #!/usr/bin/env python + # ------------------------------------------------------------------------- # # Utility to dump PMD_INFO_STRING support from an object file # # ------------------------------------------------------------------------- +from __future__ import print_function import json import os import platform @@ -54,7 +56,7 @@ def addDevice(self, deviceStr): self.devices[devID] = Device(deviceStr) def report(self): - print self.ID, self.name + print(self.ID, self.name) for id, dev in self.devices.items(): dev.report() @@ -80,7 +82,7 @@ def __init__(self, deviceStr): self.subdevices = {} def report(self): - print "\t%s\t%s" % (self.ID, self.name) + print("\t%s\t%s" % (self.ID, self.name)) for subID, subdev in self.subdevices.items(): subdev.report() @@ -126,7 +128,7 @@ def __init__(self, vendor, device, name): self.name = name def report(self): - print "\t\t%s\t%s\t%s" % (self.vendorID, self.deviceID, self.name) + print("\t\t%s\t%s\t%s" % (self.vendorID, self.deviceID, self.name)) class PCIIds: @@ -154,7 +156,7 @@ def reportVendors(self): """Reports the vendors """ for vid, v in self.vendors.items(): - print v.ID, v.name + print(v.ID, v.name) def report(self, vendor=None): """ @@ -185,7 +187,7 @@ def findDate(self, content): def parse(self): if len(self.contents) < 1: - print "data/%s-pci.ids not found" % self.date + print("data/%s-pci.ids not found" % self.date) else: vendorID = "" deviceID = ""