[DTrace-devel] [PATCH] test: Fix tst.InvalidModule4.sh
Kris Van Hees
kris.van.hees at oracle.com
Fri Apr 8 18:35:04 UTC 2022
On Fri, Apr 08, 2022 at 12:12:59PM -0400, Eugene Loh via DTrace-devel wrote:
> On 4/8/22 11:00 AM, Kris Van Hees wrote:
>
> > I suggest we remove this yesy entirely. It comes from the Solaris testsuite
> > where it is mentioned in a list of manual test (with annotation that it has
> > been automated):
> >
> > * 13) automated in tst.InvalidModule4.d.ksh
> > * /usr/sbin/dtrace -lm
> > * unix'/probefunc == "preempt"/{printf("FOUND");}'
> > * RESULT: not a valid probe description.
> >
> > But that expected result is simply not true. DTrace lists probes bsed on the
> > probe description portion of the script, and therefore the predicate and
> > clause are ignored. I.e. this test should not fail -- it does not test an
> > invalid module specification at all.
> Right, but the patch changes the name to foounix, which is an invalid name
> and therefore achieves the desired result. I agree the test was wrong, but
> this patch fixes it.
That is a different test though. These tests are exercising error reporting
when you specify invalid probe specifications for the -m argument. Not the
caee of a non-existant module - that is not an invlaid specification.
> > That said, there *is* merit in adding tests that actual exercise the different
> > ways you can specify probe list requests, based on provider, module, function,
> > and/or probe name. I do not believe we have extensive tests for that right
> > now, although the collection of tests probably exercises some of that anyway.
> >
> > But this test -- I'd say just submit a patch to remove it. It makes no sense.
> So should all InvalidModule* tests be removed???
Well no, only this one because this one is bogus.
> Anyhow, I agree the pre-existing test made no sense, but this patch fixes
> that.
No - different thing being tested.
> > On Mon, Apr 04, 2022 at 01:30:06AM -0400, eugene.loh--- via DTrace-devel wrote:
> > > From: Eugene Loh <eugene.loh at oracle.com>
> > >
> > > This test has had a mysterious history. It was apparently introduced
> > > as part of the DTrace port to Linux. It presumed the probe description
> > > was not valid, but the reasoning is unclear why. More specifically, the
> > > probe description was seemingly valid under Solaris and matched multiple
> > > probes. With the port to Linux, there were no module-unix probes. Thus,
> > > the probe description ended up not matching any probes, but perhaps not
> > > for the originally intended reason.
> > >
> > > With the port to DTrace on BPF, there are now module-unix probes. So
> > > DTrace finds matching probes, which causes the test to FAIL, but for
> > > dubious reasons.
> > >
> > > The test also perhaps assumed that DTrace would return a nonzero value
> > > if the probe description fits no probes. If no probes are found,
> > > however, DTrace simply indicates so while still returning a 0 value --
> > > whether on Solaris, legacy DTrace on Linux, or now DTrace on BPF.
> > >
> > > The next intriguing development was that the XFAIL annotation was lifted
> > > in patch 9574434662d0
> > > "Remove @@xfail markers from tests that should pass with assoc support".
> > > Again, the reasoning is unclear. Specifically, there is no connection
> > > between this test and associative support.
> > >
> > > Fix the test so that it clearly references an invalid module: foounix.
> > > Ignore the return value of the command. Now, the test should correctly
> > > find no matching probes for the invalid module; the test should now
> > > pass.
> > >
> > > Signed-off-by: Eugene Loh <eugene.loh at oracle.com>
> > > ---
> > > .../dtrace-util/man.ListProbesWithModules | 5 -----
> > > .../unittest/dtrace-util/tst.InvalidModule4.r | 4 +---
> > > .../dtrace-util/tst.InvalidModule4.sh | 19 ++-----------------
> > > 3 files changed, 3 insertions(+), 25 deletions(-)
> > >
> > > diff --git a/test/unittest/dtrace-util/man.ListProbesWithModules b/test/unittest/dtrace-util/man.ListProbesWithModules
> > > index 0b880df0..c6305296 100644
> > > --- a/test/unittest/dtrace-util/man.ListProbesWithModules
> > > +++ b/test/unittest/dtrace-util/man.ListProbesWithModules
> > > @@ -65,9 +65,4 @@
> > > * 12)
> > > * /usr/sbin/dtrace -lm unix '{printf("FOUND");}'
> > > * RESULT: List of only unix probes.
> > > - *
> > > - * 13) automated in tst.InvalidModule4.d.ksh
> > > - * /usr/sbin/dtrace -lm
> > > - * unix'/probefunc == "preempt"/{printf("FOUND");}'
> > > - * RESULT: not a valid probe description.
> > > */
> > > diff --git a/test/unittest/dtrace-util/tst.InvalidModule4.r b/test/unittest/dtrace-util/tst.InvalidModule4.r
> > > index 71563854..42515c55 100644
> > > --- a/test/unittest/dtrace-util/tst.InvalidModule4.r
> > > +++ b/test/unittest/dtrace-util/tst.InvalidModule4.r
> > > @@ -1,5 +1,3 @@
> > > ID PROVIDER MODULE FUNCTION NAME
> > > -0
> > > -test/unittest/dtrace-util/tst.InvalidModule4: dtrace failed
> > > -- @@stderr --
> > > -dtrace: failed to match :unix::: No probe matches description
> > > +dtrace: failed to match :foounix::: No probe matches description
> > > diff --git a/test/unittest/dtrace-util/tst.InvalidModule4.sh b/test/unittest/dtrace-util/tst.InvalidModule4.sh
> > > index c46938ce..83fcf3dc 100755
> > > --- a/test/unittest/dtrace-util/tst.InvalidModule4.sh
> > > +++ b/test/unittest/dtrace-util/tst.InvalidModule4.sh
> > > @@ -17,22 +17,7 @@
> > > #
> > > ##
> > > -if [ $# != 1 ]; then
> > > - echo expected one argument: '<'dtrace-path'>'
> > > - exit 2
> > > -fi
> > > -
> > > dtrace=$1
> > > -$dtrace $dt_flags -lm unix'/probefunc == "preempt"/{printf("FOUND");}'
> > > -
> > > -status=$?
> > > -
> > > -echo $status
> > > -
> > > -if [ "$status" -ne 0 ]; then
> > > - exit 0
> > > -fi
> > > -
> > > -echo $tst: dtrace failed
> > > -exit $status
> > > +$dtrace $dt_flags -lm foounix'/probefunc == "preempt"/{printf("FOUND");}'
> > > +exit 0
> > > --
> > > 2.18.4
> > >
> > >
> > > _______________________________________________
> > > DTrace-devel mailing list
> > > DTrace-devel at oss.oracle.com
> > > https://oss.oracle.com/mailman/listinfo/dtrace-devel
>
> _______________________________________________
> DTrace-devel mailing list
> DTrace-devel at oss.oracle.com
> https://oss.oracle.com/mailman/listinfo/dtrace-devel
More information about the DTrace-devel
mailing list