[yocto] [ptest-runner 8/8] Added <system-err></system-err> to XML

Jiwei Sun jiwei.sun at windriver.com
Thu Sep 28 19:09:40 PDT 2017


Signed-off-by: Jiwei Sun <jiwei.sun at windriver.com>
---
 tests/data/reference.xml |  3 ++-
 tests/utils.c            |  4 ++--
 utils.c                  | 49 +++++++++++++++++++++++++++++++++---------------
 utils.h                  |  2 +-
 4 files changed, 39 insertions(+), 19 deletions(-)

diff --git a/tests/data/reference.xml b/tests/data/reference.xml
index a23b44b..0dea38c 100644
--- a/tests/data/reference.xml
+++ b/tests/data/reference.xml
@@ -4,6 +4,7 @@
 	</testcase>
 	<testcase classname='test2' name='run-ptest'>
 		<failure type='exit_code' message='run-ptest exited with code: 1'></failure>
-		<system-out>ERROR</system-out>
+		<system-out>STDOUT ERROR</system-out>
+		<system-err>STDERR</system-err>
 	</testcase>
 </testsuite>
diff --git a/tests/utils.c b/tests/utils.c
index bb799f4..230116a 100644
--- a/tests/utils.c
+++ b/tests/utils.c
@@ -262,9 +262,9 @@ START_TEST(test_xml_pass)
 	ck_assert(xp != NULL);
         entry.ptest = "test1";
         entry.run_ptest = "run-ptest";
-        xml_add_case(xp, 0, &entry, "");
+        xml_add_case(xp, 0, &entry, "", "");
         entry.ptest = "test2";
-        xml_add_case(xp, 1, &entry, "ERROR");
+        xml_add_case(xp, 1, &entry, "STDOUT ERROR", "STDERR");
 	xml_finish(xp);
 
 	FILE *fp, *fr;
diff --git a/utils.c b/utils.c
index 54ef89d..0f712f9 100644
--- a/utils.c
+++ b/utils.c
@@ -295,7 +295,8 @@ wait_child(const char *ptest_dir,
 	   int timeout,
 	   int *fds,
 	   FILE **fps,
-	   char *buf)
+	   char *bufout,
+	   char *buferr)
 {
 	struct pollfd pfds[2];
 	time_t sentinel;
@@ -319,13 +320,13 @@ wait_child(const char *ptest_dir,
 			ssize_t n;
 
 			if (pfds[0].revents != 0) {
-				while ((n = read(fds[0], buf, WAIT_CHILD_BUF_MAX_SIZE)) > 0)
-					fwrite(buf, n, 1, fps[0]);
+				while ((n = read(fds[0], bufout, WAIT_CHILD_BUF_MAX_SIZE)) > 0)
+					fwrite(bufout, n, 1, fps[0]);
 			}
 
 			if (pfds[1].revents != 0) {
-				while ((n = read(fds[1], buf, WAIT_CHILD_BUF_MAX_SIZE)) > 0)
-					fwrite(buf, n, 1, fps[1]);
+				while ((n = read(fds[1], buferr, WAIT_CHILD_BUF_MAX_SIZE)) > 0)
+					fwrite(buferr, n, 1, fps[1]);
 			}
 
 		sentinel = time(NULL);
@@ -454,13 +455,15 @@ run_ptests(struct ptest_list *head, const struct ptest_options opts,
 				int status;
 				int fds[2]; fds[0] = pipefd_stdout[0]; fds[1] = pipefd_stderr[0];
 				FILE *fps[2]; fps[0] = fp; fps[1] = fp_stderr;
-				char buf[WAIT_CHILD_BUF_MAX_SIZE];
+				char bufout[WAIT_CHILD_BUF_MAX_SIZE];
+				char buferr[WAIT_CHILD_BUF_MAX_SIZE];
 
 //				fprintf(fp, "%s\n", get_stime(stime, GET_STIME_BUF_SIZE));
 				fprintf(fp, "BEGIN: %s\n", ptest_dir);
 
 				status = wait_child(ptest_dir, p->run_ptest, child,
-						    opts.timeout, fds, fps, buf);
+						    opts.timeout, fds, fps, bufout,
+						    buferr);
 				if (status)
 					rc += 1;
 
@@ -468,7 +471,8 @@ run_ptests(struct ptest_list *head, const struct ptest_options opts,
 					xml_add_case(xh,
 						     status,
 						     (struct ptest_entry *)p,
-						     buf);
+						     bufout,
+						     buferr);
 
 //				fprintf(fp, "%s\n", get_stime(stime, GET_STIME_BUF_SIZE));
 				/* Let non-master gracefully terminate */
@@ -502,14 +506,18 @@ run_ptests(struct ptest_list *head, const struct ptest_options opts,
 				int status;
 				int fds[2]; fds[0] = pipefd_stdout[0]; fds[1] = pipefd_stderr[0];
 				FILE *fps[2]; fps[0] = fp; fps[1] = fp_stderr;
-				char buf[WAIT_CHILD_BUF_MAX_SIZE];
+				char bufout[WAIT_CHILD_BUF_MAX_SIZE];
+				char buferr[WAIT_CHILD_BUF_MAX_SIZE];
+				
+				memset(bufout, 0, sizeof(bufout));
+				memset(buferr, 0, sizeof(buferr));
 
-				memset(buf, 0, sizeof(buf));
 				fprintf(fp, "%s\n", get_stime(stime, GET_STIME_BUF_SIZE));
 				fprintf(fp, "BEGIN: %s\n", ptest_dir);
 
 				status = wait_child(ptest_dir, p->run_ptest, child,
-						    opts.timeout, fds, fps, buf);
+						    opts.timeout, fds, fps, bufout,
+						    buferr);
 				if (status)
 					rc += 1;
 
@@ -517,7 +525,8 @@ run_ptests(struct ptest_list *head, const struct ptest_options opts,
 					xml_add_case(xh,
 						     status,
 						     (struct ptest_entry *)p,
-						     buf);
+						     bufout,
+						     buferr);
 
 				fprintf(fp, "END: %s\n", ptest_dir);
 				fprintf(fp, "%s\n", get_stime(stime, GET_STIME_BUF_SIZE));
@@ -556,7 +565,11 @@ xml_create(int test_count, char *xml_filename)
 }
 
 void
-xml_add_case(FILE *xh, int status, struct ptest_entry *ptest, char *buf)
+xml_add_case(FILE *xh,
+	     int status,
+	     struct ptest_entry *ptest,
+	     char *bufout,
+	     char *buferr)
 {
 	struct flock lock;
 	int fd;
@@ -577,11 +590,14 @@ xml_add_case(FILE *xh, int status, struct ptest_entry *ptest, char *buf)
 				"</failure>\n"				\
 				"\t\t<system-out>%s"			\
 				"</system-out>\n"			\
+				"\t\t<system-err>%s"			\
+				"</system-err>\n"			\
 				"\t</testcase>\n",
 				ptest->ptest,
 				basename(bname),
 				status,
-				buf);
+				bufout,
+				buferr);
 		}
 		else {
 			fprintf(xh, "\t<testcase classname='%s' name='%s'>\n" \
@@ -590,11 +606,14 @@ xml_add_case(FILE *xh, int status, struct ptest_entry *ptest, char *buf)
 				"</failure>\n"				\
 				"\t\t<system-out>%s"			\
 				"</system-out>\n"			\
+				"\t\t<system-err>%s"			\
+				"</system-err>\n"			\
 				"\t</testcase>\n",
 				ptest->ptest,
 				basename(bname),
 				status,
-				buf);
+				bufout,
+				buferr);
 		}
 	}
 	else {
diff --git a/utils.h b/utils.h
index 70e2abe..8f2e5b4 100644
--- a/utils.h
+++ b/utils.h
@@ -48,7 +48,7 @@ extern int run_ptests(struct ptest_list *, const struct ptest_options,
 		const char *, FILE *, FILE *);
 
 extern FILE *xml_create(int, char *);
-extern void xml_add_case(FILE *, int, struct ptest_entry *, char *);
+extern void xml_add_case(FILE *, int, struct ptest_entry *, char *, char *);
 extern void xml_finish(FILE *);
 
 #endif
-- 
1.8.3.1




More information about the yocto mailing list