Browse Source

Added audio tune signals for unit tests passing and failing.

sbg
mcsauder 6 years ago committed by Daniel Agar
parent
commit
2fa70fca80
  1. 10
      src/systemcmds/tests/test_tone.cpp
  2. 194
      src/systemcmds/tests/tests_main.c

10
src/systemcmds/tests/test_tone.cpp

@ -72,16 +72,18 @@ int test_tone(int argc, char *argv[]) @@ -72,16 +72,18 @@ int test_tone(int argc, char *argv[])
}
if (argc == 2) {
tune_control.tune_id = atoi(argv[1]);
if (tune_control.tune_id <= 20) {
tune_control.tune_id = atoi(argv[1]);
PX4_INFO("Testing TuneID: %d", tune_control.tune_id);
PX4_INFO("TuneID: %d", tune_control.tune_id);
}
}
if (argc == 3) {
int volume = 40;
Tunes tunes{};
tunes.set_string(argv[2], 40);
PX4_INFO("Testing custom tune.");
tunes.set_string(argv[2], volume);
PX4_INFO("Custom tune.");
}
tune_control.strength = 40;

194
src/systemcmds/tests/tests_main.c

@ -51,101 +51,105 @@ @@ -51,101 +51,105 @@
#define TESTS_EIGEN_DISABLE
static int test_all(int argc, char *argv[]);
static int test_help(int argc, char *argv[]);
static int test_jig(int argc, char *argv[]);
static int test_runner(unsigned option);
static int test_all(int argc, char *argv[]);
static int test_jig(int argc, char *argv[]);
const struct {
const char *name;
int (* fn)(int argc, char *argv[]);
unsigned options;
#define OPT_NOHELP (1<<0)
#define OPT_NOALLTEST (1<<1)
#define OPT_NOJIGTEST (1<<2)
const char *name;
int (* fn)(int argc, char *argv[]);
unsigned options;
#define OPT_NOHELP (1<<0)
#define OPT_NOALLTEST (1<<1)
#define OPT_NOJIGTEST (1<<2)
} tests[] = {
{"all", test_all, OPT_NOALLTEST | OPT_NOJIGTEST},
{"help", test_help, OPT_NOALLTEST | OPT_NOHELP | OPT_NOJIGTEST},
{"jig", test_jig, OPT_NOJIGTEST | OPT_NOALLTEST},
{"help", test_help, OPT_NOALLTEST | OPT_NOHELP | OPT_NOJIGTEST},
{"all", test_all, OPT_NOALLTEST | OPT_NOJIGTEST},
{"jig", test_jig, OPT_NOJIGTEST | OPT_NOALLTEST},
#ifdef __PX4_NUTTX
{"adc", test_adc, OPT_NOJIGTEST},
{"file", test_file, OPT_NOJIGTEST | OPT_NOALLTEST},
{"led", test_led, 0},
{"sensors", test_sensors, 0},
{"time", test_time, OPT_NOJIGTEST},
{"uart_baudchange", test_uart_baudchange, OPT_NOJIGTEST},
{"uart_break", test_uart_break, OPT_NOJIGTEST | OPT_NOALLTEST},
{"uart_console", test_uart_console, OPT_NOJIGTEST | OPT_NOALLTEST},
{"adc", test_adc, OPT_NOJIGTEST},
{"file", test_file, OPT_NOJIGTEST | OPT_NOALLTEST},
{"led", test_led, 0},
{"sensors", test_sensors, 0},
{"time", test_time, OPT_NOJIGTEST},
{"uart_baudchange", test_uart_baudchange, OPT_NOJIGTEST},
{"uart_break", test_uart_break, OPT_NOJIGTEST | OPT_NOALLTEST},
{"uart_console", test_uart_console, OPT_NOJIGTEST | OPT_NOALLTEST},
#else
{"mavlink", mavlink_tests_main, 0},
{"rc", rc_tests_main, 0},
{"rc", rc_tests_main, 0},
#endif /* __PX4_NUTTX */
/* external tests */
{"commander", commander_tests_main, 0},
{"controllib", controllib_test_main, 0},
{"sf0x", sf0x_tests_main, 0},
{"uorb", uorb_tests_main, 0},
{"autodeclination", test_autodeclination, 0},
{"bezier", test_bezierQuad, 0},
{"bson", test_bson, 0},
{"conv", test_conv, 0},
{"ctlmath", test_controlmath, 0},
{"dataman", test_dataman, OPT_NOJIGTEST | OPT_NOALLTEST},
{"file2", test_file2, OPT_NOJIGTEST},
{"float", test_float, 0},
{"hott_telemetry", test_hott_telemetry, OPT_NOJIGTEST | OPT_NOALLTEST},
{"hrt", test_hrt, OPT_NOJIGTEST | OPT_NOALLTEST},
{"hysteresis", test_hysteresis, 0},
{"int", test_int, 0},
{"jig_voltages", test_jig_voltages, OPT_NOALLTEST},
{"mathlib", test_mathlib, 0},
{"matrix", test_matrix, 0},
{"microbench_hrt", test_microbench_hrt, 0},
{"microbench_math", test_microbench_math, 0},
{"microbench_matrix", test_microbench_matrix, 0},
{"microbench_uorb", test_microbench_uorb, 0},
{"mixer", test_mixer, OPT_NOJIGTEST},
{"mount", test_mount, OPT_NOJIGTEST | OPT_NOALLTEST},
{"param", test_param, 0},
{"parameters", test_parameters, 0},
{"perf", test_perf, OPT_NOJIGTEST},
{"ppm", test_ppm, OPT_NOJIGTEST | OPT_NOALLTEST},
{"ppm_loopback", test_ppm_loopback, OPT_NOALLTEST},
{"rc", test_rc, OPT_NOJIGTEST | OPT_NOALLTEST},
{"search_min", test_search_min, 0},
{"servo", test_servo, OPT_NOJIGTEST | OPT_NOALLTEST},
{"sleep", test_sleep, OPT_NOJIGTEST},
{"smooth_z", test_smooth_z, 0},
{"tone", test_tone, 0},
{"uart_loopback", test_uart_loopback, OPT_NOJIGTEST | OPT_NOALLTEST},
{"uart_send", test_uart_send, OPT_NOJIGTEST | OPT_NOALLTEST},
{"versioning", test_versioning, 0},
{NULL, NULL, 0}
{"commander", commander_tests_main, 0},
{"controllib", controllib_test_main, 0},
#ifndef __PX4_NUTTX
{"mavlink", mavlink_tests_main, 0},
#endif
{"sf0x", sf0x_tests_main, 0},
{"uorb", uorb_tests_main, 0},
{"hysteresis", test_hysteresis, 0},
{"mixer", test_mixer, OPT_NOJIGTEST},
{"autodeclination", test_autodeclination, 0},
{"bezier", test_bezierQuad, 0},
{"bson", test_bson, 0},
{"conv", test_conv, 0},
{"dataman", test_dataman, OPT_NOJIGTEST | OPT_NOALLTEST},
{"file2", test_file2, OPT_NOJIGTEST},
{"float", test_float, 0},
{"hott_telemetry", test_hott_telemetry, OPT_NOJIGTEST | OPT_NOALLTEST},
{"hrt", test_hrt, OPT_NOJIGTEST | OPT_NOALLTEST},
{"int", test_int, 0},
{"jig_voltages", test_jig_voltages, OPT_NOALLTEST},
{"mathlib", test_mathlib, 0},
{"matrix", test_matrix, 0},
{"microbench_hrt", test_microbench_hrt, 0},
{"microbench_math", test_microbench_math, 0},
{"microbench_matrix", test_microbench_matrix, 0},
{"microbench_uorb", test_microbench_uorb, 0},
{"mount", test_mount, OPT_NOJIGTEST | OPT_NOALLTEST},
{"param", test_param, 0},
{"parameters", test_parameters, 0},
{"perf", test_perf, OPT_NOJIGTEST},
{"ppm", test_ppm, OPT_NOJIGTEST | OPT_NOALLTEST},
{"ppm_loopback", test_ppm_loopback, OPT_NOALLTEST},
{"rc", test_rc, OPT_NOJIGTEST | OPT_NOALLTEST},
{"search_min", test_search_min, 0},
{"servo", test_servo, OPT_NOJIGTEST | OPT_NOALLTEST},
{"sleep", test_sleep, OPT_NOJIGTEST},
{"tone", test_tone, 0},
{"uart_loopback", test_uart_loopback, OPT_NOJIGTEST | OPT_NOALLTEST},
{"uart_send", test_uart_send, OPT_NOJIGTEST | OPT_NOALLTEST},
{"versioning", test_versioning, 0},
{"ctlmath", test_controlmath, 0},
{"smoothz", test_smooth_z, 0},
{NULL, NULL, 0}
};
#define NTESTS (sizeof(tests) / sizeof(tests[0]))
static int
test_all(int argc, char *argv[])
{
return test_runner(OPT_NOALLTEST);
}
static int
test_help(int argc, char *argv[])
{
unsigned i;
printf("Available tests:\n");
for (size_t i = 0; tests[i].name; i++) {
for (i = 0; tests[i].name; i++) {
printf(" %s\n", tests[i].name);
}
return 0;
}
static int
test_all(int argc, char *argv[])
{
return test_runner(OPT_NOALLTEST);
}
static int
test_jig(int argc, char *argv[])
{
@ -155,24 +159,22 @@ test_jig(int argc, char *argv[]) @@ -155,24 +159,22 @@ test_jig(int argc, char *argv[])
static int
test_runner(unsigned option)
{
size_t i = 0;
size_t i;
char *args[2] = {"all", NULL};
unsigned int failcount = 0;
unsigned int testcount = 0;
unsigned passed[NTESTS] = {};
unsigned int passed[NTESTS];
printf("\nRunning all tests...\n\n");
for (i = 0; tests[i].name; i++) {
/* Only run tests that are not excluded */
// Only run tests that are not excluded.
if (!(tests[i].options & option)) {
for (int j = 0; j < 80; j++) {
printf("-");
}
printf("\n");
printf(" [%s] \t\tSTARTING TEST\n", tests[i].name);
printf("\n [%s] \t\tSTARTING TEST\n", tests[i].name);
fflush(stdout);
/* Execute test */
@ -192,22 +194,19 @@ test_runner(unsigned option) @@ -192,22 +194,19 @@ test_runner(unsigned option)
printf("-");
}
printf("\n\n");
testcount++;
printf("\n\n");
}
}
/* Print summary */
// Print summary.
printf("\n");
for (unsigned j = 0; j < 80; j++) {
for (size_t j = 0; j < 80; j++) {
printf("#");
}
printf("\n\n");
printf(" T E S T S U M M A R Y\n\n");
printf("\n\n T E S T S U M M A R Y\n\n");
if (failcount == 0) {
printf(" ______ __ __ ______ __ __ \n");
@ -216,7 +215,7 @@ test_runner(unsigned option) @@ -216,7 +215,7 @@ test_runner(unsigned option)
printf(" \\ \\_\\ \\_\\ \\ \\_____\\ \\ \\_____\\ \\ \\_____\\ \\ \\_\\ \\_\\ \n");
printf(" \\/_/\\/_/ \\/_____/ \\/_____/ \\/_____/ \\/_/\\/_/ \n");
printf("\n");
printf(" All tests passed (%d of %d)\n", testcount, testcount);
printf(" All tests passed (%d of %d)\n\n", testcount, testcount);
} else {
printf(" ______ ______ __ __ \n");
@ -225,24 +224,21 @@ test_runner(unsigned option) @@ -225,24 +224,21 @@ test_runner(unsigned option)
printf(" \\ \\_\\ \\ \\_\\ \\_\\ \\ \\_\\ \\ \\_____\\ \n");
printf(" \\/_/ \\/_/\\/_/ \\/_/ \\/_____/ \n");
printf("\n");
printf(" Some tests failed (%d of %d)\n", failcount, testcount);
printf(" Some tests failed (%d of %d)\n\n", failcount, testcount);
}
printf("\n");
/* Print failed tests */
// Print failed tests.
if (failcount > 0) {
printf(" Failed tests:\n\n");
}
for (unsigned k = 0; k < i; k++) {
for (size_t k = 0; k < i; k++) {
if (!passed[k] && !(tests[k].options & option)) {
printf(" [%s] to obtain details, please re-run with\n\t nsh> tests %s\n\n", tests[k].name, tests[k].name);
}
}
fflush(stdout);
return (failcount > 0);
}
@ -258,13 +254,33 @@ int tests_main(int argc, char *argv[]) @@ -258,13 +254,33 @@ int tests_main(int argc, char *argv[])
return 1;
}
int tone_test_index = -1;
char *tone_test = {"tone"};
char *tone_fail[2] = {NULL, "2"};
char *tone_pass[2] = {NULL, "14"};
// Identify the tone test index for later use.
for (size_t i = 0; tests[i].name; i++) {
if (*tone_test == *tests[i].name) {
tone_test_index = i;
}
}
for (size_t i = 0; tests[i].name; i++) {
if (!strcmp(tests[i].name, argv[1])) {
if (tests[i].fn(argc - 1, argv + 1) == 0) {
if (tone_test_index != -1) {
tests[tone_test_index].fn(2, tone_pass); // Play a notification.
}
printf("%s PASSED\n", tests[i].name);
return 0;
} else {
if (tone_test_index != -1) {
tests[tone_test_index].fn(2, tone_fail); // Play an error notification.
}
printf("%s FAILED\n", tests[i].name);
return -1;
}

Loading…
Cancel
Save