diff mbox series

[rt-tests,v3,15/33] rt-util: Introduce rt_test_start()

Message ID 20210320183829.1318-16-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
For the JSON output records a timestamp when the test ended.
Let's introduce a new API to record a timestamp when the test
starts. We could put this into rt_init() but in this case we
would meassure also the time test needs to setup or warm up.

Signed-off-by: Daniel Wagner <dwagner@suse.de>
---
 src/include/rt-utils.h |  2 ++
 src/lib/rt-utils.c     | 34 ++++++++++++++++++++++++----------
 2 files changed, 26 insertions(+), 10 deletions(-)

Comments

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

> For the JSON output records a timestamp when the test ended.

> Let's introduce a new API to record a timestamp when the test

> starts. We could put this into rt_init() but in this case we

> would meassure also the time test needs to setup or warm up.

> 

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

> ---

>  src/include/rt-utils.h |  2 ++

>  src/lib/rt-utils.c     | 34 ++++++++++++++++++++++++----------

>  2 files changed, 26 insertions(+), 10 deletions(-)

> 

> diff --git a/src/include/rt-utils.h b/src/include/rt-utils.h

> index 115791c55185..42c2772262db 100644

> --- a/src/include/rt-utils.h

> +++ b/src/include/rt-utils.h

> @@ -82,6 +82,8 @@ static inline int64_t calctime(struct timespec t)

>  

>  void rt_init(int argc, char *argv[]);

>  

> +void rt_test_start(void);

> +

>  void rt_write_json(const char *filename,

>  		   void (*cb)(FILE *, void *),

>  		   void *data);

> diff --git a/src/lib/rt-utils.c b/src/lib/rt-utils.c

> index f736a3449bf7..efb5d1d9e866 100644

> --- a/src/lib/rt-utils.c

> +++ b/src/lib/rt-utils.c

> @@ -30,6 +30,7 @@

>  

>  #define  TRACEBUFSIZ  1024

>  #define  MAX_COMMAND_LINE 4096

> +#define  MAX_TS_SIZE 64

>  

>  static char debugfileprefix[MAX_PATH];

>  static char *fileprefix;

> @@ -37,6 +38,7 @@ static int trace_fd = -1;

>  static int tracemark_fd = -1;

>  static __thread char tracebuf[TRACEBUFSIZ];

>  static char test_cmdline[MAX_COMMAND_LINE];

> +static char ts_start[MAX_TS_SIZE];

>  

>  /*

>   * Finds the tracing directory in a mounted debugfs

> @@ -514,17 +516,32 @@ void rt_init(int argc, char *argv[])

>  	}

>  }

>  

> +static void get_timestamp(char *tsbuf)

> +{

> +	struct timeval tv;

> +	struct tm *tm;

> +	time_t t;

> +

> +	gettimeofday(&tv, NULL);

> +	t = tv.tv_sec;

> +	tm = localtime(&t);

> +	/* RFC 2822-compliant date format */

> +	strftime(tsbuf, MAX_TS_SIZE, "%a, %d %b %Y %T %z", tm);

> +}

> +

> +void rt_test_start(void)

> +{

> +	get_timestamp(ts_start);

> +}

> +

>  void rt_write_json(const char *filename,

>  		  void (*cb)(FILE *, void *),

>  		  void *data)

>  {

>  	unsigned char buf[1];

>  	struct utsname uts;

> -	struct timeval tv;

> -	char tsbuf[64];

> -	struct tm *tm;

> +	char ts_end[MAX_TS_SIZE];

>  	FILE *f, *s;

> -	time_t t;

>  	size_t n;

>  	int rt = 0;

>  

> @@ -536,11 +553,7 @@ void rt_write_json(const char *filename,

>  			err_exit(errno, "Failed to open '%s'\n", filename);

>  	}

>  

> -	gettimeofday(&tv, NULL);

> -	t = tv.tv_sec;

> -	tm = localtime(&t);

> -	/* RFC 2822-compliant date format */

> -	strftime(tsbuf, sizeof(tsbuf), "%a, %d %b %Y %T %z", tm);

> +	get_timestamp(ts_end);

>  

>  	s = fopen("/sys/kernel/realtime", "r");

>  	if (s) {

> @@ -557,7 +570,8 @@ void rt_write_json(const char *filename,

>  	fprintf(f, "  \"file_version\": 1,\n");

>  	fprintf(f, "  \"cmdline:\": \"%s\",\n", test_cmdline);

>  	fprintf(f, "  \"rt_test_version:\": \"%1.2f\",\n", VERSION);

> -	fprintf(f, "  \"finished\": \"%s\",\n", tsbuf);

> +	fprintf(f, "  \"start_time\": \"%s\",\n", ts_start);

> +	fprintf(f, "  \"end_time\": \"%s\",\n", ts_end);

>  	fprintf(f, "  \"sysinfo\": {\n");

>  	fprintf(f, "    \"sysname\": \"%s\",\n", uts.sysname);

>  	fprintf(f, "    \"nodename\": \"%s\",\n", uts.nodename);

> -- 

> 2.30.2

> 

> 


I don't really like this. I think it looks "good" in the json output, but
I don't think it is providing any kind of meaningful data. My fear is that 
users will try to assign some kind of significance to these numbers in 
relation to the tests.

I'm letting it in anyway, maybe people will tell me I'm wrong and they 
like it, but recording my objection for now anyway.

Signed-off-by: John Kacur <jkacur@redhat.com>
Daniel Wagner May 12, 2021, 7:33 a.m. UTC | #2
On Fri, May 07, 2021 at 12:40:20PM -0400, John Kacur wrote:
> I don't really like this. I think it looks "good" in the json output, but

> I don't think it is providing any kind of meaningful data. My fear is that 

> users will try to assign some kind of significance to these numbers in 

> relation to the tests.


The idea is that you are able to compare timestamps in the further logs
and see if anything is out of the ordinary is logged when the test was
executed.
diff mbox series

Patch

diff --git a/src/include/rt-utils.h b/src/include/rt-utils.h
index 115791c55185..42c2772262db 100644
--- a/src/include/rt-utils.h
+++ b/src/include/rt-utils.h
@@ -82,6 +82,8 @@  static inline int64_t calctime(struct timespec t)
 
 void rt_init(int argc, char *argv[]);
 
+void rt_test_start(void);
+
 void rt_write_json(const char *filename,
 		   void (*cb)(FILE *, void *),
 		   void *data);
diff --git a/src/lib/rt-utils.c b/src/lib/rt-utils.c
index f736a3449bf7..efb5d1d9e866 100644
--- a/src/lib/rt-utils.c
+++ b/src/lib/rt-utils.c
@@ -30,6 +30,7 @@ 
 
 #define  TRACEBUFSIZ  1024
 #define  MAX_COMMAND_LINE 4096
+#define  MAX_TS_SIZE 64
 
 static char debugfileprefix[MAX_PATH];
 static char *fileprefix;
@@ -37,6 +38,7 @@  static int trace_fd = -1;
 static int tracemark_fd = -1;
 static __thread char tracebuf[TRACEBUFSIZ];
 static char test_cmdline[MAX_COMMAND_LINE];
+static char ts_start[MAX_TS_SIZE];
 
 /*
  * Finds the tracing directory in a mounted debugfs
@@ -514,17 +516,32 @@  void rt_init(int argc, char *argv[])
 	}
 }
 
+static void get_timestamp(char *tsbuf)
+{
+	struct timeval tv;
+	struct tm *tm;
+	time_t t;
+
+	gettimeofday(&tv, NULL);
+	t = tv.tv_sec;
+	tm = localtime(&t);
+	/* RFC 2822-compliant date format */
+	strftime(tsbuf, MAX_TS_SIZE, "%a, %d %b %Y %T %z", tm);
+}
+
+void rt_test_start(void)
+{
+	get_timestamp(ts_start);
+}
+
 void rt_write_json(const char *filename,
 		  void (*cb)(FILE *, void *),
 		  void *data)
 {
 	unsigned char buf[1];
 	struct utsname uts;
-	struct timeval tv;
-	char tsbuf[64];
-	struct tm *tm;
+	char ts_end[MAX_TS_SIZE];
 	FILE *f, *s;
-	time_t t;
 	size_t n;
 	int rt = 0;
 
@@ -536,11 +553,7 @@  void rt_write_json(const char *filename,
 			err_exit(errno, "Failed to open '%s'\n", filename);
 	}
 
-	gettimeofday(&tv, NULL);
-	t = tv.tv_sec;
-	tm = localtime(&t);
-	/* RFC 2822-compliant date format */
-	strftime(tsbuf, sizeof(tsbuf), "%a, %d %b %Y %T %z", tm);
+	get_timestamp(ts_end);
 
 	s = fopen("/sys/kernel/realtime", "r");
 	if (s) {
@@ -557,7 +570,8 @@  void rt_write_json(const char *filename,
 	fprintf(f, "  \"file_version\": 1,\n");
 	fprintf(f, "  \"cmdline:\": \"%s\",\n", test_cmdline);
 	fprintf(f, "  \"rt_test_version:\": \"%1.2f\",\n", VERSION);
-	fprintf(f, "  \"finished\": \"%s\",\n", tsbuf);
+	fprintf(f, "  \"start_time\": \"%s\",\n", ts_start);
+	fprintf(f, "  \"end_time\": \"%s\",\n", ts_end);
 	fprintf(f, "  \"sysinfo\": {\n");
 	fprintf(f, "    \"sysname\": \"%s\",\n", uts.sysname);
 	fprintf(f, "    \"nodename\": \"%s\",\n", uts.nodename);