diff options
| author | Bryce Harrington <b.harrington@samsung.com> | 2013-10-31 11:00:23 -0700 |
|---|---|---|
| committer | Bryce Harrington <b.harrington@samsung.com> | 2013-10-31 11:00:23 -0700 |
| commit | 5971648318ffa0c9f8e5ad2817203daff8e6257d (patch) | |
| tree | 321e0f99bd920f38795688e5e56e2f1fba409d84 /src/caskbench.cpp | |
| parent | dffd9a237898c78ce3b1efa864e830f7fb7d50bb (diff) | |
Add standardized status codes through caskbench_status_t enums
Diffstat (limited to 'src/caskbench.cpp')
| -rw-r--r-- | src/caskbench.cpp | 122 |
1 files changed, 79 insertions, 43 deletions
diff --git a/src/caskbench.cpp b/src/caskbench.cpp index ae83f20..54783f0 100644 --- a/src/caskbench.cpp +++ b/src/caskbench.cpp @@ -37,65 +37,56 @@ caskbench_perf_test_t perf_tests[] = { }; #define NUM_CASES (5) -double -get_tick (void) -{ - struct timeval now; - gettimeofday (&now, NULL); - return (double)now.tv_sec + (double)now.tv_usec / 1000000.0; -} +typedef enum { + CASKBENCH_STATUS_PASS, + CASKBENCH_STATUS_FAIL, + CASKBENCH_STATUS_ERROR, + CASKBENCH_STATUS_CRASH, +} caskbench_status_t; -void -randomize_color(cairo_t *cr) +static const char * +_status_to_string(int result) { - double red, green, blue, alpha; - - red = (double)rand()/RAND_MAX; - green = (double)rand()/RAND_MAX; - blue = (double)rand()/RAND_MAX; - alpha = (double)rand()/RAND_MAX; - - cairo_set_source_rgba (cr, red, green, blue, alpha); + switch (result) { + case CASKBENCH_STATUS_PASS: + return "PASS"; + case CASKBENCH_STATUS_FAIL: + return "FAIL"; + case CASKBENCH_STATUS_ERROR: + return "ERROR"; + case CASKBENCH_STATUS_CRASH: + return "CRASH"; + default: + return "unknown"; + } } void -display_results_json(const caskbench_result_t *result) -{ - printf(" {\n"); - printf(" \"test case\": \"%s\",\n", result->test_case_name); - printf(" \"iterations\": %d,\n", result->iterations); - printf(" \"minimum run time (s)\": %f,\n", result->min_run_time); - printf(" \"average run time (s)\": %f,\n", result->avg_run_time); - printf(" \"status\": \"%d\"\n", result->status); - printf(" }"); -} - -int -main (int argc, char *argv[]) +process_options(caskbench_options_t *opt, int argc, char *argv[]) { int rc; - int c, i; - caskbench_options_t opt; - double start_time, stop_time, run_time, run_total; - poptContext pc; struct poptOption po[] = { - {"iterations", 'i', POPT_ARG_INT, &opt.iterations, 0, + {"iterations", 'i', POPT_ARG_INT, &opt->iterations, 0, "The number of times each test case should be run", NULL}, - {"dry-run", 'n', POPT_ARG_NONE, &opt.dry_run, 0, + {"dry-run", 'n', POPT_ARG_NONE, &opt->dry_run, 0, "Just list the selected test case names without executing", "num"}, POPT_AUTOHELP {NULL} }; + + assert(opt); + + // Initialize options + opt->dry_run = 0; + opt->iterations = 1024; + pc = poptGetContext(NULL, argc, (const char **)argv, po, 0); poptSetOtherOptionHelp(pc, "[ARG...]"); poptReadDefaultConfig(pc, 0); - opt.dry_run = 0; - opt.iterations = 1024; - while ((rc = poptGetNextOpt(pc)) >= 0) { printf("%d\n", rc); } @@ -116,6 +107,49 @@ main (int argc, char *argv[]) // Remaining args are the tests to be run, or all if this list is empty const char **tests = poptGetArgs(pc); +} + +double +get_tick (void) +{ + struct timeval now; + gettimeofday (&now, NULL); + return (double)now.tv_sec + (double)now.tv_usec / 1000000.0; +} + +void +randomize_color(cairo_t *cr) +{ + double red, green, blue, alpha; + + red = (double)rand()/RAND_MAX; + green = (double)rand()/RAND_MAX; + blue = (double)rand()/RAND_MAX; + alpha = (double)rand()/RAND_MAX; + + cairo_set_source_rgba (cr, red, green, blue, alpha); +} + +void +display_results_json(const caskbench_result_t *result) +{ + printf(" {\n"); + printf(" \"test case\": \"%s\",\n", result->test_case_name); + printf(" \"iterations\": %d,\n", result->iterations); + printf(" \"minimum run time (s)\": %f,\n", result->min_run_time); + printf(" \"average run time (s)\": %f,\n", result->avg_run_time); + printf(" \"status\": \"%s\"\n", _status_to_string(result->status)); + printf(" }"); +} + +int +main (int argc, char *argv[]) +{ + int c, i; + caskbench_options_t opt; + double start_time, stop_time, run_time, run_total; + + process_options(&opt, argc, argv); // TODO: Open output file // start json @@ -140,7 +174,7 @@ main (int argc, char *argv[]) if (perf_tests[c].setup != NULL) if (!perf_tests[c].setup(cr)) { - result.status = -1; + result.status = CASKBENCH_STATUS_ERROR; goto FINAL; } @@ -151,7 +185,10 @@ main (int argc, char *argv[]) start_time = get_tick(); // Execute test_case - result.status = perf_tests[c].test_case(cr); + if (perf_tests[c].test_case(cr)) + result.status = CASKBENCH_STATUS_PASS; + else + result.status = CASKBENCH_STATUS_FAIL; stop_time = get_tick(); run_time = stop_time - start_time; @@ -162,8 +199,7 @@ main (int argc, char *argv[]) run_total += run_time; } catch (...) { warnx("Unknown exception encountered\n"); - // Mark as crashed - result.status = 3; // ERROR + result.status = CASKBENCH_STATUS_CRASH; goto FINAL; } } |