Fix the 'time' test, now that rand() seems to be working.

This commit is contained in:
px4dev 2013-01-14 10:08:47 -08:00
parent b5d3d8e436
commit c38ad4ded5
2 changed files with 39 additions and 35 deletions

View File

@ -95,7 +95,7 @@ cycletime(void)
lasttime = cycles;
return (basetime + cycles) / 168;
return (basetime + cycles) / 168; /* XXX magic number */
}
/****************************************************************************
@ -133,9 +133,9 @@ int test_time(int argc, char *argv[])
lowdelta = abs(delta / 100);
/* loop checking the time */
for (unsigned i = 0; i < 100000; i++) {
for (unsigned i = 0; i < 100; i++) {
usleep(rand() * 10);
usleep(rand());
uint32_t flags = irqsave();
@ -154,7 +154,7 @@ int test_time(int argc, char *argv[])
fprintf(stderr, "h %llu c %llu d %lld\n", h, c, delta - lowdelta);
}
printf("Maximum jitter %lld\n", maxdelta);
printf("Maximum jitter %lldus\n", maxdelta);
return 0;
}

View File

@ -82,38 +82,39 @@ const struct {
const char *name;
int (* fn)(int argc, char *argv[]);
unsigned options;
int passed;
#define OPT_NOHELP (1<<0)
#define OPT_NOALLTEST (1<<1)
#define OPT_NOJIGTEST (1<<2)
} tests[] = {
{"led", test_led, 0, 0},
{"int", test_int, 0, 0},
{"float", test_float, 0, 0},
{"sensors", test_sensors, 0, 0},
{"gpio", test_gpio, OPT_NOJIGTEST | OPT_NOALLTEST, 0},
{"hrt", test_hrt, OPT_NOJIGTEST | OPT_NOALLTEST, 0},
{"ppm", test_ppm, OPT_NOJIGTEST | OPT_NOALLTEST, 0},
{"servo", test_servo, OPT_NOJIGTEST | OPT_NOALLTEST, 0},
{"adc", test_adc, OPT_NOJIGTEST, 0},
{"jig_voltages", test_jig_voltages, OPT_NOALLTEST, 0},
{"uart_loopback", test_uart_loopback, OPT_NOJIGTEST | OPT_NOALLTEST, 0},
{"uart_baudchange", test_uart_baudchange, OPT_NOJIGTEST | OPT_NOALLTEST, 0},
{"uart_send", test_uart_send, OPT_NOJIGTEST | OPT_NOALLTEST, 0},
{"uart_console", test_uart_console, OPT_NOJIGTEST | OPT_NOALLTEST, 0},
{"tone", test_tone, 0, 0},
{"sleep", test_sleep, OPT_NOJIGTEST, 0},
{"time", test_time, OPT_NOJIGTEST, 0},
{"perf", test_perf, OPT_NOJIGTEST, 0},
{"all", test_all, OPT_NOALLTEST | OPT_NOJIGTEST, 0},
{"jig", test_jig, OPT_NOJIGTEST | OPT_NOALLTEST, 0},
{"param", test_param, 0, 0},
{"bson", test_bson, 0, 0},
{"file", test_file, 0, 0},
{"help", test_help, OPT_NOALLTEST | OPT_NOHELP | OPT_NOJIGTEST, 0},
{NULL, NULL, 0, 0}
{"led", test_led, 0},
{"int", test_int, 0},
{"float", test_float, 0},
{"sensors", test_sensors, 0},
{"gpio", test_gpio, OPT_NOJIGTEST | OPT_NOALLTEST},
{"hrt", test_hrt, OPT_NOJIGTEST | OPT_NOALLTEST},
{"ppm", test_ppm, OPT_NOJIGTEST | OPT_NOALLTEST},
{"servo", test_servo, OPT_NOJIGTEST | OPT_NOALLTEST},
{"adc", test_adc, OPT_NOJIGTEST},
{"jig_voltages", test_jig_voltages, OPT_NOALLTEST},
{"uart_loopback", test_uart_loopback, OPT_NOJIGTEST | OPT_NOALLTEST},
{"uart_baudchange", test_uart_baudchange, OPT_NOJIGTEST | OPT_NOALLTEST},
{"uart_send", test_uart_send, OPT_NOJIGTEST | OPT_NOALLTEST},
{"uart_console", test_uart_console, OPT_NOJIGTEST | OPT_NOALLTEST},
{"tone", test_tone, 0},
{"sleep", test_sleep, OPT_NOJIGTEST},
{"time", test_time, OPT_NOJIGTEST},
{"perf", test_perf, OPT_NOJIGTEST},
{"all", test_all, OPT_NOALLTEST | OPT_NOJIGTEST},
{"jig", test_jig, OPT_NOJIGTEST | OPT_NOALLTEST},
{"param", test_param, 0},
{"bson", test_bson, 0},
{"file", test_file, 0},
{"help", test_help, OPT_NOALLTEST | OPT_NOHELP | OPT_NOJIGTEST},
{NULL, NULL, 0}
};
#define NTESTS (sizeof(tests) / sizeof(tests[0]))
static int
test_help(int argc, char *argv[])
{
@ -133,6 +134,7 @@ test_all(int argc, char *argv[])
unsigned i;
char *args[2] = {"all", NULL};
unsigned int failcount = 0;
bool passed[NTESTS];
printf("\nRunning all tests...\n\n");
@ -147,11 +149,11 @@ test_all(int argc, char *argv[])
fprintf(stderr, " [%s] \t\t\tFAIL\n", tests[i].name);
fflush(stderr);
failcount++;
passed[i] = false;
} else {
tests[i].passed = 1;
printf(" [%s] \t\t\tPASS\n", tests[i].name);
fflush(stdout);
passed[i] = true;
}
}
}
@ -195,7 +197,7 @@ test_all(int argc, char *argv[])
unsigned int k;
for (k = 0; k < i; k++) {
if ((tests[k].passed == 0) && !(tests[k].options & OPT_NOALLTEST)) {
if (!passed[k] && !(tests[k].options & OPT_NOALLTEST)) {
printf(" [%s] to obtain details, please re-run with\n\t nsh> tests %s\n\n", tests[k].name, tests[k].name);
}
}
@ -242,6 +244,7 @@ int test_jig(int argc, char *argv[])
unsigned i;
char *args[2] = {"jig", NULL};
unsigned int failcount = 0;
bool passed[NTESTS];
printf("\nRunning all tests...\n\n");
for (i = 0; tests[i].name; i++) {
@ -254,10 +257,11 @@ int test_jig(int argc, char *argv[])
fprintf(stderr, " [%s] \t\t\tFAIL\n", tests[i].name);
fflush(stderr);
failcount++;
passed[i] = false;
} else {
tests[i].passed = 1;
printf(" [%s] \t\t\tPASS\n", tests[i].name);
fflush(stdout);
passed[i] = true;
}
}
}
@ -296,7 +300,7 @@ int test_jig(int argc, char *argv[])
unsigned int k;
for (k = 0; k < i; k++)
{
if ((tests[k].passed == 0) && !(tests[k].options & OPT_NOJIGTEST))
if (!passed[i] && !(tests[k].options & OPT_NOJIGTEST))
{
printf(" [%s] to obtain details, please re-run with\n\t nsh> tests %s\n\n", tests[k].name, tests[k].name);
}