public inbox for ltp@lists.linux.it
 help / color / mirror / Atom feed
* [LTP] [PATCH] ltp setrlimit testcase patch for RLIMIT_FSIZE resource
@ 2010-08-16 11:35 Harsh Prateek Bora
  2010-08-16 14:21 ` Subrata Modak
  0 siblings, 1 reply; 4+ messages in thread
From: Harsh Prateek Bora @ 2010-08-16 11:35 UTC (permalink / raw)
  To: ltp-list

Current testcase for setrlimit resource RLIMIT_FSIZE
is using a global integer variable to communicate the number of
bytes from child to parent which is incorrect. This
has been corrected by introducing a pipe to transfer
this information from child to parent process.

Signed-off-by: Harsh Prateek Bora <harsh@linux.vnet.ibm.com>
---
 testcases/kernel/syscalls/setrlimit/setrlimit01.c |   15 +++++++++++++++
 1 files changed, 15 insertions(+), 0 deletions(-)

diff --git a/testcases/kernel/syscalls/setrlimit/setrlimit01.c b/testcases/kernel/syscalls/setrlimit/setrlimit01.c
index 6952eb3..2bb1e9d 100644
--- a/testcases/kernel/syscalls/setrlimit/setrlimit01.c
+++ b/testcases/kernel/syscalls/setrlimit/setrlimit01.c
@@ -156,7 +156,11 @@ void test2()
 	 * an wired value!  So, it is essential to fflush the parent's
 	 * write buffer HERE
 	 */
+	int pipefd[2];
 	fflush(stdout);
+	if (pipe(pipefd) == -1) {
+		tst_brkm(TBROK | TERRNO, NULL, "pipe creation failed");
+	}
 
 	/*
 	 * Spawn a child process, and reduce the filesize to
@@ -170,6 +174,7 @@ void test2()
 	}
 
 	if (pid == 0) {
+		close(pipefd[0]); /* close unused read end */
 		rlim.rlim_cur = 10;
 		rlim.rlim_max = 10;
 		if ((setrlimit(RLIMIT_FSIZE, &rlim)) == -1) {
@@ -181,6 +186,11 @@ void test2()
 		}
 
 		if ((bytes = write(fd, buf, 26)) != 10) {
+			if (write(pipefd[1], &bytes, sizeof(bytes))
+				< sizeof(bytes)) {
+				perror("child: write to pipe failed");
+			}
+			close(pipefd[1]); /* EOF */
 			exit(3);
 		}
 		exit(0);	/* success */
@@ -202,6 +212,11 @@ void test2()
 		tst_resm(TFAIL, "creating testfile failed");
 		break;
 	case 3:
+		close(pipefd[1]); /* close unused write end */
+		if (read(pipefd[0], &bytes, sizeof(bytes)) < sizeof(bytes)) {
+			tst_resm(TFAIL, "parent: reading pipe failed");
+		}
+		close(pipefd[0]);
 		tst_resm(TFAIL, "setrlimit failed, expected "
 			 "10 got %d", bytes);
 		break;
-- 
1.7.1.1


------------------------------------------------------------------------------
This SF.net email is sponsored by 

Make an app they can't live without
Enter the BlackBerry Developer Challenge
http://p.sf.net/sfu/RIM-dev2dev 
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list

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

* Re: [LTP] [PATCH] ltp setrlimit testcase patch for RLIMIT_FSIZE resource
  2010-08-16 11:35 [LTP] [PATCH] ltp setrlimit testcase patch for RLIMIT_FSIZE resource Harsh Prateek Bora
@ 2010-08-16 14:21 ` Subrata Modak
  2010-08-16 15:52   ` Garrett Cooper
  0 siblings, 1 reply; 4+ messages in thread
From: Subrata Modak @ 2010-08-16 14:21 UTC (permalink / raw)
  To: Harsh Prateek Bora; +Cc: ltp-list

On Mon, 2010-08-16 at 17:05 +0530, Harsh Prateek Bora wrote:
> Current testcase for setrlimit resource RLIMIT_FSIZE
> is using a global integer variable to communicate the number of
> bytes from child to parent which is incorrect. This
> has been corrected by introducing a pipe to transfer
> this information from child to parent process.
> 
> Signed-off-by: Harsh Prateek Bora <harsh@linux.vnet.ibm.com>
> ---
>  testcases/kernel/syscalls/setrlimit/setrlimit01.c |   15 +++++++++++++++
>  1 files changed, 15 insertions(+), 0 deletions(-)
> 
> diff --git a/testcases/kernel/syscalls/setrlimit/setrlimit01.c b/testcases/kernel/syscalls/setrlimit/setrlimit01.c
> index 6952eb3..2bb1e9d 100644
> --- a/testcases/kernel/syscalls/setrlimit/setrlimit01.c
> +++ b/testcases/kernel/syscalls/setrlimit/setrlimit01.c
> @@ -156,7 +156,11 @@ void test2()
>  	 * an wired value!  So, it is essential to fflush the parent's
>  	 * write buffer HERE
>  	 */
> +	int pipefd[2];
>  	fflush(stdout);
> +	if (pipe(pipefd) == -1) {
> +		tst_brkm(TBROK | TERRNO, NULL, "pipe creation failed");
> +	}
> 
>  	/*
>  	 * Spawn a child process, and reduce the filesize to
> @@ -170,6 +174,7 @@ void test2()
>  	}
> 
>  	if (pid == 0) {
> +		close(pipefd[0]); /* close unused read end */
>  		rlim.rlim_cur = 10;
>  		rlim.rlim_max = 10;
>  		if ((setrlimit(RLIMIT_FSIZE, &rlim)) == -1) {
> @@ -181,6 +186,11 @@ void test2()
>  		}
> 
>  		if ((bytes = write(fd, buf, 26)) != 10) {
> +			if (write(pipefd[1], &bytes, sizeof(bytes))
> +				< sizeof(bytes)) {
> +				perror("child: write to pipe failed");

You still uses perror() here. Use tst_resm() instead.

Regards--
Subrata

> +			}
> +			close(pipefd[1]); /* EOF */
>  			exit(3);
>  		}
>  		exit(0);	/* success */
> @@ -202,6 +212,11 @@ void test2()
>  		tst_resm(TFAIL, "creating testfile failed");
>  		break;
>  	case 3:
> +		close(pipefd[1]); /* close unused write end */
> +		if (read(pipefd[0], &bytes, sizeof(bytes)) < sizeof(bytes)) {
> +			tst_resm(TFAIL, "parent: reading pipe failed");
> +		}
> +		close(pipefd[0]);
>  		tst_resm(TFAIL, "setrlimit failed, expected "
>  			 "10 got %d", bytes);
>  		break;


------------------------------------------------------------------------------
This SF.net email is sponsored by 

Make an app they can't live without
Enter the BlackBerry Developer Challenge
http://p.sf.net/sfu/RIM-dev2dev 
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list

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

* Re: [LTP] [PATCH] ltp setrlimit testcase patch for RLIMIT_FSIZE resource
  2010-08-16 14:21 ` Subrata Modak
@ 2010-08-16 15:52   ` Garrett Cooper
  2010-08-24 11:02     ` Subrata Modak
  0 siblings, 1 reply; 4+ messages in thread
From: Garrett Cooper @ 2010-08-16 15:52 UTC (permalink / raw)
  To: subrata; +Cc: ltp-list

On Mon, Aug 16, 2010 at 7:21 AM, Subrata Modak
<subrata@linux.vnet.ibm.com> wrote:
> On Mon, 2010-08-16 at 17:05 +0530, Harsh Prateek Bora wrote:
>> Current testcase for setrlimit resource RLIMIT_FSIZE
>> is using a global integer variable to communicate the number of
>> bytes from child to parent which is incorrect. This
>> has been corrected by introducing a pipe to transfer
>> this information from child to parent process.
>>
>> Signed-off-by: Harsh Prateek Bora <harsh@linux.vnet.ibm.com>
>> ---
>>  testcases/kernel/syscalls/setrlimit/setrlimit01.c |   15 +++++++++++++++
>>  1 files changed, 15 insertions(+), 0 deletions(-)
>>
>> diff --git a/testcases/kernel/syscalls/setrlimit/setrlimit01.c b/testcases/kernel/syscalls/setrlimit/setrlimit01.c
>> index 6952eb3..2bb1e9d 100644
>> --- a/testcases/kernel/syscalls/setrlimit/setrlimit01.c
>> +++ b/testcases/kernel/syscalls/setrlimit/setrlimit01.c
>> @@ -156,7 +156,11 @@ void test2()
>>        * an wired value!  So, it is essential to fflush the parent's
>>        * write buffer HERE
>>        */
>> +     int pipefd[2];
>>       fflush(stdout);
>> +     if (pipe(pipefd) == -1) {
>> +             tst_brkm(TBROK | TERRNO, NULL, "pipe creation failed");
>> +     }
>>
>>       /*
>>        * Spawn a child process, and reduce the filesize to
>> @@ -170,6 +174,7 @@ void test2()
>>       }
>>
>>       if (pid == 0) {
>> +             close(pipefd[0]); /* close unused read end */
>>               rlim.rlim_cur = 10;
>>               rlim.rlim_max = 10;
>>               if ((setrlimit(RLIMIT_FSIZE, &rlim)) == -1) {
>> @@ -181,6 +186,11 @@ void test2()
>>               }
>>
>>               if ((bytes = write(fd, buf, 26)) != 10) {
>> +                     if (write(pipefd[1], &bytes, sizeof(bytes))
>> +                             < sizeof(bytes)) {
>> +                             perror("child: write to pipe failed");
>
> You still uses perror() here. Use tst_resm() instead.

This patch is actually ok. If you look at the test in context (as
Harsh pointed out), the perror(3) call was within a forked process,
and that's fine. It's the other areas that need to be tst_resm(3)
calls because they're in the parent process and actually affect the
final outcome of the test, and provide a uniform means of reporting.

Thanks,
-Garrett

------------------------------------------------------------------------------
This SF.net email is sponsored by 

Make an app they can't live without
Enter the BlackBerry Developer Challenge
http://p.sf.net/sfu/RIM-dev2dev 
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list

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

* Re: [LTP] [PATCH] ltp setrlimit testcase patch for RLIMIT_FSIZE resource
  2010-08-16 15:52   ` Garrett Cooper
@ 2010-08-24 11:02     ` Subrata Modak
  0 siblings, 0 replies; 4+ messages in thread
From: Subrata Modak @ 2010-08-24 11:02 UTC (permalink / raw)
  To: Garrett Cooper; +Cc: ltp-list

Ok. Merged.

Regards--
Subrata

On Mon, 2010-08-16 at 08:52 -0700, Garrett Cooper wrote: 
> On Mon, Aug 16, 2010 at 7:21 AM, Subrata Modak
> <subrata@linux.vnet.ibm.com> wrote:
> > On Mon, 2010-08-16 at 17:05 +0530, Harsh Prateek Bora wrote:
> >> Current testcase for setrlimit resource RLIMIT_FSIZE
> >> is using a global integer variable to communicate the number of
> >> bytes from child to parent which is incorrect. This
> >> has been corrected by introducing a pipe to transfer
> >> this information from child to parent process.
> >>
> >> Signed-off-by: Harsh Prateek Bora <harsh@linux.vnet.ibm.com>
> >> ---
> >>  testcases/kernel/syscalls/setrlimit/setrlimit01.c |   15 +++++++++++++++
> >>  1 files changed, 15 insertions(+), 0 deletions(-)
> >>
> >> diff --git a/testcases/kernel/syscalls/setrlimit/setrlimit01.c b/testcases/kernel/syscalls/setrlimit/setrlimit01.c
> >> index 6952eb3..2bb1e9d 100644
> >> --- a/testcases/kernel/syscalls/setrlimit/setrlimit01.c
> >> +++ b/testcases/kernel/syscalls/setrlimit/setrlimit01.c
> >> @@ -156,7 +156,11 @@ void test2()
> >>        * an wired value!  So, it is essential to fflush the parent's
> >>        * write buffer HERE
> >>        */
> >> +     int pipefd[2];
> >>       fflush(stdout);
> >> +     if (pipe(pipefd) == -1) {
> >> +             tst_brkm(TBROK | TERRNO, NULL, "pipe creation failed");
> >> +     }
> >>
> >>       /*
> >>        * Spawn a child process, and reduce the filesize to
> >> @@ -170,6 +174,7 @@ void test2()
> >>       }
> >>
> >>       if (pid == 0) {
> >> +             close(pipefd[0]); /* close unused read end */
> >>               rlim.rlim_cur = 10;
> >>               rlim.rlim_max = 10;
> >>               if ((setrlimit(RLIMIT_FSIZE, &rlim)) == -1) {
> >> @@ -181,6 +186,11 @@ void test2()
> >>               }
> >>
> >>               if ((bytes = write(fd, buf, 26)) != 10) {
> >> +                     if (write(pipefd[1], &bytes, sizeof(bytes))
> >> +                             < sizeof(bytes)) {
> >> +                             perror("child: write to pipe failed");
> >
> > You still uses perror() here. Use tst_resm() instead.
> 
> This patch is actually ok. If you look at the test in context (as
> Harsh pointed out), the perror(3) call was within a forked process,
> and that's fine. It's the other areas that need to be tst_resm(3)
> calls because they're in the parent process and actually affect the
> final outcome of the test, and provide a uniform means of reporting.
> 
> Thanks,
> -Garrett


------------------------------------------------------------------------------
Sell apps to millions through the Intel(R) Atom(Tm) Developer Program
Be part of this innovative community and reach millions of netbook users 
worldwide. Take advantage of special opportunities to increase revenue and 
speed time-to-market. Join now, and jumpstart your future.
http://p.sf.net/sfu/intel-atom-d2d
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list

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

end of thread, other threads:[~2010-08-24 11:02 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-08-16 11:35 [LTP] [PATCH] ltp setrlimit testcase patch for RLIMIT_FSIZE resource Harsh Prateek Bora
2010-08-16 14:21 ` Subrata Modak
2010-08-16 15:52   ` Garrett Cooper
2010-08-24 11:02     ` Subrata Modak

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox