All of lore.kernel.org
 help / color / mirror / Atom feed
* [igt-dev] [PATCH i-g-t 1/3] runner: Reinitialize compiled dmesg regexp each parsing session
@ 2019-04-01  6:46 Arkadiusz Hiler
  2019-04-01  6:46 ` [igt-dev] [PATCH i-g-t 2/3] runner: Refactor metadata parsing Arkadiusz Hiler
                   ` (4 more replies)
  0 siblings, 5 replies; 8+ messages in thread
From: Arkadiusz Hiler @ 2019-04-01  6:46 UTC (permalink / raw)
  To: igt-dev

Which regexp gets compiled is settings specific, depending whether we
run piglit-style or not.

If it's optimized to be initialized only once and it is a global
variable, it will be "stuck" in the mode we have selected with the first
run, which may break tests.

Let's remove this optimization and initialize it each time, as it takes
less 0.002s on my hardware.

Signed-off-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
---
 runner/resultgen.c | 29 +++++++++++------------------
 1 file changed, 11 insertions(+), 18 deletions(-)

diff --git a/runner/resultgen.c b/runner/resultgen.c
index 32b59d59..73fda64f 100644
--- a/runner/resultgen.c
+++ b/runner/resultgen.c
@@ -499,27 +499,18 @@ static const char igt_dmesg_whitelist[] =
 static const char igt_piglit_style_dmesg_blacklist[] =
 	"(\\[drm:|drm_|intel_|i915_)";
 
-static regex_t re;
-
-static int init_regex_whitelist(struct settings *settings)
+static bool init_regex_whitelist(struct settings *settings, regex_t* re)
 {
-	static int status = -1;
+	const char *regex = settings->piglit_style_dmesg ?
+		igt_piglit_style_dmesg_blacklist :
+		igt_dmesg_whitelist;
 
-	if (status == -1) {
-		const char *regex = settings->piglit_style_dmesg ?
-			igt_piglit_style_dmesg_blacklist :
-			igt_dmesg_whitelist;
-
-		if (regcomp(&re, regex, REG_EXTENDED | REG_NOSUB) != 0) {
-			fprintf(stderr, "Cannot compile dmesg regexp\n");
-			status = 1;
-			return false;
-		}
-
-		status = 0;
+	if (regcomp(re, regex, REG_EXTENDED | REG_NOSUB) != 0) {
+		fprintf(stderr, "Cannot compile dmesg regexp\n");
+		return false;
 	}
 
-	return status;
+	return true;
 }
 
 static bool parse_dmesg_line(char* line,
@@ -639,12 +630,13 @@ static bool fill_from_dmesg(int fd,
 	char piglit_name[256];
 	ssize_t read;
 	size_t i;
+	regex_t re;
 
 	if (!f) {
 		return false;
 	}
 
-	if (init_regex_whitelist(settings)) {
+	if (!init_regex_whitelist(settings, &re)) {
 		fclose(f);
 		return false;
 	}
@@ -723,6 +715,7 @@ static bool fill_from_dmesg(int fd,
 
 	free(dmesg);
 	free(warnings);
+	regfree(&re);
 	fclose(f);
 	return true;
 }
-- 
2.20.1

_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [igt-dev] [PATCH i-g-t 2/3] runner: Refactor metadata parsing
  2019-04-01  6:46 [igt-dev] [PATCH i-g-t 1/3] runner: Reinitialize compiled dmesg regexp each parsing session Arkadiusz Hiler
@ 2019-04-01  6:46 ` Arkadiusz Hiler
  2019-04-01 10:24   ` Petri Latvala
  2019-04-01  6:46 ` [igt-dev] [PATCH i-g-t 3/3] runner: Add --dmesg-warn-level switch Arkadiusz Hiler
                   ` (3 subsequent siblings)
  4 siblings, 1 reply; 8+ messages in thread
From: Arkadiusz Hiler @ 2019-04-01  6:46 UTC (permalink / raw)
  To: igt-dev

To aid testing function parsing metadata.txt is split into outer helper
that operates on dirfd and inner function that operates on FILE*.

This allows us to test the parsing using fmemopen(), limiting the amount
of necessary boilerplate.

Signed-off-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
---
 runner/executor.c     |  2 +-
 runner/resultgen.c    |  2 +-
 runner/runner_tests.c |  2 +-
 runner/settings.c     | 40 ++++++++++++++++++++++++++--------------
 runner/settings.h     |  4 +++-
 5 files changed, 32 insertions(+), 18 deletions(-)

diff --git a/runner/executor.c b/runner/executor.c
index a40e2dd1..0e91b7ab 100644
--- a/runner/executor.c
+++ b/runner/executor.c
@@ -1112,7 +1112,7 @@ bool initialize_execute_state_from_resume(int dirfd,
 	memset(state, 0, sizeof(*state));
 	state->resuming = true;
 
-	if (!read_settings(settings, dirfd) ||
+	if (!read_settings_from_dir(settings, dirfd) ||
 	    !read_job_list(list, dirfd)) {
 		close(dirfd);
 		return false;
diff --git a/runner/resultgen.c b/runner/resultgen.c
index 73fda64f..40d1cfcc 100644
--- a/runner/resultgen.c
+++ b/runner/resultgen.c
@@ -1085,7 +1085,7 @@ struct json_object *generate_results_json(int dirfd)
 	init_settings(&settings);
 	init_job_list(&job_list);
 
-	if (!read_settings(&settings, dirfd)) {
+	if (!read_settings_from_dir(&settings, dirfd)) {
 		fprintf(stderr, "resultgen: Cannot parse settings\n");
 		return NULL;
 	}
diff --git a/runner/runner_tests.c b/runner/runner_tests.c
index e46568ac..06725536 100644
--- a/runner/runner_tests.c
+++ b/runner/runner_tests.c
@@ -680,7 +680,7 @@ igt_main
 				     "Opening %s/metadata.txt failed\n", dirname);
 			close(fd);
 
-			igt_assert_f(read_settings(&cmp_settings, dirfd), "Reading settings failed\n");
+			igt_assert_f(read_settings_from_dir(&cmp_settings, dirfd), "Reading settings failed\n");
 			assert_settings_equal(&settings, &cmp_settings);
 		}
 
diff --git a/runner/settings.c b/runner/settings.c
index e64244e6..20b21378 100644
--- a/runner/settings.c
+++ b/runner/settings.c
@@ -540,7 +540,7 @@ bool serialize_settings(struct settings *settings)
 #undef SERIALIZE_LINE
 }
 
-bool read_settings(struct settings *settings, int dirfd)
+bool read_settings_from_file(struct settings *settings, FILE *f)
 {
 #define PARSE_LINE(s, name, val, field, write) \
 	if (!strcmp(name, #field)) {	       \
@@ -551,20 +551,8 @@ bool read_settings(struct settings *settings, int dirfd)
 		continue;		       \
 	}
 
-	int fd;
-	FILE *f;
 	char *name = NULL, *val = NULL;
 
-	free_settings(settings);
-
-	if ((fd = openat(dirfd, settings_filename, O_RDONLY)) < 0)
-		return false;
-
-	f = fdopen(fd, "r");
-	if (!f) {
-		close(fd);
-		return false;
-	}
 
 	while (fscanf(f, "%ms : %ms", &name, &val) == 2) {
 		int numval = atoi(val);
@@ -592,9 +580,33 @@ bool read_settings(struct settings *settings, int dirfd)
 
 	free(name);
 	free(val);
-	fclose(f);
 
 	return true;
 
 #undef PARSE_LINE
 }
+
+bool read_settings_from_dir(struct settings *settings, int dirfd)
+{
+	int fd;
+	FILE *f;
+
+
+	free_settings(settings);
+
+	if ((fd = openat(dirfd, settings_filename, O_RDONLY)) < 0)
+		return false;
+
+	f = fdopen(fd, "r");
+	if (!f) {
+		close(fd);
+		return false;
+	}
+
+	if (!read_settings_from_file(settings, f))
+		return false;
+
+	fclose(f);
+
+	return true;
+}
diff --git a/runner/settings.h b/runner/settings.h
index 267d72cf..ae90897c 100644
--- a/runner/settings.h
+++ b/runner/settings.h
@@ -5,6 +5,7 @@
 #include <stddef.h>
 #include <sys/types.h>
 #include <regex.h>
+#include <stdio.h>
 
 enum {
 	LOG_LEVEL_NORMAL = 0,
@@ -114,6 +115,7 @@ char *absolute_path(char *path);
  */
 bool serialize_settings(struct settings *settings);
 
-bool read_settings(struct settings *settings, int dirfd);
+bool read_settings_from_file(struct settings *settings, FILE* f);
+bool read_settings_from_dir(struct settings *settings, int dirfd);
 
 #endif
-- 
2.20.1

_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [igt-dev] [PATCH i-g-t 3/3] runner: Add --dmesg-warn-level switch
  2019-04-01  6:46 [igt-dev] [PATCH i-g-t 1/3] runner: Reinitialize compiled dmesg regexp each parsing session Arkadiusz Hiler
  2019-04-01  6:46 ` [igt-dev] [PATCH i-g-t 2/3] runner: Refactor metadata parsing Arkadiusz Hiler
@ 2019-04-01  6:46 ` Arkadiusz Hiler
  2019-04-01 11:10   ` Petri Latvala
  2019-04-01  7:20 ` [igt-dev] ✓ Fi.CI.BAT: success for series starting with [i-g-t,1/3] runner: Reinitialize compiled dmesg regexp each parsing session Patchwork
                   ` (2 subsequent siblings)
  4 siblings, 1 reply; 8+ messages in thread
From: Arkadiusz Hiler @ 2019-04-01  6:46 UTC (permalink / raw)
  To: igt-dev

This switch allows users to select which dmesg log level is treated as
warning resulting in overriding the test results to
dmesg-fail/dmesg-warn.

Signed-off-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
---
 .../0/dmesg.txt                               |  7 ++
 .../0/err.txt                                 |  3 +
 .../0/journal.txt                             |  2 +
 .../0/out.txt                                 |  3 +
 .../README.txt                                |  8 ++
 .../endtime.txt                               |  1 +
 .../joblist.txt                               |  1 +
 .../metadata.txt                              | 13 +++
 .../reference.json                            | 73 +++++++++++++++
 .../starttime.txt                             |  1 +
 .../uname.txt                                 |  1 +
 .../dmesg-warn-level-piglit-style/0/dmesg.txt |  6 ++
 .../dmesg-warn-level-piglit-style/0/err.txt   |  3 +
 .../0/journal.txt                             |  2 +
 .../dmesg-warn-level-piglit-style/0/out.txt   |  3 +
 .../dmesg-warn-level-piglit-style/README.txt  |  7 ++
 .../dmesg-warn-level-piglit-style/endtime.txt |  1 +
 .../dmesg-warn-level-piglit-style/joblist.txt |  1 +
 .../metadata.txt                              | 13 +++
 .../reference.json                            | 73 +++++++++++++++
 .../starttime.txt                             |  1 +
 .../dmesg-warn-level-piglit-style/uname.txt   |  1 +
 .../dmesg-warn-level/0/dmesg.txt              |  6 ++
 .../dmesg-warn-level/0/err.txt                |  3 +
 .../dmesg-warn-level/0/journal.txt            |  2 +
 .../dmesg-warn-level/0/out.txt                |  3 +
 .../dmesg-warn-level/README.txt               |  4 +
 .../dmesg-warn-level/endtime.txt              |  1 +
 .../dmesg-warn-level/joblist.txt              |  1 +
 .../dmesg-warn-level/metadata.txt             | 13 +++
 .../dmesg-warn-level/reference.json           | 73 +++++++++++++++
 .../dmesg-warn-level/starttime.txt            |  1 +
 .../dmesg-warn-level/uname.txt                |  1 +
 runner/resultgen.c                            |  4 +-
 runner/runner_json_tests.c                    |  3 +
 runner/runner_tests.c                         | 90 +++++++++++++++++++
 runner/settings.c                             | 30 ++++++-
 runner/settings.h                             |  1 +
 38 files changed, 457 insertions(+), 3 deletions(-)
 create mode 100644 runner/json_tests_data/dmesg-warn-level-one-piglit-style/0/dmesg.txt
 create mode 100644 runner/json_tests_data/dmesg-warn-level-one-piglit-style/0/err.txt
 create mode 100644 runner/json_tests_data/dmesg-warn-level-one-piglit-style/0/journal.txt
 create mode 100644 runner/json_tests_data/dmesg-warn-level-one-piglit-style/0/out.txt
 create mode 100644 runner/json_tests_data/dmesg-warn-level-one-piglit-style/README.txt
 create mode 100644 runner/json_tests_data/dmesg-warn-level-one-piglit-style/endtime.txt
 create mode 100644 runner/json_tests_data/dmesg-warn-level-one-piglit-style/joblist.txt
 create mode 100644 runner/json_tests_data/dmesg-warn-level-one-piglit-style/metadata.txt
 create mode 100644 runner/json_tests_data/dmesg-warn-level-one-piglit-style/reference.json
 create mode 100644 runner/json_tests_data/dmesg-warn-level-one-piglit-style/starttime.txt
 create mode 100644 runner/json_tests_data/dmesg-warn-level-one-piglit-style/uname.txt
 create mode 100644 runner/json_tests_data/dmesg-warn-level-piglit-style/0/dmesg.txt
 create mode 100644 runner/json_tests_data/dmesg-warn-level-piglit-style/0/err.txt
 create mode 100644 runner/json_tests_data/dmesg-warn-level-piglit-style/0/journal.txt
 create mode 100644 runner/json_tests_data/dmesg-warn-level-piglit-style/0/out.txt
 create mode 100644 runner/json_tests_data/dmesg-warn-level-piglit-style/README.txt
 create mode 100644 runner/json_tests_data/dmesg-warn-level-piglit-style/endtime.txt
 create mode 100644 runner/json_tests_data/dmesg-warn-level-piglit-style/joblist.txt
 create mode 100644 runner/json_tests_data/dmesg-warn-level-piglit-style/metadata.txt
 create mode 100644 runner/json_tests_data/dmesg-warn-level-piglit-style/reference.json
 create mode 100644 runner/json_tests_data/dmesg-warn-level-piglit-style/starttime.txt
 create mode 100644 runner/json_tests_data/dmesg-warn-level-piglit-style/uname.txt
 create mode 100644 runner/json_tests_data/dmesg-warn-level/0/dmesg.txt
 create mode 100644 runner/json_tests_data/dmesg-warn-level/0/err.txt
 create mode 100644 runner/json_tests_data/dmesg-warn-level/0/journal.txt
 create mode 100644 runner/json_tests_data/dmesg-warn-level/0/out.txt
 create mode 100644 runner/json_tests_data/dmesg-warn-level/README.txt
 create mode 100644 runner/json_tests_data/dmesg-warn-level/endtime.txt
 create mode 100644 runner/json_tests_data/dmesg-warn-level/joblist.txt
 create mode 100644 runner/json_tests_data/dmesg-warn-level/metadata.txt
 create mode 100644 runner/json_tests_data/dmesg-warn-level/reference.json
 create mode 100644 runner/json_tests_data/dmesg-warn-level/starttime.txt
 create mode 100644 runner/json_tests_data/dmesg-warn-level/uname.txt

diff --git a/runner/json_tests_data/dmesg-warn-level-one-piglit-style/0/dmesg.txt b/runner/json_tests_data/dmesg-warn-level-one-piglit-style/0/dmesg.txt
new file mode 100644
index 00000000..e44a24fc
--- /dev/null
+++ b/runner/json_tests_data/dmesg-warn-level-one-piglit-style/0/dmesg.txt
@@ -0,0 +1,7 @@
+15,952,3216186095097,-;[IGT] successtest: executing
+15,953,3216186101115,-;[IGT] successtest: starting subtest first-subtest
+6,951,3216186095083,-;drm_ KERN_INFO, disregerd
+7,952,3216186095097,-;drm_ KERN_DEBUG disregard
+4,953,3216186101159,-;drm_ KERN_WARNING disregard
+1,953,3216186101159,-;drm_ KERN_ALERT should trip a warning
+15,955,3216186101160,-;[IGT] successtest: exiting, ret=0
diff --git a/runner/json_tests_data/dmesg-warn-level-one-piglit-style/0/err.txt b/runner/json_tests_data/dmesg-warn-level-one-piglit-style/0/err.txt
new file mode 100644
index 00000000..e18c00e9
--- /dev/null
+++ b/runner/json_tests_data/dmesg-warn-level-one-piglit-style/0/err.txt
@@ -0,0 +1,3 @@
+Starting subtest: first-subtest
+This is a warning line
+Subtest first-subtest: SUCCESS (0.000s)
diff --git a/runner/json_tests_data/dmesg-warn-level-one-piglit-style/0/journal.txt b/runner/json_tests_data/dmesg-warn-level-one-piglit-style/0/journal.txt
new file mode 100644
index 00000000..86a30e07
--- /dev/null
+++ b/runner/json_tests_data/dmesg-warn-level-one-piglit-style/0/journal.txt
@@ -0,0 +1,2 @@
+first-subtest
+exit:0 (0.014s)
diff --git a/runner/json_tests_data/dmesg-warn-level-one-piglit-style/0/out.txt b/runner/json_tests_data/dmesg-warn-level-one-piglit-style/0/out.txt
new file mode 100644
index 00000000..5946bf31
--- /dev/null
+++ b/runner/json_tests_data/dmesg-warn-level-one-piglit-style/0/out.txt
@@ -0,0 +1,3 @@
+IGT-Version: 1.23-g0c763bfd (x86_64) (Linux: 4.18.0-1-amd64 x86_64)
+Starting subtest: first-subtest
+Subtest first-subtest: SUCCESS (0.000s)
diff --git a/runner/json_tests_data/dmesg-warn-level-one-piglit-style/README.txt b/runner/json_tests_data/dmesg-warn-level-one-piglit-style/README.txt
new file mode 100644
index 00000000..d3b29f3e
--- /dev/null
+++ b/runner/json_tests_data/dmesg-warn-level-one-piglit-style/README.txt
@@ -0,0 +1,8 @@
+When --demsg-warn-level is set to 6 also KERN_INFO level messages should be
+treated as warnings triggering a result change to dmesg-warn/dmesg-fail.
+
+This makes sure that the piglit-style-dmesg does not clash with
+dmesg-warn-level. All the messages are prefixed with drm_ to fit the filters.
+
+We set the --dmesg-warn-level to 1 to make sure that the setting works in this
+direction too.
diff --git a/runner/json_tests_data/dmesg-warn-level-one-piglit-style/endtime.txt b/runner/json_tests_data/dmesg-warn-level-one-piglit-style/endtime.txt
new file mode 100644
index 00000000..635f6ae9
--- /dev/null
+++ b/runner/json_tests_data/dmesg-warn-level-one-piglit-style/endtime.txt
@@ -0,0 +1 @@
+1539953735.172373
diff --git a/runner/json_tests_data/dmesg-warn-level-one-piglit-style/joblist.txt b/runner/json_tests_data/dmesg-warn-level-one-piglit-style/joblist.txt
new file mode 100644
index 00000000..81f914a7
--- /dev/null
+++ b/runner/json_tests_data/dmesg-warn-level-one-piglit-style/joblist.txt
@@ -0,0 +1 @@
+successtest first-subtest
diff --git a/runner/json_tests_data/dmesg-warn-level-one-piglit-style/metadata.txt b/runner/json_tests_data/dmesg-warn-level-one-piglit-style/metadata.txt
new file mode 100644
index 00000000..172c0708
--- /dev/null
+++ b/runner/json_tests_data/dmesg-warn-level-one-piglit-style/metadata.txt
@@ -0,0 +1,13 @@
+abort_mask : 0
+name : normal-run
+dry_run : 0
+sync : 0
+log_level : 0
+overwrite : 0
+multiple_mode : 0
+inactivity_timeout : 0
+use_watchdog : 0
+piglit_style_dmesg : 1
+dmesg_warn_level : 1
+test_root : /path/does/not/exist
+results_path : /path/does/not/exist
diff --git a/runner/json_tests_data/dmesg-warn-level-one-piglit-style/reference.json b/runner/json_tests_data/dmesg-warn-level-one-piglit-style/reference.json
new file mode 100644
index 00000000..011024db
--- /dev/null
+++ b/runner/json_tests_data/dmesg-warn-level-one-piglit-style/reference.json
@@ -0,0 +1,73 @@
+{
+  "__type__":"TestrunResult",
+  "results_version":10,
+  "name":"normal-run",
+  "uname":"Linux hostname 4.18.0-1-amd64 #1 SMP Debian 4.18.6-1 (2018-09-06) x86_64",
+  "time_elapsed":{
+    "__type__":"TimeAttribute",
+    "start":1539953735.1110389,
+    "end":1539953735.1723731
+  },
+  "tests":{
+    "igt@successtest@first-subtest":{
+      "out":"Starting subtest: first-subtest\nSubtest first-subtest: SUCCESS (0.000s)\n",
+      "igt-version":"IGT-Version: 1.23-g0c763bfd (x86_64) (Linux: 4.18.0-1-amd64 x86_64)",
+      "result":"dmesg-warn",
+      "time":{
+        "__type__":"TimeAttribute",
+        "start":0.0,
+        "end":0.0
+      },
+      "err":"Starting subtest: first-subtest\nThis is a warning line\nSubtest first-subtest: SUCCESS (0.000s)\n",
+      "dmesg":"<7> [3216186.095097] [IGT] successtest: executing\n<7> [3216186.101115] [IGT] successtest: starting subtest first-subtest\n<6> [3216186.095083] drm_ KERN_INFO, disregerd\n<7> [3216186.095097] drm_ KERN_DEBUG disregard\n<4> [3216186.101159] drm_ KERN_WARNING disregard\n<1> [3216186.101159] drm_ KERN_ALERT should trip a warning\n<7> [3216186.101160] [IGT] successtest: exiting, ret=0\n",
+      "dmesg-warnings":"<1> [3216186.101159] drm_ KERN_ALERT should trip a warning\n"
+    }
+  },
+  "totals":{
+    "":{
+      "crash":0,
+      "pass":0,
+      "dmesg-fail":0,
+      "dmesg-warn":1,
+      "skip":0,
+      "incomplete":0,
+      "timeout":0,
+      "notrun":0,
+      "fail":0,
+      "warn":0
+    },
+    "root":{
+      "crash":0,
+      "pass":0,
+      "dmesg-fail":0,
+      "dmesg-warn":1,
+      "skip":0,
+      "incomplete":0,
+      "timeout":0,
+      "notrun":0,
+      "fail":0,
+      "warn":0
+    },
+    "igt@successtest":{
+      "crash":0,
+      "pass":0,
+      "dmesg-fail":0,
+      "dmesg-warn":1,
+      "skip":0,
+      "incomplete":0,
+      "timeout":0,
+      "notrun":0,
+      "fail":0,
+      "warn":0
+    }
+  },
+  "runtimes":{
+    "igt@successtest":{
+      "time":{
+        "__type__":"TimeAttribute",
+        "start":0.0,
+        "end":0.014
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git a/runner/json_tests_data/dmesg-warn-level-one-piglit-style/starttime.txt b/runner/json_tests_data/dmesg-warn-level-one-piglit-style/starttime.txt
new file mode 100644
index 00000000..ae038f18
--- /dev/null
+++ b/runner/json_tests_data/dmesg-warn-level-one-piglit-style/starttime.txt
@@ -0,0 +1 @@
+1539953735.111039
diff --git a/runner/json_tests_data/dmesg-warn-level-one-piglit-style/uname.txt b/runner/json_tests_data/dmesg-warn-level-one-piglit-style/uname.txt
new file mode 100644
index 00000000..a7aef6f7
--- /dev/null
+++ b/runner/json_tests_data/dmesg-warn-level-one-piglit-style/uname.txt
@@ -0,0 +1 @@
+Linux hostname 4.18.0-1-amd64 #1 SMP Debian 4.18.6-1 (2018-09-06) x86_64
diff --git a/runner/json_tests_data/dmesg-warn-level-piglit-style/0/dmesg.txt b/runner/json_tests_data/dmesg-warn-level-piglit-style/0/dmesg.txt
new file mode 100644
index 00000000..546a29ff
--- /dev/null
+++ b/runner/json_tests_data/dmesg-warn-level-piglit-style/0/dmesg.txt
@@ -0,0 +1,6 @@
+15,952,3216186095097,-;[IGT] successtest: executing
+15,953,3216186101115,-;[IGT] successtest: starting subtest first-subtest
+6,951,3216186095083,-;drm_ KERN_INFO, should be a warning here too
+7,952,3216186095097,-;drm_ KERN_DEBUG, should not be a warning
+4,953,3216186101159,-;drm_ A proper KERN_WARNING
+15,955,3216186101160,-;[IGT] successtest: exiting, ret=0
diff --git a/runner/json_tests_data/dmesg-warn-level-piglit-style/0/err.txt b/runner/json_tests_data/dmesg-warn-level-piglit-style/0/err.txt
new file mode 100644
index 00000000..e18c00e9
--- /dev/null
+++ b/runner/json_tests_data/dmesg-warn-level-piglit-style/0/err.txt
@@ -0,0 +1,3 @@
+Starting subtest: first-subtest
+This is a warning line
+Subtest first-subtest: SUCCESS (0.000s)
diff --git a/runner/json_tests_data/dmesg-warn-level-piglit-style/0/journal.txt b/runner/json_tests_data/dmesg-warn-level-piglit-style/0/journal.txt
new file mode 100644
index 00000000..86a30e07
--- /dev/null
+++ b/runner/json_tests_data/dmesg-warn-level-piglit-style/0/journal.txt
@@ -0,0 +1,2 @@
+first-subtest
+exit:0 (0.014s)
diff --git a/runner/json_tests_data/dmesg-warn-level-piglit-style/0/out.txt b/runner/json_tests_data/dmesg-warn-level-piglit-style/0/out.txt
new file mode 100644
index 00000000..5946bf31
--- /dev/null
+++ b/runner/json_tests_data/dmesg-warn-level-piglit-style/0/out.txt
@@ -0,0 +1,3 @@
+IGT-Version: 1.23-g0c763bfd (x86_64) (Linux: 4.18.0-1-amd64 x86_64)
+Starting subtest: first-subtest
+Subtest first-subtest: SUCCESS (0.000s)
diff --git a/runner/json_tests_data/dmesg-warn-level-piglit-style/README.txt b/runner/json_tests_data/dmesg-warn-level-piglit-style/README.txt
new file mode 100644
index 00000000..f8420d76
--- /dev/null
+++ b/runner/json_tests_data/dmesg-warn-level-piglit-style/README.txt
@@ -0,0 +1,7 @@
+When --demsg-warn-level is set to 6 also KERN_INFO level messages should be
+treated as warnings triggering a result change to dmesg-warn/dmesg-fail.
+
+This makes sure that the piglit-style-dmesg does not clash with
+dmesg-warn-level. All the messages are prefixed with drm_ to fit the filters.
+
+IGT messages were artifically bumped to KERN_DEBUG to not pollute the warnings.
diff --git a/runner/json_tests_data/dmesg-warn-level-piglit-style/endtime.txt b/runner/json_tests_data/dmesg-warn-level-piglit-style/endtime.txt
new file mode 100644
index 00000000..635f6ae9
--- /dev/null
+++ b/runner/json_tests_data/dmesg-warn-level-piglit-style/endtime.txt
@@ -0,0 +1 @@
+1539953735.172373
diff --git a/runner/json_tests_data/dmesg-warn-level-piglit-style/joblist.txt b/runner/json_tests_data/dmesg-warn-level-piglit-style/joblist.txt
new file mode 100644
index 00000000..81f914a7
--- /dev/null
+++ b/runner/json_tests_data/dmesg-warn-level-piglit-style/joblist.txt
@@ -0,0 +1 @@
+successtest first-subtest
diff --git a/runner/json_tests_data/dmesg-warn-level-piglit-style/metadata.txt b/runner/json_tests_data/dmesg-warn-level-piglit-style/metadata.txt
new file mode 100644
index 00000000..b05377a9
--- /dev/null
+++ b/runner/json_tests_data/dmesg-warn-level-piglit-style/metadata.txt
@@ -0,0 +1,13 @@
+abort_mask : 0
+name : normal-run
+dry_run : 0
+sync : 0
+log_level : 0
+overwrite : 0
+multiple_mode : 0
+inactivity_timeout : 0
+use_watchdog : 0
+piglit_style_dmesg : 1
+dmesg_warn_level : 6
+test_root : /path/does/not/exist
+results_path : /path/does/not/exist
diff --git a/runner/json_tests_data/dmesg-warn-level-piglit-style/reference.json b/runner/json_tests_data/dmesg-warn-level-piglit-style/reference.json
new file mode 100644
index 00000000..5d1c00ea
--- /dev/null
+++ b/runner/json_tests_data/dmesg-warn-level-piglit-style/reference.json
@@ -0,0 +1,73 @@
+{
+  "__type__":"TestrunResult",
+  "results_version":10,
+  "name":"normal-run",
+  "uname":"Linux hostname 4.18.0-1-amd64 #1 SMP Debian 4.18.6-1 (2018-09-06) x86_64",
+  "time_elapsed":{
+    "__type__":"TimeAttribute",
+    "start":1539953735.1110389,
+    "end":1539953735.1723731
+  },
+  "tests":{
+    "igt@successtest@first-subtest":{
+      "out":"Starting subtest: first-subtest\nSubtest first-subtest: SUCCESS (0.000s)\n",
+      "igt-version":"IGT-Version: 1.23-g0c763bfd (x86_64) (Linux: 4.18.0-1-amd64 x86_64)",
+      "result":"dmesg-warn",
+      "time":{
+        "__type__":"TimeAttribute",
+        "start":0.0,
+        "end":0.0
+      },
+      "err":"Starting subtest: first-subtest\nThis is a warning line\nSubtest first-subtest: SUCCESS (0.000s)\n",
+      "dmesg":"<7> [3216186.095097] [IGT] successtest: executing\n<7> [3216186.101115] [IGT] successtest: starting subtest first-subtest\n<6> [3216186.095083] drm_ KERN_INFO, should be a warning here too\n<7> [3216186.095097] drm_ KERN_DEBUG, should not be a warning\n<4> [3216186.101159] drm_ A proper KERN_WARNING\n<7> [3216186.101160] [IGT] successtest: exiting, ret=0\n",
+      "dmesg-warnings":"<6> [3216186.095083] drm_ KERN_INFO, should be a warning here too\n<4> [3216186.101159] drm_ A proper KERN_WARNING\n"
+    }
+  },
+  "totals":{
+    "":{
+      "crash":0,
+      "pass":0,
+      "dmesg-fail":0,
+      "dmesg-warn":1,
+      "skip":0,
+      "incomplete":0,
+      "timeout":0,
+      "notrun":0,
+      "fail":0,
+      "warn":0
+    },
+    "root":{
+      "crash":0,
+      "pass":0,
+      "dmesg-fail":0,
+      "dmesg-warn":1,
+      "skip":0,
+      "incomplete":0,
+      "timeout":0,
+      "notrun":0,
+      "fail":0,
+      "warn":0
+    },
+    "igt@successtest":{
+      "crash":0,
+      "pass":0,
+      "dmesg-fail":0,
+      "dmesg-warn":1,
+      "skip":0,
+      "incomplete":0,
+      "timeout":0,
+      "notrun":0,
+      "fail":0,
+      "warn":0
+    }
+  },
+  "runtimes":{
+    "igt@successtest":{
+      "time":{
+        "__type__":"TimeAttribute",
+        "start":0.0,
+        "end":0.014
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git a/runner/json_tests_data/dmesg-warn-level-piglit-style/starttime.txt b/runner/json_tests_data/dmesg-warn-level-piglit-style/starttime.txt
new file mode 100644
index 00000000..ae038f18
--- /dev/null
+++ b/runner/json_tests_data/dmesg-warn-level-piglit-style/starttime.txt
@@ -0,0 +1 @@
+1539953735.111039
diff --git a/runner/json_tests_data/dmesg-warn-level-piglit-style/uname.txt b/runner/json_tests_data/dmesg-warn-level-piglit-style/uname.txt
new file mode 100644
index 00000000..a7aef6f7
--- /dev/null
+++ b/runner/json_tests_data/dmesg-warn-level-piglit-style/uname.txt
@@ -0,0 +1 @@
+Linux hostname 4.18.0-1-amd64 #1 SMP Debian 4.18.6-1 (2018-09-06) x86_64
diff --git a/runner/json_tests_data/dmesg-warn-level/0/dmesg.txt b/runner/json_tests_data/dmesg-warn-level/0/dmesg.txt
new file mode 100644
index 00000000..16ef1210
--- /dev/null
+++ b/runner/json_tests_data/dmesg-warn-level/0/dmesg.txt
@@ -0,0 +1,6 @@
+15,952,3216186095097,-;[IGT] successtest: executing
+15,953,3216186101115,-;[IGT] successtest: starting subtest first-subtest
+6,951,3216186095083,-;KERN_INFO, should be a warning here too
+7,952,3216186095097,-;KERN_DEBUG, should not be a warning
+4,953,3216186101159,-;A proper KERN_WARNING
+15,955,3216186101160,-;[IGT] successtest: exiting, ret=0
diff --git a/runner/json_tests_data/dmesg-warn-level/0/err.txt b/runner/json_tests_data/dmesg-warn-level/0/err.txt
new file mode 100644
index 00000000..e18c00e9
--- /dev/null
+++ b/runner/json_tests_data/dmesg-warn-level/0/err.txt
@@ -0,0 +1,3 @@
+Starting subtest: first-subtest
+This is a warning line
+Subtest first-subtest: SUCCESS (0.000s)
diff --git a/runner/json_tests_data/dmesg-warn-level/0/journal.txt b/runner/json_tests_data/dmesg-warn-level/0/journal.txt
new file mode 100644
index 00000000..86a30e07
--- /dev/null
+++ b/runner/json_tests_data/dmesg-warn-level/0/journal.txt
@@ -0,0 +1,2 @@
+first-subtest
+exit:0 (0.014s)
diff --git a/runner/json_tests_data/dmesg-warn-level/0/out.txt b/runner/json_tests_data/dmesg-warn-level/0/out.txt
new file mode 100644
index 00000000..5946bf31
--- /dev/null
+++ b/runner/json_tests_data/dmesg-warn-level/0/out.txt
@@ -0,0 +1,3 @@
+IGT-Version: 1.23-g0c763bfd (x86_64) (Linux: 4.18.0-1-amd64 x86_64)
+Starting subtest: first-subtest
+Subtest first-subtest: SUCCESS (0.000s)
diff --git a/runner/json_tests_data/dmesg-warn-level/README.txt b/runner/json_tests_data/dmesg-warn-level/README.txt
new file mode 100644
index 00000000..f481130d
--- /dev/null
+++ b/runner/json_tests_data/dmesg-warn-level/README.txt
@@ -0,0 +1,4 @@
+When --demsg-warn-level is set to 6 also KERN_INFO level messages should be
+treated as warnings triggering a result change to dmesg-warn/dmesg-fail.
+
+IGT messages were artifically bumped to KERN_DEBUG to not pollute the warnings.
diff --git a/runner/json_tests_data/dmesg-warn-level/endtime.txt b/runner/json_tests_data/dmesg-warn-level/endtime.txt
new file mode 100644
index 00000000..635f6ae9
--- /dev/null
+++ b/runner/json_tests_data/dmesg-warn-level/endtime.txt
@@ -0,0 +1 @@
+1539953735.172373
diff --git a/runner/json_tests_data/dmesg-warn-level/joblist.txt b/runner/json_tests_data/dmesg-warn-level/joblist.txt
new file mode 100644
index 00000000..81f914a7
--- /dev/null
+++ b/runner/json_tests_data/dmesg-warn-level/joblist.txt
@@ -0,0 +1 @@
+successtest first-subtest
diff --git a/runner/json_tests_data/dmesg-warn-level/metadata.txt b/runner/json_tests_data/dmesg-warn-level/metadata.txt
new file mode 100644
index 00000000..7597a4eb
--- /dev/null
+++ b/runner/json_tests_data/dmesg-warn-level/metadata.txt
@@ -0,0 +1,13 @@
+abort_mask : 0
+name : normal-run
+dry_run : 0
+sync : 0
+log_level : 0
+overwrite : 0
+multiple_mode : 0
+inactivity_timeout : 0
+use_watchdog : 0
+piglit_style_dmesg : 0
+dmesg_warn_level : 6
+test_root : /path/does/not/exist
+results_path : /path/does/not/exist
diff --git a/runner/json_tests_data/dmesg-warn-level/reference.json b/runner/json_tests_data/dmesg-warn-level/reference.json
new file mode 100644
index 00000000..32fb571b
--- /dev/null
+++ b/runner/json_tests_data/dmesg-warn-level/reference.json
@@ -0,0 +1,73 @@
+{
+  "__type__":"TestrunResult",
+  "results_version":10,
+  "name":"normal-run",
+  "uname":"Linux hostname 4.18.0-1-amd64 #1 SMP Debian 4.18.6-1 (2018-09-06) x86_64",
+  "time_elapsed":{
+    "__type__":"TimeAttribute",
+    "start":1539953735.1110389,
+    "end":1539953735.1723731
+  },
+  "tests":{
+    "igt@successtest@first-subtest":{
+      "out":"Starting subtest: first-subtest\nSubtest first-subtest: SUCCESS (0.000s)\n",
+      "igt-version":"IGT-Version: 1.23-g0c763bfd (x86_64) (Linux: 4.18.0-1-amd64 x86_64)",
+      "result":"dmesg-warn",
+      "time":{
+        "__type__":"TimeAttribute",
+        "start":0.0,
+        "end":0.0
+      },
+      "err":"Starting subtest: first-subtest\nThis is a warning line\nSubtest first-subtest: SUCCESS (0.000s)\n",
+      "dmesg":"<7> [3216186.095097] [IGT] successtest: executing\n<7> [3216186.101115] [IGT] successtest: starting subtest first-subtest\n<6> [3216186.095083] KERN_INFO, should be a warning here too\n<7> [3216186.095097] KERN_DEBUG, should not be a warning\n<4> [3216186.101159] A proper KERN_WARNING\n<7> [3216186.101160] [IGT] successtest: exiting, ret=0\n",
+      "dmesg-warnings":"<6> [3216186.095083] KERN_INFO, should be a warning here too\n<4> [3216186.101159] A proper KERN_WARNING\n"
+    }
+  },
+  "totals":{
+    "":{
+      "crash":0,
+      "pass":0,
+      "dmesg-fail":0,
+      "dmesg-warn":1,
+      "skip":0,
+      "incomplete":0,
+      "timeout":0,
+      "notrun":0,
+      "fail":0,
+      "warn":0
+    },
+    "root":{
+      "crash":0,
+      "pass":0,
+      "dmesg-fail":0,
+      "dmesg-warn":1,
+      "skip":0,
+      "incomplete":0,
+      "timeout":0,
+      "notrun":0,
+      "fail":0,
+      "warn":0
+    },
+    "igt@successtest":{
+      "crash":0,
+      "pass":0,
+      "dmesg-fail":0,
+      "dmesg-warn":1,
+      "skip":0,
+      "incomplete":0,
+      "timeout":0,
+      "notrun":0,
+      "fail":0,
+      "warn":0
+    }
+  },
+  "runtimes":{
+    "igt@successtest":{
+      "time":{
+        "__type__":"TimeAttribute",
+        "start":0.0,
+        "end":0.014
+      }
+    }
+  }
+}
\ No newline at end of file
diff --git a/runner/json_tests_data/dmesg-warn-level/starttime.txt b/runner/json_tests_data/dmesg-warn-level/starttime.txt
new file mode 100644
index 00000000..ae038f18
--- /dev/null
+++ b/runner/json_tests_data/dmesg-warn-level/starttime.txt
@@ -0,0 +1 @@
+1539953735.111039
diff --git a/runner/json_tests_data/dmesg-warn-level/uname.txt b/runner/json_tests_data/dmesg-warn-level/uname.txt
new file mode 100644
index 00000000..a7aef6f7
--- /dev/null
+++ b/runner/json_tests_data/dmesg-warn-level/uname.txt
@@ -0,0 +1 @@
+Linux hostname 4.18.0-1-amd64 #1 SMP Debian 4.18.6-1 (2018-09-06) x86_64
diff --git a/runner/resultgen.c b/runner/resultgen.c
index 40d1cfcc..2d21cba7 100644
--- a/runner/resultgen.c
+++ b/runner/resultgen.c
@@ -670,12 +670,12 @@ static bool fill_from_dmesg(int fd,
 		}
 
 		if (settings->piglit_style_dmesg) {
-			if ((flags & 0x07) <= 5 && continuation != 'c' &&
+			if ((flags & 0x07) <= settings->dmesg_warn_level && continuation != 'c' &&
 			    regexec(&re, message, (size_t)0, NULL, 0) != REG_NOMATCH) {
 				append_line(&warnings, &warningslen, formatted);
 			}
 		} else {
-			if ((flags & 0x07) <= 4 && continuation != 'c' &&
+			if ((flags & 0x07) <= settings->dmesg_warn_level && continuation != 'c' &&
 			    regexec(&re, message, (size_t)0, NULL, 0) == REG_NOMATCH) {
 				append_line(&warnings, &warningslen, formatted);
 			}
diff --git a/runner/runner_json_tests.c b/runner/runner_json_tests.c
index 09a93189..7c9540d1 100644
--- a/runner/runner_json_tests.c
+++ b/runner/runner_json_tests.c
@@ -159,6 +159,9 @@ static const char *dirnames[] = {
 	"dmesg-escapes",
 	"notrun-results",
 	"notrun-results-multiple-mode",
+	"dmesg-warn-level",
+	"dmesg-warn-level-piglit-style",
+	"dmesg-warn-level-one-piglit-style"
 };
 
 igt_main
diff --git a/runner/runner_tests.c b/runner/runner_tests.c
index 06725536..f2b5ffa7 100644
--- a/runner/runner_tests.c
+++ b/runner/runner_tests.c
@@ -155,6 +155,7 @@ static void assert_settings_equal(struct settings *one, struct settings *two)
 	igt_assert_eqstr(one->test_root, two->test_root);
 	igt_assert_eqstr(one->results_path, two->results_path);
 	igt_assert_eq(one->piglit_style_dmesg, two->piglit_style_dmesg);
+	igt_assert_eq(one->dmesg_warn_level, two->dmesg_warn_level);
 }
 
 static void assert_job_list_equal(struct job_list *one, struct job_list *two)
@@ -223,7 +224,9 @@ igt_main
 		igt_assert(!settings.use_watchdog);
 		igt_assert(strstr(settings.test_root, "test-root-dir") != NULL);
 		igt_assert(strstr(settings.results_path, "path-to-results") != NULL);
+
 		igt_assert(!settings.piglit_style_dmesg);
+		igt_assert_eq(settings.dmesg_warn_level, 4);
 	}
 
 	igt_subtest_group {
@@ -389,7 +392,36 @@ igt_main
 		igt_assert(settings.use_watchdog);
 		igt_assert(strstr(settings.test_root, "test-root-dir") != NULL);
 		igt_assert(strstr(settings.results_path, "path-to-results") != NULL);
+
 		igt_assert(settings.piglit_style_dmesg);
+		igt_assert_eq(settings.dmesg_warn_level, 5);
+	}
+
+	igt_subtest("dmesg-warn-level-overwrittable-with-piglit-style") {
+		const char *argv[] = { "runner",
+				       "--piglit-style-dmesg",
+				       "--dmesg-warn-level=3",
+				       "test-root-dir",
+				       "path-to-results",
+		};
+
+		igt_assert(parse_options(ARRAY_SIZE(argv), (char**)argv, &settings));
+
+		igt_assert(settings.piglit_style_dmesg);
+		igt_assert_eq(settings.dmesg_warn_level, 3);
+	}
+
+	igt_subtest("dmesg-warn-level-overwrittable") {
+		const char *argv[] = { "runner",
+				       "--dmesg-warn-level=3",
+				       "test-root-dir",
+				       "path-to-results",
+		};
+
+		igt_assert(parse_options(ARRAY_SIZE(argv), (char**)argv, &settings));
+
+		igt_assert(!settings.piglit_style_dmesg);
+		igt_assert_eq(settings.dmesg_warn_level, 3);
 	}
 
 	igt_subtest("invalid-option") {
@@ -1092,6 +1124,64 @@ igt_main
 		}
 	}
 
+	igt_subtest_group {
+		igt_subtest("metadata-read-old-style-infer-dmesg-warn-piglit-style")
+		{
+			char metadata[] = "piglit_style_dmesg : 1\n";
+			FILE *f = fmemopen(metadata, strlen(metadata), "r");
+			igt_assert(f);
+
+			igt_assert(read_settings_from_file(&settings, f));
+
+			igt_assert(settings.piglit_style_dmesg);
+			igt_assert_eq(settings.dmesg_warn_level, 5);
+
+			fclose(f);
+		}
+
+		igt_subtest("metadata-read-overrides-dmesg-warn-piglit-style")
+		{
+			char metadata[] = "piglit_style_dmesg : 1\ndmesg_warn_level : 3";
+			FILE *f = fmemopen(metadata, strlen(metadata), "r");
+			igt_assert(f);
+
+			igt_assert(read_settings_from_file(&settings, f));
+
+			igt_assert(settings.piglit_style_dmesg);
+			igt_assert_eq(settings.dmesg_warn_level, 3);
+
+			fclose(f);
+		}
+
+		igt_subtest("metadata-read-old-style-infer-dmesg-warn-default")
+		{
+			char metadata[] = "piglit_style_dmesg : 0\n";
+			FILE *f = fmemopen(metadata, strlen(metadata), "r");
+			igt_assert(f);
+
+			igt_assert(read_settings_from_file(&settings, f));
+
+			igt_assert(!settings.piglit_style_dmesg);
+			igt_assert_eq(settings.dmesg_warn_level, 4);
+
+			fclose(f);
+		}
+
+		igt_subtest("metadata-read-overrides-dmesg-warn-default")
+		{
+			char metadata[] = "piglit_style_dmesg : 0\ndmesg_warn_level : 3";
+			FILE *f = fmemopen(metadata, strlen(metadata), "r");
+			igt_assert(f);
+
+			igt_assert(read_settings_from_file(&settings, f));
+
+			igt_assert(!settings.piglit_style_dmesg);
+			igt_assert_eq(settings.dmesg_warn_level, 3);
+
+			fclose(f);
+		}
+	}
+
 	igt_subtest_group {
 		struct job_list list;
 		int dirfd = -1, subdirfd = -1, fd = -1;
diff --git a/runner/settings.c b/runner/settings.c
index 20b21378..82e564a7 100644
--- a/runner/settings.c
+++ b/runner/settings.c
@@ -17,6 +17,7 @@ enum {
 	OPT_TEST_LIST,
 	OPT_IGNORE_MISSING,
 	OPT_PIGLIT_DMESG,
+	OPT_DMESG_WARN_LEVEL,
 	OPT_OVERALL_TIMEOUT,
 	OPT_HELP = 'h',
 	OPT_NAME = 'n',
@@ -159,12 +160,18 @@ static const char *usage_str =
 	"  --use-watchdog        Use hardware watchdog for lethal enforcement of the\n"
 	"                        above timeout. Killing the test process is still\n"
 	"                        attempted at timeout trigger.\n"
+	"  --demsg-warn-level <level>\n"
+	"                        Messages with log level equal or lower (more serious)\n"
+	"                        to the given one will override the test result to\n"
+	"                        dmesg-warn/dmesg-fail, assuming they go through filtering.\n"
+	"                        Defaults to 4 (KERN_WARNING).\n"
 	"  --piglit-style-dmesg  Filter dmesg like piglit does. Piglit considers matches\n"
 	"                        against a short filter list to mean the test result\n"
 	"                        should be changed to dmesg-warn/dmesg-fail. Without\n"
 	"                        this option everything except matches against a\n"
 	"                        (longer) filter list means the test result should\n"
-	"                        change.\n"
+	"                        change. KERN_NOTICE dmesg level is treated as warn,\n"
+	"                        unless overridden with --dmesg-wan-level.\n"
 	"  [test_root]           Directory that contains the IGT tests. The environment\n"
 	"                        variable IGT_TEST_ROOT will be used if set, overriding\n"
 	"                        this option if given.\n"
@@ -270,6 +277,7 @@ bool parse_options(int argc, char **argv,
 		{"overall-timeout", required_argument, NULL, OPT_OVERALL_TIMEOUT},
 		{"use-watchdog", no_argument, NULL, OPT_WATCHDOG},
 		{"piglit-style-dmesg", no_argument, NULL, OPT_PIGLIT_DMESG},
+		{"dmesg-warn-level", required_argument, NULL, OPT_DMESG_WARN_LEVEL},
 		{ 0, 0, 0, 0},
 	};
 
@@ -277,6 +285,8 @@ bool parse_options(int argc, char **argv,
 
 	optind = 1;
 
+	settings->dmesg_warn_level = -1;
+
 	while ((c = getopt_long(argc, argv, "hn:dt:x:sl:om", long_options, NULL)) != -1) {
 		switch (c) {
 		case OPT_HELP:
@@ -332,6 +342,11 @@ bool parse_options(int argc, char **argv,
 			break;
 		case OPT_PIGLIT_DMESG:
 			settings->piglit_style_dmesg = true;
+			if (settings->dmesg_warn_level < 0)
+				settings->dmesg_warn_level = 5; /* KERN_NOTICE */
+			break;
+		case OPT_DMESG_WARN_LEVEL:
+			settings->dmesg_warn_level = atoi(optarg);
 			break;
 		case '?':
 			usage(NULL, stderr);
@@ -342,6 +357,9 @@ bool parse_options(int argc, char **argv,
 		}
 	}
 
+	if (settings->dmesg_warn_level < 0)
+		settings->dmesg_warn_level = 4; /* KERN_WARN */
+
 	switch (argc - optind) {
 	case 2:
 		settings->test_root = absolute_path(argv[optind]);
@@ -525,6 +543,7 @@ bool serialize_settings(struct settings *settings)
 	SERIALIZE_LINE(f, settings, overall_timeout, "%d");
 	SERIALIZE_LINE(f, settings, use_watchdog, "%d");
 	SERIALIZE_LINE(f, settings, piglit_style_dmesg, "%d");
+	SERIALIZE_LINE(f, settings, dmesg_warn_level, "%d");
 	SERIALIZE_LINE(f, settings, test_root, "%s");
 	SERIALIZE_LINE(f, settings, results_path, "%s");
 
@@ -553,6 +572,7 @@ bool read_settings_from_file(struct settings *settings, FILE *f)
 
 	char *name = NULL, *val = NULL;
 
+	settings->dmesg_warn_level = -1;
 
 	while (fscanf(f, "%ms : %ms", &name, &val) == 2) {
 		int numval = atoi(val);
@@ -568,6 +588,7 @@ bool read_settings_from_file(struct settings *settings, FILE *f)
 		PARSE_LINE(settings, name, val, overall_timeout, numval);
 		PARSE_LINE(settings, name, val, use_watchdog, numval);
 		PARSE_LINE(settings, name, val, piglit_style_dmesg, numval);
+		PARSE_LINE(settings, name, val, dmesg_warn_level, numval);
 		PARSE_LINE(settings, name, val, test_root, val ? strdup(val) : NULL);
 		PARSE_LINE(settings, name, val, results_path, val ? strdup(val) : NULL);
 
@@ -578,6 +599,13 @@ bool read_settings_from_file(struct settings *settings, FILE *f)
 		name = val = NULL;
 	}
 
+	if (settings->dmesg_warn_level < 0) {
+		if (settings->piglit_style_dmesg)
+			settings->dmesg_warn_level = 5;
+		else
+			settings->dmesg_warn_level = 4;
+	}
+
 	free(name);
 	free(val);
 
diff --git a/runner/settings.h b/runner/settings.h
index ae90897c..672a3af8 100644
--- a/runner/settings.h
+++ b/runner/settings.h
@@ -42,6 +42,7 @@ struct settings {
 	char *test_root;
 	char *results_path;
 	bool piglit_style_dmesg;
+	int dmesg_warn_level;
 };
 
 /**
-- 
2.20.1

_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [igt-dev] ✓ Fi.CI.BAT: success for series starting with [i-g-t,1/3] runner: Reinitialize compiled dmesg regexp each parsing session
  2019-04-01  6:46 [igt-dev] [PATCH i-g-t 1/3] runner: Reinitialize compiled dmesg regexp each parsing session Arkadiusz Hiler
  2019-04-01  6:46 ` [igt-dev] [PATCH i-g-t 2/3] runner: Refactor metadata parsing Arkadiusz Hiler
  2019-04-01  6:46 ` [igt-dev] [PATCH i-g-t 3/3] runner: Add --dmesg-warn-level switch Arkadiusz Hiler
@ 2019-04-01  7:20 ` Patchwork
  2019-04-01  7:23 ` [igt-dev] [PATCH i-g-t 1/3] " Ser, Simon
  2019-04-01  8:16 ` [igt-dev] ✓ Fi.CI.IGT: success for series starting with [i-g-t,1/3] " Patchwork
  4 siblings, 0 replies; 8+ messages in thread
From: Patchwork @ 2019-04-01  7:20 UTC (permalink / raw)
  To: Arkadiusz Hiler; +Cc: igt-dev

== Series Details ==

Series: series starting with [i-g-t,1/3] runner: Reinitialize compiled dmesg regexp each parsing session
URL   : https://patchwork.freedesktop.org/series/58804/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_5847 -> IGTPW_2746
====================================================

Summary
-------

  **SUCCESS**

  No regressions found.

  External URL: https://patchwork.freedesktop.org/api/1.0/series/58804/revisions/1/mbox/

Possible new issues
-------------------

  Here are the unknown changes that may have been introduced in IGTPW_2746:

### IGT changes ###

#### Suppressed ####

  The following results come from untrusted machines, tests, or statuses.
  They do not affect the overall result.

  * igt@i915_selftest@live_gtt:
    - {fi-icl-y}:         NOTRUN -> INCOMPLETE

  
Known issues
------------

  Here are the changes found in IGTPW_2746 that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@i915_selftest@live_contexts:
    - fi-bdw-gvtdvm:      PASS -> DMESG-FAIL [fdo#110235 ]

  * igt@i915_selftest@live_execlists:
    - fi-apl-guc:         PASS -> INCOMPLETE [fdo#103927] / [fdo#109720]

  * igt@kms_busy@basic-flip-a:
    - fi-gdg-551:         PASS -> FAIL [fdo#103182] +1

  * igt@kms_pipe_crc_basic@nonblocking-crc-pipe-a-frame-sequence:
    - fi-byt-clapper:     PASS -> FAIL [fdo#103191] / [fdo#107362] +1

  * igt@kms_pipe_crc_basic@read-crc-pipe-a:
    - fi-byt-clapper:     PASS -> FAIL [fdo#107362]

  * igt@runner@aborted:
    - fi-apl-guc:         NOTRUN -> FAIL [fdo#108622] / [fdo#109720]

  
#### Possible fixes ####

  * igt@i915_module_load@reload-with-fault-injection:
    - fi-kbl-7567u:       DMESG-WARN [fdo#105602] / [fdo#108529] -> PASS +1

  * igt@i915_pm_rpm@module-reload:
    - fi-kbl-7567u:       DMESG-WARN [fdo#108529] -> PASS

  * igt@i915_selftest@live_uncore:
    - fi-kbl-8809g:       DMESG-FAIL -> PASS

  * igt@kms_chamelium@common-hpd-after-suspend:
    - fi-kbl-7567u:       DMESG-FAIL [fdo#105079] -> PASS

  * igt@kms_pipe_crc_basic@nonblocking-crc-pipe-c:
    - fi-kbl-7567u:       SKIP [fdo#109271] -> PASS +33

  
  {name}: This element is suppressed. This means it is ignored when computing
          the status of the difference (SUCCESS, WARNING, or FAILURE).

  [fdo#103182]: https://bugs.freedesktop.org/show_bug.cgi?id=103182
  [fdo#103191]: https://bugs.freedesktop.org/show_bug.cgi?id=103191
  [fdo#103927]: https://bugs.freedesktop.org/show_bug.cgi?id=103927
  [fdo#105079]: https://bugs.freedesktop.org/show_bug.cgi?id=105079
  [fdo#105602]: https://bugs.freedesktop.org/show_bug.cgi?id=105602
  [fdo#107362]: https://bugs.freedesktop.org/show_bug.cgi?id=107362
  [fdo#108529]: https://bugs.freedesktop.org/show_bug.cgi?id=108529
  [fdo#108622]: https://bugs.freedesktop.org/show_bug.cgi?id=108622
  [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
  [fdo#109276]: https://bugs.freedesktop.org/show_bug.cgi?id=109276
  [fdo#109284]: https://bugs.freedesktop.org/show_bug.cgi?id=109284
  [fdo#109285]: https://bugs.freedesktop.org/show_bug.cgi?id=109285
  [fdo#109289]: https://bugs.freedesktop.org/show_bug.cgi?id=109289
  [fdo#109294]: https://bugs.freedesktop.org/show_bug.cgi?id=109294
  [fdo#109315]: https://bugs.freedesktop.org/show_bug.cgi?id=109315
  [fdo#109720]: https://bugs.freedesktop.org/show_bug.cgi?id=109720
  [fdo#110189]: https://bugs.freedesktop.org/show_bug.cgi?id=110189
  [fdo#110235 ]: https://bugs.freedesktop.org/show_bug.cgi?id=110235 


Participating hosts (49 -> 42)
------------------------------

  Additional (1): fi-icl-y 
  Missing    (8): fi-kbl-soraka fi-ilk-m540 fi-hsw-4200u fi-byt-squawks fi-bsw-cyan fi-pnv-d510 fi-icl-guc fi-bdw-samus 


Build changes
-------------

    * IGT: IGT_4914 -> IGTPW_2746

  CI_DRM_5847: a1e7e8ca746c6b4e6e5103bf722b81adc70064c8 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_2746: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2746/
  IGT_4914: b93309b7823dcbbd2c52adb4ebb98e3cb060f910 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2746/
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [igt-dev] [PATCH i-g-t 1/3] runner: Reinitialize compiled dmesg regexp each parsing session
  2019-04-01  6:46 [igt-dev] [PATCH i-g-t 1/3] runner: Reinitialize compiled dmesg regexp each parsing session Arkadiusz Hiler
                   ` (2 preceding siblings ...)
  2019-04-01  7:20 ` [igt-dev] ✓ Fi.CI.BAT: success for series starting with [i-g-t,1/3] runner: Reinitialize compiled dmesg regexp each parsing session Patchwork
@ 2019-04-01  7:23 ` Ser, Simon
  2019-04-01  8:16 ` [igt-dev] ✓ Fi.CI.IGT: success for series starting with [i-g-t,1/3] " Patchwork
  4 siblings, 0 replies; 8+ messages in thread
From: Ser, Simon @ 2019-04-01  7:23 UTC (permalink / raw)
  To: Hiler, Arkadiusz, igt-dev

On Mon, 2019-04-01 at 09:46 +0300, Arkadiusz Hiler wrote:
> Which regexp gets compiled is settings specific, depending whether we
> run piglit-style or not.
> 
> If it's optimized to be initialized only once and it is a global
> variable, it will be "stuck" in the mode we have selected with the
> first
> run, which may break tests.
> 
> Let's remove this optimization and initialize it each time, as it takes
> less 0.002s on my hardware.
> 
> Signed-off-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
> ---
>  runner/resultgen.c | 29 +++++++++++------------------
>  1 file changed, 11 insertions(+), 18 deletions(-)
> 
> diff --git a/runner/resultgen.c b/runner/resultgen.c
> index 32b59d59..73fda64f 100644
> --- a/runner/resultgen.c
> +++ b/runner/resultgen.c
> @@ -499,27 +499,18 @@ static const char igt_dmesg_whitelist[] =
>  static const char igt_piglit_style_dmesg_blacklist[] =
>  	"(\\[drm:|drm_|intel_|i915_)";
>  
> -static regex_t re;
> -
> -static int init_regex_whitelist(struct settings *settings)
> +static bool init_regex_whitelist(struct settings *settings, regex_t* re)

Style nit: the * should be on the right

Otherwise, this is:

Reviewed-by: Simon Ser <simon.ser@intel.com>

>  {
> -	static int status = -1;
> +	const char *regex = settings->piglit_style_dmesg ?
> +		igt_piglit_style_dmesg_blacklist :
> +		igt_dmesg_whitelist;
>  
> -	if (status == -1) {
> -		const char *regex = settings->piglit_style_dmesg ?
> -			igt_piglit_style_dmesg_blacklist :
> -			igt_dmesg_whitelist;
> -
> -		if (regcomp(&re, regex, REG_EXTENDED | REG_NOSUB) != 0)
> {
> -			fprintf(stderr, "Cannot compile dmesg
> regexp\n");
> -			status = 1;
> -			return false;
> -		}
> -
> -		status = 0;
> +	if (regcomp(re, regex, REG_EXTENDED | REG_NOSUB) != 0) {
> +		fprintf(stderr, "Cannot compile dmesg regexp\n");
> +		return false;
>  	}
>  
> -	return status;
> +	return true;
>  }
>  
>  static bool parse_dmesg_line(char* line,
> @@ -639,12 +630,13 @@ static bool fill_from_dmesg(int fd,
>  	char piglit_name[256];
>  	ssize_t read;
>  	size_t i;
> +	regex_t re;
>  
>  	if (!f) {
>  		return false;
>  	}
>  
> -	if (init_regex_whitelist(settings)) {
> +	if (!init_regex_whitelist(settings, &re)) {
>  		fclose(f);
>  		return false;
>  	}
> @@ -723,6 +715,7 @@ static bool fill_from_dmesg(int fd,
>  
>  	free(dmesg);
>  	free(warnings);
> +	regfree(&re);
>  	fclose(f);
>  	return true;
>  }
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [igt-dev] ✓ Fi.CI.IGT: success for series starting with [i-g-t,1/3] runner: Reinitialize compiled dmesg regexp each parsing session
  2019-04-01  6:46 [igt-dev] [PATCH i-g-t 1/3] runner: Reinitialize compiled dmesg regexp each parsing session Arkadiusz Hiler
                   ` (3 preceding siblings ...)
  2019-04-01  7:23 ` [igt-dev] [PATCH i-g-t 1/3] " Ser, Simon
@ 2019-04-01  8:16 ` Patchwork
  4 siblings, 0 replies; 8+ messages in thread
From: Patchwork @ 2019-04-01  8:16 UTC (permalink / raw)
  To: Arkadiusz Hiler; +Cc: igt-dev

== Series Details ==

Series: series starting with [i-g-t,1/3] runner: Reinitialize compiled dmesg regexp each parsing session
URL   : https://patchwork.freedesktop.org/series/58804/
State : success

== Summary ==

CI Bug Log - changes from CI_DRM_5847_full -> IGTPW_2746_full
====================================================

Summary
-------

  **WARNING**

  Minor unknown changes coming with IGTPW_2746_full need to be verified
  manually.
  
  If you think the reported changes have nothing to do with the changes
  introduced in IGTPW_2746_full, please notify your bug team to allow them
  to document this new failure mode, which will reduce false positives in CI.

  External URL: https://patchwork.freedesktop.org/api/1.0/series/58804/revisions/1/mbox/

Possible new issues
-------------------

  Here are the unknown changes that may have been introduced in IGTPW_2746_full:

### IGT changes ###

#### Warnings ####

  * igt@kms_plane_lowres@pipe-a-tiling-none:
    - shard-snb:          ( 2 PASS ) -> PASS +36

  
Known issues
------------

  Here are the changes found in IGTPW_2746_full that come from known issues:

### IGT changes ###

#### Issues hit ####

  * igt@gem_exec_schedule@smoketest-render:
    - shard-snb:          NOTRUN -> SKIP [fdo#109271] +117

  * igt@gem_persistent_relocs@forked-interruptible-thrashing:
    - shard-hsw:          PASS -> INCOMPLETE [fdo#103540]

  * igt@gem_userptr_blits@process-exit-gtt:
    - shard-glk:          NOTRUN -> SKIP [fdo#109271] +137

  * igt@i915_pm_rc6_residency@rc6-accuracy:
    - shard-snb:          PASS -> SKIP [fdo#109271]

  * igt@kms_atomic_transition@6x-modeset-transitions:
    - shard-kbl:          NOTRUN -> SKIP [fdo#109271] / [fdo#109278] +2

  * igt@kms_busy@extended-modeset-hang-newfb-render-a:
    - shard-hsw:          PASS -> DMESG-WARN [fdo#110222] +1

  * igt@kms_busy@extended-modeset-hang-newfb-render-c:
    - shard-hsw:          NOTRUN -> DMESG-WARN [fdo#110222] +1

  * igt@kms_busy@extended-modeset-hang-newfb-with-reset-render-a:
    - shard-snb:          PASS -> DMESG-WARN [fdo#110222] +1

  * igt@kms_busy@extended-modeset-hang-newfb-with-reset-render-b:
    - shard-kbl:          PASS -> DMESG-WARN [fdo#110222] +1

  * igt@kms_busy@extended-pageflip-modeset-hang-oldfb-render-b:
    - shard-glk:          NOTRUN -> DMESG-WARN [fdo#110222] +1

  * igt@kms_busy@extended-pageflip-modeset-hang-oldfb-render-c:
    - shard-kbl:          NOTRUN -> DMESG-WARN [fdo#110222]

  * igt@kms_chamelium@hdmi-edid-change-during-suspend:
    - shard-apl:          NOTRUN -> SKIP [fdo#109271] +45

  * igt@kms_concurrent@pipe-e:
    - shard-hsw:          NOTRUN -> SKIP [fdo#109271] / [fdo#109278] +13

  * igt@kms_cursor_crc@cursor-256x256-sliding:
    - shard-glk:          NOTRUN -> FAIL [fdo#103232] +4

  * igt@kms_cursor_legacy@2x-nonblocking-modeset-vs-cursor-atomic:
    - shard-glk:          NOTRUN -> FAIL [fdo#106509] / [fdo#107409]

  * igt@kms_frontbuffer_tracking@fbc-2p-primscrn-pri-shrfb-draw-mmap-wc:
    - shard-glk:          PASS -> FAIL [fdo#103167]

  * igt@kms_frontbuffer_tracking@psr-2p-scndscrn-pri-indfb-draw-pwrite:
    - shard-hsw:          NOTRUN -> SKIP [fdo#109271] +100

  * igt@kms_pipe_crc_basic@nonblocking-crc-pipe-e:
    - shard-snb:          NOTRUN -> SKIP [fdo#109271] / [fdo#109278] +14

  * igt@kms_plane_alpha_blend@pipe-a-constant-alpha-max:
    - shard-glk:          NOTRUN -> FAIL [fdo#108145] +3

  * igt@kms_plane_alpha_blend@pipe-c-alpha-opaque-fb:
    - shard-kbl:          NOTRUN -> FAIL [fdo#108145]

  * igt@kms_plane_scaling@pipe-a-scaler-with-clipping-clamping:
    - shard-glk:          NOTRUN -> SKIP [fdo#109271] / [fdo#109278] +14

  * igt@kms_rotation_crc@multiplane-rotation-cropping-bottom:
    - shard-kbl:          PASS -> DMESG-FAIL [fdo#105763]

  * igt@kms_rotation_crc@multiplane-rotation-cropping-top:
    - shard-kbl:          PASS -> FAIL [fdo#109016]

  * igt@kms_setmode@basic:
    - shard-glk:          NOTRUN -> FAIL [fdo#99912]
    - shard-kbl:          NOTRUN -> FAIL [fdo#99912]

  * igt@kms_universal_plane@disable-primary-vs-flip-pipe-d:
    - shard-apl:          NOTRUN -> SKIP [fdo#109271] / [fdo#109278] +6

  * igt@kms_vblank@pipe-a-ts-continuation-modeset:
    - shard-kbl:          PASS -> FAIL [fdo#104894]

  * igt@kms_vblank@pipe-a-ts-continuation-modeset-rpm:
    - shard-apl:          PASS -> FAIL [fdo#104894] +2

  * igt@v3d_mmap@mmap-bad-handle:
    - shard-kbl:          NOTRUN -> SKIP [fdo#109271] +54

  
#### Possible fixes ####

  * igt@kms_available_modes_crc@available_mode_test_crc:
    - shard-hsw:          FAIL [fdo#106641] -> PASS

  * igt@kms_busy@extended-modeset-hang-newfb-with-reset-render-c:
    - shard-kbl:          DMESG-WARN [fdo#110222] -> PASS

  * igt@kms_cursor_crc@cursor-256x85-sliding:
    - shard-kbl:          FAIL [fdo#103232] -> PASS
    - shard-apl:          FAIL [fdo#103232] -> PASS

  * igt@kms_plane@plane-panning-bottom-right-suspend-pipe-a-planes:
    - shard-kbl:          INCOMPLETE [fdo#103665] -> PASS

  * igt@kms_plane_scaling@pipe-b-scaler-with-pixel-format:
    - shard-glk:          SKIP [fdo#109271] / [fdo#109278] -> PASS

  * igt@kms_vblank@pipe-b-ts-continuation-dpms-rpm:
    - shard-apl:          FAIL [fdo#104894] -> PASS +2

  * igt@kms_vblank@pipe-b-ts-continuation-modeset-rpm:
    - shard-kbl:          FAIL [fdo#104894] -> PASS

  * igt@perf@sysctl-defaults:
    - shard-apl:          INCOMPLETE [fdo#103927] -> PASS

  
#### Warnings ####

  * igt@kms_vblank@pipe-c-wait-busy:
    - shard-snb:          ( 2 SKIP ) [fdo#109271] / [fdo#109278] -> SKIP [fdo#109271] / [fdo#109278] +7

  * igt@prime_busy@wait-after-vebox:
    - shard-snb:          ( 2 SKIP ) [fdo#109271] -> SKIP [fdo#109271] +30

  
  {name}: This element is suppressed. This means it is ignored when computing
          the status of the difference (SUCCESS, WARNING, or FAILURE).

  [fdo#103167]: https://bugs.freedesktop.org/show_bug.cgi?id=103167
  [fdo#103232]: https://bugs.freedesktop.org/show_bug.cgi?id=103232
  [fdo#103540]: https://bugs.freedesktop.org/show_bug.cgi?id=103540
  [fdo#103665]: https://bugs.freedesktop.org/show_bug.cgi?id=103665
  [fdo#103927]: https://bugs.freedesktop.org/show_bug.cgi?id=103927
  [fdo#104894]: https://bugs.freedesktop.org/show_bug.cgi?id=104894
  [fdo#105763]: https://bugs.freedesktop.org/show_bug.cgi?id=105763
  [fdo#106509]: https://bugs.freedesktop.org/show_bug.cgi?id=106509
  [fdo#106641]: https://bugs.freedesktop.org/show_bug.cgi?id=106641
  [fdo#107409]: https://bugs.freedesktop.org/show_bug.cgi?id=107409
  [fdo#108145]: https://bugs.freedesktop.org/show_bug.cgi?id=108145
  [fdo#109016]: https://bugs.freedesktop.org/show_bug.cgi?id=109016
  [fdo#109271]: https://bugs.freedesktop.org/show_bug.cgi?id=109271
  [fdo#109278]: https://bugs.freedesktop.org/show_bug.cgi?id=109278
  [fdo#110222]: https://bugs.freedesktop.org/show_bug.cgi?id=110222
  [fdo#110281]: https://bugs.freedesktop.org/show_bug.cgi?id=110281
  [fdo#99912]: https://bugs.freedesktop.org/show_bug.cgi?id=99912


Participating hosts (8 -> 5)
------------------------------

  Missing    (3): shard-skl pig-glk-j5005 shard-iclb 


Build changes
-------------

    * IGT: IGT_4914 -> IGTPW_2746
    * Piglit: piglit_4509 -> None

  CI_DRM_5847: a1e7e8ca746c6b4e6e5103bf722b81adc70064c8 @ git://anongit.freedesktop.org/gfx-ci/linux
  IGTPW_2746: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2746/
  IGT_4914: b93309b7823dcbbd2c52adb4ebb98e3cb060f910 @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools
  piglit_4509: fdc5a4ca11124ab8413c7988896eec4c97336694 @ git://anongit.freedesktop.org/piglit

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_2746/
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [igt-dev] [PATCH i-g-t 2/3] runner: Refactor metadata parsing
  2019-04-01  6:46 ` [igt-dev] [PATCH i-g-t 2/3] runner: Refactor metadata parsing Arkadiusz Hiler
@ 2019-04-01 10:24   ` Petri Latvala
  0 siblings, 0 replies; 8+ messages in thread
From: Petri Latvala @ 2019-04-01 10:24 UTC (permalink / raw)
  To: Arkadiusz Hiler; +Cc: igt-dev

On Mon, Apr 01, 2019 at 09:46:56AM +0300, Arkadiusz Hiler wrote:
> To aid testing function parsing metadata.txt is split into outer helper
> that operates on dirfd and inner function that operates on FILE*.
> 
> This allows us to test the parsing using fmemopen(), limiting the amount
> of necessary boilerplate.
> 
> Signed-off-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
> ---
>  runner/executor.c     |  2 +-
>  runner/resultgen.c    |  2 +-
>  runner/runner_tests.c |  2 +-
>  runner/settings.c     | 40 ++++++++++++++++++++++++++--------------
>  runner/settings.h     |  4 +++-
>  5 files changed, 32 insertions(+), 18 deletions(-)
> 
> diff --git a/runner/executor.c b/runner/executor.c
> index a40e2dd1..0e91b7ab 100644
> --- a/runner/executor.c
> +++ b/runner/executor.c
> @@ -1112,7 +1112,7 @@ bool initialize_execute_state_from_resume(int dirfd,
>  	memset(state, 0, sizeof(*state));
>  	state->resuming = true;
>  
> -	if (!read_settings(settings, dirfd) ||
> +	if (!read_settings_from_dir(settings, dirfd) ||
>  	    !read_job_list(list, dirfd)) {
>  		close(dirfd);
>  		return false;
> diff --git a/runner/resultgen.c b/runner/resultgen.c
> index 73fda64f..40d1cfcc 100644
> --- a/runner/resultgen.c
> +++ b/runner/resultgen.c
> @@ -1085,7 +1085,7 @@ struct json_object *generate_results_json(int dirfd)
>  	init_settings(&settings);
>  	init_job_list(&job_list);
>  
> -	if (!read_settings(&settings, dirfd)) {
> +	if (!read_settings_from_dir(&settings, dirfd)) {
>  		fprintf(stderr, "resultgen: Cannot parse settings\n");
>  		return NULL;
>  	}
> diff --git a/runner/runner_tests.c b/runner/runner_tests.c
> index e46568ac..06725536 100644
> --- a/runner/runner_tests.c
> +++ b/runner/runner_tests.c
> @@ -680,7 +680,7 @@ igt_main
>  				     "Opening %s/metadata.txt failed\n", dirname);
>  			close(fd);
>  
> -			igt_assert_f(read_settings(&cmp_settings, dirfd), "Reading settings failed\n");
> +			igt_assert_f(read_settings_from_dir(&cmp_settings, dirfd), "Reading settings failed\n");
>  			assert_settings_equal(&settings, &cmp_settings);
>  		}
>  
> diff --git a/runner/settings.c b/runner/settings.c
> index e64244e6..20b21378 100644
> --- a/runner/settings.c
> +++ b/runner/settings.c
> @@ -540,7 +540,7 @@ bool serialize_settings(struct settings *settings)
>  #undef SERIALIZE_LINE
>  }
>  
> -bool read_settings(struct settings *settings, int dirfd)
> +bool read_settings_from_file(struct settings *settings, FILE *f)
>  {
>  #define PARSE_LINE(s, name, val, field, write) \
>  	if (!strcmp(name, #field)) {	       \
> @@ -551,20 +551,8 @@ bool read_settings(struct settings *settings, int dirfd)
>  		continue;		       \
>  	}
>  
> -	int fd;
> -	FILE *f;
>  	char *name = NULL, *val = NULL;
>  
> -	free_settings(settings);
> -
> -	if ((fd = openat(dirfd, settings_filename, O_RDONLY)) < 0)
> -		return false;
> -
> -	f = fdopen(fd, "r");
> -	if (!f) {
> -		close(fd);
> -		return false;
> -	}
>  
>  	while (fscanf(f, "%ms : %ms", &name, &val) == 2) {
>  		int numval = atoi(val);
> @@ -592,9 +580,33 @@ bool read_settings(struct settings *settings, int dirfd)
>  
>  	free(name);
>  	free(val);
> -	fclose(f);
>  
>  	return true;
>  
>  #undef PARSE_LINE
>  }
> +
> +bool read_settings_from_dir(struct settings *settings, int dirfd)
> +{
> +	int fd;
> +	FILE *f;
> +
> +


Extra line here


> +	free_settings(settings);
> +
> +	if ((fd = openat(dirfd, settings_filename, O_RDONLY)) < 0)
> +		return false;
> +
> +	f = fdopen(fd, "r");
> +	if (!f) {
> +		close(fd);
> +		return false;
> +	}
> +
> +	if (!read_settings_from_file(settings, f))
> +		return false;

f leaked if read_settings_from_file fails



With those fixed,
Reviewed-by: Petri Latvala <petri.latvala@intel.com>
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [igt-dev] [PATCH i-g-t 3/3] runner: Add --dmesg-warn-level switch
  2019-04-01  6:46 ` [igt-dev] [PATCH i-g-t 3/3] runner: Add --dmesg-warn-level switch Arkadiusz Hiler
@ 2019-04-01 11:10   ` Petri Latvala
  0 siblings, 0 replies; 8+ messages in thread
From: Petri Latvala @ 2019-04-01 11:10 UTC (permalink / raw)
  To: Arkadiusz Hiler; +Cc: igt-dev

On Mon, Apr 01, 2019 at 09:46:57AM +0300, Arkadiusz Hiler wrote:
> This switch allows users to select which dmesg log level is treated as
> warning resulting in overriding the test results to
> dmesg-fail/dmesg-warn.
> 
> Signed-off-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
> ---
>  .../0/dmesg.txt                               |  7 ++
>  .../0/err.txt                                 |  3 +
>  .../0/journal.txt                             |  2 +
>  .../0/out.txt                                 |  3 +
>  .../README.txt                                |  8 ++
>  .../endtime.txt                               |  1 +
>  .../joblist.txt                               |  1 +
>  .../metadata.txt                              | 13 +++
>  .../reference.json                            | 73 +++++++++++++++
>  .../starttime.txt                             |  1 +
>  .../uname.txt                                 |  1 +
>  .../dmesg-warn-level-piglit-style/0/dmesg.txt |  6 ++
>  .../dmesg-warn-level-piglit-style/0/err.txt   |  3 +
>  .../0/journal.txt                             |  2 +
>  .../dmesg-warn-level-piglit-style/0/out.txt   |  3 +
>  .../dmesg-warn-level-piglit-style/README.txt  |  7 ++
>  .../dmesg-warn-level-piglit-style/endtime.txt |  1 +
>  .../dmesg-warn-level-piglit-style/joblist.txt |  1 +
>  .../metadata.txt                              | 13 +++
>  .../reference.json                            | 73 +++++++++++++++
>  .../starttime.txt                             |  1 +
>  .../dmesg-warn-level-piglit-style/uname.txt   |  1 +
>  .../dmesg-warn-level/0/dmesg.txt              |  6 ++
>  .../dmesg-warn-level/0/err.txt                |  3 +
>  .../dmesg-warn-level/0/journal.txt            |  2 +
>  .../dmesg-warn-level/0/out.txt                |  3 +
>  .../dmesg-warn-level/README.txt               |  4 +
>  .../dmesg-warn-level/endtime.txt              |  1 +
>  .../dmesg-warn-level/joblist.txt              |  1 +
>  .../dmesg-warn-level/metadata.txt             | 13 +++
>  .../dmesg-warn-level/reference.json           | 73 +++++++++++++++
>  .../dmesg-warn-level/starttime.txt            |  1 +
>  .../dmesg-warn-level/uname.txt                |  1 +
>  runner/resultgen.c                            |  4 +-
>  runner/runner_json_tests.c                    |  3 +
>  runner/runner_tests.c                         | 90 +++++++++++++++++++
>  runner/settings.c                             | 30 ++++++-
>  runner/settings.h                             |  1 +
>  38 files changed, 457 insertions(+), 3 deletions(-)
>  create mode 100644 runner/json_tests_data/dmesg-warn-level-one-piglit-style/0/dmesg.txt
>  create mode 100644 runner/json_tests_data/dmesg-warn-level-one-piglit-style/0/err.txt
>  create mode 100644 runner/json_tests_data/dmesg-warn-level-one-piglit-style/0/journal.txt
>  create mode 100644 runner/json_tests_data/dmesg-warn-level-one-piglit-style/0/out.txt
>  create mode 100644 runner/json_tests_data/dmesg-warn-level-one-piglit-style/README.txt
>  create mode 100644 runner/json_tests_data/dmesg-warn-level-one-piglit-style/endtime.txt
>  create mode 100644 runner/json_tests_data/dmesg-warn-level-one-piglit-style/joblist.txt
>  create mode 100644 runner/json_tests_data/dmesg-warn-level-one-piglit-style/metadata.txt
>  create mode 100644 runner/json_tests_data/dmesg-warn-level-one-piglit-style/reference.json
>  create mode 100644 runner/json_tests_data/dmesg-warn-level-one-piglit-style/starttime.txt
>  create mode 100644 runner/json_tests_data/dmesg-warn-level-one-piglit-style/uname.txt
>  create mode 100644 runner/json_tests_data/dmesg-warn-level-piglit-style/0/dmesg.txt
>  create mode 100644 runner/json_tests_data/dmesg-warn-level-piglit-style/0/err.txt
>  create mode 100644 runner/json_tests_data/dmesg-warn-level-piglit-style/0/journal.txt
>  create mode 100644 runner/json_tests_data/dmesg-warn-level-piglit-style/0/out.txt
>  create mode 100644 runner/json_tests_data/dmesg-warn-level-piglit-style/README.txt
>  create mode 100644 runner/json_tests_data/dmesg-warn-level-piglit-style/endtime.txt
>  create mode 100644 runner/json_tests_data/dmesg-warn-level-piglit-style/joblist.txt
>  create mode 100644 runner/json_tests_data/dmesg-warn-level-piglit-style/metadata.txt
>  create mode 100644 runner/json_tests_data/dmesg-warn-level-piglit-style/reference.json
>  create mode 100644 runner/json_tests_data/dmesg-warn-level-piglit-style/starttime.txt
>  create mode 100644 runner/json_tests_data/dmesg-warn-level-piglit-style/uname.txt
>  create mode 100644 runner/json_tests_data/dmesg-warn-level/0/dmesg.txt
>  create mode 100644 runner/json_tests_data/dmesg-warn-level/0/err.txt
>  create mode 100644 runner/json_tests_data/dmesg-warn-level/0/journal.txt
>  create mode 100644 runner/json_tests_data/dmesg-warn-level/0/out.txt
>  create mode 100644 runner/json_tests_data/dmesg-warn-level/README.txt
>  create mode 100644 runner/json_tests_data/dmesg-warn-level/endtime.txt
>  create mode 100644 runner/json_tests_data/dmesg-warn-level/joblist.txt
>  create mode 100644 runner/json_tests_data/dmesg-warn-level/metadata.txt
>  create mode 100644 runner/json_tests_data/dmesg-warn-level/reference.json
>  create mode 100644 runner/json_tests_data/dmesg-warn-level/starttime.txt
>  create mode 100644 runner/json_tests_data/dmesg-warn-level/uname.txt
> 
> diff --git a/runner/json_tests_data/dmesg-warn-level-one-piglit-style/0/dmesg.txt b/runner/json_tests_data/dmesg-warn-level-one-piglit-style/0/dmesg.txt
> new file mode 100644
> index 00000000..e44a24fc
> --- /dev/null
> +++ b/runner/json_tests_data/dmesg-warn-level-one-piglit-style/0/dmesg.txt
> @@ -0,0 +1,7 @@
> +15,952,3216186095097,-;[IGT] successtest: executing
> +15,953,3216186101115,-;[IGT] successtest: starting subtest first-subtest
> +6,951,3216186095083,-;drm_ KERN_INFO, disregerd


ermagerd disregerd


> +7,952,3216186095097,-;drm_ KERN_DEBUG disregard
> +4,953,3216186101159,-;drm_ KERN_WARNING disregard
> +1,953,3216186101159,-;drm_ KERN_ALERT should trip a warning
> +15,955,3216186101160,-;[IGT] successtest: exiting, ret=0
> diff --git a/runner/json_tests_data/dmesg-warn-level-one-piglit-style/0/err.txt b/runner/json_tests_data/dmesg-warn-level-one-piglit-style/0/err.txt
> new file mode 100644
> index 00000000..e18c00e9
> --- /dev/null
> +++ b/runner/json_tests_data/dmesg-warn-level-one-piglit-style/0/err.txt
> @@ -0,0 +1,3 @@
> +Starting subtest: first-subtest
> +This is a warning line
> +Subtest first-subtest: SUCCESS (0.000s)


Why mix in stderr handling with these?




> diff --git a/runner/json_tests_data/dmesg-warn-level-one-piglit-style/0/journal.txt b/runner/json_tests_data/dmesg-warn-level-one-piglit-style/0/journal.txt
> new file mode 100644
> index 00000000..86a30e07
> --- /dev/null
> +++ b/runner/json_tests_data/dmesg-warn-level-one-piglit-style/0/journal.txt
> @@ -0,0 +1,2 @@
> +first-subtest
> +exit:0 (0.014s)
> diff --git a/runner/json_tests_data/dmesg-warn-level-one-piglit-style/0/out.txt b/runner/json_tests_data/dmesg-warn-level-one-piglit-style/0/out.txt
> new file mode 100644
> index 00000000..5946bf31
> --- /dev/null
> +++ b/runner/json_tests_data/dmesg-warn-level-one-piglit-style/0/out.txt
> @@ -0,0 +1,3 @@
> +IGT-Version: 1.23-g0c763bfd (x86_64) (Linux: 4.18.0-1-amd64 x86_64)
> +Starting subtest: first-subtest
> +Subtest first-subtest: SUCCESS (0.000s)
> diff --git a/runner/json_tests_data/dmesg-warn-level-one-piglit-style/README.txt b/runner/json_tests_data/dmesg-warn-level-one-piglit-style/README.txt
> new file mode 100644
> index 00000000..d3b29f3e
> --- /dev/null
> +++ b/runner/json_tests_data/dmesg-warn-level-one-piglit-style/README.txt
> @@ -0,0 +1,8 @@
> +When --demsg-warn-level is set to 6 also KERN_INFO level messages should be

s/demsg/dmesg/

Same error is copied to all three new tests.


> +treated as warnings triggering a result change to dmesg-warn/dmesg-fail.
> +
> +This makes sure that the piglit-style-dmesg does not clash with
> +dmesg-warn-level. All the messages are prefixed with drm_ to fit the filters.
> +
> +We set the --dmesg-warn-level to 1 to make sure that the setting works in this
> +direction too.


So do we set it to 6 or 1 in this test?


> diff --git a/runner/json_tests_data/dmesg-warn-level-one-piglit-style/endtime.txt b/runner/json_tests_data/dmesg-warn-level-one-piglit-style/endtime.txt
> new file mode 100644
> index 00000000..635f6ae9
> --- /dev/null
> +++ b/runner/json_tests_data/dmesg-warn-level-one-piglit-style/endtime.txt
> @@ -0,0 +1 @@
> +1539953735.172373
> diff --git a/runner/json_tests_data/dmesg-warn-level-one-piglit-style/joblist.txt b/runner/json_tests_data/dmesg-warn-level-one-piglit-style/joblist.txt
> new file mode 100644
> index 00000000..81f914a7
> --- /dev/null
> +++ b/runner/json_tests_data/dmesg-warn-level-one-piglit-style/joblist.txt
> @@ -0,0 +1 @@
> +successtest first-subtest
> diff --git a/runner/json_tests_data/dmesg-warn-level-one-piglit-style/metadata.txt b/runner/json_tests_data/dmesg-warn-level-one-piglit-style/metadata.txt
> new file mode 100644
> index 00000000..172c0708
> --- /dev/null
> +++ b/runner/json_tests_data/dmesg-warn-level-one-piglit-style/metadata.txt
> @@ -0,0 +1,13 @@
> +abort_mask : 0
> +name : normal-run
> +dry_run : 0
> +sync : 0
> +log_level : 0
> +overwrite : 0
> +multiple_mode : 0
> +inactivity_timeout : 0
> +use_watchdog : 0
> +piglit_style_dmesg : 1
> +dmesg_warn_level : 1
> +test_root : /path/does/not/exist
> +results_path : /path/does/not/exist
> diff --git a/runner/json_tests_data/dmesg-warn-level-one-piglit-style/reference.json b/runner/json_tests_data/dmesg-warn-level-one-piglit-style/reference.json
> new file mode 100644
> index 00000000..011024db
> --- /dev/null
> +++ b/runner/json_tests_data/dmesg-warn-level-one-piglit-style/reference.json
> @@ -0,0 +1,73 @@
> +{
> +  "__type__":"TestrunResult",
> +  "results_version":10,
> +  "name":"normal-run",
> +  "uname":"Linux hostname 4.18.0-1-amd64 #1 SMP Debian 4.18.6-1 (2018-09-06) x86_64",
> +  "time_elapsed":{
> +    "__type__":"TimeAttribute",
> +    "start":1539953735.1110389,
> +    "end":1539953735.1723731
> +  },
> +  "tests":{
> +    "igt@successtest@first-subtest":{
> +      "out":"Starting subtest: first-subtest\nSubtest first-subtest: SUCCESS (0.000s)\n",
> +      "igt-version":"IGT-Version: 1.23-g0c763bfd (x86_64) (Linux: 4.18.0-1-amd64 x86_64)",
> +      "result":"dmesg-warn",
> +      "time":{
> +        "__type__":"TimeAttribute",
> +        "start":0.0,
> +        "end":0.0
> +      },
> +      "err":"Starting subtest: first-subtest\nThis is a warning line\nSubtest first-subtest: SUCCESS (0.000s)\n",
> +      "dmesg":"<7> [3216186.095097] [IGT] successtest: executing\n<7> [3216186.101115] [IGT] successtest: starting subtest first-subtest\n<6> [3216186.095083] drm_ KERN_INFO, disregerd\n<7> [3216186.095097] drm_ KERN_DEBUG disregard\n<4> [3216186.101159] drm_ KERN_WARNING disregard\n<1> [3216186.101159] drm_ KERN_ALERT should trip a warning\n<7> [3216186.101160] [IGT] successtest: exiting, ret=0\n",
> +      "dmesg-warnings":"<1> [3216186.101159] drm_ KERN_ALERT should trip a warning\n"
> +    }
> +  },
> +  "totals":{
> +    "":{
> +      "crash":0,
> +      "pass":0,
> +      "dmesg-fail":0,
> +      "dmesg-warn":1,
> +      "skip":0,
> +      "incomplete":0,
> +      "timeout":0,
> +      "notrun":0,
> +      "fail":0,
> +      "warn":0
> +    },
> +    "root":{
> +      "crash":0,
> +      "pass":0,
> +      "dmesg-fail":0,
> +      "dmesg-warn":1,
> +      "skip":0,
> +      "incomplete":0,
> +      "timeout":0,
> +      "notrun":0,
> +      "fail":0,
> +      "warn":0
> +    },
> +    "igt@successtest":{
> +      "crash":0,
> +      "pass":0,
> +      "dmesg-fail":0,
> +      "dmesg-warn":1,
> +      "skip":0,
> +      "incomplete":0,
> +      "timeout":0,
> +      "notrun":0,
> +      "fail":0,
> +      "warn":0
> +    }
> +  },
> +  "runtimes":{
> +    "igt@successtest":{
> +      "time":{
> +        "__type__":"TimeAttribute",
> +        "start":0.0,
> +        "end":0.014
> +      }
> +    }
> +  }
> +}
> \ No newline at end of file
> diff --git a/runner/json_tests_data/dmesg-warn-level-one-piglit-style/starttime.txt b/runner/json_tests_data/dmesg-warn-level-one-piglit-style/starttime.txt
> new file mode 100644
> index 00000000..ae038f18
> --- /dev/null
> +++ b/runner/json_tests_data/dmesg-warn-level-one-piglit-style/starttime.txt
> @@ -0,0 +1 @@
> +1539953735.111039
> diff --git a/runner/json_tests_data/dmesg-warn-level-one-piglit-style/uname.txt b/runner/json_tests_data/dmesg-warn-level-one-piglit-style/uname.txt
> new file mode 100644
> index 00000000..a7aef6f7
> --- /dev/null
> +++ b/runner/json_tests_data/dmesg-warn-level-one-piglit-style/uname.txt
> @@ -0,0 +1 @@
> +Linux hostname 4.18.0-1-amd64 #1 SMP Debian 4.18.6-1 (2018-09-06) x86_64
> diff --git a/runner/json_tests_data/dmesg-warn-level-piglit-style/0/dmesg.txt b/runner/json_tests_data/dmesg-warn-level-piglit-style/0/dmesg.txt
> new file mode 100644
> index 00000000..546a29ff
> --- /dev/null
> +++ b/runner/json_tests_data/dmesg-warn-level-piglit-style/0/dmesg.txt
> @@ -0,0 +1,6 @@
> +15,952,3216186095097,-;[IGT] successtest: executing
> +15,953,3216186101115,-;[IGT] successtest: starting subtest first-subtest
> +6,951,3216186095083,-;drm_ KERN_INFO, should be a warning here too
> +7,952,3216186095097,-;drm_ KERN_DEBUG, should not be a warning
> +4,953,3216186101159,-;drm_ A proper KERN_WARNING
> +15,955,3216186101160,-;[IGT] successtest: exiting, ret=0
> diff --git a/runner/json_tests_data/dmesg-warn-level-piglit-style/0/err.txt b/runner/json_tests_data/dmesg-warn-level-piglit-style/0/err.txt
> new file mode 100644
> index 00000000..e18c00e9
> --- /dev/null
> +++ b/runner/json_tests_data/dmesg-warn-level-piglit-style/0/err.txt
> @@ -0,0 +1,3 @@
> +Starting subtest: first-subtest
> +This is a warning line
> +Subtest first-subtest: SUCCESS (0.000s)
> diff --git a/runner/json_tests_data/dmesg-warn-level-piglit-style/0/journal.txt b/runner/json_tests_data/dmesg-warn-level-piglit-style/0/journal.txt
> new file mode 100644
> index 00000000..86a30e07
> --- /dev/null
> +++ b/runner/json_tests_data/dmesg-warn-level-piglit-style/0/journal.txt
> @@ -0,0 +1,2 @@
> +first-subtest
> +exit:0 (0.014s)
> diff --git a/runner/json_tests_data/dmesg-warn-level-piglit-style/0/out.txt b/runner/json_tests_data/dmesg-warn-level-piglit-style/0/out.txt
> new file mode 100644
> index 00000000..5946bf31
> --- /dev/null
> +++ b/runner/json_tests_data/dmesg-warn-level-piglit-style/0/out.txt
> @@ -0,0 +1,3 @@
> +IGT-Version: 1.23-g0c763bfd (x86_64) (Linux: 4.18.0-1-amd64 x86_64)
> +Starting subtest: first-subtest
> +Subtest first-subtest: SUCCESS (0.000s)
> diff --git a/runner/json_tests_data/dmesg-warn-level-piglit-style/README.txt b/runner/json_tests_data/dmesg-warn-level-piglit-style/README.txt
> new file mode 100644
> index 00000000..f8420d76
> --- /dev/null
> +++ b/runner/json_tests_data/dmesg-warn-level-piglit-style/README.txt
> @@ -0,0 +1,7 @@
> +When --demsg-warn-level is set to 6 also KERN_INFO level messages should be
> +treated as warnings triggering a result change to dmesg-warn/dmesg-fail.
> +
> +This makes sure that the piglit-style-dmesg does not clash with
> +dmesg-warn-level. All the messages are prefixed with drm_ to fit the filters.
> +
> +IGT messages were artifically bumped to KERN_DEBUG to not pollute the warnings.
> diff --git a/runner/json_tests_data/dmesg-warn-level-piglit-style/endtime.txt b/runner/json_tests_data/dmesg-warn-level-piglit-style/endtime.txt
> new file mode 100644
> index 00000000..635f6ae9
> --- /dev/null
> +++ b/runner/json_tests_data/dmesg-warn-level-piglit-style/endtime.txt
> @@ -0,0 +1 @@
> +1539953735.172373
> diff --git a/runner/json_tests_data/dmesg-warn-level-piglit-style/joblist.txt b/runner/json_tests_data/dmesg-warn-level-piglit-style/joblist.txt
> new file mode 100644
> index 00000000..81f914a7
> --- /dev/null
> +++ b/runner/json_tests_data/dmesg-warn-level-piglit-style/joblist.txt
> @@ -0,0 +1 @@
> +successtest first-subtest
> diff --git a/runner/json_tests_data/dmesg-warn-level-piglit-style/metadata.txt b/runner/json_tests_data/dmesg-warn-level-piglit-style/metadata.txt
> new file mode 100644
> index 00000000..b05377a9
> --- /dev/null
> +++ b/runner/json_tests_data/dmesg-warn-level-piglit-style/metadata.txt
> @@ -0,0 +1,13 @@
> +abort_mask : 0
> +name : normal-run
> +dry_run : 0
> +sync : 0
> +log_level : 0
> +overwrite : 0
> +multiple_mode : 0
> +inactivity_timeout : 0
> +use_watchdog : 0
> +piglit_style_dmesg : 1
> +dmesg_warn_level : 6
> +test_root : /path/does/not/exist
> +results_path : /path/does/not/exist
> diff --git a/runner/json_tests_data/dmesg-warn-level-piglit-style/reference.json b/runner/json_tests_data/dmesg-warn-level-piglit-style/reference.json
> new file mode 100644
> index 00000000..5d1c00ea
> --- /dev/null
> +++ b/runner/json_tests_data/dmesg-warn-level-piglit-style/reference.json
> @@ -0,0 +1,73 @@
> +{
> +  "__type__":"TestrunResult",
> +  "results_version":10,
> +  "name":"normal-run",
> +  "uname":"Linux hostname 4.18.0-1-amd64 #1 SMP Debian 4.18.6-1 (2018-09-06) x86_64",
> +  "time_elapsed":{
> +    "__type__":"TimeAttribute",
> +    "start":1539953735.1110389,
> +    "end":1539953735.1723731
> +  },
> +  "tests":{
> +    "igt@successtest@first-subtest":{
> +      "out":"Starting subtest: first-subtest\nSubtest first-subtest: SUCCESS (0.000s)\n",
> +      "igt-version":"IGT-Version: 1.23-g0c763bfd (x86_64) (Linux: 4.18.0-1-amd64 x86_64)",
> +      "result":"dmesg-warn",
> +      "time":{
> +        "__type__":"TimeAttribute",
> +        "start":0.0,
> +        "end":0.0
> +      },
> +      "err":"Starting subtest: first-subtest\nThis is a warning line\nSubtest first-subtest: SUCCESS (0.000s)\n",
> +      "dmesg":"<7> [3216186.095097] [IGT] successtest: executing\n<7> [3216186.101115] [IGT] successtest: starting subtest first-subtest\n<6> [3216186.095083] drm_ KERN_INFO, should be a warning here too\n<7> [3216186.095097] drm_ KERN_DEBUG, should not be a warning\n<4> [3216186.101159] drm_ A proper KERN_WARNING\n<7> [3216186.101160] [IGT] successtest: exiting, ret=0\n",
> +      "dmesg-warnings":"<6> [3216186.095083] drm_ KERN_INFO, should be a warning here too\n<4> [3216186.101159] drm_ A proper KERN_WARNING\n"
> +    }
> +  },
> +  "totals":{
> +    "":{
> +      "crash":0,
> +      "pass":0,
> +      "dmesg-fail":0,
> +      "dmesg-warn":1,
> +      "skip":0,
> +      "incomplete":0,
> +      "timeout":0,
> +      "notrun":0,
> +      "fail":0,
> +      "warn":0
> +    },
> +    "root":{
> +      "crash":0,
> +      "pass":0,
> +      "dmesg-fail":0,
> +      "dmesg-warn":1,
> +      "skip":0,
> +      "incomplete":0,
> +      "timeout":0,
> +      "notrun":0,
> +      "fail":0,
> +      "warn":0
> +    },
> +    "igt@successtest":{
> +      "crash":0,
> +      "pass":0,
> +      "dmesg-fail":0,
> +      "dmesg-warn":1,
> +      "skip":0,
> +      "incomplete":0,
> +      "timeout":0,
> +      "notrun":0,
> +      "fail":0,
> +      "warn":0
> +    }
> +  },
> +  "runtimes":{
> +    "igt@successtest":{
> +      "time":{
> +        "__type__":"TimeAttribute",
> +        "start":0.0,
> +        "end":0.014
> +      }
> +    }
> +  }
> +}
> \ No newline at end of file
> diff --git a/runner/json_tests_data/dmesg-warn-level-piglit-style/starttime.txt b/runner/json_tests_data/dmesg-warn-level-piglit-style/starttime.txt
> new file mode 100644
> index 00000000..ae038f18
> --- /dev/null
> +++ b/runner/json_tests_data/dmesg-warn-level-piglit-style/starttime.txt
> @@ -0,0 +1 @@
> +1539953735.111039
> diff --git a/runner/json_tests_data/dmesg-warn-level-piglit-style/uname.txt b/runner/json_tests_data/dmesg-warn-level-piglit-style/uname.txt
> new file mode 100644
> index 00000000..a7aef6f7
> --- /dev/null
> +++ b/runner/json_tests_data/dmesg-warn-level-piglit-style/uname.txt
> @@ -0,0 +1 @@
> +Linux hostname 4.18.0-1-amd64 #1 SMP Debian 4.18.6-1 (2018-09-06) x86_64
> diff --git a/runner/json_tests_data/dmesg-warn-level/0/dmesg.txt b/runner/json_tests_data/dmesg-warn-level/0/dmesg.txt
> new file mode 100644
> index 00000000..16ef1210
> --- /dev/null
> +++ b/runner/json_tests_data/dmesg-warn-level/0/dmesg.txt
> @@ -0,0 +1,6 @@
> +15,952,3216186095097,-;[IGT] successtest: executing
> +15,953,3216186101115,-;[IGT] successtest: starting subtest first-subtest
> +6,951,3216186095083,-;KERN_INFO, should be a warning here too
> +7,952,3216186095097,-;KERN_DEBUG, should not be a warning
> +4,953,3216186101159,-;A proper KERN_WARNING
> +15,955,3216186101160,-;[IGT] successtest: exiting, ret=0
> diff --git a/runner/json_tests_data/dmesg-warn-level/0/err.txt b/runner/json_tests_data/dmesg-warn-level/0/err.txt
> new file mode 100644
> index 00000000..e18c00e9
> --- /dev/null
> +++ b/runner/json_tests_data/dmesg-warn-level/0/err.txt
> @@ -0,0 +1,3 @@
> +Starting subtest: first-subtest
> +This is a warning line
> +Subtest first-subtest: SUCCESS (0.000s)
> diff --git a/runner/json_tests_data/dmesg-warn-level/0/journal.txt b/runner/json_tests_data/dmesg-warn-level/0/journal.txt
> new file mode 100644
> index 00000000..86a30e07
> --- /dev/null
> +++ b/runner/json_tests_data/dmesg-warn-level/0/journal.txt
> @@ -0,0 +1,2 @@
> +first-subtest
> +exit:0 (0.014s)
> diff --git a/runner/json_tests_data/dmesg-warn-level/0/out.txt b/runner/json_tests_data/dmesg-warn-level/0/out.txt
> new file mode 100644
> index 00000000..5946bf31
> --- /dev/null
> +++ b/runner/json_tests_data/dmesg-warn-level/0/out.txt
> @@ -0,0 +1,3 @@
> +IGT-Version: 1.23-g0c763bfd (x86_64) (Linux: 4.18.0-1-amd64 x86_64)
> +Starting subtest: first-subtest
> +Subtest first-subtest: SUCCESS (0.000s)
> diff --git a/runner/json_tests_data/dmesg-warn-level/README.txt b/runner/json_tests_data/dmesg-warn-level/README.txt
> new file mode 100644
> index 00000000..f481130d
> --- /dev/null
> +++ b/runner/json_tests_data/dmesg-warn-level/README.txt
> @@ -0,0 +1,4 @@
> +When --demsg-warn-level is set to 6 also KERN_INFO level messages should be
> +treated as warnings triggering a result change to dmesg-warn/dmesg-fail.
> +
> +IGT messages were artifically bumped to KERN_DEBUG to not pollute the warnings.
> diff --git a/runner/json_tests_data/dmesg-warn-level/endtime.txt b/runner/json_tests_data/dmesg-warn-level/endtime.txt
> new file mode 100644
> index 00000000..635f6ae9
> --- /dev/null
> +++ b/runner/json_tests_data/dmesg-warn-level/endtime.txt
> @@ -0,0 +1 @@
> +1539953735.172373
> diff --git a/runner/json_tests_data/dmesg-warn-level/joblist.txt b/runner/json_tests_data/dmesg-warn-level/joblist.txt
> new file mode 100644
> index 00000000..81f914a7
> --- /dev/null
> +++ b/runner/json_tests_data/dmesg-warn-level/joblist.txt
> @@ -0,0 +1 @@
> +successtest first-subtest
> diff --git a/runner/json_tests_data/dmesg-warn-level/metadata.txt b/runner/json_tests_data/dmesg-warn-level/metadata.txt
> new file mode 100644
> index 00000000..7597a4eb
> --- /dev/null
> +++ b/runner/json_tests_data/dmesg-warn-level/metadata.txt
> @@ -0,0 +1,13 @@
> +abort_mask : 0
> +name : normal-run
> +dry_run : 0
> +sync : 0
> +log_level : 0
> +overwrite : 0
> +multiple_mode : 0
> +inactivity_timeout : 0
> +use_watchdog : 0
> +piglit_style_dmesg : 0
> +dmesg_warn_level : 6
> +test_root : /path/does/not/exist
> +results_path : /path/does/not/exist
> diff --git a/runner/json_tests_data/dmesg-warn-level/reference.json b/runner/json_tests_data/dmesg-warn-level/reference.json
> new file mode 100644
> index 00000000..32fb571b
> --- /dev/null
> +++ b/runner/json_tests_data/dmesg-warn-level/reference.json
> @@ -0,0 +1,73 @@
> +{
> +  "__type__":"TestrunResult",
> +  "results_version":10,
> +  "name":"normal-run",
> +  "uname":"Linux hostname 4.18.0-1-amd64 #1 SMP Debian 4.18.6-1 (2018-09-06) x86_64",
> +  "time_elapsed":{
> +    "__type__":"TimeAttribute",
> +    "start":1539953735.1110389,
> +    "end":1539953735.1723731
> +  },
> +  "tests":{
> +    "igt@successtest@first-subtest":{
> +      "out":"Starting subtest: first-subtest\nSubtest first-subtest: SUCCESS (0.000s)\n",
> +      "igt-version":"IGT-Version: 1.23-g0c763bfd (x86_64) (Linux: 4.18.0-1-amd64 x86_64)",
> +      "result":"dmesg-warn",
> +      "time":{
> +        "__type__":"TimeAttribute",
> +        "start":0.0,
> +        "end":0.0
> +      },
> +      "err":"Starting subtest: first-subtest\nThis is a warning line\nSubtest first-subtest: SUCCESS (0.000s)\n",
> +      "dmesg":"<7> [3216186.095097] [IGT] successtest: executing\n<7> [3216186.101115] [IGT] successtest: starting subtest first-subtest\n<6> [3216186.095083] KERN_INFO, should be a warning here too\n<7> [3216186.095097] KERN_DEBUG, should not be a warning\n<4> [3216186.101159] A proper KERN_WARNING\n<7> [3216186.101160] [IGT] successtest: exiting, ret=0\n",
> +      "dmesg-warnings":"<6> [3216186.095083] KERN_INFO, should be a warning here too\n<4> [3216186.101159] A proper KERN_WARNING\n"
> +    }
> +  },
> +  "totals":{
> +    "":{
> +      "crash":0,
> +      "pass":0,
> +      "dmesg-fail":0,
> +      "dmesg-warn":1,
> +      "skip":0,
> +      "incomplete":0,
> +      "timeout":0,
> +      "notrun":0,
> +      "fail":0,
> +      "warn":0
> +    },
> +    "root":{
> +      "crash":0,
> +      "pass":0,
> +      "dmesg-fail":0,
> +      "dmesg-warn":1,
> +      "skip":0,
> +      "incomplete":0,
> +      "timeout":0,
> +      "notrun":0,
> +      "fail":0,
> +      "warn":0
> +    },
> +    "igt@successtest":{
> +      "crash":0,
> +      "pass":0,
> +      "dmesg-fail":0,
> +      "dmesg-warn":1,
> +      "skip":0,
> +      "incomplete":0,
> +      "timeout":0,
> +      "notrun":0,
> +      "fail":0,
> +      "warn":0
> +    }
> +  },
> +  "runtimes":{
> +    "igt@successtest":{
> +      "time":{
> +        "__type__":"TimeAttribute",
> +        "start":0.0,
> +        "end":0.014
> +      }
> +    }
> +  }
> +}
> \ No newline at end of file
> diff --git a/runner/json_tests_data/dmesg-warn-level/starttime.txt b/runner/json_tests_data/dmesg-warn-level/starttime.txt
> new file mode 100644
> index 00000000..ae038f18
> --- /dev/null
> +++ b/runner/json_tests_data/dmesg-warn-level/starttime.txt
> @@ -0,0 +1 @@
> +1539953735.111039
> diff --git a/runner/json_tests_data/dmesg-warn-level/uname.txt b/runner/json_tests_data/dmesg-warn-level/uname.txt
> new file mode 100644
> index 00000000..a7aef6f7
> --- /dev/null
> +++ b/runner/json_tests_data/dmesg-warn-level/uname.txt
> @@ -0,0 +1 @@
> +Linux hostname 4.18.0-1-amd64 #1 SMP Debian 4.18.6-1 (2018-09-06) x86_64
> diff --git a/runner/resultgen.c b/runner/resultgen.c
> index 40d1cfcc..2d21cba7 100644
> --- a/runner/resultgen.c
> +++ b/runner/resultgen.c
> @@ -670,12 +670,12 @@ static bool fill_from_dmesg(int fd,
>  		}
>  
>  		if (settings->piglit_style_dmesg) {
> -			if ((flags & 0x07) <= 5 && continuation != 'c' &&
> +			if ((flags & 0x07) <= settings->dmesg_warn_level && continuation != 'c' &&
>  			    regexec(&re, message, (size_t)0, NULL, 0) != REG_NOMATCH) {
>  				append_line(&warnings, &warningslen, formatted);
>  			}
>  		} else {
> -			if ((flags & 0x07) <= 4 && continuation != 'c' &&
> +			if ((flags & 0x07) <= settings->dmesg_warn_level && continuation != 'c' &&
>  			    regexec(&re, message, (size_t)0, NULL, 0) == REG_NOMATCH) {
>  				append_line(&warnings, &warningslen, formatted);
>  			}
> diff --git a/runner/runner_json_tests.c b/runner/runner_json_tests.c
> index 09a93189..7c9540d1 100644
> --- a/runner/runner_json_tests.c
> +++ b/runner/runner_json_tests.c
> @@ -159,6 +159,9 @@ static const char *dirnames[] = {
>  	"dmesg-escapes",
>  	"notrun-results",
>  	"notrun-results-multiple-mode",
> +	"dmesg-warn-level",
> +	"dmesg-warn-level-piglit-style",
> +	"dmesg-warn-level-one-piglit-style"
>  };
>  
>  igt_main
> diff --git a/runner/runner_tests.c b/runner/runner_tests.c
> index 06725536..f2b5ffa7 100644
> --- a/runner/runner_tests.c
> +++ b/runner/runner_tests.c
> @@ -155,6 +155,7 @@ static void assert_settings_equal(struct settings *one, struct settings *two)
>  	igt_assert_eqstr(one->test_root, two->test_root);
>  	igt_assert_eqstr(one->results_path, two->results_path);
>  	igt_assert_eq(one->piglit_style_dmesg, two->piglit_style_dmesg);
> +	igt_assert_eq(one->dmesg_warn_level, two->dmesg_warn_level);
>  }
>  
>  static void assert_job_list_equal(struct job_list *one, struct job_list *two)
> @@ -223,7 +224,9 @@ igt_main
>  		igt_assert(!settings.use_watchdog);
>  		igt_assert(strstr(settings.test_root, "test-root-dir") != NULL);
>  		igt_assert(strstr(settings.results_path, "path-to-results") != NULL);
> +
>  		igt_assert(!settings.piglit_style_dmesg);
> +		igt_assert_eq(settings.dmesg_warn_level, 4);
>  	}
>  
>  	igt_subtest_group {
> @@ -389,7 +392,36 @@ igt_main
>  		igt_assert(settings.use_watchdog);
>  		igt_assert(strstr(settings.test_root, "test-root-dir") != NULL);
>  		igt_assert(strstr(settings.results_path, "path-to-results") != NULL);
> +
>  		igt_assert(settings.piglit_style_dmesg);
> +		igt_assert_eq(settings.dmesg_warn_level, 5);
> +	}

This is the parse-all-settings subtest? Add --dmesg-warn-level=5 to the command line for it.


> +
> +	igt_subtest("dmesg-warn-level-overwrittable-with-piglit-style") {

overrideable


> +		const char *argv[] = { "runner",
> +				       "--piglit-style-dmesg",
> +				       "--dmesg-warn-level=3",
> +				       "test-root-dir",
> +				       "path-to-results",
> +		};
> +
> +		igt_assert(parse_options(ARRAY_SIZE(argv), (char**)argv, &settings));
> +
> +		igt_assert(settings.piglit_style_dmesg);
> +		igt_assert_eq(settings.dmesg_warn_level, 3);
> +	}
> +
> +	igt_subtest("dmesg-warn-level-overwrittable") {

overrideable again


> +		const char *argv[] = { "runner",
> +				       "--dmesg-warn-level=3",
> +				       "test-root-dir",
> +				       "path-to-results",
> +		};
> +
> +		igt_assert(parse_options(ARRAY_SIZE(argv), (char**)argv, &settings));
> +
> +		igt_assert(!settings.piglit_style_dmesg);
> +		igt_assert_eq(settings.dmesg_warn_level, 3);
>  	}
>  
>  	igt_subtest("invalid-option") {
> @@ -1092,6 +1124,64 @@ igt_main
>  		}
>  	}
>  
> +	igt_subtest_group {
> +		igt_subtest("metadata-read-old-style-infer-dmesg-warn-piglit-style")
> +		{

Starting brace goes on the end of the prev line.


> +			char metadata[] = "piglit_style_dmesg : 1\n";
> +			FILE *f = fmemopen(metadata, strlen(metadata), "r");
> +			igt_assert(f);
> +
> +			igt_assert(read_settings_from_file(&settings, f));
> +
> +			igt_assert(settings.piglit_style_dmesg);
> +			igt_assert_eq(settings.dmesg_warn_level, 5);
> +
> +			fclose(f);
> +		}
> +
> +		igt_subtest("metadata-read-overrides-dmesg-warn-piglit-style")
> +		{
> +			char metadata[] = "piglit_style_dmesg : 1\ndmesg_warn_level : 3";
> +			FILE *f = fmemopen(metadata, strlen(metadata), "r");
> +			igt_assert(f);
> +
> +			igt_assert(read_settings_from_file(&settings, f));
> +
> +			igt_assert(settings.piglit_style_dmesg);
> +			igt_assert_eq(settings.dmesg_warn_level, 3);
> +
> +			fclose(f);
> +		}
> +
> +		igt_subtest("metadata-read-old-style-infer-dmesg-warn-default")
> +		{
> +			char metadata[] = "piglit_style_dmesg : 0\n";
> +			FILE *f = fmemopen(metadata, strlen(metadata), "r");
> +			igt_assert(f);
> +
> +			igt_assert(read_settings_from_file(&settings, f));
> +
> +			igt_assert(!settings.piglit_style_dmesg);
> +			igt_assert_eq(settings.dmesg_warn_level, 4);
> +
> +			fclose(f);
> +		}
> +
> +		igt_subtest("metadata-read-overrides-dmesg-warn-default")
> +		{
> +			char metadata[] = "piglit_style_dmesg : 0\ndmesg_warn_level : 3";
> +			FILE *f = fmemopen(metadata, strlen(metadata), "r");
> +			igt_assert(f);
> +
> +			igt_assert(read_settings_from_file(&settings, f));
> +
> +			igt_assert(!settings.piglit_style_dmesg);
> +			igt_assert_eq(settings.dmesg_warn_level, 3);
> +
> +			fclose(f);
> +		}
> +	}
> +
>  	igt_subtest_group {
>  		struct job_list list;
>  		int dirfd = -1, subdirfd = -1, fd = -1;
> diff --git a/runner/settings.c b/runner/settings.c
> index 20b21378..82e564a7 100644
> --- a/runner/settings.c
> +++ b/runner/settings.c
> @@ -17,6 +17,7 @@ enum {
>  	OPT_TEST_LIST,
>  	OPT_IGNORE_MISSING,
>  	OPT_PIGLIT_DMESG,
> +	OPT_DMESG_WARN_LEVEL,
>  	OPT_OVERALL_TIMEOUT,
>  	OPT_HELP = 'h',
>  	OPT_NAME = 'n',
> @@ -159,12 +160,18 @@ static const char *usage_str =
>  	"  --use-watchdog        Use hardware watchdog for lethal enforcement of the\n"
>  	"                        above timeout. Killing the test process is still\n"
>  	"                        attempted at timeout trigger.\n"
> +	"  --demsg-warn-level <level>\n"

s/demsg/dmesg/


> +	"                        Messages with log level equal or lower (more serious)\n"
> +	"                        to the given one will override the test result to\n"
> +	"                        dmesg-warn/dmesg-fail, assuming they go through filtering.\n"
> +	"                        Defaults to 4 (KERN_WARNING).\n"
>  	"  --piglit-style-dmesg  Filter dmesg like piglit does. Piglit considers matches\n"
>  	"                        against a short filter list to mean the test result\n"
>  	"                        should be changed to dmesg-warn/dmesg-fail. Without\n"
>  	"                        this option everything except matches against a\n"
>  	"                        (longer) filter list means the test result should\n"
> -	"                        change.\n"
> +	"                        change. KERN_NOTICE dmesg level is treated as warn,\n"
> +	"                        unless overridden with --dmesg-wan-level.\n"

dmesg-warn-level



With those fixed,
Reviewed-by: Petri Latvala <petri.latvala@intel.com>
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2019-04-01 11:10 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-04-01  6:46 [igt-dev] [PATCH i-g-t 1/3] runner: Reinitialize compiled dmesg regexp each parsing session Arkadiusz Hiler
2019-04-01  6:46 ` [igt-dev] [PATCH i-g-t 2/3] runner: Refactor metadata parsing Arkadiusz Hiler
2019-04-01 10:24   ` Petri Latvala
2019-04-01  6:46 ` [igt-dev] [PATCH i-g-t 3/3] runner: Add --dmesg-warn-level switch Arkadiusz Hiler
2019-04-01 11:10   ` Petri Latvala
2019-04-01  7:20 ` [igt-dev] ✓ Fi.CI.BAT: success for series starting with [i-g-t,1/3] runner: Reinitialize compiled dmesg regexp each parsing session Patchwork
2019-04-01  7:23 ` [igt-dev] [PATCH i-g-t 1/3] " Ser, Simon
2019-04-01  8:16 ` [igt-dev] ✓ Fi.CI.IGT: success for series starting with [i-g-t,1/3] " Patchwork

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.