]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Made test results independent of thread scheduling.
authorBart Van Assche <bvanassche@acm.org>
Thu, 29 Apr 2010 07:11:19 +0000 (07:11 +0000)
committerBart Van Assche <bvanassche@acm.org>
Thu, 29 Apr 2010 07:11:19 +0000 (07:11 +0000)
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11111

drd/tests/bug-235681.c
drd/tests/bug-235681.stderr.exp
drd/tests/bug-235681.vgtest

index 3b306ec0b97137cb10d4adb4a1df2075fbced1cf..99114eb6bfbf23f2c0a1b9ef05d7c9263dfe77f8 100644 (file)
 pthread_mutex_t mutex;
 pthread_cond_t cond_var;
 int status;
+int silent;
 
 static void *run_fn(void *v)
 {
     int rc;
 
-    fprintf(stderr, "run_fn starting\n");
+    if (!silent)
+        fprintf(stderr, "run_fn starting\n");
 
     rc = pthread_mutex_lock(&mutex);
     assert(!rc);
 
     while (!status) {
-        fprintf(stderr, "run_fn(): status==0\n");
+        if (!silent)
+            fprintf(stderr, "run_fn(): status==0\n");
         rc = pthread_cond_wait(&cond_var, &mutex);
         assert(!rc);
-        fprintf(stderr, "run_fn(): woke up\n");
+        if (!silent)
+            fprintf(stderr, "run_fn(): woke up\n");
     }
-    fprintf(stderr, "run_fn(): status==1\n");
+    if (!silent)
+        fprintf(stderr, "run_fn(): status==1\n");
 
     rc = pthread_mutex_unlock(&mutex);
     assert(!rc);
 
-    fprintf(stderr, "run_fn done\n");
+    if (!silent)
+        fprintf(stderr, "run_fn done\n");
 
     return NULL;
 }
@@ -44,6 +50,9 @@ int main(int argc, char **argv)
     int rc;
     pthread_t other_thread;
 
+    if (argc > 1)
+        silent = 1;
+
     rc = pthread_mutex_init(&mutex, NULL);
     assert(!rc);
     rc = pthread_cond_init(&cond_var, NULL);
@@ -55,14 +64,16 @@ int main(int argc, char **argv)
     assert(!rc);
 
     /* yield the processor, and give the other thread a chance to get into the while loop */
-    fprintf(stderr, "main(): sleeping...\n");
+    if (!silent)
+        fprintf(stderr, "main(): sleeping...\n");
     sleep(1);
 
     rc = pthread_mutex_lock(&mutex);
     assert(!rc);
     /**** BEGIN CS *****/
 
-    fprintf(stderr, "main(): status=1\n");
+    if (!silent)
+        fprintf(stderr, "main(): status=1\n");
     status = 1;
     rc = pthread_cond_broadcast(&cond_var);
     assert(!rc);
@@ -71,10 +82,13 @@ int main(int argc, char **argv)
     rc = pthread_mutex_unlock(&mutex);
     assert(!rc);
 
-    fprintf(stderr, "joining...\n");
+    if (!silent)
+        fprintf(stderr, "joining...\n");
 
     rc = pthread_join(other_thread, NULL);
     assert(!rc);
 
+    fprintf(stderr, "Done.\n");
+
     return 0;
 }
index 8aa661276c4cb2c046fcaf2ae45a72a641f135e6..d16127fb58864e193433547434a63b906e78f2fa 100644 (file)
@@ -1,11 +1,4 @@
 
-run_fn starting
-run_fn(): status==0
-main(): sleeping...
-main(): status=1
-joining...
-run_fn(): woke up
-run_fn(): status==1
-run_fn done
+Done.
 
 ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
index 45ff5fd85fe5e113785854a58a0624a4dfd3f75e..f6051b7cb75eaccba40845e1ff6de40fba04c1f8 100644 (file)
@@ -1,4 +1,5 @@
 prereq: test -e bug-235681 && ./supported_libpthread
 vgopts: --read-var-info=yes --check-stack-var=yes --show-confl-seg=no --num-callers=3
 prog: bug-235681
+args: -q
 stderr_filter: filter_stderr