xref: /aosp_15_r20/external/igt-gpu-tools/runner/runner.c (revision d83cc019efdc2edc6c4b16e9034a3ceb8d35d77c)
1*d83cc019SAndroid Build Coastguard Worker #include <stdio.h>
2*d83cc019SAndroid Build Coastguard Worker #include <string.h>
3*d83cc019SAndroid Build Coastguard Worker 
4*d83cc019SAndroid Build Coastguard Worker #include "settings.h"
5*d83cc019SAndroid Build Coastguard Worker #include "job_list.h"
6*d83cc019SAndroid Build Coastguard Worker #include "executor.h"
7*d83cc019SAndroid Build Coastguard Worker #include "resultgen.h"
8*d83cc019SAndroid Build Coastguard Worker 
main(int argc,char ** argv)9*d83cc019SAndroid Build Coastguard Worker int main(int argc, char **argv)
10*d83cc019SAndroid Build Coastguard Worker {
11*d83cc019SAndroid Build Coastguard Worker 	struct settings settings;
12*d83cc019SAndroid Build Coastguard Worker 	struct job_list job_list;
13*d83cc019SAndroid Build Coastguard Worker 	struct execute_state state;
14*d83cc019SAndroid Build Coastguard Worker 	int exitcode = 0;
15*d83cc019SAndroid Build Coastguard Worker 
16*d83cc019SAndroid Build Coastguard Worker 	init_settings(&settings);
17*d83cc019SAndroid Build Coastguard Worker 	init_job_list(&job_list);
18*d83cc019SAndroid Build Coastguard Worker 
19*d83cc019SAndroid Build Coastguard Worker 	if (!parse_options(argc, argv, &settings)) {
20*d83cc019SAndroid Build Coastguard Worker 		return 1;
21*d83cc019SAndroid Build Coastguard Worker 	}
22*d83cc019SAndroid Build Coastguard Worker 
23*d83cc019SAndroid Build Coastguard Worker 	if (!create_job_list(&job_list, &settings)) {
24*d83cc019SAndroid Build Coastguard Worker 		return 1;
25*d83cc019SAndroid Build Coastguard Worker 	}
26*d83cc019SAndroid Build Coastguard Worker 
27*d83cc019SAndroid Build Coastguard Worker 	if (settings.list_all) {
28*d83cc019SAndroid Build Coastguard Worker 		list_all_tests(&job_list);
29*d83cc019SAndroid Build Coastguard Worker 		return 0;
30*d83cc019SAndroid Build Coastguard Worker 	}
31*d83cc019SAndroid Build Coastguard Worker 
32*d83cc019SAndroid Build Coastguard Worker 	if (!initialize_execute_state(&state, &settings, &job_list)) {
33*d83cc019SAndroid Build Coastguard Worker 		return 1;
34*d83cc019SAndroid Build Coastguard Worker 	}
35*d83cc019SAndroid Build Coastguard Worker 
36*d83cc019SAndroid Build Coastguard Worker 	if (!execute(&state, &settings, &job_list)) {
37*d83cc019SAndroid Build Coastguard Worker 		exitcode = 1;
38*d83cc019SAndroid Build Coastguard Worker 	}
39*d83cc019SAndroid Build Coastguard Worker 
40*d83cc019SAndroid Build Coastguard Worker 	if (state.time_left == 0.0) {
41*d83cc019SAndroid Build Coastguard Worker 		/*
42*d83cc019SAndroid Build Coastguard Worker 		 * Overall timeout happened. Results generation can
43*d83cc019SAndroid Build Coastguard Worker 		 * override this
44*d83cc019SAndroid Build Coastguard Worker 		 */
45*d83cc019SAndroid Build Coastguard Worker 		exitcode = 2;
46*d83cc019SAndroid Build Coastguard Worker 	}
47*d83cc019SAndroid Build Coastguard Worker 
48*d83cc019SAndroid Build Coastguard Worker 	if (!generate_results_path(settings.results_path)) {
49*d83cc019SAndroid Build Coastguard Worker 		exitcode = 1;
50*d83cc019SAndroid Build Coastguard Worker 	}
51*d83cc019SAndroid Build Coastguard Worker 
52*d83cc019SAndroid Build Coastguard Worker 	printf("Done.\n");
53*d83cc019SAndroid Build Coastguard Worker 	return exitcode;
54*d83cc019SAndroid Build Coastguard Worker }
55