diff --git a/daemon/gamemode-tests.c b/daemon/gamemode-tests.c index 3559edd..398441b 100644 --- a/daemon/gamemode-tests.c +++ b/daemon/gamemode-tests.c @@ -117,16 +117,12 @@ static int verify_other_client_connected(void) return status; } -/** - * game_mode_run_client_tests runs a set of tests of the client code - * we simply verify that the client can request the status and recieves the correct results - * - * returns 0 for success, -1 for failure +/* Run basic client tests + * Tests a simple request_start and request_end works */ -int game_mode_run_client_tests() +static int run_basic_client_tests(void) { - int status = 0; - fprintf(stdout, "running tests on external gamemode instance...\n"); + fprintf(stdout, "running basic client tests...\n"); /* First verify that gamemode is not currently active on the system * As well as it being currently installed and queryable @@ -154,8 +150,18 @@ int game_mode_run_client_tests() if (verify_deactivated() != 0) return -1; + fprintf(stdout, "basic client tests passed.\n"); + + return 0; +} + +/* Run some dual client tests */ +static int run_dual_client_tests(void) +{ + int status = 0; + /* Try running some process interop tests */ - fprintf(stdout, "running tests with two clients...\n"); + fprintf(stdout, "running tests with dual clients...\n"); /* Get the current path to this binary */ char mypath[PATH_MAX]; @@ -197,14 +203,42 @@ int game_mode_run_client_tests() /* Send SIGCONT to child */ if (kill(child, SIGCONT) == -1) { fprintf(stderr, "failed to send continue signal to other client: %s\n", strerror(errno)); - return -1; + status = -1; } - /* Kill the child regardless */ + /* Give the child a chance to finish */ + usleep(1000); + + /* clean up the child */ if (kill(child, SIGKILL) == -1) { fprintf(stderr, "failed to kill the child: %s\n", strerror(errno)); - return -1; + status = -1; } + if (status == 0) + fprintf(stdout, "dual client tests passed.\n"); + + return status; +} + +/** + * game_mode_run_client_tests runs a set of tests of the client code + * we simply verify that the client can request the status and recieves the correct results + * + * returns 0 for success, -1 for failure + */ +int game_mode_run_client_tests() +{ + int status = 0; + fprintf(stdout, "running tests...\n"); + + /* Run the basic tests */ + if (run_basic_client_tests() != 0) + return -1; + + /* Run the dual client tests */ + if (run_dual_client_tests() != 0) + return -1; + return status; } \ No newline at end of file