[DTrace-devel] [PATCH] test: Convert tick-* probes to write:entry probes for clear() tests

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


On Sat, Mar 04, 2023 at 06:54:23PM -0500, eugene.loh--- via DTrace-devel wrote:
> From: Eugene Loh <eugene.loh at oracle.com>
> 
> Tests for the clear() function rely on some interactions between the
> producer and consumer.  Specifically, we want to make sure the producer
> waits amply after sending a clear() action to the consumer before taking
> further action.  Arguably, a tick-* probe could be used for such timing
> purposes, but we find tick-* probes to be unreliable on many systems and
> their robustness is not the subject of these tests.
> 
> Introduce a trigger that emits messages at most once a second.  The
> D test scripts can then probe system::write:entry to fire after delays.
> 
> Also, add @@nosort options to these tests.
> 
> Finally, remove some .r.p files.  The output is deterministic anyhow.
> So it's easier and more stringent to supply a verbatim .r results file.
> 
> Signed-off-by: Eugene Loh <eugene.loh at oracle.com>

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

> ---
>  test/triggers/Build                         |  3 +-
>  test/triggers/periodic_output.c             | 29 +++++++++++
>  test/unittest/aggs/tst.clear.d              | 53 +++++++++++--------
>  test/unittest/aggs/tst.clear.r              | 23 ++++++++-
>  test/unittest/aggs/tst.clear.r.p            | 46 -----------------
>  test/unittest/aggs/tst.clearavg.d           | 27 +++++-----
>  test/unittest/aggs/tst.clearavg2.d          | 24 +++++----
>  test/unittest/aggs/tst.clearavg2.r          | 13 -----
>  test/unittest/aggs/tst.cleardenormalize.d   | 57 ++++++++++++---------
>  test/unittest/aggs/tst.cleardenormalize.r   | 23 ++++++++-
>  test/unittest/aggs/tst.cleardenormalize.r.p |  1 -
>  test/unittest/aggs/tst.clearlquantize.d     | 30 +++++------
>  test/unittest/aggs/tst.clearnormalize.d     | 53 +++++++++++--------
>  test/unittest/aggs/tst.clearnormalize.r     | 23 ++++++++-
>  test/unittest/aggs/tst.clearnormalize.r.p   |  1 -
>  15 files changed, 232 insertions(+), 174 deletions(-)
>  create mode 100644 test/triggers/periodic_output.c
>  delete mode 100755 test/unittest/aggs/tst.clear.r.p
>  delete mode 120000 test/unittest/aggs/tst.cleardenormalize.r.p
>  delete mode 120000 test/unittest/aggs/tst.clearnormalize.r.p
> 
> diff --git a/test/triggers/Build b/test/triggers/Build
> index 4538a5c1..7363e420 100644
> --- a/test/triggers/Build
> +++ b/test/triggers/Build
> @@ -1,9 +1,10 @@
>  # Oracle Linux DTrace.
> -# Copyright (c) 2011, 2022, Oracle and/or its affiliates. All rights reserved.
> +# Copyright (c) 2011, 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.
>  
>  EXTERNAL_64BIT_TRIGGERS = testprobe readwholedir mmap bogus-ioctl open delaydie futex \
> +    periodic_output \
>      pid-tst-args1 pid-tst-float pid-tst-fork pid-tst-gcc \
>      pid-tst-ret1 pid-tst-ret2 pid-tst-vfork pid-tst-weak1 pid-tst-weak2 \
>      proc-tst-sigwait proc-tst-omp proc-tst-pthread-exec profile-tst-ufuncsort \
> diff --git a/test/triggers/periodic_output.c b/test/triggers/periodic_output.c
> new file mode 100644
> index 00000000..7b131fda
> --- /dev/null
> +++ b/test/triggers/periodic_output.c
> @@ -0,0 +1,29 @@
> +/*
> + * Oracle Linux DTrace.
> + * Copyright (c) 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.
> + */
> +
> +/* emit periodic output */
> +
> +#include <stdio.h>
> +#include <time.h>
> +
> +int main (void)
> +{
> +	struct timespec t;
> +	int i = 0;
> +	FILE *fp = fopen("/dev/null", "a");
> +
> +	t.tv_sec = 1;
> +	t.tv_nsec = 0;
> +
> +	while (1) {
> +		fprintf(fp, "periodic output %4.4d\n", i++);
> +		fflush(fp);
> +		nanosleep(&t, NULL);
> +	}
> +
> +	return 0;
> +}
> diff --git a/test/unittest/aggs/tst.clear.d b/test/unittest/aggs/tst.clear.d
> index f574b5d2..07d3a7e8 100644
> --- a/test/unittest/aggs/tst.clear.d
> +++ b/test/unittest/aggs/tst.clear.d
> @@ -1,18 +1,17 @@
>  /*
>   * Oracle Linux DTrace.
> - * Copyright (c) 2006, 2020, 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.
>   */
>  
>  /*
> - * ASSERTION:
> - *   Positive test for clearing aggregations
> + * ASSERTION: Positive test for clearing aggregations
>   *
>   * SECTION: Aggregations/Clearing aggregations
> - *
> - *
>   */
> +/* @@nosort */
> +/* @@trigger: periodic_output */
>  
>  #pragma D option quiet
>  #pragma D option aggrate=1ms
> @@ -21,32 +20,42 @@
>  BEGIN
>  {
>  	i = 0;
> -	start = timestamp;
> -}
> -
> -tick-100ms
> -/i < 20/
> -{
> -	@func[i%5] = sum(i * 100);
> -	i++;
> -}
> -
> -tick-100ms
> -/i == 10/
> -{
> +	@func[i%5] = sum(i * 100); i++;
> +	@func[i%5] = sum(i * 100); i++;
> +	@func[i%5] = sum(i * 100); i++;
> +	@func[i%5] = sum(i * 100); i++;
> +	@func[i%5] = sum(i * 100); i++;
> +	@func[i%5] = sum(i * 100); i++;
> +	@func[i%5] = sum(i * 100); i++;
> +	@func[i%5] = sum(i * 100); i++;
> +	@func[i%5] = sum(i * 100); i++;
> +	@func[i%5] = sum(i * 100); i++;
>  	printf("Aggregation data before clear():\n");
>  	printa(@func);
> -
>  	clear(@func);
> +	n = 0;
> +}
>  
> +syscall::write:entry
> +/pid == $target && n == 2/
> +{
>  	printf("Aggregation data after clear():\n");
>  	printa(@func);
> -	i++;
> +        i++;
>  }
>  
> -tick-100ms
> -/i == 20/
> +syscall::write:entry
> +/pid == $target && n++ == 4/
>  {
> +	@func[i%5] = sum(i * 100); i++;
> +	@func[i%5] = sum(i * 100); i++;
> +	@func[i%5] = sum(i * 100); i++;
> +	@func[i%5] = sum(i * 100); i++;
> +	@func[i%5] = sum(i * 100); i++;
> +	@func[i%5] = sum(i * 100); i++;
> +	@func[i%5] = sum(i * 100); i++;
> +	@func[i%5] = sum(i * 100); i++;
> +	@func[i%5] = sum(i * 100); i++;
>  	printf("Final aggregation data:\n");
>  	printa(@func);
>  
> diff --git a/test/unittest/aggs/tst.clear.r b/test/unittest/aggs/tst.clear.r
> index 1fa2c752..486e4ac0 100644
> --- a/test/unittest/aggs/tst.clear.r
> +++ b/test/unittest/aggs/tst.clear.r
> @@ -1 +1,22 @@
> -All sums as expected.
> +Aggregation data before clear():
> +
> +        0              500
> +        1              700
> +        2              900
> +        3             1100
> +        4             1300
> +Aggregation data after clear():
> +
> +        0                0
> +        1                0
> +        2                0
> +        3                0
> +        4                0
> +Final aggregation data:
> +
> +        0             1500
> +        1             2700
> +        2             2900
> +        3             3100
> +        4             3300
> +
> diff --git a/test/unittest/aggs/tst.clear.r.p b/test/unittest/aggs/tst.clear.r.p
> deleted file mode 100755
> index f12022b8..00000000
> --- a/test/unittest/aggs/tst.clear.r.p
> +++ /dev/null
> @@ -1,46 +0,0 @@
> -#!/usr/bin/gawk -f
> -# Oracle Linux DTrace.
> -# Copyright (c) 2016, 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.
> -# Check that the sum of all 'before clear' values is nonzero,
> -# the sum of all 'after clear' values is zero, and the sum of
> -# all 'final' values are nonzero again.
> -
> -BEGIN {
> -    inafter = 0;
> -    sum = 0;
> -    fail = 0;
> -}
> -
> -$2 ~ /^[0-9]+$/ { sum += $2; }
> -
> -function checksums(zerop) {
> -    if (zerop && sum != 0) {
> -        printf "FAIL: sum %i is nonzero.\n", sum;
> -        fail = 1;
> -    }
> -    else if (!zerop && sum == 0) {
> -        fail = 1;
> -        printf "FAIL: sum %i is zero.\n", sum;
> -    }
> -}
> -
> -/after clear/ {
> -    checksums(inafter);
> -    inafter = 1;
> -    sum = 0;
> -}
> -
> -/Final / {
> -    checksums(inafter);
> -    inafter = 0;
> -    sum = 0;
> -}
> -
> -END {
> -    checksums(inafter);
> -
> -    if (!fail)
> -        printf "All sums as expected.\n";
> -}
> diff --git a/test/unittest/aggs/tst.clearavg.d b/test/unittest/aggs/tst.clearavg.d
> index 16d18f34..60e60365 100644
> --- a/test/unittest/aggs/tst.clearavg.d
> +++ b/test/unittest/aggs/tst.clearavg.d
> @@ -1,38 +1,37 @@
>  /*
>   * Oracle Linux DTrace.
> - * Copyright (c) 2006, 2020, 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.
>   */
>  
>  /*
> - * ASSERTION:
> - * 	Positive avg() test
> + * ASSERTION: Positive avg() test
>   *
>   * SECTION: Aggregations/Aggregations
>   *
>   * NOTES:
>   *	Verifies that printing a clear()'d aggregation with an avg()
>   *	aggregation function doesn't cause problems.
> - *
>   */
> +/* @@nosort */
> +/* @@trigger: periodic_output */
>  
>  #pragma D option quiet
>  
> -tick-10ms
> -/i++ < 5/
> +BEGIN
>  {
>  	@a = avg(timestamp);
> +	@a = avg(timestamp);
> +	@a = avg(timestamp);
> +	@a = avg(timestamp);
> +	@a = avg(timestamp);
> +	clear(@a);
> +	n = 0;
>  }
>  
> -tick-10ms
> -/i == 5/
> -{
> -	exit(2);
> -}
> -
> -END
> +syscall::write:entry
> +/pid == $target && n++ == 2/
>  {
> -	clear(@a);
>  	exit(0);
>  }
> diff --git a/test/unittest/aggs/tst.clearavg2.d b/test/unittest/aggs/tst.clearavg2.d
> index 984ce82c..cd022e14 100644
> --- a/test/unittest/aggs/tst.clearavg2.d
> +++ b/test/unittest/aggs/tst.clearavg2.d
> @@ -1,41 +1,43 @@
>  /*
>   * Oracle Linux DTrace.
> - * Copyright (c) 2007, 2021, Oracle and/or its affiliates. All rights reserved.
> + * Copyright (c) 2007, 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.
>   */
>  
>  /*
> - * ASSERTION:
> - * 	Positive avg() test
> + * ASSERTION: Positive avg() test
>   *
>   * SECTION: Aggregations/Aggregations
>   *
>   * NOTES:
>   *	Verifies that printing a clear()'d aggregation with an avg()
>   *	aggregation function of 0 doesn't cause divide-by-zero problems.
> - *
>   */
> +/* @@nosort */
> +/* @@trigger: periodic_output */
>  
>  #pragma D option quiet
>  #pragma D option switchrate=50ms
>  #pragma D option aggrate=1ms
>  
> -tick-100ms
> -/(x++ % 5) == 0/
> +BEGIN
>  {
>  	@time = avg(0);
> +	printa(" %@d\n", @time);
> +	clear(@time);
> +	n = 0;
>  }
>  
> -tick-100ms
> -/x > 5 && x <= 20/
> +syscall::write:entry
> +/pid == $target && n == 2/
>  {
>  	printa(" %@d\n", @time);
> -	clear(@time);
>  }
>  
> -tick-100ms
> -/x > 20/
> +syscall::write:entry
> +/pid == $target && n++ == 4/
>  {
> +	@time = avg(0);
>  	exit(0);
>  }
> diff --git a/test/unittest/aggs/tst.clearavg2.r b/test/unittest/aggs/tst.clearavg2.r
> index 7cceedda..aa2f0233 100644
> --- a/test/unittest/aggs/tst.clearavg2.r
> +++ b/test/unittest/aggs/tst.clearavg2.r
> @@ -1,16 +1,3 @@
>   0
>   0
> - 0
> - 0
> - 0
> - 0
> - 0
> - 0
> - 0
> - 0
> - 0
> - 0
> - 0
> - 0
> - 0
>  
> diff --git a/test/unittest/aggs/tst.cleardenormalize.d b/test/unittest/aggs/tst.cleardenormalize.d
> index 191ecad7..bdc8ae96 100644
> --- a/test/unittest/aggs/tst.cleardenormalize.d
> +++ b/test/unittest/aggs/tst.cleardenormalize.d
> @@ -1,18 +1,18 @@
>  /*
>   * Oracle Linux DTrace.
> - * Copyright (c) 2006, 2020, 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.
>   */
>  
>  /*
> - * ASSERTION:
> - *    Denormalized aggregations can be cleared
> + * ASSERTION: Denormalized aggregations can be cleared
>   *
>   * SECTION: Aggregations/Normalization;
> - * 	Aggregations/Clearing aggregations
> - *
> + *	Aggregations/Clearing aggregations
>   */
> +/* @@nosort */
> +/* @@trigger: periodic_output */
>  
>  #pragma D option quiet
>  #pragma D option aggrate=1ms
> @@ -21,33 +21,44 @@
>  BEGIN
>  {
>  	i = 0;
> -	start = timestamp;
> -}
> -
> -tick-100ms
> -/i != 10 || i != 20/
> -{
> -	@func[i%5] = sum(i * 100);
> -	i++;
> -}
> -
> -tick-100ms
> -/i == 10/
> -{
> +	@func[i % 5] = sum(i * 100); i++;
> +	@func[i % 5] = sum(i * 100); i++;
> +	@func[i % 5] = sum(i * 100); i++;
> +	@func[i % 5] = sum(i * 100); i++;
> +	@func[i % 5] = sum(i * 100); i++;
> +	@func[i % 5] = sum(i * 100); i++;
> +	@func[i % 5] = sum(i * 100); i++;
> +	@func[i % 5] = sum(i * 100); i++;
> +	@func[i % 5] = sum(i * 100); i++;
> +	@func[i % 5] = sum(i * 100); i++;
>  	printf("Denormalized data before clear:\n");
>  	denormalize(@func);
>  	printa(@func);
> -
>  	clear(@func);
> +	n = 0;
> +}
>  
> -	printf("Aggregation data after clear:\n");
> +syscall::write:entry
> +/pid == $target && n == 2/
> +{
> +	printf("Aggregation data after clear():\n");
>  	printa(@func);
> -	i++
> +	i++;
>  }
>  
> -tick-100ms
> -/i == 20/
> +syscall::write:entry
> +/pid == $target && n++ == 4/
>  {
> +	@func[i % 5] = sum(i * 100); i++;
> +	@func[i % 5] = sum(i * 100); i++;
> +	@func[i % 5] = sum(i * 100); i++;
> +	@func[i % 5] = sum(i * 100); i++;
> +	@func[i % 5] = sum(i * 100); i++;
> +	@func[i % 5] = sum(i * 100); i++;
> +	@func[i % 5] = sum(i * 100); i++;
> +	@func[i % 5] = sum(i * 100); i++;
> +	@func[i % 5] = sum(i * 100); i++;
> +
>  	printf("Final (denormalized) aggregation data:\n");
>  	denormalize(@func);
>  	printa(@func);
> diff --git a/test/unittest/aggs/tst.cleardenormalize.r b/test/unittest/aggs/tst.cleardenormalize.r
> index 1fa2c752..186fcdd5 100644
> --- a/test/unittest/aggs/tst.cleardenormalize.r
> +++ b/test/unittest/aggs/tst.cleardenormalize.r
> @@ -1 +1,22 @@
> -All sums as expected.
> +Denormalized data before clear:
> +
> +        0              500
> +        1              700
> +        2              900
> +        3             1100
> +        4             1300
> +Aggregation data after clear():
> +
> +        0                0
> +        1                0
> +        2                0
> +        3                0
> +        4                0
> +Final (denormalized) aggregation data:
> +
> +        0             1500
> +        1             2700
> +        2             2900
> +        3             3100
> +        4             3300
> +
> diff --git a/test/unittest/aggs/tst.cleardenormalize.r.p b/test/unittest/aggs/tst.cleardenormalize.r.p
> deleted file mode 120000
> index 91ba6415..00000000
> --- a/test/unittest/aggs/tst.cleardenormalize.r.p
> +++ /dev/null
> @@ -1 +0,0 @@
> -tst.clear.r.p
> \ No newline at end of file
> diff --git a/test/unittest/aggs/tst.clearlquantize.d b/test/unittest/aggs/tst.clearlquantize.d
> index dbd987db..40146b24 100644
> --- a/test/unittest/aggs/tst.clearlquantize.d
> +++ b/test/unittest/aggs/tst.clearlquantize.d
> @@ -6,8 +6,7 @@
>   */
>  
>  /*
> - * ASSERTION:
> - * 	Positive quantize()/lquantize()/clear() test
> + * ASSERTION: Positive quantize()/lquantize()/clear() test
>   *
>   * SECTION: Aggregations/Aggregations
>   *
> @@ -17,6 +16,7 @@
>   */
>  
>  /* @@nosort */
> +/* @@trigger: periodic_output */
>  
>  #pragma D option switchrate=20ms
>  #pragma D option aggrate=1ms
> @@ -24,30 +24,26 @@
>  
>  BEGIN
>  {
> -	z = 0;
> +	i = 0;
> +	n = 0;
>  }
>  
> -tick-500ms
> -/(z % 2) == 0/
> +syscall::write:entry
> +/pid == $target && (n % 2) == 0/
>  {
> -	x++; @a["linear"] = lquantize(x, 0, 100, 1); @b["exp"] = quantize(x);
> -	x++; @a["linear"] = lquantize(x, 0, 100, 1); @b["exp"] = quantize(x);
> -	x++; @a["linear"] = lquantize(x, 0, 100, 1); @b["exp"] = quantize(x);
> -	x++; @a["linear"] = lquantize(x, 0, 100, 1); @b["exp"] = quantize(x);
> -	x++; @a["linear"] = lquantize(x, 0, 100, 1); @b["exp"] = quantize(x);
> +	i++; @a["linear"] = lquantize(i, 0, 100, 1); @b["exp"] = quantize(i);
> +	i++; @a["linear"] = lquantize(i, 0, 100, 1); @b["exp"] = quantize(i);
> +	i++; @a["linear"] = lquantize(i, 0, 100, 1); @b["exp"] = quantize(i);
> +	i++; @a["linear"] = lquantize(i, 0, 100, 1); @b["exp"] = quantize(i);
> +	i++; @a["linear"] = lquantize(i, 0, 100, 1); @b["exp"] = quantize(i);
>  	printa(@a);
>  	printa(@b);
> -}
> -
> -tick-500ms
> -/(z % 2) == 1/
> -{
>  	clear(@a);
>  	clear(@b);
>  }
>  
> -tick-500ms
> -/z++ >= 9/
> +syscall::write:entry
> +/pid == $target && n++ >= 8/
>  {
>  	exit(0);
>  }
> diff --git a/test/unittest/aggs/tst.clearnormalize.d b/test/unittest/aggs/tst.clearnormalize.d
> index 34d225f0..66f81b81 100644
> --- a/test/unittest/aggs/tst.clearnormalize.d
> +++ b/test/unittest/aggs/tst.clearnormalize.d
> @@ -1,18 +1,18 @@
>  /*
>   * Oracle Linux DTrace.
> - * Copyright (c) 2006, 2020, 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.
>   */
>  
>  /*
> - * ASSERTION:
> - *   Normalized aggregation data can be cleared
> + * ASSERTION: Normalized aggregation data can be cleared
>   *
>   * SECTION: Aggregations/Normalization;
>   *	Aggregations/Clearing aggregations
> - *
>   */
> +/* @@nosort */
> +/* @@trigger: periodic_output */
>  
>  #pragma D option quiet
>  #pragma D option aggrate=1ms
> @@ -21,36 +21,45 @@
>  BEGIN
>  {
>  	i = 0;
> -	start = timestamp;
> -}
> -
> -tick-100ms
> -/i < 20/
> -{
> -	@func[i % 5] = sum(i * 100);
> -	i++;
> -}
> -
> -tick-100ms
> -/i == 10/
> -{
> +	@func[i % 5] = sum(i * 100); i++;
> +	@func[i % 5] = sum(i * 100); i++;
> +	@func[i % 5] = sum(i * 100); i++;
> +	@func[i % 5] = sum(i * 100); i++;
> +	@func[i % 5] = sum(i * 100); i++;
> +	@func[i % 5] = sum(i * 100); i++;
> +	@func[i % 5] = sum(i * 100); i++;
> +	@func[i % 5] = sum(i * 100); i++;
> +	@func[i % 5] = sum(i * 100); i++;
> +	@func[i % 5] = sum(i * 100); i++;
>  	printf("Normalized data before clear:\n");
>  	normalize(@func, 5);
>  	printa(@func);
> -
>  	clear(@func);
> +	n = 0;
> +}
>  
> +syscall::write:entry
> +/pid == $target && n == 2/
> +{
>  	printf("Aggregation data after clear:\n");
>  	printa(@func);
> -	i++
> +	i++;
>  }
>  
> -tick-100ms
> -/i == 20/
> +syscall::write:entry
> +/pid == $target && n++ == 4/
>  {
> +	@func[i % 5] = sum(i * 100); i++;
> +	@func[i % 5] = sum(i * 100); i++;
> +	@func[i % 5] = sum(i * 100); i++;
> +	@func[i % 5] = sum(i * 100); i++;
> +	@func[i % 5] = sum(i * 100); i++;
> +	@func[i % 5] = sum(i * 100); i++;
> +	@func[i % 5] = sum(i * 100); i++;
> +	@func[i % 5] = sum(i * 100); i++;
> +	@func[i % 5] = sum(i * 100); i++;
>  	printf("Final (normalized) aggregation data:\n");
>  	normalize(@func, 5);
>  	printa(@func);
> -
>  	exit(0);
>  }
> diff --git a/test/unittest/aggs/tst.clearnormalize.r b/test/unittest/aggs/tst.clearnormalize.r
> index 1fa2c752..e568427e 100644
> --- a/test/unittest/aggs/tst.clearnormalize.r
> +++ b/test/unittest/aggs/tst.clearnormalize.r
> @@ -1 +1,22 @@
> -All sums as expected.
> +Normalized data before clear:
> +
> +        0              100
> +        1              140
> +        2              180
> +        3              220
> +        4              260
> +Aggregation data after clear:
> +
> +        0                0
> +        1                0
> +        2                0
> +        3                0
> +        4                0
> +Final (normalized) aggregation data:
> +
> +        0              300
> +        1              540
> +        2              580
> +        3              620
> +        4              660
> +
> diff --git a/test/unittest/aggs/tst.clearnormalize.r.p b/test/unittest/aggs/tst.clearnormalize.r.p
> deleted file mode 120000
> index 91ba6415..00000000
> --- a/test/unittest/aggs/tst.clearnormalize.r.p
> +++ /dev/null
> @@ -1 +0,0 @@
> -tst.clear.r.p
> \ No newline at end of file
> -- 
> 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