public inbox for systemtap@sourceware.org
 help / color / mirror / Atom feed
* [PATCH 1/3] add testcases for function definitions
@ 2015-11-26  8:43 Zhou Wenjian
  2015-11-26  8:44 ` [PATCH 3/3] add cases for break and continue Zhou Wenjian
                   ` (2 more replies)
  0 siblings, 3 replies; 5+ messages in thread
From: Zhou Wenjian @ 2015-11-26  8:43 UTC (permalink / raw)
  To: systemtap

	* testsuite/systemtap.base/func_definition.exp: New test case.
	* testsuite/systemtap.base/func_definition.stp: New test file.
---
 testsuite/systemtap.base/func_definition.exp | 13 ++++++
 testsuite/systemtap.base/func_definition.stp | 60 ++++++++++++++++++++++++++++
 2 files changed, 73 insertions(+)
 create mode 100755 testsuite/systemtap.base/func_definition.exp
 create mode 100755 testsuite/systemtap.base/func_definition.stp

diff --git a/testsuite/systemtap.base/func_definition.exp b/testsuite/systemtap.base/func_definition.exp
new file mode 100755
index 0000000..65abdb5
--- /dev/null
+++ b/testsuite/systemtap.base/func_definition.exp
@@ -0,0 +1,13 @@
+# Check function definitions
+
+set test "func_definition"
+if {![installtest_p]} { untested "$test"; return }
+
+foreach runtime [get_runtime_list] {
+    if {$runtime != ""} {
+	stap_run $srcdir/$subdir/$test.stp no_load (${all_pass_string}){5} \
+	    --runtime=$runtime
+    } else {
+	stap_run $srcdir/$subdir/$test.stp no_load (${all_pass_string}){5}
+    }
+}
diff --git a/testsuite/systemtap.base/func_definition.stp b/testsuite/systemtap.base/func_definition.stp
new file mode 100755
index 0000000..eaa8d94
--- /dev/null
+++ b/testsuite/systemtap.base/func_definition.stp
@@ -0,0 +1,60 @@
+/*
+ * func_definition.stp
+ *
+ * Check function definitions
+ */
+probe begin {
+    println("systemtap starting probe")
+}
+
+
+function f1(arg:long)
+{
+    if (arg == 2015)
+        println("systemtap test success")
+    else
+        printf("systemtap test failure - arg of f1:%d != 2015\n", arg)
+}
+
+function f2(arg)
+{
+    if (arg == 2015)
+        println("systemtap test success")
+    else
+        printf("systemtap test failure - arg of f2:%d != 2015\n", arg)
+}
+
+function f3:long()
+{
+    return 2015
+}
+
+function f4()
+{
+    return 2015
+}
+
+function f5()
+{
+    println("systemtap test success")
+}
+
+probe end {
+    println("systemtap ending probe")
+
+    f1(2015)
+
+    f2(2015)
+
+    if (f3() == 2015)
+        println("systemtap test success")
+    else
+        printf("systemtap test failure - return_value of f3:%d != 2015\n", f3())
+
+    if (f4() == 2015)
+        println("systemtap test success")
+    else
+        printf("systemtap test failure - return_value of f4:%d != 2015\n", f4())
+
+    f5()
+}
-- 
1.8.3.1



^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH 3/3] add cases for break and continue
  2015-11-26  8:43 [PATCH 1/3] add testcases for function definitions Zhou Wenjian
@ 2015-11-26  8:44 ` Zhou Wenjian
  2015-11-26  8:44 ` [PATCH 2/3] add more test cases for timer Zhou Wenjian
  2015-12-01  3:21 ` [PATCH 1/3] add testcases for function definitions "Zhou, Wenjian/周文剑"
  2 siblings, 0 replies; 5+ messages in thread
From: Zhou Wenjian @ 2015-11-26  8:44 UTC (permalink / raw)
  To: systemtap

	* testsuite/systemtap.base/break_and_continue.exp: New test case
	* testsuite/systemtap.base/break_and_continue.stp: New test file
---
 testsuite/systemtap.base/break_and_continue.exp | 13 +++++
 testsuite/systemtap.base/break_and_continue.stp | 78 +++++++++++++++++++++++++
 2 files changed, 91 insertions(+)
 create mode 100755 testsuite/systemtap.base/break_and_continue.exp
 create mode 100755 testsuite/systemtap.base/break_and_continue.stp

diff --git a/testsuite/systemtap.base/break_and_continue.exp b/testsuite/systemtap.base/break_and_continue.exp
new file mode 100755
index 0000000..0ddfdb9
--- /dev/null
+++ b/testsuite/systemtap.base/break_and_continue.exp
@@ -0,0 +1,13 @@
+# Check break and continue in for, foreach and while work correctly
+
+set test "break_and_continue"
+
+foreach runtime [get_runtime_list] {
+    if {$runtime != ""} {
+	stap_run $srcdir/$subdir/$test.stp no_load $all_pass_string \
+	    --runtime=$runtime -w
+    } else {
+	stap_run $srcdir/$subdir/$test.stp no_load $all_pass_string \
+	    -w
+    }
+}
diff --git a/testsuite/systemtap.base/break_and_continue.stp b/testsuite/systemtap.base/break_and_continue.stp
new file mode 100755
index 0000000..5f0afb4
--- /dev/null
+++ b/testsuite/systemtap.base/break_and_continue.stp
@@ -0,0 +1,78 @@
+/*
+ * break_and_continue.stp
+ *
+ * Check break and continue in for, foreach and while work correctly
+ */
+
+global a
+
+probe begin
+{
+	println("systemtap starting probe")
+	exit()
+}
+
+probe end
+{
+	a[1]=1
+	a[2]=2
+	a[3]=3
+	i=1
+	ret=0
+	println("systemtap ending probe")
+	for(i=1;i<3;i++)
+	{
+		break;
+		ret=1
+	}
+	if (i!=1)
+		ret=1
+
+	foreach(i in a)
+	{
+		break;
+		ret=1
+	}
+	if (i!=1)
+		ret=1
+
+	i=0
+	while(i<3)
+	{
+		i++
+		break;
+		ret=1
+	}
+	if (i!=1)
+		ret=1
+
+	for(i=1;i<3;i++)
+	{
+		continue;
+		ret=1
+	}
+	if (i!=3)
+		ret=1
+
+	foreach(i in a)
+	{
+		continue;
+		ret=1
+	}
+	if (i!=3)
+		ret=1
+
+	i=0
+	while(i<3)
+	{
+		i++
+		continue;
+		ret=1
+	}
+	if (i!=3)
+		ret=1
+
+
+	if (ret == 0)
+		println("systemtap test success")
+}
-- 
1.8.3.1



^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH 2/3] add more test cases for timer
  2015-11-26  8:43 [PATCH 1/3] add testcases for function definitions Zhou Wenjian
  2015-11-26  8:44 ` [PATCH 3/3] add cases for break and continue Zhou Wenjian
@ 2015-11-26  8:44 ` Zhou Wenjian
  2015-12-01  3:21 ` [PATCH 1/3] add testcases for function definitions "Zhou, Wenjian/周文剑"
  2 siblings, 0 replies; 5+ messages in thread
From: Zhou Wenjian @ 2015-11-26  8:44 UTC (permalink / raw)
  To: systemtap

	* testsuite/systemtap.base/timers.exp: update for new test cases
	* testsuite/systemtap.base/timers.stp: add more test cases
---
 testsuite/systemtap.base/timers.exp |  2 +-
 testsuite/systemtap.base/timers.stp | 63 +++++++++++++++++++++++++++++++++++--
 2 files changed, 62 insertions(+), 3 deletions(-)

diff --git a/testsuite/systemtap.base/timers.exp b/testsuite/systemtap.base/timers.exp
index 30041aa..2a7f59a 100644
--- a/testsuite/systemtap.base/timers.exp
+++ b/testsuite/systemtap.base/timers.exp
@@ -11,6 +11,6 @@ proc sleep_ten_secs {} {
 #check to see whether get the marker indicating the probe is loaded and running
 #should check to see whether exited for some reason
 #should be error is something else is printed.
-set output_string "(\\w+ = \\d+\r\n){7}(${all_pass_string}){4}(WARNING.*skipped.*)?"
+set output_string "(\\w+ = \\d+\r\n){16}(${all_pass_string}){9}(WARNING.*skipped.*)?"
 
 stap_run $srcdir/$subdir/$test.stp sleep_ten_secs $output_string
diff --git a/testsuite/systemtap.base/timers.stp b/testsuite/systemtap.base/timers.stp
index fb590ed..f256e36 100644
--- a/testsuite/systemtap.base/timers.stp
+++ b/testsuite/systemtap.base/timers.stp
@@ -5,8 +5,9 @@
  */
 
 global p
-global j1, j2, jmax
-global ms1, ms500, msmax
+global j1, j2, jmax, jr
+global ms1, ms500, msmax, msr
+global sec, secr, us, usr, ns, nsr, hz
 
 probe begin
 {
@@ -18,12 +19,25 @@ probe timer.profile { ++p }
 probe timer.jiffies(1) { ++j1 }
 probe timer.jiffies(2) { ++j2 }
 probe timer.jiffies(1000000) { ++jmax }
+probe timer.jiffies(1000).randomize(500) { ++jr }
 
 /* as long as HZ>2, ms(1) and ms(500) 
  * will produce different counts */
 probe timer.ms(1) { ++ms1 }
 probe timer.ms(500) { ++ms500 }
 probe timer.ms(1000000) { ++msmax }
+probe timer.ms(1000).randomize(500) { ++msr }
+
+probe timer.sec(5) { ++sec }
+probe timer.sec(5).randomize(4) { ++secr }
+
+probe timer.us(1000) { ++us }
+probe timer.us(1000).randomize(500) { ++usr }
+
+probe timer.ns(1000000) { ++ns }
+probe timer.ns(1000000).randomize(500000) { ++nsr }
+
+probe timer.hz(1000) { ++hz }
 
 probe end
 {
@@ -31,10 +45,20 @@ probe end
 	printf("p = %d\n", p)
 	printf("j1 = %d\n", j1)
 	printf("j2 = %d\n", j2)
+	printf("jr = %d\n", jr)
 	printf("jmax = %d\n", jmax)
 	printf("ms1 = %d\n", ms1)
 	printf("ms500 = %d\n", ms500)
 	printf("msmax = %d\n", msmax)
+	printf("msr = %d\n", msr)
+
+	printf("sec = %d\n", sec)
+	printf("secr = %d\n", secr)
+	printf("us = %d\n", us)
+	printf("usr = %d\n", usr)
+	printf("ns = %d\n", nsr)
+	printf("nsr = %d\n", nsr)
+	printf("hz = %d\n", hz)
 
 	/* profile counter should be non-zero, and at
 	 * least as many as the jiffies(1) counter */
@@ -71,4 +95,39 @@ probe end
 		printf("unexpected count on 'infinite' interval\n")
 		printf("systemtap test failure\n");
 	}
+
+	if (jr * msr * secr * usr * nsr > 0) {
+		printf("systemtap test success\n")
+	} else {
+		printf("unexpected randomize count\n")
+		printf("systemtap test failure\n");
+	}
+
+	if (sec > 0) {
+		printf("systemtap test success\n")
+	} else {
+		printf("unexpected sec count\n")
+		printf("systemtap test failure\n");
+	}
+
+	if (us > 0) {
+		printf("systemtap test success\n")
+	} else {
+		printf("unexpected us count\n")
+		printf("systemtap test failure\n");
+	}
+
+	if (ns > 0) {
+		printf("systemtap test success\n")
+	} else {
+		printf("unexpected ns count\n")
+		printf("systemtap test failure\n");
+	}
+
+	if (hz > 0) {
+		printf("systemtap test success\n")
+	} else {
+		printf("unexpected hz count\n")
+		printf("systemtap test failure\n");
+	}
 }
-- 
1.8.3.1



^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH 1/3] add testcases for function definitions
  2015-11-26  8:43 [PATCH 1/3] add testcases for function definitions Zhou Wenjian
  2015-11-26  8:44 ` [PATCH 3/3] add cases for break and continue Zhou Wenjian
  2015-11-26  8:44 ` [PATCH 2/3] add more test cases for timer Zhou Wenjian
@ 2015-12-01  3:21 ` "Zhou, Wenjian/周文剑"
  2015-12-04 13:45   ` David Smith
  2 siblings, 1 reply; 5+ messages in thread
From: "Zhou, Wenjian/周文剑" @ 2015-12-01  3:21 UTC (permalink / raw)
  To: systemtap, David Smith

Hello David,

These three patches also want to be reviewed.

-- 
Thanks
Zhou

On 11/26/2015 04:42 PM, Zhou Wenjian wrote:
> 	* testsuite/systemtap.base/func_definition.exp: New test case.
> 	* testsuite/systemtap.base/func_definition.stp: New test file.
> ---
>   testsuite/systemtap.base/func_definition.exp | 13 ++++++
>   testsuite/systemtap.base/func_definition.stp | 60 ++++++++++++++++++++++++++++
>   2 files changed, 73 insertions(+)
>   create mode 100755 testsuite/systemtap.base/func_definition.exp
>   create mode 100755 testsuite/systemtap.base/func_definition.stp
>
> diff --git a/testsuite/systemtap.base/func_definition.exp b/testsuite/systemtap.base/func_definition.exp
> new file mode 100755
> index 0000000..65abdb5
> --- /dev/null
> +++ b/testsuite/systemtap.base/func_definition.exp
> @@ -0,0 +1,13 @@
> +# Check function definitions
> +
> +set test "func_definition"
> +if {![installtest_p]} { untested "$test"; return }
> +
> +foreach runtime [get_runtime_list] {
> +    if {$runtime != ""} {
> +	stap_run $srcdir/$subdir/$test.stp no_load (${all_pass_string}){5} \
> +	    --runtime=$runtime
> +    } else {
> +	stap_run $srcdir/$subdir/$test.stp no_load (${all_pass_string}){5}
> +    }
> +}
> diff --git a/testsuite/systemtap.base/func_definition.stp b/testsuite/systemtap.base/func_definition.stp
> new file mode 100755
> index 0000000..eaa8d94
> --- /dev/null
> +++ b/testsuite/systemtap.base/func_definition.stp
> @@ -0,0 +1,60 @@
> +/*
> + * func_definition.stp
> + *
> + * Check function definitions
> + */
> +probe begin {
> +    println("systemtap starting probe")
> +}
> +
> +
> +function f1(arg:long)
> +{
> +    if (arg == 2015)
> +        println("systemtap test success")
> +    else
> +        printf("systemtap test failure - arg of f1:%d != 2015\n", arg)
> +}
> +
> +function f2(arg)
> +{
> +    if (arg == 2015)
> +        println("systemtap test success")
> +    else
> +        printf("systemtap test failure - arg of f2:%d != 2015\n", arg)
> +}
> +
> +function f3:long()
> +{
> +    return 2015
> +}
> +
> +function f4()
> +{
> +    return 2015
> +}
> +
> +function f5()
> +{
> +    println("systemtap test success")
> +}
> +
> +probe end {
> +    println("systemtap ending probe")
> +
> +    f1(2015)
> +
> +    f2(2015)
> +
> +    if (f3() == 2015)
> +        println("systemtap test success")
> +    else
> +        printf("systemtap test failure - return_value of f3:%d != 2015\n", f3())
> +
> +    if (f4() == 2015)
> +        println("systemtap test success")
> +    else
> +        printf("systemtap test failure - return_value of f4:%d != 2015\n", f4())
> +
> +    f5()
> +}
>


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH 1/3] add testcases for function definitions
  2015-12-01  3:21 ` [PATCH 1/3] add testcases for function definitions "Zhou, Wenjian/周文剑"
@ 2015-12-04 13:45   ` David Smith
  0 siblings, 0 replies; 5+ messages in thread
From: David Smith @ 2015-12-04 13:45 UTC (permalink / raw)
  To: Zhou, Wenjian/周文剑, systemtap

On 11/30/2015 09:19 PM, "Zhou, Wenjian/周文剑" wrote:
> Hello David,
> 
> These three patches also want to be reviewed.

Sorry for the delay. I checked in patches 2 and 3 last week, but then
got busy this week. I struggled a bit with the first patch, the one that
tests functions. We don't really have a test case that test functions
directly, but we do have lots that test functions indirectly. But, it
seemed reasonable, so I checked it in as well.

Thanks again for the patches.

-- 
David Smith
dsmith@redhat.com
Red Hat
http://www.redhat.com
256.217.0141 (direct)
256.837.0057 (fax)

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2015-12-04 13:45 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-11-26  8:43 [PATCH 1/3] add testcases for function definitions Zhou Wenjian
2015-11-26  8:44 ` [PATCH 3/3] add cases for break and continue Zhou Wenjian
2015-11-26  8:44 ` [PATCH 2/3] add more test cases for timer Zhou Wenjian
2015-12-01  3:21 ` [PATCH 1/3] add testcases for function definitions "Zhou, Wenjian/周文剑"
2015-12-04 13:45   ` David Smith

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).