summaryrefslogtreecommitdiffstats
path: root/testsuite/systemtap.maps
diff options
context:
space:
mode:
authordsmith <dsmith>2007-08-21 21:30:55 +0000
committerdsmith <dsmith>2007-08-21 21:30:55 +0000
commit2b3eb687e25685636e73cf81af4c784532c0e2aa (patch)
treed894353f89804203d39728b0883175c979a4d356 /testsuite/systemtap.maps
parent6a59236bb21bf7f19faa6ce5332d21bb9c90e14e (diff)
downloadsystemtap-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')
-rw-r--r--testsuite/systemtap.maps/foreach_limit.exp50
-rw-r--r--testsuite/systemtap.maps/foreach_limit.stp26
-rw-r--r--testsuite/systemtap.maps/foreach_limit2.exp90
-rwxr-xr-xtestsuite/systemtap.maps/foreach_limit2.stp163
4 files changed, 300 insertions, 29 deletions
diff --git a/testsuite/systemtap.maps/foreach_limit.exp b/testsuite/systemtap.maps/foreach_limit.exp
index bc4e6b9e..06e797da 100644
--- a/testsuite/systemtap.maps/foreach_limit.exp
+++ b/testsuite/systemtap.maps/foreach_limit.exp
@@ -5,11 +5,11 @@ set test "foreach_limit"
set ::result_string {Arrays:
unsorted:
key 9, value 18
-key 1, value 2
+key 1, value 40
key 8, value 16
key 2, value 4
key 7, value 14
-key 3, value 6
+key 3, value 36
key 6, value 12
key 5, value 10
key 4, value 8
@@ -17,48 +17,56 @@ key 10, value 20
unsorted limit 5:
key 9, value 18
-key 1, value 2
+key 1, value 40
key 8, value 16
key 2, value 4
key 7, value 14
loop had 5 iterations
-sorted limit 5:
-key 1, value 2
+sorted (by values) limit 5:
key 2, value 4
-key 3, value 6
+key 4, value 8
+key 5, value 10
+key 6, value 12
+key 7, value 14
+loop had 5 iterations
+
+sorted (by keys) limit 5:
+key 1, value 40
+key 2, value 4
+key 3, value 36
key 4, value 8
key 5, value 10
loop had 5 iterations
-sorted limit x (3):
-key 1, value 2
+sorted (by values) limit x (3):
key 2, value 4
-key 3, value 6
+key 4, value 8
+key 5, value 10
loop had 3 iterations
-sorted limit x * 2 (6):
-key 1, value 2
+sorted (by values) limit x * 2 (6):
key 2, value 4
-key 3, value 6
key 4, value 8
key 5, value 10
key 6, value 12
+key 7, value 14
+key 8, value 16
loop had 6 iterations
-sorted limit ++x:
-key 1, value 2
+sorted (by values) limit ++x:
key 2, value 4
-key 3, value 6
key 4, value 8
+key 5, value 10
+key 6, value 12
loop had 4 iterations
x ended up as 4
-sorted limit x++:
-key 1, value 2
+sorted (by values) limit x++:
key 2, value 4
-key 3, value 6
key 4, value 8
+key 5, value 10
+key 6, value 12
loop had 4 iterations
x ended up as 5
@@ -68,9 +76,9 @@ Aggregates:
aggregate limit 5:
bucket 0: 0
bucket 1: 0
-bucket 2: 1
-bucket 3: 4
-bucket 4: 11
+bucket 2: 0
+bucket 3: 1
+bucket 4: 6
loop had 5 iterations
Done.
diff --git a/testsuite/systemtap.maps/foreach_limit.stp b/testsuite/systemtap.maps/foreach_limit.stp
index e2957678..6ce0f361 100644
--- a/testsuite/systemtap.maps/foreach_limit.stp
+++ b/testsuite/systemtap.maps/foreach_limit.stp
@@ -9,11 +9,11 @@ probe begin
# Add elements to the array, but in an unsorted order
array[9] = 18;
- array[1] = 2
+ array[1] = 40
array[8] = 16
array[2] = 4
array[7] = 14
- array[3] = 6
+ array[3] = 36
array[6] = 12;
array[5] = 10;
array[4] = 8;
@@ -34,8 +34,8 @@ probe begin
}
printf("loop had %d iterations\n", i);
- # Print the first 5 sorted array items
- printf("\nsorted limit 5:\n");
+ # Print the first 5 sorted array items (by value)
+ printf("\nsorted (by values) limit 5:\n");
i = 0
foreach (key in array+ limit 5)
{
@@ -44,9 +44,19 @@ probe begin
}
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 array limit 5)
+ {
+ printf("key %d, value %d\n", key, array[key]);
+ i++;
+ }
+ printf("loop had %d iterations\n", i);
+
# Use a variable reference to limit the loop iteration
x = 3
- printf("\nsorted limit x (%d):\n", x);
+ printf("\nsorted (by values) limit x (%d):\n", x);
i = 0
foreach (key in array+ limit x)
{
@@ -57,7 +67,7 @@ probe begin
# Use a expression containing a variable reference to limit the
# loop iteration
- printf("\nsorted limit x * 2 (%d):\n", (x * 2));
+ printf("\nsorted (by values) limit x * 2 (%d):\n", (x * 2));
i = 0
foreach (key in array+ limit x * 2)
{
@@ -67,7 +77,7 @@ probe begin
printf("loop had %d iterations\n", i);
# Ensure the expression is only evaluated once
- printf("\nsorted limit ++x:\n");
+ printf("\nsorted (by values) limit ++x:\n");
i = 0
foreach (key in array+ limit ++x)
{
@@ -78,7 +88,7 @@ probe begin
printf("x ended up as %d\n", x);
# Ensure the expression is only evaluated once
- printf("\nsorted limit x++:\n");
+ printf("\nsorted (by values) limit x++:\n");
i = 0
foreach (key in array+ limit x++)
{
diff --git a/testsuite/systemtap.maps/foreach_limit2.exp b/testsuite/systemtap.maps/foreach_limit2.exp
new file mode 100644
index 00000000..00696fe1
--- /dev/null
+++ b/testsuite/systemtap.maps/foreach_limit2.exp
@@ -0,0 +1,90 @@
+# Test of foreach statements using "limit EXP".
+
+set test "foreach_limit2"
+
+set ::result_string {Arrays of aggregates:
+unsorted:
+agg_array[5]: count:2 sum:15 avg:7 min:5 max:10
+agg_array[10]: count:1 sum:20 avg:20 min:20 max:20
+agg_array[2]: count:4 sum:22 avg:5 min:2 max:12
+agg_array[7]: count:3 sum:63 avg:21 min:7 max:42
+agg_array[4]: count:1 sum:8 avg:8 min:8 max:8
+agg_array[9]: count:5 sum:84 avg:16 min:1 max:54
+agg_array[1]: count:5 sum:185 avg:37 min:2 max:120
+agg_array[6]: count:2 sum:18 avg:9 min:6 max:12
+agg_array[3]: count:3 sum:162 avg:54 min:18 max:108
+agg_array[8]: count:4 sum:75 avg:18 min:3 max:48
+
+sorted (by values):
+agg_array[10]: count:1 sum:20 avg:20 min:20 max:20
+agg_array[4]: count:1 sum:8 avg:8 min:8 max:8
+agg_array[5]: count:2 sum:15 avg:7 min:5 max:10
+agg_array[6]: count:2 sum:18 avg:9 min:6 max:12
+agg_array[7]: count:3 sum:63 avg:21 min:7 max:42
+agg_array[3]: count:3 sum:162 avg:54 min:18 max:108
+agg_array[2]: count:4 sum:22 avg:5 min:2 max:12
+agg_array[8]: count:4 sum:75 avg:18 min:3 max:48
+agg_array[9]: count:5 sum:84 avg:16 min:1 max:54
+agg_array[1]: count:5 sum:185 avg:37 min:2 max:120
+
+unsorted limit 5:
+agg_array[5]: count:2 sum:15 avg:7 min:5 max:10
+agg_array[10]: count:1 sum:20 avg:20 min:20 max:20
+agg_array[2]: count:4 sum:22 avg:5 min:2 max:12
+agg_array[7]: count:3 sum:63 avg:21 min:7 max:42
+agg_array[4]: count:1 sum:8 avg:8 min:8 max:8
+loop had 5 iterations
+
+sorted (by values) limit 5:
+agg_array[10]: count:1 sum:20 avg:20 min:20 max:20
+agg_array[4]: count:1 sum:8 avg:8 min:8 max:8
+agg_array[5]: count:2 sum:15 avg:7 min:5 max:10
+agg_array[6]: count:2 sum:18 avg:9 min:6 max:12
+agg_array[7]: count:3 sum:63 avg:21 min:7 max:42
+loop had 5 iterations
+
+sorted (by keys) limit 5:
+agg_array[1]: count:5 sum:185 avg:37 min:2 max:120
+agg_array[2]: count:4 sum:22 avg:5 min:2 max:12
+agg_array[3]: count:3 sum:162 avg:54 min:18 max:108
+agg_array[4]: count:1 sum:8 avg:8 min:8 max:8
+agg_array[5]: count:2 sum:15 avg:7 min:5 max:10
+loop had 5 iterations
+
+sorted (by values) limit x (3):
+agg_array[10]: count:1 sum:20 avg:20 min:20 max:20
+agg_array[4]: count:1 sum:8 avg:8 min:8 max:8
+agg_array[5]: count:2 sum:15 avg:7 min:5 max:10
+loop had 3 iterations
+
+sorted (by values) limit x * 2 (6):
+agg_array[10]: count:1 sum:20 avg:20 min:20 max:20
+agg_array[4]: count:1 sum:8 avg:8 min:8 max:8
+agg_array[5]: count:2 sum:15 avg:7 min:5 max:10
+agg_array[6]: count:2 sum:18 avg:9 min:6 max:12
+agg_array[7]: count:3 sum:63 avg:21 min:7 max:42
+agg_array[3]: count:3 sum:162 avg:54 min:18 max:108
+loop had 6 iterations
+
+sorted (by values) limit ++x:
+agg_array[10]: count:1 sum:20 avg:20 min:20 max:20
+agg_array[4]: count:1 sum:8 avg:8 min:8 max:8
+agg_array[5]: count:2 sum:15 avg:7 min:5 max:10
+agg_array[6]: count:2 sum:18 avg:9 min:6 max:12
+loop had 4 iterations
+x ended up as 4
+
+sorted (by values) limit x++:
+agg_array[10]: count:1 sum:20 avg:20 min:20 max:20
+agg_array[4]: count:1 sum:8 avg:8 min:8 max:8
+agg_array[5]: count:2 sum:15 avg:7 min:5 max:10
+agg_array[6]: count:2 sum:18 avg:9 min:6 max:12
+loop had 4 iterations
+x ended up as 5
+
+Done.
+}
+
+stap_run2 $srcdir/$subdir/$test.stp
+
+
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()
+}