# HG changeset patch # User jittat # Date 2008-04-07 17:46:30 # Node ID b03203ec084a129615e8fa49fff65b027a34a1b3 # Parent 9669362454bde344fe1abd0d9794e92469ad8890 [grader] better test case for timeout, changed where check_mem_usage is called to reduce inefficiency git-svn-id: http://theory.cpe.ku.ac.th/grader/judge/trunk/scripts@167 6386c4cd-e34a-4fa8-8920-d93eb39b512e diff --git a/std-script/box.cc b/std-script/box.cc --- a/std-script/box.cc +++ b/std-script/box.cc @@ -423,15 +423,11 @@ if (timer_tick) { check_timeout(); + check_memory_usage(); timer_tick = 0; } p = wait4(box_pid, &stat, WUNTRACED, &rus); - if(!WIFEXITED(stat)) { - // printf("CHECKING\n"); - check_memory_usage(); - } - if (p < 0) { if (errno == EINTR) @@ -449,9 +445,9 @@ box_pid = 0; if (WEXITSTATUS(stat)) - fprintf(stderr,"Exited with error status %d.", WEXITSTATUS(stat)); + fprintf(stderr,"Exited with error status %d.\n", WEXITSTATUS(stat)); else if ((use_wall_clock ? wall : total.tv_sec) > timeout) - fprintf(stderr,"Time limit exceeded."); + fprintf(stderr,"Time limit exceeded.\n"); else // report OK and statistics fprintf(stderr,"OK\n"); @@ -476,7 +472,7 @@ if (WIFSIGNALED(stat)) { box_pid = 0; - fprintf(stderr,"Caught fatal signal %d.", WTERMSIG(stat)); + fprintf(stderr,"Caught fatal signal %d.\n", WTERMSIG(stat)); struct timeval total; int wall; diff --git a/test/data/test2_1-5sec.c b/test/data/test2_1-5sec.c --- a/test/data/test2_1-5sec.c +++ b/test/data/test2_1-5sec.c @@ -1,6 +1,9 @@ #include #include #include +#include +#include +#include int main() { @@ -11,13 +14,28 @@ scanf("%d %d",&a,&b); printf("%d\n",a+b); - sleep(1); + struct rusage ru; - c = 0; - while(c<1000000000) { + while(1) { + c++; + b+=c; + while(c<1000000000) { + c++; + b+=c; + } + getrusage(RUSAGE_SELF,&ru); + if((ru.ru_utime.tv_sec + ru.ru_stime.tv_sec)>=1) + break; + } + printf("%d\n",b); + c=0; + while(c<100000000) { c++; b+=c; } + if(b==10) + printf("hello\n"); + exit(0); }