[DTrace-devel] [PATCH] test: Convert tick-* probes to ioctl:entry for more tests

Kris Van Hees kris.van.hees at oracle.com
Fri Apr 28 04:53:52 UTC 2023


On Tue, Mar 07, 2023 at 01:48:48PM -0500, eugene.loh--- via DTrace-devel wrote:
> From: Eugene Loh <eugene.loh at oracle.com>
> 
> There are currently reliability issues in the kernel for tick-* probes.
> Meanwhile, many tests have historically relied on tick-* for test
> construction, even though they simply needed any probe to fire "many
> times" -- which probe fires is immaterial to the test.
> 
> In patches
>     80a539ae test: Account for unreliable tick firing
>     8b989703 test: Fix race condition in many-fire tests
> many tests were converted from tick-* probes to ioctl:entry probes (and
> adding the appropriate trigger).  Not all tests that "incidentally" use
> tick-* probes were converted, to mitigate disruption to the test suite and
> because many tests do not use tick-* very aggressively.
> 
> Nevertheless, a few more tests have been failing egregiously in extensive
> testing due to this problem.  They use tick-* "moderately" (e.g., one or more
> dozen times).
> 
> Convert more tests from tick-* to ioctl:entry.
> 
> Signed-off-by: Eugene Loh <eugene.loh at oracle.com>

Reviewed-by: Kris Van Hees <kris.van.hees at oracle.com>

> ---
>  test/unittest/aggs/tst.lquantzero.d           | 18 ++++++++++--------
>  test/unittest/aggs/tst.negorder.d             | 18 ++++++++++--------
>  test/unittest/funcs/substr/tst.substrminate.d | 10 ++++++----
>  test/unittest/funcs/tst.basename.d            | 11 ++++++-----
>  test/unittest/multiaggs/tst.sort.d            | 10 ++++++----
>  test/unittest/multiaggs/tst.sortpos.d         | 15 ++++++++-------
>  6 files changed, 46 insertions(+), 36 deletions(-)
> 
> diff --git a/test/unittest/aggs/tst.lquantzero.d b/test/unittest/aggs/tst.lquantzero.d
> index 8f69d9a9..b942015d 100644
> --- a/test/unittest/aggs/tst.lquantzero.d
> +++ b/test/unittest/aggs/tst.lquantzero.d
> @@ -1,9 +1,10 @@
>  /*
>   * Oracle Linux DTrace.
> - * Copyright (c) 2006, 2022, Oracle and/or its affiliates. All rights reserved.
> + * Copyright (c) 2006, 2023, 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.
>   */
> +/* @@trigger: bogus-ioctl */
>  
>  #pragma D option quiet
>  
> @@ -14,20 +15,21 @@ BEGIN
>  	val = (-a * b) + a;
>  }
>  
> -tick-1ms
> +syscall::ioctl:entry
> +/pid == $target/
>  {
>  	incr = val % b;
>  	val += a;
>  }
>  
> -tick-1ms
> -/val == 0/
> +syscall::ioctl:entry
> +/pid == $target && val == 0/
>  {
>  	val += a;
>  }
>  
> -tick-1ms
> -/incr != 0/
> +syscall::ioctl:entry
> +/pid == $target && incr != 0/
>  {
>  	i++;
>  	@one[i] = lquantize(0, 10, 20, 1, incr);
> @@ -39,8 +41,8 @@ tick-1ms
>  	@seven[i] = lquantize(0, -10, -2, 1, incr);
>  }
>  
> -tick-1ms
> -/incr == 0/
> +syscall::ioctl:entry
> +/pid == $target && incr == 0/
>  {
>  	printf("Zero below the range:\n");
>  	printa(@one);
> diff --git a/test/unittest/aggs/tst.negorder.d b/test/unittest/aggs/tst.negorder.d
> index 4d5e6386..1e43b0dc 100644
> --- a/test/unittest/aggs/tst.negorder.d
> +++ b/test/unittest/aggs/tst.negorder.d
> @@ -1,9 +1,10 @@
>  /*
>   * Oracle Linux DTrace.
> - * Copyright (c) 2006, 2022, Oracle and/or its affiliates. All rights reserved.
> + * Copyright (c) 2006, 2023, 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.
>   */
> +/* @@trigger: bogus-ioctl */
>  
>  #pragma D option quiet
>  
> @@ -14,20 +15,21 @@ BEGIN
>  	val = (-a * b) + a;
>  }
>  
> -tick-1ms
> +syscall::ioctl:entry
> +/pid == $target/
>  {
>  	incr = val % b;
>  	val += a;
>  }
>  
> -tick-1ms
> -/val == 0/
> +syscall::ioctl:entry
> +/pid == $target && val == 0/
>  {
>  	val += a;
>  }
>  
> -tick-1ms
> -/incr != 0/
> +syscall::ioctl:entry
> +/pid == $target && incr != 0/
>  {
>  	i++;
>  	@quanty[i] = quantize(1, incr);
> @@ -37,8 +39,8 @@ tick-1ms
>  	@minny[i] = min(incr);
>  }
>  
> -tick-1ms
> -/incr == 0/
> +syscall::ioctl:entry
> +/pid == $target && incr == 0/
>  {
>  	printf("Ordering of quantize() with some negative weights:\n");
>  	printa(@quanty);
> diff --git a/test/unittest/funcs/substr/tst.substrminate.d b/test/unittest/funcs/substr/tst.substrminate.d
> index 573a2076..56532bc7 100644
> --- a/test/unittest/funcs/substr/tst.substrminate.d
> +++ b/test/unittest/funcs/substr/tst.substrminate.d
> @@ -1,9 +1,10 @@
>  /*
>   * Oracle Linux DTrace.
> - * Copyright (c) 2008, 2022, Oracle and/or its affiliates. All rights reserved.
> + * Copyright (c) 2008, 2023, 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.
>   */
> +/* @@trigger: bogus-ioctl */
>  
>  #pragma D option quiet
>  #pragma D option aggsortkey
> @@ -13,13 +14,14 @@
>   * substr() subroutine.
>   */
>  
> -tick-1ms
> -/i++ > 10/
> +syscall::ioctl:entry
> +/pid == $target && i++ > 10/
>  {
>  	exit(0);
>  }
>  
> -tick-1ms
> +syscall::ioctl:entry
> +/pid == $target/
>  {
>  	@[substr((i & 1) ? "Bryan is smart" : "he's not a dummy", 0,
>  	    (i & 1) ? 8 : 18)] = count();
> diff --git a/test/unittest/funcs/tst.basename.d b/test/unittest/funcs/tst.basename.d
> index 0d0c00c9..86d80873 100644
> --- a/test/unittest/funcs/tst.basename.d
> +++ b/test/unittest/funcs/tst.basename.d
> @@ -1,9 +1,10 @@
>  /*
>   * Oracle Linux DTrace.
> - * Copyright (c) 2006, 2022, Oracle and/or its affiliates. All rights reserved.
> + * Copyright (c) 2006, 2023, 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.
>   */
> +/* @@trigger: bogus-ioctl */
>  
>  #pragma D option quiet
>  
> @@ -41,8 +42,8 @@ BEGIN
>  	printf("#!/bin/bash\n\n");
>  }
>  
> -tick-1ms
> -/i < end/
> +syscall::ioctl:entry
> +/pid == $target && i < end/
>  {
>  	printf("if [ `basename \"%s\"` != \"%s\" ]; then\n",
>  	    dir[i], basename(dir[i]));
> @@ -59,8 +60,8 @@ tick-1ms
>  	i++;
>  }
>  
> -tick-1ms
> -/i == end/
> +syscall::ioctl:entry
> +/pid == $target && i == end/
>  {
>  	exit(0);
>  }
> diff --git a/test/unittest/multiaggs/tst.sort.d b/test/unittest/multiaggs/tst.sort.d
> index f9be92df..f653a30d 100644
> --- a/test/unittest/multiaggs/tst.sort.d
> +++ b/test/unittest/multiaggs/tst.sort.d
> @@ -1,13 +1,15 @@
>  /*
>   * Oracle Linux DTrace.
> - * Copyright (c) 2006, 2022, Oracle and/or its affiliates. All rights reserved.
> + * Copyright (c) 2006, 2023, 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.
>   */
> +/* @@trigger: bogus-ioctl */
>  
>  #pragma D option quiet
>  
> -tick-1ms
> +syscall::ioctl:entry
> +/pid == $target/
>  {
>  	i++;
>  	@a[i] = sum(100 - (i / 2));
> @@ -16,8 +18,8 @@ tick-1ms
>  	@d[i] = sum(100 - (i / 16));
>  }
>  
> -tick-1ms
> -/i == 100/
> +syscall::ioctl:entry
> +/pid == $target && i == 100/
>  {
>  	printa("%10d %@10d %@10d %@10d %@10d\n", @a, @b, @c, @d);
>  	printa("%10d %@10d %@10d %@10d %@10d\n", @d, @c, @b, @a);
> diff --git a/test/unittest/multiaggs/tst.sortpos.d b/test/unittest/multiaggs/tst.sortpos.d
> index 36763186..223bc15d 100644
> --- a/test/unittest/multiaggs/tst.sortpos.d
> +++ b/test/unittest/multiaggs/tst.sortpos.d
> @@ -1,9 +1,10 @@
>  /*
>   * Oracle Linux DTrace.
> - * Copyright (c) 2006, 2022, Oracle and/or its affiliates. All rights reserved.
> + * Copyright (c) 2006, 2023, 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.
>   */
> +/* @@trigger: bogus-ioctl */
>  
>  #pragma D option quiet
>  
> @@ -12,8 +13,8 @@ BEGIN
>  	j = 0;
>  }
>  
> -tick-1ms
> -/i < 100/
> +syscall::ioctl:entry
> +/pid == $target && i < 100/
>  {
>  	i++;
>  	@a[i] = sum(i);
> @@ -22,8 +23,8 @@ tick-1ms
>  	@d[i] = sum((75 + i) % 100);
>  }
>  
> -tick-1ms
> -/i == 100 && j < 10/
> +syscall::ioctl:entry
> +/pid == $target && i == 100 && j < 10/
>  {
>  	printf("Sorted at position %d:\n", j);
>  	setopt("aggsortpos", lltostr(j));
> @@ -32,8 +33,8 @@ tick-1ms
>  	j++;
>  }
>  
> -tick-1ms
> -/i == 100 && j == 10/
> +syscall::ioctl:entry
> +/pid == $target && i == 100 && j == 10/
>  {
>  	exit(0);
>  }
> -- 
> 2.18.4
> 
> 
> _______________________________________________
> 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