test wfstack: enforce external mutex if needed by default
authorMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Wed, 5 Dec 2012 11:13:08 +0000 (06:13 -0500)
committerMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Wed, 5 Dec 2012 11:13:08 +0000 (06:13 -0500)
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
tests/test_urcu_wfs.c

index cb85545a3ddad5be878a82013febd6f20bcd5c76..e36b822569e6a821fe3ad8841a6c9d34801ddb66 100644 (file)
@@ -78,6 +78,8 @@ enum test_sync {
 
 static enum test_sync test_sync;
 
+static int test_force_sync;
+
 static volatile int test_go, test_stop;
 
 static unsigned long rduration;
@@ -321,6 +323,7 @@ static void show_usage(int argc, char **argv)
        printf(" [-P] (test pop_all, enabled by default)");
        printf(" [-M] (use mutex external synchronization)");
        printf("      Note: default: no external synchronization used.");
+       printf(" [-f] (force user-provided synchronization)");
        printf("\n");
 }
 
@@ -399,6 +402,9 @@ int main(int argc, char **argv)
                case 'M':
                        test_sync = TEST_SYNC_MUTEX;
                        break;
+               case 'f':
+                       test_force_sync = 1;
+                       break;
                }
        }
 
@@ -406,6 +412,17 @@ int main(int argc, char **argv)
        if (!test_pop && !test_pop_all)
                test_pop_all = 1;
 
+       if (test_sync == TEST_SYNC_NONE && nr_dequeuers > 1 && test_pop) {
+               if (test_force_sync) {
+                       fprintf(stderr, "[WARNING] Using pop concurrently "
+                               "with other pop or pop_all without external "
+                               "synchronization. Expect run-time failure.\n");
+               } else {
+                       printf("Enforcing mutex synchronization\n");
+                       test_sync = TEST_SYNC_MUTEX;
+               }
+       }
+
        printf_verbose("running test for %lu seconds, %u enqueuers, "
                       "%u dequeuers.\n",
                       duration, nr_enqueuers, nr_dequeuers);
This page took 0.02728 seconds and 4 git commands to generate.