mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-10-19 14:13:35 +08:00
Fix the 'time' test, now that rand() seems to be working.
This commit is contained in:
@@ -95,7 +95,7 @@ cycletime(void)
|
|||||||
|
|
||||||
lasttime = cycles;
|
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);
|
lowdelta = abs(delta / 100);
|
||||||
|
|
||||||
/* loop checking the time */
|
/* 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();
|
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);
|
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;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
+35
-31
@@ -82,38 +82,39 @@ const struct {
|
|||||||
const char *name;
|
const char *name;
|
||||||
int (* fn)(int argc, char *argv[]);
|
int (* fn)(int argc, char *argv[]);
|
||||||
unsigned options;
|
unsigned options;
|
||||||
int passed;
|
|
||||||
#define OPT_NOHELP (1<<0)
|
#define OPT_NOHELP (1<<0)
|
||||||
#define OPT_NOALLTEST (1<<1)
|
#define OPT_NOALLTEST (1<<1)
|
||||||
#define OPT_NOJIGTEST (1<<2)
|
#define OPT_NOJIGTEST (1<<2)
|
||||||
} tests[] = {
|
} tests[] = {
|
||||||
{"led", test_led, 0, 0},
|
{"led", test_led, 0},
|
||||||
{"int", test_int, 0, 0},
|
{"int", test_int, 0},
|
||||||
{"float", test_float, 0, 0},
|
{"float", test_float, 0},
|
||||||
{"sensors", test_sensors, 0, 0},
|
{"sensors", test_sensors, 0},
|
||||||
{"gpio", test_gpio, OPT_NOJIGTEST | OPT_NOALLTEST, 0},
|
{"gpio", test_gpio, OPT_NOJIGTEST | OPT_NOALLTEST},
|
||||||
{"hrt", test_hrt, OPT_NOJIGTEST | OPT_NOALLTEST, 0},
|
{"hrt", test_hrt, OPT_NOJIGTEST | OPT_NOALLTEST},
|
||||||
{"ppm", test_ppm, OPT_NOJIGTEST | OPT_NOALLTEST, 0},
|
{"ppm", test_ppm, OPT_NOJIGTEST | OPT_NOALLTEST},
|
||||||
{"servo", test_servo, OPT_NOJIGTEST | OPT_NOALLTEST, 0},
|
{"servo", test_servo, OPT_NOJIGTEST | OPT_NOALLTEST},
|
||||||
{"adc", test_adc, OPT_NOJIGTEST, 0},
|
{"adc", test_adc, OPT_NOJIGTEST},
|
||||||
{"jig_voltages", test_jig_voltages, OPT_NOALLTEST, 0},
|
{"jig_voltages", test_jig_voltages, OPT_NOALLTEST},
|
||||||
{"uart_loopback", test_uart_loopback, OPT_NOJIGTEST | OPT_NOALLTEST, 0},
|
{"uart_loopback", test_uart_loopback, OPT_NOJIGTEST | OPT_NOALLTEST},
|
||||||
{"uart_baudchange", test_uart_baudchange, OPT_NOJIGTEST | OPT_NOALLTEST, 0},
|
{"uart_baudchange", test_uart_baudchange, OPT_NOJIGTEST | OPT_NOALLTEST},
|
||||||
{"uart_send", test_uart_send, OPT_NOJIGTEST | OPT_NOALLTEST, 0},
|
{"uart_send", test_uart_send, OPT_NOJIGTEST | OPT_NOALLTEST},
|
||||||
{"uart_console", test_uart_console, OPT_NOJIGTEST | OPT_NOALLTEST, 0},
|
{"uart_console", test_uart_console, OPT_NOJIGTEST | OPT_NOALLTEST},
|
||||||
{"tone", test_tone, 0, 0},
|
{"tone", test_tone, 0},
|
||||||
{"sleep", test_sleep, OPT_NOJIGTEST, 0},
|
{"sleep", test_sleep, OPT_NOJIGTEST},
|
||||||
{"time", test_time, OPT_NOJIGTEST, 0},
|
{"time", test_time, OPT_NOJIGTEST},
|
||||||
{"perf", test_perf, OPT_NOJIGTEST, 0},
|
{"perf", test_perf, OPT_NOJIGTEST},
|
||||||
{"all", test_all, OPT_NOALLTEST | OPT_NOJIGTEST, 0},
|
{"all", test_all, OPT_NOALLTEST | OPT_NOJIGTEST},
|
||||||
{"jig", test_jig, OPT_NOJIGTEST | OPT_NOALLTEST, 0},
|
{"jig", test_jig, OPT_NOJIGTEST | OPT_NOALLTEST},
|
||||||
{"param", test_param, 0, 0},
|
{"param", test_param, 0},
|
||||||
{"bson", test_bson, 0, 0},
|
{"bson", test_bson, 0},
|
||||||
{"file", test_file, 0, 0},
|
{"file", test_file, 0},
|
||||||
{"help", test_help, OPT_NOALLTEST | OPT_NOHELP | OPT_NOJIGTEST, 0},
|
{"help", test_help, OPT_NOALLTEST | OPT_NOHELP | OPT_NOJIGTEST},
|
||||||
{NULL, NULL, 0, 0}
|
{NULL, NULL, 0}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#define NTESTS (sizeof(tests) / sizeof(tests[0]))
|
||||||
|
|
||||||
static int
|
static int
|
||||||
test_help(int argc, char *argv[])
|
test_help(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
@@ -133,6 +134,7 @@ test_all(int argc, char *argv[])
|
|||||||
unsigned i;
|
unsigned i;
|
||||||
char *args[2] = {"all", NULL};
|
char *args[2] = {"all", NULL};
|
||||||
unsigned int failcount = 0;
|
unsigned int failcount = 0;
|
||||||
|
bool passed[NTESTS];
|
||||||
|
|
||||||
printf("\nRunning all tests...\n\n");
|
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);
|
fprintf(stderr, " [%s] \t\t\tFAIL\n", tests[i].name);
|
||||||
fflush(stderr);
|
fflush(stderr);
|
||||||
failcount++;
|
failcount++;
|
||||||
|
passed[i] = false;
|
||||||
} else {
|
} else {
|
||||||
tests[i].passed = 1;
|
|
||||||
printf(" [%s] \t\t\tPASS\n", tests[i].name);
|
printf(" [%s] \t\t\tPASS\n", tests[i].name);
|
||||||
fflush(stdout);
|
fflush(stdout);
|
||||||
|
passed[i] = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -195,7 +197,7 @@ test_all(int argc, char *argv[])
|
|||||||
unsigned int k;
|
unsigned int k;
|
||||||
|
|
||||||
for (k = 0; k < i; 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);
|
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;
|
unsigned i;
|
||||||
char *args[2] = {"jig", NULL};
|
char *args[2] = {"jig", NULL};
|
||||||
unsigned int failcount = 0;
|
unsigned int failcount = 0;
|
||||||
|
bool passed[NTESTS];
|
||||||
|
|
||||||
printf("\nRunning all tests...\n\n");
|
printf("\nRunning all tests...\n\n");
|
||||||
for (i = 0; tests[i].name; i++) {
|
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);
|
fprintf(stderr, " [%s] \t\t\tFAIL\n", tests[i].name);
|
||||||
fflush(stderr);
|
fflush(stderr);
|
||||||
failcount++;
|
failcount++;
|
||||||
|
passed[i] = false;
|
||||||
} else {
|
} else {
|
||||||
tests[i].passed = 1;
|
|
||||||
printf(" [%s] \t\t\tPASS\n", tests[i].name);
|
printf(" [%s] \t\t\tPASS\n", tests[i].name);
|
||||||
fflush(stdout);
|
fflush(stdout);
|
||||||
|
passed[i] = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -296,7 +300,7 @@ int test_jig(int argc, char *argv[])
|
|||||||
unsigned int k;
|
unsigned int k;
|
||||||
for (k = 0; k < i; 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);
|
printf(" [%s] to obtain details, please re-run with\n\t nsh> tests %s\n\n", tests[k].name, tests[k].name);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user