[DTrace-devel] [PATCH] test: Add clear() sanity check to tst.clearavg2.d
eugene.loh at oracle.com
eugene.loh at oracle.com
Wed Sep 14 23:05:41 UTC 2022
From: Eugene Loh <eugene.loh at oracle.com>
With the port to BPF, aggregation clear() does not yet work. This
is reflected in the XFAIL status of tst.clearavg2.d. Further, with
fb264ec9 "test: Annotate tests that require missing features"
the XFAIL message is more precise, citing the missing support.
However, a few patches earlier, in f256db8f "Implement setopt()",
the consumer is "fixed" to skip over unrecognized DTRACEACT_LIBACT
records. This is enough to make tst.clearavg2.d XPASS, since the
test is not very stringent.
It is a little unclear what, exactly, the test is checking, but
modify the test so that it checks printa() in this sequence:
avg(nonzero) // sanity check on clear()
clear()
printa() // check clear()/printa()
avg(0)
printa() // check avg(0)/printa()
Signed-off-by: Eugene Loh <eugene.loh at oracle.com>
---
test/unittest/aggs/tst.clearavg2.d | 30 +++++++++++++++++++-----------
test/unittest/aggs/tst.clearavg2.r | 14 +-------------
2 files changed, 20 insertions(+), 24 deletions(-)
diff --git a/test/unittest/aggs/tst.clearavg2.d b/test/unittest/aggs/tst.clearavg2.d
index 3d918502..88827014 100644
--- a/test/unittest/aggs/tst.clearavg2.d
+++ b/test/unittest/aggs/tst.clearavg2.d
@@ -1,6 +1,6 @@
/*
* Oracle Linux DTrace.
- * Copyright (c) 2007, 2021, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2022, Oracle and/or its affiliates. All rights reserved.
* Licensed under the Universal Permissive License v 1.0 as shown at
* http://oss.oracle.com/licenses/upl.
*/
@@ -14,28 +14,36 @@
* NOTES:
* Verifies that printing a clear()'d aggregation with an avg()
* aggregation function of 0 doesn't cause divide-by-zero problems.
- *
+ * The rate settings and delays are intended to work around
+ * producer-consumer timing issues.
*/
#pragma D option quiet
#pragma D option switchrate=50ms
#pragma D option aggrate=1ms
-tick-100ms
-/(x++ % 5) == 0/
+tick-1s
+/++n == 1/
{
- @time = avg(0);
+ /* use avg() with nonzero data to check clear() */
+ @ = avg(10);
+ @ = avg(20);
+ printa(" %@d\n", @);
}
-tick-100ms
-/x > 5 && x <= 20/
+tick-1s
+/n == 2/
{
- printa(" %@d\n", @time);
- clear(@time);
+ /* check clear() / printa() */
+ clear(@);
+ printa(" %@d\n", @);
}
-tick-100ms
-/x > 20/
+tick-1s
+/n == 3/
{
+ /* check avg(0) / printa() */
+ @ = avg(0);
+ printa(" %@d\n", @);
exit(0);
}
diff --git a/test/unittest/aggs/tst.clearavg2.r b/test/unittest/aggs/tst.clearavg2.r
index 7cceedda..1a8eb708 100644
--- a/test/unittest/aggs/tst.clearavg2.r
+++ b/test/unittest/aggs/tst.clearavg2.r
@@ -1,16 +1,4 @@
- 0
- 0
- 0
- 0
- 0
- 0
- 0
- 0
- 0
- 0
- 0
- 0
- 0
+ 15
0
0
--
2.18.4
More information about the DTrace-devel
mailing list