--- /dev/null
+# test aggregate sorting
+
+set test "foreach_aggrsort"
+set ::result_string {sort default+
+stats[1]: @count=1 @sum=-1 @min=-1 @max=-1 @avg=-1
+stats[2]: @count=2 @sum=7 @min=1 @max=6 @avg=3
+stats[3]: @count=3 @sum=12 @min=3 @max=5 @avg=4
+stats[4]: @count=4 @sum=1 @min=0 @max=1 @avg=0
+sort default-
+stats[4]: @count=4 @sum=1 @min=0 @max=1 @avg=0
+stats[3]: @count=3 @sum=12 @min=3 @max=5 @avg=4
+stats[2]: @count=2 @sum=7 @min=1 @max=6 @avg=3
+stats[1]: @count=1 @sum=-1 @min=-1 @max=-1 @avg=-1
+sort @count+
+stats[1]: @count=1 @sum=-1 @min=-1 @max=-1 @avg=-1
+stats[2]: @count=2 @sum=7 @min=1 @max=6 @avg=3
+stats[3]: @count=3 @sum=12 @min=3 @max=5 @avg=4
+stats[4]: @count=4 @sum=1 @min=0 @max=1 @avg=0
+sort @count-
+stats[4]: @count=4 @sum=1 @min=0 @max=1 @avg=0
+stats[3]: @count=3 @sum=12 @min=3 @max=5 @avg=4
+stats[2]: @count=2 @sum=7 @min=1 @max=6 @avg=3
+stats[1]: @count=1 @sum=-1 @min=-1 @max=-1 @avg=-1
+sort @sum+
+stats[1]: @count=1 @sum=-1 @min=-1 @max=-1 @avg=-1
+stats[4]: @count=4 @sum=1 @min=0 @max=1 @avg=0
+stats[2]: @count=2 @sum=7 @min=1 @max=6 @avg=3
+stats[3]: @count=3 @sum=12 @min=3 @max=5 @avg=4
+sort @sum-
+stats[3]: @count=3 @sum=12 @min=3 @max=5 @avg=4
+stats[2]: @count=2 @sum=7 @min=1 @max=6 @avg=3
+stats[4]: @count=4 @sum=1 @min=0 @max=1 @avg=0
+stats[1]: @count=1 @sum=-1 @min=-1 @max=-1 @avg=-1
+sort @avg+
+stats[1]: @count=1 @sum=-1 @min=-1 @max=-1 @avg=-1
+stats[4]: @count=4 @sum=1 @min=0 @max=1 @avg=0
+stats[2]: @count=2 @sum=7 @min=1 @max=6 @avg=3
+stats[3]: @count=3 @sum=12 @min=3 @max=5 @avg=4
+sort @avg-
+stats[3]: @count=3 @sum=12 @min=3 @max=5 @avg=4
+stats[2]: @count=2 @sum=7 @min=1 @max=6 @avg=3
+stats[4]: @count=4 @sum=1 @min=0 @max=1 @avg=0
+stats[1]: @count=1 @sum=-1 @min=-1 @max=-1 @avg=-1
+sort @min+
+stats[1]: @count=1 @sum=-1 @min=-1 @max=-1 @avg=-1
+stats[4]: @count=4 @sum=1 @min=0 @max=1 @avg=0
+stats[2]: @count=2 @sum=7 @min=1 @max=6 @avg=3
+stats[3]: @count=3 @sum=12 @min=3 @max=5 @avg=4
+sort @min-
+stats[3]: @count=3 @sum=12 @min=3 @max=5 @avg=4
+stats[2]: @count=2 @sum=7 @min=1 @max=6 @avg=3
+stats[4]: @count=4 @sum=1 @min=0 @max=1 @avg=0
+stats[1]: @count=1 @sum=-1 @min=-1 @max=-1 @avg=-1
+sort @max+
+stats[1]: @count=1 @sum=-1 @min=-1 @max=-1 @avg=-1
+stats[4]: @count=4 @sum=1 @min=0 @max=1 @avg=0
+stats[3]: @count=3 @sum=12 @min=3 @max=5 @avg=4
+stats[2]: @count=2 @sum=7 @min=1 @max=6 @avg=3
+sort @max-
+stats[2]: @count=2 @sum=7 @min=1 @max=6 @avg=3
+stats[3]: @count=3 @sum=12 @min=3 @max=5 @avg=4
+stats[4]: @count=4 @sum=1 @min=0 @max=1 @avg=0
+stats[1]: @count=1 @sum=-1 @min=-1 @max=-1 @avg=-1
+}
+
+stap_run_exact $test $srcdir/$subdir/$test.stp
--- /dev/null
+global stats
+
+@define sortloop(x) %(
+ printf("stats[%d]: @count=%d @sum=%d @min=%d @max=%d @avg=%d\n",
+ @x, @count(stats[@x]), @sum(stats[@x]), @min(stats[@x]),
+ @max(stats[@x]), @avg(stats[@x]))
+%)
+
+probe begin
+{
+ stats[1] <<< -1;
+ stats[2] <<< 1; stats[2] <<< 6;
+ stats[3] <<< 3; stats[3] <<< 4; stats[3] <<< 5;
+ stats[4] <<< 0; stats[4] <<< 0; stats[4] <<< 0; stats[4] <<< 1;
+
+ println("sort default+") foreach(x in stats+) @sortloop(x)
+ println("sort default-") foreach(x in stats-) @sortloop(x)
+ println("sort @count+") foreach(x in stats @count+) @sortloop(x)
+ println("sort @count-") foreach(x in stats @count-) @sortloop(x)
+ println("sort @sum+") foreach(x in stats @sum+) @sortloop(x)
+ println("sort @sum-") foreach(x in stats @sum-) @sortloop(x)
+ println("sort @avg+") foreach(x in stats @avg+) @sortloop(x)
+ println("sort @avg-") foreach(x in stats @avg-) @sortloop(x)
+ println("sort @min+") foreach(x in stats @min+) @sortloop(x)
+ println("sort @min-") foreach(x in stats @min-) @sortloop(x)
+ println("sort @max+") foreach(x in stats @max+) @sortloop(x)
+ println("sort @max-") foreach(x in stats @max-) @sortloop(x)
+
+ exit()
+}