Received: by 2002:ac0:946b:0:0:0:0:0 with SMTP id j40csp605538imj; Sat, 9 Feb 2019 04:25:20 -0800 (PST) X-Google-Smtp-Source: AHgI3IY8LqXqpIjuEH8fUG1j3bqAocEkLweqjXXeZifJHU5qXIbLZckV2nBZvX8AKaSBsql0eFeE X-Received: by 2002:a63:fb0a:: with SMTP id o10mr9238872pgh.259.1549715120372; Sat, 09 Feb 2019 04:25:20 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1549715120; cv=none; d=google.com; s=arc-20160816; b=K7ceHpfjx3IIQqATppueVrbK/UgrFLXFEIJI49E4azzroiiZdZep9cz+GLO2W4ruvy NeHR+f7p1aAKFuvlCDgFFh+cayDk/jo+ESaAW6bObpFjRgrVCIOnJ2Z8UUlF7Pck0BY1 mrz/ZIAuF7g+DSiCqYiAI5ZxFU+qBc7y34dqf768yNUCee6n6LJo+7t3HLOPy0M9OFBf hDZYNltpsAHvQEVoK3M0kpi42/uzI1+x9Xq6y0+y4Qb4YtrLJtzo6aSzvDgJo6u6bbUs 5AuBP3Iwgd+Xxtcnfy77rQNwuZ8Z6Lc6WkRD47UwGKKlQdadrmMyROe/TyfE9jCWNw7w f0+A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-disposition :content-transfer-encoding:mime-version:robot-unsubscribe:robot-id :git-commit-id:subject:to:references:in-reply-to:reply-to:cc :message-id:from:date; bh=zeuLhy98K/eTMMdvwPvnvB7kyxMy0FL3ctjceGCnw4w=; b=Igmm0VIWfUhjIBNK7lgLamewD8U6cZHlQX/s2AaUjaVG0ftarUkZUH0uvSbklnFScl oXCQF7rbqddEMqb8cb3575NNDOjkNg5Uh8h4RtpIskgA4/VsGux8xK44XlKOmuoHEZ7m ofuqYYWHIWFDzTF3UNg2BJ28HjM5nXPRi6pHEnrqBNxTdrYOvz3CgJ+8PiKjMTVHvV8C 7NIPs9x+msNjlfSjmRIqMCUncQaDNEGeUpqvsEQlqNQgTcJUrPnMpl/27yfrlk82w7ly qZvRX6Basi6T7qUZ3OhSW+vJXgdo+9WkxgzJlYNQ3vDmEai2CSipFh+Q+5TePExzPG2B Y1kQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id l5si5070124plt.5.2019.02.09.04.25.04; Sat, 09 Feb 2019 04:25:20 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726978AbfBIMYc (ORCPT + 99 others); Sat, 9 Feb 2019 07:24:32 -0500 Received: from terminus.zytor.com ([198.137.202.136]:58121 "EHLO terminus.zytor.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726703AbfBIMYb (ORCPT ); Sat, 9 Feb 2019 07:24:31 -0500 Received: from terminus.zytor.com (localhost [127.0.0.1]) by terminus.zytor.com (8.15.2/8.15.2) with ESMTPS id x19COKnI2626537 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NO); Sat, 9 Feb 2019 04:24:20 -0800 Received: (from tipbot@localhost) by terminus.zytor.com (8.15.2/8.15.2/Submit) id x19COKNp2626534; Sat, 9 Feb 2019 04:24:20 -0800 Date: Sat, 9 Feb 2019 04:24:20 -0800 X-Authentication-Warning: terminus.zytor.com: tipbot set sender to tipbot@zytor.com using -f From: tip-bot for Tony Jones Message-ID: Cc: ravi.bangoria@linux.ibm.com, hpa@zytor.com, s1seetee@linux.vnet.ibm.com, tonyj@suse.de, corbet@lwn.net, linux-kernel@vger.kernel.org, mingo@kernel.org, jolsa@kernel.org, acme@redhat.com, tglx@linutronix.de Reply-To: linux-kernel@vger.kernel.org, mingo@kernel.org, jolsa@kernel.org, acme@redhat.com, tglx@linutronix.de, ravi.bangoria@linux.ibm.com, hpa@zytor.com, tonyj@suse.de, s1seetee@linux.vnet.ibm.com, corbet@lwn.net In-Reply-To: <20190124005229.16146-7-tonyj@suse.de> References: <20190124005229.16146-7-tonyj@suse.de> To: linux-tip-commits@vger.kernel.org Subject: [tip:perf/urgent] perf script python: Add Python3 support to tests/attr.py Git-Commit-ID: 8f2f350cbdb2c2fbff654cb778139144b48a59ba X-Mailer: tip-git-log-daemon Robot-ID: Robot-Unsubscribe: Contact to get blacklisted from these emails MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=UTF-8 Content-Disposition: inline X-Spam-Status: No, score=-2.9 required=5.0 tests=ALL_TRUSTED,BAYES_00, T_DATE_IN_FUTURE_96_Q autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on terminus.zytor.com Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Commit-ID: 8f2f350cbdb2c2fbff654cb778139144b48a59ba Gitweb: https://git.kernel.org/tip/8f2f350cbdb2c2fbff654cb778139144b48a59ba Author: Tony Jones AuthorDate: Wed, 23 Jan 2019 16:52:29 -0800 Committer: Arnaldo Carvalho de Melo CommitDate: Tue, 5 Feb 2019 10:31:08 -0300 perf script python: Add Python3 support to tests/attr.py Support both Python 2 and Python 3 in tests/attr.py The use of "except as" syntax implies the minimum supported Python2 version is now v2.6 Committer testing: $ make -C tools/perf PYTHON3=python install-bin Before: # perf test attr 16: Setup struct perf_event_attr : FAILED! 48: Synthesize attr update : Ok [root@quaco ~]# perf test -v attr 16: Setup struct perf_event_attr : --- start --- test child forked, pid 3121 File "/home/acme/libexec/perf-core/tests/attr.py", line 324 except Unsup, obj: ^ SyntaxError: invalid syntax test child finished with -1 ---- end ---- Setup struct perf_event_attr: FAILED! 48: Synthesize attr update : --- start --- test child forked, pid 3124 test child finished with 0 ---- end ---- Synthesize attr update: Ok # After: # perf test attr 16: Setup struct perf_event_attr : Ok 48: Synthesize attr update : Ok # Signed-off-by: Tony Jones Acked-by: Jiri Olsa Tested-by: Arnaldo Carvalho de Melo Cc: Jonathan Corbet Cc: Ravi Bangoria Cc: Seeteena Thoufeek Link: http://lkml.kernel.org/r/20190124005229.16146-7-tonyj@suse.de Signed-off-by: Arnaldo Carvalho de Melo --- tools/perf/tests/attr.py | 32 +++++++++++++++++++------------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/tools/perf/tests/attr.py b/tools/perf/tests/attr.py index 44090a9a19f3..e952127e4fb0 100644 --- a/tools/perf/tests/attr.py +++ b/tools/perf/tests/attr.py @@ -1,6 +1,8 @@ #! /usr/bin/python # SPDX-License-Identifier: GPL-2.0 +from __future__ import print_function + import os import sys import glob @@ -8,7 +10,11 @@ import optparse import tempfile import logging import shutil -import ConfigParser + +try: + import configparser +except ImportError: + import ConfigParser as configparser def data_equal(a, b): # Allow multiple values in assignment separated by '|' @@ -100,20 +106,20 @@ class Event(dict): def equal(self, other): for t in Event.terms: log.debug(" [%s] %s %s" % (t, self[t], other[t])); - if not self.has_key(t) or not other.has_key(t): + if t not in self or t not in other: return False if not data_equal(self[t], other[t]): return False return True def optional(self): - if self.has_key('optional') and self['optional'] == '1': + if 'optional' in self and self['optional'] == '1': return True return False def diff(self, other): for t in Event.terms: - if not self.has_key(t) or not other.has_key(t): + if t not in self or t not in other: continue if not data_equal(self[t], other[t]): log.warning("expected %s=%s, got %s" % (t, self[t], other[t])) @@ -134,7 +140,7 @@ class Event(dict): # - expected values assignments class Test(object): def __init__(self, path, options): - parser = ConfigParser.SafeConfigParser() + parser = configparser.SafeConfigParser() parser.read(path) log.warning("running '%s'" % path) @@ -193,7 +199,7 @@ class Test(object): return True def load_events(self, path, events): - parser_event = ConfigParser.SafeConfigParser() + parser_event = configparser.SafeConfigParser() parser_event.read(path) # The event record section header contains 'event' word, @@ -207,7 +213,7 @@ class Test(object): # Read parent event if there's any if (':' in section): base = section[section.index(':') + 1:] - parser_base = ConfigParser.SafeConfigParser() + parser_base = configparser.SafeConfigParser() parser_base.read(self.test_dir + '/' + base) base_items = parser_base.items('event') @@ -322,9 +328,9 @@ def run_tests(options): for f in glob.glob(options.test_dir + '/' + options.test): try: Test(f, options).run() - except Unsup, obj: + except Unsup as obj: log.warning("unsupp %s" % obj.getMsg()) - except Notest, obj: + except Notest as obj: log.warning("skipped %s" % obj.getMsg()) def setup_log(verbose): @@ -363,7 +369,7 @@ def main(): parser.add_option("-p", "--perf", action="store", type="string", dest="perf") parser.add_option("-v", "--verbose", - action="count", dest="verbose") + default=0, action="count", dest="verbose") options, args = parser.parse_args() if args: @@ -373,7 +379,7 @@ def main(): setup_log(options.verbose) if not options.test_dir: - print 'FAILED no -d option specified' + print('FAILED no -d option specified') sys.exit(-1) if not options.test: @@ -382,8 +388,8 @@ def main(): try: run_tests(options) - except Fail, obj: - print "FAILED %s" % obj.getMsg(); + except Fail as obj: + print("FAILED %s" % obj.getMsg()) sys.exit(-1) sys.exit(0)