diff options
author | dsmith <dsmith> | 2007-08-21 21:30:55 +0000 |
---|---|---|
committer | dsmith <dsmith> | 2007-08-21 21:30:55 +0000 |
commit | 2b3eb687e25685636e73cf81af4c784532c0e2aa (patch) | |
tree | d894353f89804203d39728b0883175c979a4d356 /testsuite/systemtap.maps/foreach_limit2.stp | |
parent | 6a59236bb21bf7f19faa6ce5332d21bb9c90e14e (diff) | |
download | systemtap-steved-2b3eb687e25685636e73cf81af4c784532c0e2aa.tar.gz systemtap-steved-2b3eb687e25685636e73cf81af4c784532c0e2aa.tar.xz systemtap-steved-2b3eb687e25685636e73cf81af4c784532c0e2aa.zip |
2007-08-21 David Smith <dsmith@redhat.com>
* foreach_limit.stp: Added test for sorting numeric arrays by
value.
* foreach_limit.exp: Ditto.
PR 2305
* foreach_limit2.stp: New file. Tests sorting aggregate arrays by
value.
* foreach_limit2.exp: Ditto.
Diffstat (limited to 'testsuite/systemtap.maps/foreach_limit2.stp')
-rwxr-xr-x | testsuite/systemtap.maps/foreach_limit2.stp | 163 |
1 files changed, 163 insertions, 0 deletions
diff --git a/testsuite/systemtap.maps/foreach_limit2.stp b/testsuite/systemtap.maps/foreach_limit2.stp new file mode 100755 index 00000000..22f9a745 --- /dev/null +++ b/testsuite/systemtap.maps/foreach_limit2.stp @@ -0,0 +1,163 @@ +global agg_array + +probe begin +{ + # + # Array section + # + printf("\nArrays of aggregates:\n"); + + # Add elements to the array of aggregates, but in an unsorted order + agg_array[9] <<< 18 + agg_array[1] <<< 40 + agg_array[8] <<< 16 + agg_array[2] <<< 4 + agg_array[7] <<< 14 + agg_array[3] <<< 36 + agg_array[6] <<< 12 + agg_array[5] <<< 10 + agg_array[4] <<< 8 + agg_array[10] <<< 20 + + agg_array[9] <<< 18 / 2 + agg_array[1] <<< 40 / 2 + agg_array[8] <<< 16 / 2 + agg_array[2] <<< 4 / 2 + agg_array[7] <<< 14 / 2 + agg_array[3] <<< 36 / 2 + agg_array[6] <<< 12 / 2 + agg_array[5] <<< 10 / 2 + + agg_array[9] <<< 18 * 3 + agg_array[1] <<< 40 * 3 + agg_array[8] <<< 16 * 3 + agg_array[2] <<< 4 * 3 + agg_array[7] <<< 14 * 3 + agg_array[3] <<< 36 * 3 + + agg_array[9] <<< 1 + agg_array[1] <<< 2 + agg_array[8] <<< 3 + agg_array[2] <<< 4 + + agg_array[9] <<< 2 + agg_array[1] <<< 3 + + # Print the unsorted array + printf("unsorted:\n"); + foreach (key in agg_array) + { + printf("agg_array[%d]: count:%d sum:%d avg:%d min:%d max:%d\n", + key, @count(agg_array[key]), @sum(agg_array[key]), + @avg(agg_array[key]), @min(agg_array[key]), + @max(agg_array[key])) + } + + # Print the sorted array (by value) + printf("\nsorted (by values):\n"); + foreach (key in agg_array+) + { + printf("agg_array[%d]: count:%d sum:%d avg:%d min:%d max:%d\n", + key, @count(agg_array[key]), @sum(agg_array[key]), + @avg(agg_array[key]), @min(agg_array[key]), + @max(agg_array[key])) + } + + # Print the first 5 unsorted array items + printf("\nunsorted limit 5:\n"); + i = 0 + foreach (key in agg_array limit 5) + { + printf("agg_array[%d]: count:%d sum:%d avg:%d min:%d max:%d\n", + key, @count(agg_array[key]), @sum(agg_array[key]), + @avg(agg_array[key]), @min(agg_array[key]), + @max(agg_array[key])) + i++; + } + printf("loop had %d iterations\n", i); + + # Print the first 5 sorted array items (by value) + printf("\nsorted (by values) limit 5:\n"); + i = 0 + foreach (key in agg_array+ limit 5) + { + printf("agg_array[%d]: count:%d sum:%d avg:%d min:%d max:%d\n", + key, @count(agg_array[key]), @sum(agg_array[key]), + @avg(agg_array[key]), @min(agg_array[key]), + @max(agg_array[key])) + i++; + } + printf("loop had %d iterations\n", i); + + # Print the first 5 sorted array items (by key) + printf("\nsorted (by keys) limit 5:\n"); + i = 0 + foreach (key+ in agg_array limit 5) + { + printf("agg_array[%d]: count:%d sum:%d avg:%d min:%d max:%d\n", + key, @count(agg_array[key]), @sum(agg_array[key]), + @avg(agg_array[key]), @min(agg_array[key]), + @max(agg_array[key])) + i++; + } + printf("loop had %d iterations\n", i); + + # Use a variable reference to limit the loop iteration + x = 3 + printf("\nsorted (by values) limit x (%d):\n", x); + i = 0 + foreach (key in agg_array+ limit x) + { + printf("agg_array[%d]: count:%d sum:%d avg:%d min:%d max:%d\n", + key, @count(agg_array[key]), @sum(agg_array[key]), + @avg(agg_array[key]), @min(agg_array[key]), + @max(agg_array[key])) + i++; + } + printf("loop had %d iterations\n", i); + + # Use a expression containing a variable reference to limit the + # loop iteration + printf("\nsorted (by values) limit x * 2 (%d):\n", (x * 2)); + i = 0 + foreach (key in agg_array+ limit x * 2) + { + printf("agg_array[%d]: count:%d sum:%d avg:%d min:%d max:%d\n", + key, @count(agg_array[key]), @sum(agg_array[key]), + @avg(agg_array[key]), @min(agg_array[key]), + @max(agg_array[key])) + i++; + } + printf("loop had %d iterations\n", i); + + # Ensure the expression is only evaluated once + printf("\nsorted (by values) limit ++x:\n"); + i = 0 + foreach (key in agg_array+ limit ++x) + { + printf("agg_array[%d]: count:%d sum:%d avg:%d min:%d max:%d\n", + key, @count(agg_array[key]), @sum(agg_array[key]), + @avg(agg_array[key]), @min(agg_array[key]), + @max(agg_array[key])) + i++; + } + printf("loop had %d iterations\n", i); + printf("x ended up as %d\n", x); + + # Ensure the expression is only evaluated once + printf("\nsorted (by values) limit x++:\n"); + i = 0 + foreach (key in agg_array+ limit x++) + { + printf("agg_array[%d]: count:%d sum:%d avg:%d min:%d max:%d\n", + key, @count(agg_array[key]), @sum(agg_array[key]), + @avg(agg_array[key]), @min(agg_array[key]), + @max(agg_array[key])) + i++; + } + printf("loop had %d iterations\n", i); + printf("x ended up as %d\n", x); + + printf("\nDone.\n"); + exit() +} |