From: Ira Weiny <ira.weiny@intel.com>
To: Vishal Verma <vishal.l.verma@intel.com>
Cc: "Jiang, Dave" <dave.jiang@intel.com>,
"Schofield, Alison" <alison.schofield@intel.com>,
"Williams, Dan J" <dan.j.williams@intel.com>,
linux-cxl@vger.kernel.org, nvdimm@lists.linux.dev,
Ira Weiny <ira.weiny@intel.com>
Subject: [PATCH ndctl v2] ndctl/cxl/test: Add CXL event test
Date: Mon, 31 Jul 2023 16:53:56 -0700 [thread overview]
Message-ID: <20230726-cxl-event-v2-1-550f5625d22f@intel.com> (raw)
Previously CXL event testing was run by hand. This reduces testing
coverage including a lack of regression testing.
Add a CXL event test as part of the meson test infrastructure. Passing
is predicated on receiving the appropriate number of errors in each log.
Individual event values are not checked.
Signed-off-by: Ira Weiny <ira.weiny@intel.com>
---
Changes in v2:
[djiang] run shellcheck and fix as needed
[vishal] quote variables
[vishal] skip test if event_trigger is not available
[vishal] remove dead code
[vishal] explicitly use the first memdev returned from cxl-cli
[vishal] store trace output in a variable
[vishal] simplify grep statement looking for results
[vishal] use variables for expected values
- Link to v1: https://lore.kernel.org/r/20230726-cxl-event-v1-1-1cf8cb02b211@intel.com
---
test/cxl-events.sh | 76 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
test/meson.build | 2 ++
2 files changed, 78 insertions(+)
diff --git a/test/cxl-events.sh b/test/cxl-events.sh
new file mode 100644
index 000000000000..33b68daa6ade
--- /dev/null
+++ b/test/cxl-events.sh
@@ -0,0 +1,76 @@
+#!/bin/bash
+# SPDX-License-Identifier: GPL-2.0
+# Copyright (C) 2023 Intel Corporation. All rights reserved.
+
+. "$(dirname "$0")/common"
+
+# Results expected
+num_overflow_expected=1
+num_fatal_expected=2
+num_failure_expected=16
+num_info_expected=3
+
+set -ex
+
+trap 'err $LINENO' ERR
+
+check_prereq "jq"
+
+modprobe -r cxl_test
+modprobe cxl_test
+
+dev_path="/sys/bus/platform/devices"
+
+test_cxl_events()
+{
+ memdev="$1"
+
+ if [ ! -f "${dev_path}/${memdev}/event_trigger" ]; then
+ echo "TEST: Kernel does not support test event trigger"
+ exit 77
+ fi
+
+ echo "TEST: triggering $memdev"
+ echo 1 > "${dev_path}/${memdev}/event_trigger"
+}
+
+readarray -t memdevs < <("$CXL" list -b cxl_test -Mi | jq -r '.[].host')
+
+echo "TEST: Prep event trace"
+echo "" > /sys/kernel/tracing/trace
+echo 1 > /sys/kernel/tracing/events/cxl/enable
+echo 1 > /sys/kernel/tracing/tracing_on
+
+test_cxl_events "${memdevs[0]}"
+
+echo 0 > /sys/kernel/tracing/tracing_on
+
+echo "TEST: Events seen"
+trace_out=$(cat /sys/kernel/tracing/trace)
+
+num_overflow=$(grep -c "cxl_overflow" <<< "${trace_out}")
+num_fatal=$(grep -c "log=Fatal" <<< "${trace_out}")
+num_failure=$(grep -c "log=Failure" <<< "${trace_out}")
+num_info=$(grep -c "log=Informational" <<< "${trace_out}")
+echo " LOG (Expected) : (Found)"
+echo " overflow ($num_overflow_expected) : $num_overflow"
+echo " Fatal ($num_fatal_expected) : $num_fatal"
+echo " Failure ($num_failure_expected) : $num_failure"
+echo " Informational ($num_info_expected) : $num_info"
+
+if [ "$num_overflow" -ne $num_overflow_expected ]; then
+ err "$LINENO"
+fi
+if [ "$num_fatal" -ne $num_fatal_expected ]; then
+ err "$LINENO"
+fi
+if [ "$num_failure" -ne $num_failure_expected ]; then
+ err "$LINENO"
+fi
+if [ "$num_info" -ne $num_info_expected ]; then
+ err "$LINENO"
+fi
+
+check_dmesg "$LINENO"
+
+modprobe -r cxl_test
diff --git a/test/meson.build b/test/meson.build
index a956885f6df6..a33255bde1a8 100644
--- a/test/meson.build
+++ b/test/meson.build
@@ -155,6 +155,7 @@ cxl_sysfs = find_program('cxl-region-sysfs.sh')
cxl_labels = find_program('cxl-labels.sh')
cxl_create_region = find_program('cxl-create-region.sh')
cxl_xor_region = find_program('cxl-xor-region.sh')
+cxl_events = find_program('cxl-events.sh')
tests = [
[ 'libndctl', libndctl, 'ndctl' ],
@@ -183,6 +184,7 @@ tests = [
[ 'cxl-labels.sh', cxl_labels, 'cxl' ],
[ 'cxl-create-region.sh', cxl_create_region, 'cxl' ],
[ 'cxl-xor-region.sh', cxl_xor_region, 'cxl' ],
+ [ 'cxl-events.sh', cxl_events, 'cxl' ],
]
if get_option('destructive').enabled()
---
base-commit: 2fd570a0ed788b1bd0971dfdb1466a5dbcb79775
change-id: 20230726-cxl-event-dc00a2f94b60
Best regards,
--
Ira Weiny <ira.weiny@intel.com>
next reply other threads:[~2023-07-31 23:54 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-07-31 23:53 Ira Weiny [this message]
2023-08-01 0:31 ` [PATCH ndctl v2] ndctl/cxl/test: Add CXL event test Verma, Vishal L
2023-08-01 19:13 ` Ira Weiny
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230726-cxl-event-v2-1-550f5625d22f@intel.com \
--to=ira.weiny@intel.com \
--cc=alison.schofield@intel.com \
--cc=dan.j.williams@intel.com \
--cc=dave.jiang@intel.com \
--cc=linux-cxl@vger.kernel.org \
--cc=nvdimm@lists.linux.dev \
--cc=vishal.l.verma@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.