diff mbox series

[rt-tests,v3,29/33] pip_stress: Add JSON output feature

Message ID 20210320183829.1318-30-dwagner@suse.de
State New
Headers show
Series JSON cleanups and more tests updated | expand

Commit Message

Daniel Wagner March 20, 2021, 6:38 p.m. UTC
Write the test results as JSON output to a file. This allows to
simplifies any parsing later on.

Signed-off-by: Daniel Wagner <dwagner@suse.de>
---
 src/pi_tests/pip_stress.c | 16 ++++++++++++++--
 1 file changed, 14 insertions(+), 2 deletions(-)

Comments

John Kacur May 7, 2021, 4:58 p.m. UTC | #1
On Sat, 20 Mar 2021, Daniel Wagner wrote:

> Write the test results as JSON output to a file. This allows to

> simplifies any parsing later on.

> 

> Signed-off-by: Daniel Wagner <dwagner@suse.de>

> ---

>  src/pi_tests/pip_stress.c | 16 ++++++++++++++--

>  1 file changed, 14 insertions(+), 2 deletions(-)

> 

> diff --git a/src/pi_tests/pip_stress.c b/src/pi_tests/pip_stress.c

> index 0831f698ff1d..f6096a2de273 100644

> --- a/src/pi_tests/pip_stress.c

> +++ b/src/pi_tests/pip_stress.c

> @@ -67,18 +67,21 @@ struct State *statep;

>  const int policy = SCHED_FIFO;

>  static int prio_min;	/* Initialized for the minimum priority of policy */

>  

> +static char outfile[MAX_PATH];

> +

>  static void usage(int error)

>  {

>  	printf("pip_stress V %1.2f\n", VERSION);

>  	printf("Usage:\n"

>  	       "pip_stress <options>\n"\

> -	       "-h	--help                  Show this help menu.\n"

> +	       "-h	 --help            Show this help menu.\n"

> +	       "         --output=FILENAME write final results into FILENAME, JSON formatted\n"

>  	       );

>  	exit(error);

>  }

>  

>  enum option_values {

> -	OPT_HELP=1

> +	OPT_HELP=1, OPT_OUTPUT,

>  };

>  

>  int main(int argc, char *argv[])

> @@ -89,9 +92,11 @@ int main(int argc, char *argv[])

>  	int res;

>  	int *minimum_priority = (int*)&prio_min;

>  

> +	rt_init(argc, argv);

>  	for (;;) {

>  		struct option long_options[] = {

>  			{"help",	no_argument,		NULL, OPT_HELP},

> +			{"output",	required_argument,	NULL, OPT_OUTPUT },

>  			{NULL,		0,			NULL, 0}

>  		};

>  

> @@ -103,6 +108,9 @@ int main(int argc, char *argv[])

>  		case 'h':

>  			usage(0);

>  			break;

> +		case OPT_OUTPUT:

> +			strncpy(outfile, optarg, strnlen(optarg, MAX_PATH-1));

> +			break;

>  		default:

>  			usage(1);

>  			break;

> @@ -145,6 +153,7 @@ int main(int argc, char *argv[])

>  		err_exit(err, NULL);

>  	}

>  

> +	rt_test_start();

>  	pid1 = fork();

>  	if (pid1 == -1) {

>  		perror("fork");

> @@ -165,6 +174,9 @@ int main(int argc, char *argv[])

>  		}

>  	}

>  

> +	if (strlen(outfile) != 0)

> +		rt_write_json(outfile, !statep->inversion, NULL, NULL);

> +

>  	if (!statep->inversion) {

>  		printf("No inversion incurred\n");

>  		exit(1);

> -- 

> 2.30.2

> 

> 


I'm not opposed to json in this test in general, but need to think more 
about how this should look. Omiting for now, but I might be amendable in 
the future.

thanks

John
diff mbox series

Patch

diff --git a/src/pi_tests/pip_stress.c b/src/pi_tests/pip_stress.c
index 0831f698ff1d..f6096a2de273 100644
--- a/src/pi_tests/pip_stress.c
+++ b/src/pi_tests/pip_stress.c
@@ -67,18 +67,21 @@  struct State *statep;
 const int policy = SCHED_FIFO;
 static int prio_min;	/* Initialized for the minimum priority of policy */
 
+static char outfile[MAX_PATH];
+
 static void usage(int error)
 {
 	printf("pip_stress V %1.2f\n", VERSION);
 	printf("Usage:\n"
 	       "pip_stress <options>\n"\
-	       "-h	--help                  Show this help menu.\n"
+	       "-h	 --help            Show this help menu.\n"
+	       "         --output=FILENAME write final results into FILENAME, JSON formatted\n"
 	       );
 	exit(error);
 }
 
 enum option_values {
-	OPT_HELP=1
+	OPT_HELP=1, OPT_OUTPUT,
 };
 
 int main(int argc, char *argv[])
@@ -89,9 +92,11 @@  int main(int argc, char *argv[])
 	int res;
 	int *minimum_priority = (int*)&prio_min;
 
+	rt_init(argc, argv);
 	for (;;) {
 		struct option long_options[] = {
 			{"help",	no_argument,		NULL, OPT_HELP},
+			{"output",	required_argument,	NULL, OPT_OUTPUT },
 			{NULL,		0,			NULL, 0}
 		};
 
@@ -103,6 +108,9 @@  int main(int argc, char *argv[])
 		case 'h':
 			usage(0);
 			break;
+		case OPT_OUTPUT:
+			strncpy(outfile, optarg, strnlen(optarg, MAX_PATH-1));
+			break;
 		default:
 			usage(1);
 			break;
@@ -145,6 +153,7 @@  int main(int argc, char *argv[])
 		err_exit(err, NULL);
 	}
 
+	rt_test_start();
 	pid1 = fork();
 	if (pid1 == -1) {
 		perror("fork");
@@ -165,6 +174,9 @@  int main(int argc, char *argv[])
 		}
 	}
 
+	if (strlen(outfile) != 0)
+		rt_write_json(outfile, !statep->inversion, NULL, NULL);
+
 	if (!statep->inversion) {
 		printf("No inversion incurred\n");
 		exit(1);