From nobody Thu Nov 28 12:36:28 2024 Received: from mail-yw1-f202.google.com (mail-yw1-f202.google.com [209.85.128.202]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6BC4A1CC14A for ; Tue, 1 Oct 2024 17:19:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.202 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1727803198; cv=none; b=Jt07Xs6TUEWorhG8ylLD/n3lOOjho2/BGNXe3+aedp7wpn7AZxbd9Wj8okukC6QtvCiCL2JefqO7nE4rC9ZW6UiRVRiHS9qV+OnuvKwe67nvqG6rfpjiUnh9E1XEecFAgeUjcA8rLvQX4peZf1jwmiOY7CpPTn0jYGe6yXDVwMY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1727803198; c=relaxed/simple; bh=D1I+znErvv2ZGHk/hWaf6nv2rg2aX8WrrqG/VhGXPe8=; h=Date:In-Reply-To:Message-Id:Mime-Version:References:Subject:From: To:Content-Type; b=KUEiV5Tl7WrC0xw3DKDhPsUPBBQtIy7ntnzwuoSMtnt1xOKyS3QmDpy1OUnshT2mRjRM7VeloWGEMsXqX1PE3GR9U5Ril8zPvmraSw0ayCYFxNfkTOJBj6FkYnZrMZ9g6pbLiiJWHZo3Jy/SW+K5wVie34qGkG2glX90o9Nw7Og= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--irogers.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=uKHwz/3F; arc=none smtp.client-ip=209.85.128.202 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--irogers.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="uKHwz/3F" Received: by mail-yw1-f202.google.com with SMTP id 00721157ae682-6e0082c1dd0so114776047b3.3 for ; Tue, 01 Oct 2024 10:19:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1727803196; x=1728407996; darn=vger.kernel.org; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :from:to:cc:subject:date:message-id:reply-to; bh=7Yd1Yr53YrfxOpH/9lpq+3hnpf3dAFLQn+BaRjtdhC4=; b=uKHwz/3Fiv42TsEFuEdWjPDWeObIJeV+m/HkcIcLWANpn1gIfPPv+S9VI3j9/ohzDO BafwKYt1GNhgRCUrsR4RsLJsEtNuj4lntC0NFgk3j8dowDw7F3z0MklT7ZMFIbRR53X5 3xTpUB6TONbMqvy8MZqokjQoChp3ndEz991MaZGqgl9UjBZKpUTFSedt4ZSl1uEiDnkr s47Hs0+D6HnH3OILXoMmQ8rG4aL+a6ggYLMYAVjEbRZIq8/6gphf9TyS+Hxst8XmDf1M bAzlJwNMnEmWFvipbMnfWDkCs4jsAaZ9AN8jN0BEogvfVZoi9LBpMZf1ZHAAFTDToAPN LjUQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1727803196; x=1728407996; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=7Yd1Yr53YrfxOpH/9lpq+3hnpf3dAFLQn+BaRjtdhC4=; b=kWVGfL51rgXVRzuS67rjpzB3ZD0hK/BAjd/ULQ4YUa9Y7eSAFxk03ndXjyWzzZ91Ag onha+2YZr7lgoHjtQlc++32Ze9QxksPNYsQBETWtnvyjvjhgISpRzaJfmSExHHMKcJaj D3bWhCvlppozGPGm8DaLsO0F8dimn4yLX1PqYwE/SBo75jNmzXHTu2zdSKqpjt0JrvDN 8Z7ewNdOBawZIJB8KisKKAI9SD9H61GwPTNvIp9fezlUjRA8zl80R5Fh5BMLg9zXTRHR 3XFCPY9jkwCRCUqLv4yyOLJDfNnaS8PXFjSsqZJNB3qlHxmrqDdgDzBfYgGU9Qv4zgmk EfBA== X-Forwarded-Encrypted: i=1; AJvYcCXhyKI5E2u467B4GJiabZG4f8ZLJ1IB8GYFE9ATYlQip0GiFu6dIjxAZGSZkb1BGa+FAFe8QmGn2VJ4sns=@vger.kernel.org X-Gm-Message-State: AOJu0YxOWmRYCPiA4XP1M078M8clFIXQxTSSegyABzv0DF5GIyHks+vY BGbMFEthdOSuP5YH1lrsZqxc/HB/cff5Z12O9vMLk/a+dZCFZBS0M02bolJNrzQwHzOHsUnYYEH 038368w== X-Google-Smtp-Source: AGHT+IFfhaTN7/d/0WbE9K0NB/X4JlB02wQpjBnPWWGJq7hpMZFevNVKUFYhXFCPwGlP2oFsvgkGAHoCH3K0 X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:f420:67c7:1eea:bb12]) (user=irogers job=sendgmr) by 2002:a05:690c:c10:b0:6e2:ef1:2551 with SMTP id 00721157ae682-6e2a306e3c0mr65597b3.8.1727803196476; Tue, 01 Oct 2024 10:19:56 -0700 (PDT) Date: Tue, 1 Oct 2024 10:19:48 -0700 In-Reply-To: <20241001171950.233723-1-irogers@google.com> Message-Id: <20241001171950.233723-2-irogers@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20241001171950.233723-1-irogers@google.com> X-Mailer: git-send-email 2.46.1.824.gd892dcdcdd-goog Subject: [PATCH v1 1/3] perf test: Add a shell wrapper for "Setup struct perf_event_attr" From: Ian Rogers To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , Kan Liang , James Clark , Athira Jajeev , zhaimingbing , Thomas Richter , Veronika Molnarova , Leo Yan , Howard Chu , Ze Gao , Weilin Wang , linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The "Setup struct perf_event_attr" test in attr.c does a bunch of directory finding to set up running a python test that in general is more brittle than similar logic we have in shell tests. Add a shell test that invokes and runs the tests in the python attr.py script. Signed-off-by: Ian Rogers Tested-by: Athira Rajeev > --- tools/perf/tests/shell/attr.sh | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100755 tools/perf/tests/shell/attr.sh diff --git a/tools/perf/tests/shell/attr.sh b/tools/perf/tests/shell/attr.sh new file mode 100755 index 000000000000..e094f3baffb7 --- /dev/null +++ b/tools/perf/tests/shell/attr.sh @@ -0,0 +1,22 @@ +#!/bin/bash +# Perf attribute expectations test +# SPDX-License-Identifier: GPL-2.0 + +err=3D0 + +cleanup() { + trap - EXIT TERM INT +} + +trap_cleanup() { + echo "Unexpected signal in ${FUNCNAME[1]}" + cleanup + exit 1 +} +trap trap_cleanup EXIT TERM INT + +shelldir=3D$(dirname "$0") +perf_path=3D$(which perf) +python "${shelldir}"/../attr.py -d "${shelldir}"/../attr -v -p "$perf_path" +cleanup +exit $err --=20 2.46.1.824.gd892dcdcdd-goog From nobody Thu Nov 28 12:36:28 2024 Received: from mail-yb1-f201.google.com (mail-yb1-f201.google.com [209.85.219.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 02B0A1CC892 for ; Tue, 1 Oct 2024 17:19:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.219.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1727803201; cv=none; b=r/WDtfvxwJSdo/vEIgeZeIweptPqtoOGu4pl/GjhkrK+kwO5JyMtwUgTM82TNithPuPKRAAS+Otl8s2FdeyNkefCTIczBmZF6s1Gc3XzyExDj+Gh+AVTxFLRKFD2UJko3zBYh3F/LT1MgL/VMdvWMtQHnoWKA9LFn/utvXlPHyM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1727803201; c=relaxed/simple; bh=U5GZCI2mMtbcfS+fCk063olLvizfCuvFlsop2gs63i4=; h=Date:In-Reply-To:Message-Id:Mime-Version:References:Subject:From: To:Content-Type; b=OCrOpo1+j+pcQnC5y1R0USl0GzTbs40rY+ktMthoKoaL8fBsGemF7y/KYfDTXLVPM1tDy5MMb6EZCGP4KhgIp/LwBR7f+4YCwlQ0Drj+a2GaMskGXnU2XvF7lJx0fiPtAzEI1Vg3r/yOlh+H4fjCGq/sDeHMzXVrTy7POt4s/aI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--irogers.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=DmTSdqAI; arc=none smtp.client-ip=209.85.219.201 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--irogers.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="DmTSdqAI" Received: by mail-yb1-f201.google.com with SMTP id 3f1490d57ef6-e165fc5d94fso10501625276.2 for ; Tue, 01 Oct 2024 10:19:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1727803199; x=1728407999; darn=vger.kernel.org; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :from:to:cc:subject:date:message-id:reply-to; bh=Zeh2kJP86MimfYD9ikkIGzulOg4azE1B18tS5LSfp94=; b=DmTSdqAIZQsK7Fg9swHXfs0qvRulLbZD7/Pf+SurO8QIhgk64/LOocxLl5ABSEP+ie RWutjKyypyj3l+lD8OisCZHpDypPjZ0ZGdGbLrc0g3W5PEKaWg4jRb3/0zkMJRs6gYLk HMMn98etVK/011nfOR2w5i7oX7rqXMELncMQkm8kbWe0V1usUxHL3lZLNyQ8Ej+eXunF d4k8AjSZLLhyUb9fziO+Dp9UC8FAiBENFGmBzVVZRaKNGjta03MBpmcw5q2wo6v1z7lf L5maqHhnT+84aCjiQk6IQbV7tposOIelLmY6i3qoXRHqudWzAlkB+b7csUhB65yAt0UX 8CKQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1727803199; x=1728407999; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=Zeh2kJP86MimfYD9ikkIGzulOg4azE1B18tS5LSfp94=; b=gMSOTPg4Bgb+s6x1pD4sR2wq/1oEwpJiA9VDi8yd2Snn96sY16lGm1qxlkYAjM1Mgn 7k69+hqV1mndFJ/oLeqeHcYY8Mexth5iBqJBCvv1byo2R85DJYtfpRVOGexF5stFHQF1 RkrgkV1LmHEZdqZKzS9csbxwwxeLJHv1WzJo/DOVMUYpKKc5PlZJ+ZwjzgBHQrtkilhJ mIWkKwoL/NswQ5U2DIWQUVJoO554OKOxd/QjZMDpx+pcyXYp5bULfhZajPXChucU6Kp2 Zl4fa8PgW2wQvELOsA/QBwRyf6OUdScoXytU7FJl1MILkz+C/ndw8BPjwwzycF/vpjRa 7Guw== X-Forwarded-Encrypted: i=1; AJvYcCX5C22RWdLeas3f/2g+nx8JfR2sDSPaF4cfAndtsqIb/kOEn3RvHsABzaPyxYVzFvAK8cJRW9Gx/6W0npo=@vger.kernel.org X-Gm-Message-State: AOJu0YwwhojS7yUjPPbP42WgQ/5fx+yHYggpfJeuGIsWKdEV921GVtVr lKLe/nJk7NeIlb2nVQ8pYH44Blwax/YjEA1mo0Hxuaojs+yamJ7l6bov86An+qE7GYJT8oEZLCn O1lpflA== X-Google-Smtp-Source: AGHT+IGZGyUW9yJtgWZ/CKA9OPY006KwA37vNXhvo979JnxrX8mcWAWKj6gKrZ6B6UPQRV/7dZ5t+nm/PWKw X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:f420:67c7:1eea:bb12]) (user=irogers job=sendgmr) by 2002:a25:fc06:0:b0:e11:5a3c:26c7 with SMTP id 3f1490d57ef6-e263843deabmr459276.9.1727803198869; Tue, 01 Oct 2024 10:19:58 -0700 (PDT) Date: Tue, 1 Oct 2024 10:19:49 -0700 In-Reply-To: <20241001171950.233723-1-irogers@google.com> Message-Id: <20241001171950.233723-3-irogers@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20241001171950.233723-1-irogers@google.com> X-Mailer: git-send-email 2.46.1.824.gd892dcdcdd-goog Subject: [PATCH v1 2/3] perf test: Remove C test wrapper for attr.py From: Ian Rogers To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , Kan Liang , James Clark , Athira Jajeev , zhaimingbing , Thomas Richter , Veronika Molnarova , Leo Yan , Howard Chu , Ze Gao , Weilin Wang , linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Remove the C wrapper now a shell script wrapper exists. Move perf_event_attr dumping functions to evsel.c and reduce the scope of variables/defines. Use fprintf to avoid snprintf complexities in WRITE_ASS. Signed-off-by: Ian Rogers Tested-by: Athira Rajeev > --- tools/perf/perf.c | 2 - tools/perf/tests/Build | 1 - tools/perf/tests/attr.c | 218 -------------------------------- tools/perf/tests/builtin-test.c | 1 - tools/perf/tests/tests.h | 1 - tools/perf/util/evsel.c | 122 +++++++++++++++++- tools/perf/util/util.h | 7 - 7 files changed, 118 insertions(+), 234 deletions(-) delete mode 100644 tools/perf/tests/attr.c diff --git a/tools/perf/perf.c b/tools/perf/perf.c index 4def800f4089..a2987f2cfe1a 100644 --- a/tools/perf/perf.c +++ b/tools/perf/perf.c @@ -542,8 +542,6 @@ int main(int argc, const char **argv) } cmd =3D argv[0]; =20 - test_attr__init(); - /* * We use PATH to find perf commands, but we prepend some higher * precedence paths: the "--exec-path" option, the PERF_EXEC_PATH diff --git a/tools/perf/tests/Build b/tools/perf/tests/Build index 5671ee530019..5476199adc67 100644 --- a/tools/perf/tests/Build +++ b/tools/perf/tests/Build @@ -4,7 +4,6 @@ perf-test-y +=3D builtin-test.o perf-test-y +=3D tests-scripts.o perf-test-y +=3D parse-events.o perf-test-y +=3D dso-data.o -perf-test-y +=3D attr.o perf-test-y +=3D vmlinux-kallsyms.o perf-test-$(CONFIG_LIBTRACEEVENT) +=3D openat-syscall.o perf-test-$(CONFIG_LIBTRACEEVENT) +=3D openat-syscall-all-cpus.o diff --git a/tools/perf/tests/attr.c b/tools/perf/tests/attr.c deleted file mode 100644 index 97e1bdd6ec0e..000000000000 --- a/tools/perf/tests/attr.c +++ /dev/null @@ -1,218 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * The struct perf_event_attr test support. - * - * This test is embedded inside into perf directly and is governed - * by the PERF_TEST_ATTR environment variable and hook inside - * sys_perf_event_open function. - * - * The general idea is to store 'struct perf_event_attr' details for - * each event created within single perf command. Each event details - * are stored into separate text file. Once perf command is finished - * these files can be checked for values we expect for command. - * - * Besides 'struct perf_event_attr' values we also store 'fd' and - * 'group_fd' values to allow checking for groups created. - * - * This all is triggered by setting PERF_TEST_ATTR environment variable. - * It must contain name of existing directory with access and write - * permissions. All the event text files are stored there. - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "event.h" -#include "util.h" -#include "tests.h" -#include "pmus.h" - -#define ENV "PERF_TEST_ATTR" - -static char *dir; -static bool ready; - -void test_attr__init(void) -{ - dir =3D getenv(ENV); - test_attr__enabled =3D (dir !=3D NULL); -} - -#define BUFSIZE 1024 - -#define __WRITE_ASS(str, fmt, data) \ -do { \ - char buf[BUFSIZE]; \ - size_t size; \ - \ - size =3D snprintf(buf, BUFSIZE, #str "=3D%"fmt "\n", data); \ - if (1 !=3D fwrite(buf, size, 1, file)) { \ - perror("test attr - failed to write event file"); \ - fclose(file); \ - return -1; \ - } \ - \ -} while (0) - -#define WRITE_ASS(field, fmt) __WRITE_ASS(field, fmt, attr->field) - -static int store_event(struct perf_event_attr *attr, pid_t pid, struct per= f_cpu cpu, - int fd, int group_fd, unsigned long flags) -{ - FILE *file; - char path[PATH_MAX]; - - if (!ready) - return 0; - - snprintf(path, PATH_MAX, "%s/event-%d-%llu-%d", dir, - attr->type, attr->config, fd); - - file =3D fopen(path, "w+"); - if (!file) { - perror("test attr - failed to open event file"); - return -1; - } - - if (fprintf(file, "[event-%d-%llu-%d]\n", - attr->type, attr->config, fd) < 0) { - perror("test attr - failed to write event file"); - fclose(file); - return -1; - } - - /* syscall arguments */ - __WRITE_ASS(fd, "d", fd); - __WRITE_ASS(group_fd, "d", group_fd); - __WRITE_ASS(cpu, "d", cpu.cpu); - __WRITE_ASS(pid, "d", pid); - __WRITE_ASS(flags, "lu", flags); - - /* struct perf_event_attr */ - WRITE_ASS(type, PRIu32); - WRITE_ASS(size, PRIu32); - WRITE_ASS(config, "llu"); - WRITE_ASS(sample_period, "llu"); - WRITE_ASS(sample_type, "llu"); - WRITE_ASS(read_format, "llu"); - WRITE_ASS(disabled, "d"); - WRITE_ASS(inherit, "d"); - WRITE_ASS(pinned, "d"); - WRITE_ASS(exclusive, "d"); - WRITE_ASS(exclude_user, "d"); - WRITE_ASS(exclude_kernel, "d"); - WRITE_ASS(exclude_hv, "d"); - WRITE_ASS(exclude_idle, "d"); - WRITE_ASS(mmap, "d"); - WRITE_ASS(comm, "d"); - WRITE_ASS(freq, "d"); - WRITE_ASS(inherit_stat, "d"); - WRITE_ASS(enable_on_exec, "d"); - WRITE_ASS(task, "d"); - WRITE_ASS(watermark, "d"); - WRITE_ASS(precise_ip, "d"); - WRITE_ASS(mmap_data, "d"); - WRITE_ASS(sample_id_all, "d"); - WRITE_ASS(exclude_host, "d"); - WRITE_ASS(exclude_guest, "d"); - WRITE_ASS(exclude_callchain_kernel, "d"); - WRITE_ASS(exclude_callchain_user, "d"); - WRITE_ASS(mmap2, "d"); - WRITE_ASS(comm_exec, "d"); - WRITE_ASS(context_switch, "d"); - WRITE_ASS(write_backward, "d"); - WRITE_ASS(namespaces, "d"); - WRITE_ASS(use_clockid, "d"); - WRITE_ASS(wakeup_events, PRIu32); - WRITE_ASS(bp_type, PRIu32); - WRITE_ASS(config1, "llu"); - WRITE_ASS(config2, "llu"); - WRITE_ASS(branch_sample_type, "llu"); - WRITE_ASS(sample_regs_user, "llu"); - WRITE_ASS(sample_stack_user, PRIu32); - - fclose(file); - return 0; -} - -void test_attr__open(struct perf_event_attr *attr, pid_t pid, struct perf_= cpu cpu, - int fd, int group_fd, unsigned long flags) -{ - int errno_saved =3D errno; - - if ((fd !=3D -1) && store_event(attr, pid, cpu, fd, group_fd, flags)) { - pr_err("test attr FAILED"); - exit(128); - } - - errno =3D errno_saved; -} - -void test_attr__ready(void) -{ - if (unlikely(test_attr__enabled) && !ready) - ready =3D true; -} - -static int run_dir(const char *d, const char *perf) -{ - char v[] =3D "-vvvvv"; - int vcnt =3D min(verbose, (int) sizeof(v) - 1); - char cmd[3*PATH_MAX]; - - if (verbose > 0) - vcnt++; - - scnprintf(cmd, 3*PATH_MAX, PYTHON " %s/attr.py -d %s/attr/ -p %s %.*s", - d, d, perf, vcnt, v); - - return system(cmd) ? TEST_FAIL : TEST_OK; -} - -static int test__attr(struct test_suite *test __maybe_unused, int subtest = __maybe_unused) -{ - struct stat st; - char path_perf[PATH_MAX]; - char path_dir[PATH_MAX]; - char *exec_path; - - if (perf_pmus__num_core_pmus() > 1) { - /* - * TODO: Attribute tests hard code the PMU type. If there are >1 - * core PMU then each PMU will have a different type which - * requires additional support. - */ - pr_debug("Skip test on hybrid systems"); - return TEST_SKIP; - } - - /* First try development tree tests. */ - if (!lstat("./tests", &st)) - return run_dir("./tests", "./perf"); - - exec_path =3D get_argv_exec_path(); - if (exec_path =3D=3D NULL) - return -1; - - /* Then installed path. */ - snprintf(path_dir, PATH_MAX, "%s/tests", exec_path); - snprintf(path_perf, PATH_MAX, "%s/perf", BINDIR); - free(exec_path); - - if (!lstat(path_dir, &st) && - !lstat(path_perf, &st)) - return run_dir(path_dir, path_perf); - - return TEST_SKIP; -} - -DEFINE_SUITE("Setup struct perf_event_attr", attr); diff --git a/tools/perf/tests/builtin-test.c b/tools/perf/tests/builtin-tes= t.c index 470a9709427d..4f8b4e3260b4 100644 --- a/tools/perf/tests/builtin-test.c +++ b/tools/perf/tests/builtin-test.c @@ -79,7 +79,6 @@ static struct test_suite *generic_tests[] =3D { &suite__perf_evsel__tp_sched_test, &suite__syscall_openat_tp_fields, #endif - &suite__attr, &suite__hists_link, &suite__python_use, &suite__bp_signal, diff --git a/tools/perf/tests/tests.h b/tools/perf/tests/tests.h index 6ea2be86b7bf..b246db5abf83 100644 --- a/tools/perf/tests/tests.h +++ b/tools/perf/tests/tests.h @@ -83,7 +83,6 @@ DECLARE_SUITE(perf_evsel__tp_sched_test); DECLARE_SUITE(syscall_openat_tp_fields); DECLARE_SUITE(pmu); DECLARE_SUITE(pmu_events); -DECLARE_SUITE(attr); DECLARE_SUITE(dso_data); DECLARE_SUITE(dso_data_cache); DECLARE_SUITE(dso_data_reopen); diff --git a/tools/perf/util/evsel.c b/tools/perf/util/evsel.c index edfb376f0611..0a5c9cd6b30f 100644 --- a/tools/perf/util/evsel.c +++ b/tools/perf/util/evsel.c @@ -103,7 +103,123 @@ static int evsel__no_extra_init(struct evsel *evsel _= _maybe_unused) return 0; } =20 -void __weak test_attr__ready(void) { } +static bool test_attr__enabled(void) +{ + static bool test_attr__enabled; + static bool test_attr__enabled_tested; + + if (!test_attr__enabled_tested) { + char *dir =3D getenv("PERF_TEST_ATTR"); + + test_attr__enabled =3D (dir !=3D NULL); + test_attr__enabled_tested =3D true; + } + return test_attr__enabled; +} + +#define __WRITE_ASS(str, fmt, data) \ +do { \ + if (fprintf(file, #str "=3D%"fmt "\n", data) < 0) { \ + perror("test attr - failed to write event file"); \ + fclose(file); \ + return -1; \ + } \ +} while (0) + +#define WRITE_ASS(field, fmt) __WRITE_ASS(field, fmt, attr->field) + +static int store_event(struct perf_event_attr *attr, pid_t pid, struct per= f_cpu cpu, + int fd, int group_fd, unsigned long flags) +{ + FILE *file; + char path[PATH_MAX]; + char *dir =3D getenv("PERF_TEST_ATTR"); + + snprintf(path, PATH_MAX, "%s/event-%d-%llu-%d", dir, + attr->type, attr->config, fd); + + file =3D fopen(path, "w+"); + if (!file) { + perror("test attr - failed to open event file"); + return -1; + } + + if (fprintf(file, "[event-%d-%llu-%d]\n", + attr->type, attr->config, fd) < 0) { + perror("test attr - failed to write event file"); + fclose(file); + return -1; + } + + /* syscall arguments */ + __WRITE_ASS(fd, "d", fd); + __WRITE_ASS(group_fd, "d", group_fd); + __WRITE_ASS(cpu, "d", cpu.cpu); + __WRITE_ASS(pid, "d", pid); + __WRITE_ASS(flags, "lu", flags); + + /* struct perf_event_attr */ + WRITE_ASS(type, PRIu32); + WRITE_ASS(size, PRIu32); + WRITE_ASS(config, "llu"); + WRITE_ASS(sample_period, "llu"); + WRITE_ASS(sample_type, "llu"); + WRITE_ASS(read_format, "llu"); + WRITE_ASS(disabled, "d"); + WRITE_ASS(inherit, "d"); + WRITE_ASS(pinned, "d"); + WRITE_ASS(exclusive, "d"); + WRITE_ASS(exclude_user, "d"); + WRITE_ASS(exclude_kernel, "d"); + WRITE_ASS(exclude_hv, "d"); + WRITE_ASS(exclude_idle, "d"); + WRITE_ASS(mmap, "d"); + WRITE_ASS(comm, "d"); + WRITE_ASS(freq, "d"); + WRITE_ASS(inherit_stat, "d"); + WRITE_ASS(enable_on_exec, "d"); + WRITE_ASS(task, "d"); + WRITE_ASS(watermark, "d"); + WRITE_ASS(precise_ip, "d"); + WRITE_ASS(mmap_data, "d"); + WRITE_ASS(sample_id_all, "d"); + WRITE_ASS(exclude_host, "d"); + WRITE_ASS(exclude_guest, "d"); + WRITE_ASS(exclude_callchain_kernel, "d"); + WRITE_ASS(exclude_callchain_user, "d"); + WRITE_ASS(mmap2, "d"); + WRITE_ASS(comm_exec, "d"); + WRITE_ASS(context_switch, "d"); + WRITE_ASS(write_backward, "d"); + WRITE_ASS(namespaces, "d"); + WRITE_ASS(use_clockid, "d"); + WRITE_ASS(wakeup_events, PRIu32); + WRITE_ASS(bp_type, PRIu32); + WRITE_ASS(config1, "llu"); + WRITE_ASS(config2, "llu"); + WRITE_ASS(branch_sample_type, "llu"); + WRITE_ASS(sample_regs_user, "llu"); + WRITE_ASS(sample_stack_user, PRIu32); + + fclose(file); + return 0; +} + +#undef __WRITE_ASS +#undef WRITE_ASS + +static void test_attr__open(struct perf_event_attr *attr, pid_t pid, struc= t perf_cpu cpu, + int fd, int group_fd, unsigned long flags) +{ + int errno_saved =3D errno; + + if ((fd !=3D -1) && store_event(attr, pid, cpu, fd, group_fd, flags)) { + pr_err("test attr FAILED"); + exit(128); + } + + errno =3D errno_saved; +} =20 static void evsel__no_extra_fini(struct evsel *evsel __maybe_unused) { @@ -2366,8 +2482,6 @@ static int evsel__open_cpu(struct evsel *evsel, struc= t perf_cpu_map *cpus, goto out_close; } =20 - test_attr__ready(); - /* Debug message used by test scripts */ pr_debug2_peo("sys_perf_event_open: pid %d cpu %d group_fd %d flags = %#lx", pid, perf_cpu_map__cpu(cpus, idx).cpu, group_fd, evsel->open_flags); @@ -2388,7 +2502,7 @@ static int evsel__open_cpu(struct evsel *evsel, struc= t perf_cpu_map *cpus, =20 bpf_counter__install_pe(evsel, idx, fd); =20 - if (unlikely(test_attr__enabled)) { + if (unlikely(test_attr__enabled())) { test_attr__open(&evsel->core.attr, pid, perf_cpu_map__cpu(cpus, idx), fd, group_fd, evsel->open_flags); diff --git a/tools/perf/util/util.h b/tools/perf/util/util.h index 9966c21aaf04..14f2c70906be 100644 --- a/tools/perf/util/util.h +++ b/tools/perf/util/util.h @@ -81,13 +81,6 @@ char *perf_exe(char *buf, int len); #endif #endif =20 -extern bool test_attr__enabled; -void test_attr__ready(void); -void test_attr__init(void); -struct perf_event_attr; -void test_attr__open(struct perf_event_attr *attr, pid_t pid, struct perf_= cpu cpu, - int fd, int group_fd, unsigned long flags); - struct perf_debuginfod { const char *urls; bool set; --=20 2.46.1.824.gd892dcdcdd-goog From nobody Thu Nov 28 12:36:28 2024 Received: from mail-yw1-f201.google.com (mail-yw1-f201.google.com [209.85.128.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 44B7D1CC88F for ; Tue, 1 Oct 2024 17:20:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1727803204; cv=none; b=XYsqbz09PLfgHBoDmWB0U50vAIZukjDmd7T+KnwDRzWdWEw7q1rcTf+qS8UIgQMXd2hubjV0Pr0j9/tiBkUr5O2qK6IkMY7RRKVj3I1fewETy/T7dlV9z+oz7nd7U37MpzoFFGz9AL+g8N9hhCttyGbp/yvKXi9KswUFEDUd+9s= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1727803204; c=relaxed/simple; bh=g9ma8fcKQ/KKeH4mn0jEYSCX7raQWLOcBf4z6OvwRV8=; h=Date:In-Reply-To:Message-Id:Mime-Version:References:Subject:From: To:Content-Type; b=Rt+PP2NWk4uj7zHZT8jS4ec80Mhyet+Kz3TqYobs+ePZDFgJyhUS2EcLVny9Z2fqBtGz3Bfn2SmtSdQp+XvMaMMrWJg53rRq65e+W7Q4eihl8LIt62J1CcZ8RjXO9j3dW3u1aMXF7Ml7by2wFduP8Hzf8N6FyujLqx9QHe02QlA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--irogers.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=QrV5VTWK; arc=none smtp.client-ip=209.85.128.201 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=flex--irogers.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="QrV5VTWK" Received: by mail-yw1-f201.google.com with SMTP id 00721157ae682-6e000d68bb1so261617b3.1 for ; Tue, 01 Oct 2024 10:20:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1727803201; x=1728408001; darn=vger.kernel.org; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :from:to:cc:subject:date:message-id:reply-to; bh=pLp9yo+EBxidtDYAhQJMcMBSF0ofIddpnTeFkF9k/d8=; b=QrV5VTWKxXYTtjXLLFMOI1YVG+0CuDES05Y7FjuFZcC+ZXDwz2j+CsIN/Q5yIdjbCD ozH5BsTI5Mj7cSyxVQ+IYWZDiUBlKdCjRbJqtFq3hju247ico0mc2j1Ltj+wwjXf09ce rszkciRybP/zgFq4JJ7RuYV12+AsywMWRtqP/ve0baZvcaLpXS+corh8OcqIu9qgzDSb viaSFwVOsx7EMX7A3ntKZ6ciBAvKWMbZUuvFYxUlyg55aghrRBMioU5w5ogQfcpoUxWi u14yJaz2rkw9Q4jlLB0QNQT1w3gSHbWrla0YsaWvo6OEgUBrAygVA4kPqSxRgR7DS3uh tNJA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1727803201; x=1728408001; h=to:from:subject:references:mime-version:message-id:in-reply-to:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=pLp9yo+EBxidtDYAhQJMcMBSF0ofIddpnTeFkF9k/d8=; b=W5Q1snewzxyiWgrvjq2Nbqm9+3+WsXoY9/meNmstmvDy/KSmKPdRx6PfriVhfShCMp gzWaCQfjQU+31ryr8XPKsyHrXZQRZKLF7csYpHCcyTDbNE77ZHjJRz7zdz7MCOQHM2K0 bE01bp3pnJVS0uz5W2TGwhMSCIKi+k4FTjE3hLfm4Z4gszT3Ut/ox1hzXEuJJwzU/GHy CQGBmuJXaAyY3AebdydAZf+j3N1BEWAn8cZRhsa9mDjZWpQ8G+hlbkpdtMizqi5uM8bb Q4PiuMFflMJ+U7mtgJcmn2UfJQBY27SVR3O3wCEC8RAU01UefOTusLtQrnCSElvbhwIp Qi2g== X-Forwarded-Encrypted: i=1; AJvYcCX7t/2Lpk3BO2zRF+5a+GDTMsDifsPShXrJRljxqA8ivwjAsCXmSLlHB9EalprGGbMiUCRVy7wi05mHin4=@vger.kernel.org X-Gm-Message-State: AOJu0YzTDNif7XXe5vdDXOJjmu4lhQAYGb+LrLaoyBQpZVolc+7MBxfj KdfquxtgN8Zj71dDi0AxMD5wFeQ6kNJ1eCwDb6yYaD3xF7GqnbC/116mtruHH2XTeY0jzbgUows m8J9r5A== X-Google-Smtp-Source: AGHT+IGVXfrB0t38oE67HEVPCEAlmR76wOr0y0fVH2nbZez1o1JuA0g3F5na2ch2nD0SGwtNwpPiHx80/YQt X-Received: from irogers.svl.corp.google.com ([2620:15c:2a3:200:f420:67c7:1eea:bb12]) (user=irogers job=sendgmr) by 2002:a05:6902:527:b0:e20:cfc2:a326 with SMTP id 3f1490d57ef6-e2638373fedmr2537276.6.1727803201209; Tue, 01 Oct 2024 10:20:01 -0700 (PDT) Date: Tue, 1 Oct 2024 10:19:50 -0700 In-Reply-To: <20241001171950.233723-1-irogers@google.com> Message-Id: <20241001171950.233723-4-irogers@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20241001171950.233723-1-irogers@google.com> X-Mailer: git-send-email 2.46.1.824.gd892dcdcdd-goog Subject: [PATCH v1 3/3] perf test: Move attr files into shell directory where they are used From: Ian Rogers To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Ian Rogers , Adrian Hunter , Kan Liang , James Clark , Athira Jajeev , zhaimingbing , Thomas Richter , Veronika Molnarova , Leo Yan , Howard Chu , Ze Gao , Weilin Wang , linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Now the attr tests are shell tests move the associated python and configuration files. Update the installation build rules for the new directories. Recycle the lib install rules for python files allowing the explicit attr.py install line to be dropped. Signed-off-by: Ian Rogers Tested-by: Athira Rajeev > --- tools/perf/Makefile.perf | 5 ++--- tools/perf/tests/shell/attr.sh | 2 +- tools/perf/tests/{ =3D> shell}/attr/README | 0 tools/perf/tests/{ =3D> shell}/attr/base-record | 0 tools/perf/tests/{ =3D> shell}/attr/base-record-spe | 0 tools/perf/tests/{ =3D> shell}/attr/base-stat | 0 tools/perf/tests/{ =3D> shell}/attr/system-wide-dummy | 0 tools/perf/tests/{ =3D> shell}/attr/test-record-C0 | 0 tools/perf/tests/{ =3D> shell}/attr/test-record-basic | 0 tools/perf/tests/{ =3D> shell}/attr/test-record-branch-any | 0 .../tests/{ =3D> shell}/attr/test-record-branch-filter-any | 0 .../{ =3D> shell}/attr/test-record-branch-filter-any_call | 0 .../tests/{ =3D> shell}/attr/test-record-branch-filter-any_ret | 0 .../perf/tests/{ =3D> shell}/attr/test-record-branch-filter-hv | 0 .../{ =3D> shell}/attr/test-record-branch-filter-ind_call | 0 .../perf/tests/{ =3D> shell}/attr/test-record-branch-filter-k | 0 .../perf/tests/{ =3D> shell}/attr/test-record-branch-filter-u | 0 tools/perf/tests/{ =3D> shell}/attr/test-record-count | 0 tools/perf/tests/{ =3D> shell}/attr/test-record-data | 0 tools/perf/tests/{ =3D> shell}/attr/test-record-dummy-C0 | 0 tools/perf/tests/{ =3D> shell}/attr/test-record-freq | 0 tools/perf/tests/{ =3D> shell}/attr/test-record-graph-default | 0 .../tests/{ =3D> shell}/attr/test-record-graph-default-aarch64 | 0 tools/perf/tests/{ =3D> shell}/attr/test-record-graph-dwarf | 0 tools/perf/tests/{ =3D> shell}/attr/test-record-graph-fp | 0 .../perf/tests/{ =3D> shell}/attr/test-record-graph-fp-aarch64 | 0 tools/perf/tests/{ =3D> shell}/attr/test-record-group-sampling | 0 tools/perf/tests/{ =3D> shell}/attr/test-record-group1 | 0 tools/perf/tests/{ =3D> shell}/attr/test-record-group2 | 0 tools/perf/tests/{ =3D> shell}/attr/test-record-no-buffering | 0 tools/perf/tests/{ =3D> shell}/attr/test-record-no-inherit | 0 tools/perf/tests/{ =3D> shell}/attr/test-record-no-samples | 0 tools/perf/tests/{ =3D> shell}/attr/test-record-period | 0 tools/perf/tests/{ =3D> shell}/attr/test-record-pfm-period | 0 tools/perf/tests/{ =3D> shell}/attr/test-record-raw | 0 tools/perf/tests/{ =3D> shell}/attr/test-record-spe-period | 0 .../perf/tests/{ =3D> shell}/attr/test-record-spe-period-term | 0 .../tests/{ =3D> shell}/attr/test-record-spe-physical-address | 0 .../{ =3D> shell}/attr/test-record-user-regs-no-sve-aarch64 | 0 .../{ =3D> shell}/attr/test-record-user-regs-old-sve-aarch64 | 0 .../tests/{ =3D> shell}/attr/test-record-user-regs-sve-aarch64 | 0 tools/perf/tests/{ =3D> shell}/attr/test-stat-C0 | 0 tools/perf/tests/{ =3D> shell}/attr/test-stat-basic | 0 tools/perf/tests/{ =3D> shell}/attr/test-stat-default | 0 tools/perf/tests/{ =3D> shell}/attr/test-stat-detailed-1 | 0 tools/perf/tests/{ =3D> shell}/attr/test-stat-detailed-2 | 0 tools/perf/tests/{ =3D> shell}/attr/test-stat-detailed-3 | 0 tools/perf/tests/{ =3D> shell}/attr/test-stat-group1 | 0 tools/perf/tests/{ =3D> shell}/attr/test-stat-no-inherit | 0 tools/perf/tests/{ =3D> shell/lib}/attr.py | 0 50 files changed, 3 insertions(+), 4 deletions(-) rename tools/perf/tests/{ =3D> shell}/attr/README (100%) rename tools/perf/tests/{ =3D> shell}/attr/base-record (100%) rename tools/perf/tests/{ =3D> shell}/attr/base-record-spe (100%) rename tools/perf/tests/{ =3D> shell}/attr/base-stat (100%) rename tools/perf/tests/{ =3D> shell}/attr/system-wide-dummy (100%) rename tools/perf/tests/{ =3D> shell}/attr/test-record-C0 (100%) rename tools/perf/tests/{ =3D> shell}/attr/test-record-basic (100%) rename tools/perf/tests/{ =3D> shell}/attr/test-record-branch-any (100%) rename tools/perf/tests/{ =3D> shell}/attr/test-record-branch-filter-any (= 100%) rename tools/perf/tests/{ =3D> shell}/attr/test-record-branch-filter-any_c= all (100%) rename tools/perf/tests/{ =3D> shell}/attr/test-record-branch-filter-any_r= et (100%) rename tools/perf/tests/{ =3D> shell}/attr/test-record-branch-filter-hv (1= 00%) rename tools/perf/tests/{ =3D> shell}/attr/test-record-branch-filter-ind_c= all (100%) rename tools/perf/tests/{ =3D> shell}/attr/test-record-branch-filter-k (10= 0%) rename tools/perf/tests/{ =3D> shell}/attr/test-record-branch-filter-u (10= 0%) rename tools/perf/tests/{ =3D> shell}/attr/test-record-count (100%) rename tools/perf/tests/{ =3D> shell}/attr/test-record-data (100%) rename tools/perf/tests/{ =3D> shell}/attr/test-record-dummy-C0 (100%) rename tools/perf/tests/{ =3D> shell}/attr/test-record-freq (100%) rename tools/perf/tests/{ =3D> shell}/attr/test-record-graph-default (100%) rename tools/perf/tests/{ =3D> shell}/attr/test-record-graph-default-aarch= 64 (100%) rename tools/perf/tests/{ =3D> shell}/attr/test-record-graph-dwarf (100%) rename tools/perf/tests/{ =3D> shell}/attr/test-record-graph-fp (100%) rename tools/perf/tests/{ =3D> shell}/attr/test-record-graph-fp-aarch64 (1= 00%) rename tools/perf/tests/{ =3D> shell}/attr/test-record-group-sampling (100= %) rename tools/perf/tests/{ =3D> shell}/attr/test-record-group1 (100%) rename tools/perf/tests/{ =3D> shell}/attr/test-record-group2 (100%) rename tools/perf/tests/{ =3D> shell}/attr/test-record-no-buffering (100%) rename tools/perf/tests/{ =3D> shell}/attr/test-record-no-inherit (100%) rename tools/perf/tests/{ =3D> shell}/attr/test-record-no-samples (100%) rename tools/perf/tests/{ =3D> shell}/attr/test-record-period (100%) rename tools/perf/tests/{ =3D> shell}/attr/test-record-pfm-period (100%) rename tools/perf/tests/{ =3D> shell}/attr/test-record-raw (100%) rename tools/perf/tests/{ =3D> shell}/attr/test-record-spe-period (100%) rename tools/perf/tests/{ =3D> shell}/attr/test-record-spe-period-term (10= 0%) rename tools/perf/tests/{ =3D> shell}/attr/test-record-spe-physical-addres= s (100%) rename tools/perf/tests/{ =3D> shell}/attr/test-record-user-regs-no-sve-aa= rch64 (100%) rename tools/perf/tests/{ =3D> shell}/attr/test-record-user-regs-old-sve-a= arch64 (100%) rename tools/perf/tests/{ =3D> shell}/attr/test-record-user-regs-sve-aarch= 64 (100%) rename tools/perf/tests/{ =3D> shell}/attr/test-stat-C0 (100%) rename tools/perf/tests/{ =3D> shell}/attr/test-stat-basic (100%) rename tools/perf/tests/{ =3D> shell}/attr/test-stat-default (100%) rename tools/perf/tests/{ =3D> shell}/attr/test-stat-detailed-1 (100%) rename tools/perf/tests/{ =3D> shell}/attr/test-stat-detailed-2 (100%) rename tools/perf/tests/{ =3D> shell}/attr/test-stat-detailed-3 (100%) rename tools/perf/tests/{ =3D> shell}/attr/test-stat-group1 (100%) rename tools/perf/tests/{ =3D> shell}/attr/test-stat-no-inherit (100%) rename tools/perf/tests/{ =3D> shell/lib}/attr.py (100%) diff --git a/tools/perf/Makefile.perf b/tools/perf/Makefile.perf index 9dd2e8d3f3c9..105f734b6820 100644 --- a/tools/perf/Makefile.perf +++ b/tools/perf/Makefile.perf @@ -1128,12 +1128,11 @@ endif install-tests: all install-gtk $(call QUIET_INSTALL, tests) \ $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/tests'; \ - $(INSTALL) tests/attr.py -m 644 '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/tes= ts'; \ $(INSTALL) tests/pe-file.exe* '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/tests= '; \ - $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/tests/attr'; \ - $(INSTALL) tests/attr/* -m 644 '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/test= s/attr'; \ $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/tests/shell'; \ $(INSTALL) tests/shell/*.sh '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/tests/s= hell'; \ + $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/tests/shell/at= tr'; \ + $(INSTALL) tests/shell/attr/* -m 644 '$(DESTDIR_SQ)$(perfexec_instdir_SQ= )/tests/shell/attr'; \ $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/tests/shell/li= b'; \ $(INSTALL) tests/shell/lib/*.sh -m 644 '$(DESTDIR_SQ)$(perfexec_instdir_= SQ)/tests/shell/lib'; \ $(INSTALL) tests/shell/lib/*.py -m 644 '$(DESTDIR_SQ)$(perfexec_instdir_= SQ)/tests/shell/lib'; \ diff --git a/tools/perf/tests/shell/attr.sh b/tools/perf/tests/shell/attr.sh index e094f3baffb7..5a4e43b2471d 100755 --- a/tools/perf/tests/shell/attr.sh +++ b/tools/perf/tests/shell/attr.sh @@ -17,6 +17,6 @@ trap trap_cleanup EXIT TERM INT =20 shelldir=3D$(dirname "$0") perf_path=3D$(which perf) -python "${shelldir}"/../attr.py -d "${shelldir}"/../attr -v -p "$perf_path" +python "${shelldir}"/lib/attr.py -d "${shelldir}"/attr -v -p "$perf_path" cleanup exit $err diff --git a/tools/perf/tests/attr/README b/tools/perf/tests/shell/attr/REA= DME similarity index 100% rename from tools/perf/tests/attr/README rename to tools/perf/tests/shell/attr/README diff --git a/tools/perf/tests/attr/base-record b/tools/perf/tests/shell/att= r/base-record similarity index 100% rename from tools/perf/tests/attr/base-record rename to tools/perf/tests/shell/attr/base-record diff --git a/tools/perf/tests/attr/base-record-spe b/tools/perf/tests/shell= /attr/base-record-spe similarity index 100% rename from tools/perf/tests/attr/base-record-spe rename to tools/perf/tests/shell/attr/base-record-spe diff --git a/tools/perf/tests/attr/base-stat b/tools/perf/tests/shell/attr/= base-stat similarity index 100% rename from tools/perf/tests/attr/base-stat rename to tools/perf/tests/shell/attr/base-stat diff --git a/tools/perf/tests/attr/system-wide-dummy b/tools/perf/tests/she= ll/attr/system-wide-dummy similarity index 100% rename from tools/perf/tests/attr/system-wide-dummy rename to tools/perf/tests/shell/attr/system-wide-dummy diff --git a/tools/perf/tests/attr/test-record-C0 b/tools/perf/tests/shell/= attr/test-record-C0 similarity index 100% rename from tools/perf/tests/attr/test-record-C0 rename to tools/perf/tests/shell/attr/test-record-C0 diff --git a/tools/perf/tests/attr/test-record-basic b/tools/perf/tests/she= ll/attr/test-record-basic similarity index 100% rename from tools/perf/tests/attr/test-record-basic rename to tools/perf/tests/shell/attr/test-record-basic diff --git a/tools/perf/tests/attr/test-record-branch-any b/tools/perf/test= s/shell/attr/test-record-branch-any similarity index 100% rename from tools/perf/tests/attr/test-record-branch-any rename to tools/perf/tests/shell/attr/test-record-branch-any diff --git a/tools/perf/tests/attr/test-record-branch-filter-any b/tools/pe= rf/tests/shell/attr/test-record-branch-filter-any similarity index 100% rename from tools/perf/tests/attr/test-record-branch-filter-any rename to tools/perf/tests/shell/attr/test-record-branch-filter-any diff --git a/tools/perf/tests/attr/test-record-branch-filter-any_call b/too= ls/perf/tests/shell/attr/test-record-branch-filter-any_call similarity index 100% rename from tools/perf/tests/attr/test-record-branch-filter-any_call rename to tools/perf/tests/shell/attr/test-record-branch-filter-any_call diff --git a/tools/perf/tests/attr/test-record-branch-filter-any_ret b/tool= s/perf/tests/shell/attr/test-record-branch-filter-any_ret similarity index 100% rename from tools/perf/tests/attr/test-record-branch-filter-any_ret rename to tools/perf/tests/shell/attr/test-record-branch-filter-any_ret diff --git a/tools/perf/tests/attr/test-record-branch-filter-hv b/tools/per= f/tests/shell/attr/test-record-branch-filter-hv similarity index 100% rename from tools/perf/tests/attr/test-record-branch-filter-hv rename to tools/perf/tests/shell/attr/test-record-branch-filter-hv diff --git a/tools/perf/tests/attr/test-record-branch-filter-ind_call b/too= ls/perf/tests/shell/attr/test-record-branch-filter-ind_call similarity index 100% rename from tools/perf/tests/attr/test-record-branch-filter-ind_call rename to tools/perf/tests/shell/attr/test-record-branch-filter-ind_call diff --git a/tools/perf/tests/attr/test-record-branch-filter-k b/tools/perf= /tests/shell/attr/test-record-branch-filter-k similarity index 100% rename from tools/perf/tests/attr/test-record-branch-filter-k rename to tools/perf/tests/shell/attr/test-record-branch-filter-k diff --git a/tools/perf/tests/attr/test-record-branch-filter-u b/tools/perf= /tests/shell/attr/test-record-branch-filter-u similarity index 100% rename from tools/perf/tests/attr/test-record-branch-filter-u rename to tools/perf/tests/shell/attr/test-record-branch-filter-u diff --git a/tools/perf/tests/attr/test-record-count b/tools/perf/tests/she= ll/attr/test-record-count similarity index 100% rename from tools/perf/tests/attr/test-record-count rename to tools/perf/tests/shell/attr/test-record-count diff --git a/tools/perf/tests/attr/test-record-data b/tools/perf/tests/shel= l/attr/test-record-data similarity index 100% rename from tools/perf/tests/attr/test-record-data rename to tools/perf/tests/shell/attr/test-record-data diff --git a/tools/perf/tests/attr/test-record-dummy-C0 b/tools/perf/tests/= shell/attr/test-record-dummy-C0 similarity index 100% rename from tools/perf/tests/attr/test-record-dummy-C0 rename to tools/perf/tests/shell/attr/test-record-dummy-C0 diff --git a/tools/perf/tests/attr/test-record-freq b/tools/perf/tests/shel= l/attr/test-record-freq similarity index 100% rename from tools/perf/tests/attr/test-record-freq rename to tools/perf/tests/shell/attr/test-record-freq diff --git a/tools/perf/tests/attr/test-record-graph-default b/tools/perf/t= ests/shell/attr/test-record-graph-default similarity index 100% rename from tools/perf/tests/attr/test-record-graph-default rename to tools/perf/tests/shell/attr/test-record-graph-default diff --git a/tools/perf/tests/attr/test-record-graph-default-aarch64 b/tool= s/perf/tests/shell/attr/test-record-graph-default-aarch64 similarity index 100% rename from tools/perf/tests/attr/test-record-graph-default-aarch64 rename to tools/perf/tests/shell/attr/test-record-graph-default-aarch64 diff --git a/tools/perf/tests/attr/test-record-graph-dwarf b/tools/perf/tes= ts/shell/attr/test-record-graph-dwarf similarity index 100% rename from tools/perf/tests/attr/test-record-graph-dwarf rename to tools/perf/tests/shell/attr/test-record-graph-dwarf diff --git a/tools/perf/tests/attr/test-record-graph-fp b/tools/perf/tests/= shell/attr/test-record-graph-fp similarity index 100% rename from tools/perf/tests/attr/test-record-graph-fp rename to tools/perf/tests/shell/attr/test-record-graph-fp diff --git a/tools/perf/tests/attr/test-record-graph-fp-aarch64 b/tools/per= f/tests/shell/attr/test-record-graph-fp-aarch64 similarity index 100% rename from tools/perf/tests/attr/test-record-graph-fp-aarch64 rename to tools/perf/tests/shell/attr/test-record-graph-fp-aarch64 diff --git a/tools/perf/tests/attr/test-record-group-sampling b/tools/perf/= tests/shell/attr/test-record-group-sampling similarity index 100% rename from tools/perf/tests/attr/test-record-group-sampling rename to tools/perf/tests/shell/attr/test-record-group-sampling diff --git a/tools/perf/tests/attr/test-record-group1 b/tools/perf/tests/sh= ell/attr/test-record-group1 similarity index 100% rename from tools/perf/tests/attr/test-record-group1 rename to tools/perf/tests/shell/attr/test-record-group1 diff --git a/tools/perf/tests/attr/test-record-group2 b/tools/perf/tests/sh= ell/attr/test-record-group2 similarity index 100% rename from tools/perf/tests/attr/test-record-group2 rename to tools/perf/tests/shell/attr/test-record-group2 diff --git a/tools/perf/tests/attr/test-record-no-buffering b/tools/perf/te= sts/shell/attr/test-record-no-buffering similarity index 100% rename from tools/perf/tests/attr/test-record-no-buffering rename to tools/perf/tests/shell/attr/test-record-no-buffering diff --git a/tools/perf/tests/attr/test-record-no-inherit b/tools/perf/test= s/shell/attr/test-record-no-inherit similarity index 100% rename from tools/perf/tests/attr/test-record-no-inherit rename to tools/perf/tests/shell/attr/test-record-no-inherit diff --git a/tools/perf/tests/attr/test-record-no-samples b/tools/perf/test= s/shell/attr/test-record-no-samples similarity index 100% rename from tools/perf/tests/attr/test-record-no-samples rename to tools/perf/tests/shell/attr/test-record-no-samples diff --git a/tools/perf/tests/attr/test-record-period b/tools/perf/tests/sh= ell/attr/test-record-period similarity index 100% rename from tools/perf/tests/attr/test-record-period rename to tools/perf/tests/shell/attr/test-record-period diff --git a/tools/perf/tests/attr/test-record-pfm-period b/tools/perf/test= s/shell/attr/test-record-pfm-period similarity index 100% rename from tools/perf/tests/attr/test-record-pfm-period rename to tools/perf/tests/shell/attr/test-record-pfm-period diff --git a/tools/perf/tests/attr/test-record-raw b/tools/perf/tests/shell= /attr/test-record-raw similarity index 100% rename from tools/perf/tests/attr/test-record-raw rename to tools/perf/tests/shell/attr/test-record-raw diff --git a/tools/perf/tests/attr/test-record-spe-period b/tools/perf/test= s/shell/attr/test-record-spe-period similarity index 100% rename from tools/perf/tests/attr/test-record-spe-period rename to tools/perf/tests/shell/attr/test-record-spe-period diff --git a/tools/perf/tests/attr/test-record-spe-period-term b/tools/perf= /tests/shell/attr/test-record-spe-period-term similarity index 100% rename from tools/perf/tests/attr/test-record-spe-period-term rename to tools/perf/tests/shell/attr/test-record-spe-period-term diff --git a/tools/perf/tests/attr/test-record-spe-physical-address b/tools= /perf/tests/shell/attr/test-record-spe-physical-address similarity index 100% rename from tools/perf/tests/attr/test-record-spe-physical-address rename to tools/perf/tests/shell/attr/test-record-spe-physical-address diff --git a/tools/perf/tests/attr/test-record-user-regs-no-sve-aarch64 b/t= ools/perf/tests/shell/attr/test-record-user-regs-no-sve-aarch64 similarity index 100% rename from tools/perf/tests/attr/test-record-user-regs-no-sve-aarch64 rename to tools/perf/tests/shell/attr/test-record-user-regs-no-sve-aarch64 diff --git a/tools/perf/tests/attr/test-record-user-regs-old-sve-aarch64 b/= tools/perf/tests/shell/attr/test-record-user-regs-old-sve-aarch64 similarity index 100% rename from tools/perf/tests/attr/test-record-user-regs-old-sve-aarch64 rename to tools/perf/tests/shell/attr/test-record-user-regs-old-sve-aarch64 diff --git a/tools/perf/tests/attr/test-record-user-regs-sve-aarch64 b/tool= s/perf/tests/shell/attr/test-record-user-regs-sve-aarch64 similarity index 100% rename from tools/perf/tests/attr/test-record-user-regs-sve-aarch64 rename to tools/perf/tests/shell/attr/test-record-user-regs-sve-aarch64 diff --git a/tools/perf/tests/attr/test-stat-C0 b/tools/perf/tests/shell/at= tr/test-stat-C0 similarity index 100% rename from tools/perf/tests/attr/test-stat-C0 rename to tools/perf/tests/shell/attr/test-stat-C0 diff --git a/tools/perf/tests/attr/test-stat-basic b/tools/perf/tests/shell= /attr/test-stat-basic similarity index 100% rename from tools/perf/tests/attr/test-stat-basic rename to tools/perf/tests/shell/attr/test-stat-basic diff --git a/tools/perf/tests/attr/test-stat-default b/tools/perf/tests/she= ll/attr/test-stat-default similarity index 100% rename from tools/perf/tests/attr/test-stat-default rename to tools/perf/tests/shell/attr/test-stat-default diff --git a/tools/perf/tests/attr/test-stat-detailed-1 b/tools/perf/tests/= shell/attr/test-stat-detailed-1 similarity index 100% rename from tools/perf/tests/attr/test-stat-detailed-1 rename to tools/perf/tests/shell/attr/test-stat-detailed-1 diff --git a/tools/perf/tests/attr/test-stat-detailed-2 b/tools/perf/tests/= shell/attr/test-stat-detailed-2 similarity index 100% rename from tools/perf/tests/attr/test-stat-detailed-2 rename to tools/perf/tests/shell/attr/test-stat-detailed-2 diff --git a/tools/perf/tests/attr/test-stat-detailed-3 b/tools/perf/tests/= shell/attr/test-stat-detailed-3 similarity index 100% rename from tools/perf/tests/attr/test-stat-detailed-3 rename to tools/perf/tests/shell/attr/test-stat-detailed-3 diff --git a/tools/perf/tests/attr/test-stat-group1 b/tools/perf/tests/shel= l/attr/test-stat-group1 similarity index 100% rename from tools/perf/tests/attr/test-stat-group1 rename to tools/perf/tests/shell/attr/test-stat-group1 diff --git a/tools/perf/tests/attr/test-stat-no-inherit b/tools/perf/tests/= shell/attr/test-stat-no-inherit similarity index 100% rename from tools/perf/tests/attr/test-stat-no-inherit rename to tools/perf/tests/shell/attr/test-stat-no-inherit diff --git a/tools/perf/tests/attr.py b/tools/perf/tests/shell/lib/attr.py similarity index 100% rename from tools/perf/tests/attr.py rename to tools/perf/tests/shell/lib/attr.py --=20 2.46.1.824.gd892dcdcdd-goog