static int TestSuite_RunSerial (TestSuite *suite) /* IN */ { Test *test; Mutex mutex; int count = 0; int status = 0; Mutex_Init (&mutex); for (test = suite->tests; test; test = test->next) { count++; } for (test = suite->tests; test; test = test->next) { status += TestSuite_RunTest (suite, test, &mutex, &count); count--; } TestSuite_PrintJsonFooter (stdout); if (suite->outfile) { TestSuite_PrintJsonFooter (suite->outfile); } Mutex_Destroy (&mutex); return status; }
int TestSuite_Run (TestSuite *suite) /* IN */ { int failures = 0; if ((suite->flags & TEST_HELPONLY)) { TestSuite_PrintHelp (suite, stderr); return 0; } if (!suite->silent) { TestSuite_PrintJsonHeader (suite, stdout); if (suite->outfile) { TestSuite_PrintJsonHeader (suite, suite->outfile); } } if (suite->tests) { if (suite->testname) { failures += TestSuite_RunNamed (suite, suite->testname); } else { failures += TestSuite_RunSerial (suite); } } else if (!suite->silent) { TestSuite_PrintJsonFooter (stdout); if (suite->outfile) { TestSuite_PrintJsonFooter (suite->outfile); } } return failures; }
static int TestSuite_RunSerial (TestSuite *suite) /* IN */ { Test *test; int count = 0; int status = 0; for (test = suite->tests; test; test = test->next) { count++; } for (test = suite->tests; test; test = test->next) { status += TestSuite_RunTest (suite, test, &count); count--; } if (suite->silent) { return status; } TestSuite_PrintJsonFooter (stdout); if (suite->outfile) { TestSuite_PrintJsonFooter (suite->outfile); } return status; }
int TestSuite_Run (TestSuite *suite) /* IN */ { if ((suite->flags & TEST_HELPONLY)) { TestSuite_PrintHelp (suite, stderr); return 0; } TestSuite_PrintJsonHeader (suite, stdout); if (suite->outfile) { TestSuite_PrintJsonHeader (suite, suite->outfile); } if (suite->tests) { if (suite->testname) { TestSuite_RunNamed (suite, suite->testname); } else if ((suite->flags & TEST_NOTHREADS)) { TestSuite_RunSerial (suite); } else { TestSuite_RunParallel (suite); } } else { TestSuite_PrintJsonFooter (stdout); if (suite->outfile) { TestSuite_PrintJsonFooter (suite->outfile); } } return 0; }
static void TestSuite_RunNamed (TestSuite *suite, /* IN */ const char *testname) /* IN */ { Mutex mutex; char name[128]; Test *test; int count = 1; ASSERT (suite); ASSERT (testname); Mutex_Init (&mutex); for (test = suite->tests; test; test = test->next) { snprintf (name, sizeof name, "%s%s", suite->name, test->name); name [sizeof name - 1] = '\0'; if (0 == strcmp (name, testname)) { TestSuite_RunTest (suite, test, &mutex, &count); } } TestSuite_PrintJsonFooter (stdout); if (suite->outfile) { TestSuite_PrintJsonFooter (suite->outfile); } Mutex_Destroy (&mutex); }
static void TestSuite_RunSerial (TestSuite *suite) /* IN */ { Test *test; Mutex mutex; int count = 0; Mutex_Init (&mutex); for (test = suite->tests; test; test = test->next) { count++; } for (test = suite->tests; test; test = test->next) { TestSuite_RunTest (suite, test, &mutex, &count); count--; } TestSuite_PrintJsonFooter (stdout); if (suite->outfile && !suite->generatexmlreport) { TestSuite_PrintJsonFooter (suite->outfile); } Mutex_Destroy (&mutex); }
static void TestSuite_RunNamed (TestSuite *suite, /* IN */ const char *testname) /* IN */ { pthread_mutex_t mutex; char name[128]; Test *test; int count = 1; ASSERT (suite); ASSERT (testname); pthread_mutex_init (&mutex, NULL); for (test = suite->tests; test; test = test->next) { snprintf (name, sizeof name, "%s%s", suite->name, test->name); name [sizeof name - 1] = '\0'; if (0 == strcmp (name, testname)) { TestSuite_RunTest (suite, test, &mutex, &count); } } TestSuite_PrintJsonFooter (); pthread_mutex_destroy (&mutex); }
static void * TestSuite_ParallelWorker (void *data) /* IN */ { ParallelInfo *info = data; ASSERT (info); TestSuite_RunTest (info->suite, info->test, info->mutex, info->count); if (AtomicInt_DecrementAndTest (info->count)) { TestSuite_PrintJsonFooter (stdout); if (info->suite->outfile) { TestSuite_PrintJsonFooter (info->suite->outfile); } exit (0); } return NULL; }
int TestSuite_Run (TestSuite *suite) /* IN */ { if ((suite->flags & TEST_HELPONLY)) { TestSuite_PrintHelp (suite, stderr); return 0; } TestSuite_PrintJsonHeader (suite, stdout); if (suite->outfile) { if (suite->generatexmlreport){ TestSuite_PrintXmlHeader (suite, suite->outfile); }else{ TestSuite_PrintJsonHeader (suite, suite->outfile); } } if (suite->tests) { if (suite->testname) { suite->testcasesnum = 1; TestSuite_RunNamed (suite, suite->testname); } else if ((suite->flags & TEST_NOTHREADS)) { TestSuite_RunSerial (suite); } else { TestSuite_RunParallel (suite); } } else { TestSuite_PrintJsonFooter (stdout); if (suite->outfile) { if (!suite->generatexmlreport){ TestSuite_PrintJsonFooter (suite->outfile); } } } if (suite->outfile) { if (suite->generatexmlreport){ TestSuite_PrintXmlFooter (suite, suite->outfile); } } return 0; }
static int TestSuite_RunNamed (TestSuite *suite, /* IN */ const char *testname) /* IN */ { char name[128]; Test *test; int count = 1; bool star = strlen (testname) && testname[strlen (testname) - 1] == '*'; bool match; int status = 0; ASSERT (suite); ASSERT (testname); for (test = suite->tests; test; test = test->next) { snprintf (name, sizeof name, "%s%s", suite->name, test->name); name [sizeof name - 1] = '\0'; if (star) { /* e.g. testname is "/Client*" and name is "/Client/authenticate" */ match = (0 == strncmp (name, testname, strlen (testname) - 1)); } else { match = (0 == strcmp (name, testname)); } if (match) { status += TestSuite_RunTest (suite, test, &count); } } if (suite->silent) { return status; } TestSuite_PrintJsonFooter (stdout); if (suite->outfile) { TestSuite_PrintJsonFooter (suite->outfile); } return status; }
static void TestSuite_RunNamed (TestSuite *suite, /* IN */ const char *testname) /* IN */ { Mutex mutex; char name[128]; Test *test; int count = 1; bool star = strlen (testname) && testname[strlen (testname) - 1] == '*'; bool match; ASSERT (suite); ASSERT (testname); Mutex_Init (&mutex); for (test = suite->tests; test; test = test->next) { snprintf (name, sizeof name, "%s%s", suite->name, test->name); name [sizeof name - 1] = '\0'; if (star) { /* e.g. testname is "/Client/*" and name is "/Client/authenticate" */ match = (0 == strncmp (name, testname, strlen (testname) - 1)); } else { match = (0 == strcmp (name, testname)); } if (match) { TestSuite_RunTest (suite, test, &mutex, &count); } } TestSuite_PrintJsonFooter (stdout); if (suite->outfile) { TestSuite_PrintJsonFooter (suite->outfile); } Mutex_Destroy (&mutex); }
static void * TestSuite_ParallelWorker (void *data) /* IN */ { ParallelInfo *info = (ParallelInfo *)data; int status; ASSERT (info); status = TestSuite_RunTest (info->suite, info->test, info->mutex, info->count); if (AtomicInt_DecrementAndTest (info->count)) { TestSuite_PrintJsonFooter (stdout); if (info->suite->outfile) { TestSuite_PrintJsonFooter (info->suite->outfile); } exit (status); } /* an info is allocated for each thread in TestSuite_RunParallel */ bson_free (info); return NULL; }
static void TestSuite_RunSerial (TestSuite *suite) /* IN */ { Test *test; pthread_mutex_t mutex; int count = 0; pthread_mutex_init (&mutex, NULL); for (test = suite->tests; test; test = test->next) { count++; } for (test = suite->tests; test; test = test->next) { TestSuite_RunTest (suite, test, &mutex, &count); count--; } TestSuite_PrintJsonFooter (); pthread_mutex_destroy (&mutex); }