public inbox for kernelnewbies@kernelnewbies.org
 help / color / mirror / Atom feed
From: Jim Cromie <jim.cromie@gmail.com>
To: linux-kernel@vger.kernel.org, jbaron@akamai.com,
	gregkh@linuxfoundation.org, daniel.vetter@ffwll.ch,
	tvrtko.ursulin@linux.intel.com, jani.nikula@intel.com,
	ville.syrjala@linux.intel.com
Cc: groeck@google.com, linux-doc@vger.kernel.org,
	Jim Cromie <jim.cromie@gmail.com>,
	yanivt@google.com, intel-gfx@lists.freedesktop.org,
	kernelnewbies@kernelnewbies.org, linux@rasmusvillemoes.dk,
	robdclark@gmail.com, dri-devel@lists.freedesktop.org,
	mcgrof@kernel.org, seanpaul@chromium.org,
	amd-gfx@lists.freedesktop.org, joe@perches.com,
	bleung@google.com, intel-gvt-dev@lists.freedesktop.org,
	ukaszb@chromium.org
Subject: [PATCH v9-resend 27/54] selftests-dyndbg: check KCONFIG_CONFIG to avoid silly fails
Date: Tue, 16 Jul 2024 12:57:39 -0600	[thread overview]
Message-ID: <20240716185806.1572048-28-jim.cromie@gmail.com> (raw)
In-Reply-To: <20240716185806.1572048-1-jim.cromie@gmail.com>

Several tests are dependent upon config choices. Lets avoid failing
where that is noise.

The KCONFIG_CONFIG var exists to convey the config-file around.  If
the var names a file, read it and extract the relevant CONFIG items,
and use them to skip the dependent tests, thus avoiding the fails that
would follow, and the disruption to whatever CI is running these
selftests.

If the envar doesn't name a config-file, ".config" is assumed.

CONFIG_DYNAMIC_DEBUG=y:

basic-tests() and comma-terminator-tests() test for the presence of
the builtin pr_debugs in module/main.c, which I deemed stable and
therefore safe to count.  That said, the test fails if only
CONFIG_DYNAMIC_DEBUG_CORE=y is set.  It could be rewritten to test
against test-dynamic-debug.ko, but that just trades one config
dependence for another.

CONFIG_TEST_DYNAMIC_DEBUG=m

As written, test_percent_splitting() modprobes test_dynamic_debug,
enables several classes, and count them.  It could be re-written to
work for the builtin module also, but builtin test modules are not a
common or desirable build/config.

CONFIG_TEST_DYNAMIC_DEBUG=m && CONFIG_TEST_DYNAMIC_DEBUG_SUBMOD=m

test_mod_submod() recaps the bug found in DRM-CI where drivers werent
enabled by drm.debug=<bits>.  It modprobes both test_dynamic_debug &
test_dynamic_debug_submod, so it depends on a loadable modules config.

It could be rewritten to work in a builtin parent config; DRM=y is
common enough to be pertinent, but testing that config also wouldn't
really test anything more fully than all-loadable modules, since they
default together.

Signed-off-by: Jim Cromie <jim.cromie@gmail.com>

fixup-kconfig
---
 .../dynamic_debug/dyndbg_selftest.sh          | 45 ++++++++++++++++++-
 1 file changed, 44 insertions(+), 1 deletion(-)

diff --git a/tools/testing/selftests/dynamic_debug/dyndbg_selftest.sh b/tools/testing/selftests/dynamic_debug/dyndbg_selftest.sh
index fccd2012b548..d09ef26b2308 100755
--- a/tools/testing/selftests/dynamic_debug/dyndbg_selftest.sh
+++ b/tools/testing/selftests/dynamic_debug/dyndbg_selftest.sh
@@ -11,6 +11,30 @@ CYAN="\033[0;36m"
 NC="\033[0;0m"
 error_msg=""
 
+[ -e /proc/dynamic_debug/control ] || {
+    echo -e "${RED}: this test requires CONFIG_DYNAMIC_DEBUG=y ${NC}"
+    exit 0 # nothing to test here, no good reason to fail.
+}
+
+# need info to avoid failures due to untestable configs
+
+[ -f "$KCONFIG_CONFIG" ] || KCONFIG_CONFIG=".config"
+if [ -f "$KCONFIG_CONFIG" ]; then
+    echo "# consulting KCONFIG_CONFIG: $KCONFIG_CONFIG"
+    grep -q "CONFIG_DYNAMIC_DEBUG=y" $KCONFIG_CONFIG ; LACK_DD_BUILTIN=$?
+    grep -q "CONFIG_TEST_DYNAMIC_DEBUG=m" $KCONFIG_CONFIG ; LACK_TMOD=$?
+    grep -q "CONFIG_TEST_DYNAMIC_DEBUG_SUBMOD=m" $KCONFIG_CONFIG ; LACK_TMOD_SUBMOD=$?
+    if [ $V -eq 1 ]; then
+	echo LACK_DD_BUILTIN: $LACK_DD_BUILTIN
+	echo LACK_TMOD: $LACK_TMOD
+	echo LACK_TMOD_SUBMOD: $LACK_TMOD_SUBMOD
+    fi
+else
+    LACK_DD_BUILTIN=0
+    LACK_TMOD=0
+    LACK_TMOD_SUBMOD=0
+fi
+
 function vx () {
     echo $1 > /sys/module/dynamic_debug/parameters/verbose
 }
@@ -192,6 +216,10 @@ function check_err_msg() {
 
 function basic_tests {
     echo -e "${GREEN}# BASIC_TESTS ${NC}"
+    if [ $LACK_DD_BUILTIN -eq 1 ]; then
+	echo "SKIP"
+	return
+    fi
     ddcmd =_ # zero everything (except class'd sites)
     check_match_ct =p 0
     # there are several main's :-/
@@ -214,6 +242,10 @@ EOF
 
 function comma_terminator_tests {
     echo -e "${GREEN}# COMMA_TERMINATOR_TESTS ${NC}"
+    if [ $LACK_DD_BUILTIN -eq 1 ]; then
+	echo "SKIP"
+	return
+    fi
     # try combos of spaces & commas
     check_match_ct '\[params\]' 4 -r
     ddcmd module,params,=_		# commas as spaces
@@ -226,9 +258,12 @@ function comma_terminator_tests {
     ddcmd =_
 }
 
-    
 function test_percent_splitting {
     echo -e "${GREEN}# TEST_PERCENT_SPLITTING - multi-command splitting on % ${NC}"
+    if [ $LACK_TMOD -eq 1 ]; then
+	echo "SKIP"
+	return
+    fi
     ifrmmod test_dynamic_debug_submod
     ifrmmod test_dynamic_debug
     ddcmd =_
@@ -248,6 +283,14 @@ function test_percent_splitting {
 
 function test_mod_submod {
     echo -e "${GREEN}# TEST_MOD_SUBMOD ${NC}"
+    if [ $LACK_TMOD -eq 1 ]; then
+	echo "SKIP"
+	return
+    fi
+    if [ $LACK_TMOD_SUBMOD -eq 1 ]; then
+	echo "SKIP"
+	return
+    fi
     ifrmmod test_dynamic_debug_submod
     ifrmmod test_dynamic_debug
     ddcmd =_
-- 
2.45.2


_______________________________________________
Kernelnewbies mailing list
Kernelnewbies@kernelnewbies.org
https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies

  parent reply	other threads:[~2024-07-16 19:09 UTC|newest]

Thread overview: 55+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-07-16 18:57 [PATCH v9-resend 00/54] fix CONFIG_DRM_USE_DYNAMIC_DEBUG=y Jim Cromie
2024-07-16 18:57 ` [PATCH v9-resend 01/54] docs/dyndbg: update examples \012 to \n Jim Cromie
2024-07-16 18:57 ` [PATCH v9-resend 02/54] test-dyndbg: fixup CLASSMAP usage error Jim Cromie
2024-07-16 18:57 ` [PATCH v9-resend 03/54] dyndbg: reword "class unknown, " to "class:_UNKNOWN_" Jim Cromie
2024-07-16 18:57 ` [PATCH v9-resend 04/54] dyndbg: make ddebug_class_param union members same size Jim Cromie
2024-07-16 18:57 ` [PATCH v9-resend 05/54] dyndbg: replace classmap list with a vector Jim Cromie
2024-07-16 18:57 ` [PATCH v9-resend 06/54] dyndbg: ddebug_apply_class_bitmap - add module arg, select on it Jim Cromie
2024-07-16 18:57 ` [PATCH v9-resend 07/54] dyndbg: split param_set_dyndbg_classes to _module & wrapper fns Jim Cromie
2024-07-16 18:57 ` [PATCH v9-resend 08/54] dyndbg: drop NUM_TYPE_ARRAY Jim Cromie
2024-07-16 18:57 ` [PATCH v9-resend 09/54] dyndbg: reduce verbose/debug clutter Jim Cromie
2024-07-16 18:57 ` [PATCH v9-resend 10/54] dyndbg: silence debugs with no-change updates Jim Cromie
2024-07-16 18:57 ` [PATCH v9-resend 11/54] dyndbg: tighten ddebug_class_name() 1st arg type Jim Cromie
2024-07-16 18:57 ` [PATCH v9-resend 12/54] dyndbg: tighten fn-sig of ddebug_apply_class_bitmap Jim Cromie
2024-07-16 18:57 ` [PATCH v9-resend 13/54] dyndbg: reduce verbose=3 messages in ddebug_add_module Jim Cromie
2024-07-16 18:57 ` [PATCH v9-resend 14/54] dyndbg-API: remove DD_CLASS_TYPE_(DISJOINT|LEVEL)_NAMES and code Jim Cromie
2024-07-16 18:57 ` [PATCH v9-resend 15/54] dyndbg-API: fix DECLARE_DYNDBG_CLASSMAP Jim Cromie
2024-07-16 18:57 ` [PATCH v9-resend 16/54] selftests-dyndbg: add tools/testing/selftests/dynamic_debug/* Jim Cromie
2024-07-16 18:57 ` [PATCH v9-resend 17/54] dyndbg-API: promote DYNDBG_CLASSMAP_PARAM to API Jim Cromie
2024-07-16 18:57 ` [PATCH v9-resend 18/54] dyndbg-doc: add classmap info to howto Jim Cromie
2024-07-16 18:57 ` [PATCH v9-resend 19/54] dyndbg: treat comma as a token separator Jim Cromie
2024-07-16 18:57 ` [PATCH v9-resend 20/54] selftests-dyndbg: add comma_terminator_tests Jim Cromie
2024-07-16 18:57 ` [PATCH v9-resend 21/54] dyndbg: split multi-query strings with % Jim Cromie
2024-07-16 18:57 ` [PATCH v9-resend 22/54] selftests-dyndbg: test_percent_splitting Jim Cromie
2024-07-16 18:57 ` [PATCH v9-resend 23/54] docs/dyndbg: explain new delimiters: comma, percent Jim Cromie
2024-07-16 18:57 ` [PATCH v9-resend 24/54] selftests-dyndbg: add test_mod_submod Jim Cromie
2024-07-16 18:57 ` [PATCH v9-resend 25/54] dyndbg-doc: explain flags parse 1st Jim Cromie
2024-07-16 18:57 ` [PATCH v9-resend 26/54] dyndbg: change __dynamic_func_call_cls* macros into expressions Jim Cromie
2024-07-16 18:57 ` Jim Cromie [this message]
2024-07-16 18:57 ` [PATCH v9-resend 28/54] dyndbg-selftest: reduce default verbosity Jim Cromie
2024-07-16 18:57 ` [PATCH v9-resend 29/54] drm: use correct ccflags-y spelling Jim Cromie
2024-07-16 18:57 ` [PATCH v9-resend 30/54] drm-dyndbg: adapt drm core to use dyndbg classmaps-v2 Jim Cromie
2024-07-16 18:57 ` [PATCH v9-resend 31/54] drm-dyndbg: adapt DRM to invoke DYNDBG_CLASSMAP_PARAM Jim Cromie
2024-07-16 18:57 ` [PATCH v9-resend 32/54] drm-dyndbg: DRM_CLASSMAP_USE in amdgpu driver Jim Cromie
2024-07-16 18:57 ` [PATCH v9-resend 33/54] drm-dyndbg: DRM_CLASSMAP_USE in i915 driver Jim Cromie
2024-07-16 18:57 ` [PATCH v9-resend 34/54] drm-dyndbg: DRM_CLASSMAP_USE in drm_crtc_helper Jim Cromie
2024-07-16 18:57 ` [PATCH v9-resend 35/54] drm-dyndbg: DRM_CLASSMAP_USE in drm_dp_helper Jim Cromie
2024-07-16 18:57 ` [PATCH v9-resend 36/54] drm-dyndbg: DRM_CLASSMAP_USE in nouveau Jim Cromie
2024-07-16 18:57 ` [PATCH v9-resend 37/54] drm-print: workaround unused variable compiler meh Jim Cromie
2024-07-16 18:57 ` [PATCH v9-resend 38/54] drm-dyndbg: add DRM_CLASSMAP_USE to Xe driver Jim Cromie
2024-07-16 18:57 ` [PATCH v9-resend 39/54] drm-dyndbg: add DRM_CLASSMAP_USE to virtio_gpu Jim Cromie
2024-07-16 18:57 ` [PATCH v9-resend 40/54] drm-dyndbg: add DRM_CLASSMAP_USE to simpledrm Jim Cromie
2024-07-16 18:57 ` [PATCH v9-resend 41/54] drm-dyndbg: add DRM_CLASSMAP_USE to bochs Jim Cromie
2024-07-16 18:57 ` [PATCH v9-resend 42/54] drm-dyndbg: add DRM_CLASSMAP_USE to etnaviv Jim Cromie
2024-07-16 18:57 ` [PATCH v9-resend 43/54] drm-dyndbg: add DRM_CLASSMAP_USE to gma500 driver Jim Cromie
2024-07-16 18:57 ` [PATCH v9-resend 44/54] drm-dyndbg: add DRM_CLASSMAP_USE to radeon Jim Cromie
2024-07-16 18:57 ` [PATCH v9-resend 45/54] drm-dyndbg: add DRM_CLASSMAP_USE to vmwgfx driver Jim Cromie
2024-07-16 18:57 ` [PATCH v9-resend 46/54] drm-dyndbg: add DRM_CLASSMAP_USE to vkms driver Jim Cromie
2024-07-16 18:57 ` [PATCH v9-resend 47/54] drm-dyndbg: add DRM_CLASSMAP_USE to udl driver Jim Cromie
2024-07-16 18:58 ` [PATCH v9-resend 48/54] drm-dyndbg: add DRM_CLASSMAP_USE to mgag200 driver Jim Cromie
2024-07-16 18:58 ` [PATCH v9-resend 49/54] drm-dyndbg: add DRM_CLASSMAP_USE to the gud driver Jim Cromie
2024-07-16 18:58 ` [PATCH v9-resend 50/54] drm-dyndbg: add DRM_CLASSMAP_USE to the qxl driver Jim Cromie
2024-07-16 18:58 ` [PATCH v9-resend 51/54] drm-dyndbg: add DRM_CLASSMAP_USE to the drm_gem_shmem_helper driver Jim Cromie
2024-07-16 18:58 ` [PATCH v9-resend 52/54] drm: restore CONFIG_DRM_USE_DYNAMIC_DEBUG un-BROKEN Jim Cromie
2024-07-16 18:58 ` [PATCH v9-resend 53/54] dyndbg: tighten up kdoc about DYNDBG_CLASSMAP_* macros Jim Cromie
2024-07-16 18:58 ` [PATCH v9-resend 54/54] docs-dyndbg: improve howto classmaps api section Jim Cromie

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=20240716185806.1572048-28-jim.cromie@gmail.com \
    --to=jim.cromie@gmail.com \
    --cc=amd-gfx@lists.freedesktop.org \
    --cc=bleung@google.com \
    --cc=daniel.vetter@ffwll.ch \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=groeck@google.com \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=intel-gvt-dev@lists.freedesktop.org \
    --cc=jani.nikula@intel.com \
    --cc=jbaron@akamai.com \
    --cc=joe@perches.com \
    --cc=kernelnewbies@kernelnewbies.org \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@rasmusvillemoes.dk \
    --cc=mcgrof@kernel.org \
    --cc=robdclark@gmail.com \
    --cc=seanpaul@chromium.org \
    --cc=tvrtko.ursulin@linux.intel.com \
    --cc=ukaszb@chromium.org \
    --cc=ville.syrjala@linux.intel.com \
    --cc=yanivt@google.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox