Explorar o código

Small refactor

	Single and dual client tests split into functions
Marc Di Luzio %!s(int64=6) %!d(string=hai) anos
pai
achega
c99e06ed9e
Modificáronse 1 ficheiros con 46 adicións e 12 borrados
  1. 46 12
      daemon/gamemode-tests.c

+ 46 - 12
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;
 }