From 900151dff1bbea9d37848143989583bf91c5d344 Mon Sep 17 00:00:00 2001
From: "Richard W.M. Jones" <rjones@redhat.com>
Date: Sat, 2 Apr 2016 11:01:30 +0100
Subject: [PATCH] tests/qemu: Standardize test info printed by boot-* tests.
It now looks like:
test version: libguestfs 1.33.16
test passes: 5
host version: Linux moo 4.4.4-301.fc23.x86_64 #1 SMP Fri Mar 4 17:42:42 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
host CPU: Intel(R) Core(TM) i7-5600U CPU @ 2.60GHz
backend: direct
qemu: /home/rjones/d/qemu/x86_64-softmmu/qemu-system-x86_64
qemu version: QEMU emulator version 2.5.90, Copyright (c) 2003-2008 Fabrice Bellard
smp: 1
memsize: 500
append: guestfs_boot_analysis=1 ignore_loglevel initcall_debug
(cherry picked from commit 014b7c0ced2dc57ca2dda0c43873359497f8672b)
---
tests/qemu/boot-analysis-utils.c | 37 +++++++++++++++++++++++++++++++++++++
tests/qemu/boot-analysis-utils.h | 6 ++++++
tests/qemu/boot-analysis.c | 38 +++-----------------------------------
tests/qemu/boot-benchmark.c | 7 +------
4 files changed, 47 insertions(+), 41 deletions(-)
diff --git a/tests/qemu/boot-analysis-utils.c b/tests/qemu/boot-analysis-utils.c
index e885f3b..bcd470e 100644
--- a/tests/qemu/boot-analysis-utils.c
+++ b/tests/qemu/boot-analysis-utils.c
@@ -24,6 +24,8 @@
#include <error.h>
#include <errno.h>
+#include "ignore-value.h"
+
#include "guestfs.h"
#include "guestfs-internal-frontend.h"
@@ -45,3 +47,38 @@ timespec_diff (const struct timespec *x, const struct timespec *y)
nsec += y->tv_nsec - x->tv_nsec;
return nsec;
}
+
+void
+test_info (guestfs_h *g, int nr_test_passes)
+{
+ const char *qemu = guestfs_get_hv (g);
+ CLEANUP_FREE char *cmd = NULL;
+
+ /* Related to the test program. */
+ printf ("test version: %s %s\n", PACKAGE_NAME, PACKAGE_VERSION_FULL);
+ printf (" test passes: %d\n", nr_test_passes);
+
+ /* Related to the host. */
+ printf ("host version: ");
+ fflush (stdout);
+ ignore_value (system ("uname -a"));
+ printf (" host CPU: ");
+ fflush (stdout);
+ ignore_value (system ("perl -n -e 'if (/^model name.*: (.*)/) { print \"$1\\n\"; exit }' /proc/cpuinfo"));
+
+ /* Related to qemu. */
+ printf (" backend: %s\n", guestfs_get_backend (g));
+ printf (" qemu: %s\n", qemu);
+ printf ("qemu version: ");
+ fflush (stdout);
+ if (asprintf (&cmd, "%s -version", qemu) == -1)
+ error (EXIT_FAILURE, errno, "asprintf");
+ ignore_value (system (cmd));
+ printf (" smp: %d\n", guestfs_get_smp (g));
+ printf (" memsize: %d\n", guestfs_get_memsize (g));
+
+ /* Related to the guest kernel. Be nice to get the guest
+ * kernel version here somehow (XXX).
+ */
+ printf (" append: %s\n", guestfs_get_append (g) ? : "");
+}
diff --git a/tests/qemu/boot-analysis-utils.h b/tests/qemu/boot-analysis-utils.h
index 83fc494..95e4f06 100644
--- a/tests/qemu/boot-analysis-utils.h
+++ b/tests/qemu/boot-analysis-utils.h
@@ -27,4 +27,10 @@ extern void get_time (struct timespec *ts);
/* Computes Y - X, returning nanoseconds. */
extern int64_t timespec_diff (const struct timespec *x, const struct timespec *y);
+/* Display host machine and test parameters (to stdout). 'g' should
+ * be an open libguestfs handle. It is used for reading hv, memsize
+ * etc. and is not modified.
+ */
+extern void test_info (guestfs_h *g, int nr_test_passes);
+
#endif /* GUESTFS_BOOT_ANALYSIS_UTILS_H_ */
diff --git a/tests/qemu/boot-analysis.c b/tests/qemu/boot-analysis.c
index 9ab228a..f4c1d6c 100644
--- a/tests/qemu/boot-analysis.c
+++ b/tests/qemu/boot-analysis.c
@@ -73,8 +73,6 @@
#include <assert.h>
#include <math.h>
-#include "ignore-value.h"
-
#include "guestfs.h"
#include "guestfs-internal-frontend.h"
@@ -105,7 +103,6 @@ static void check_pass_data (void);
static void dump_pass_data (void);
static void analyze_timeline (void);
static void dump_timeline (void);
-static void print_info (void);
static void print_analysis (void);
static void print_longest_to_shortest (void);
static void free_pass_data (void);
@@ -254,7 +251,9 @@ run_test (void)
dump_timeline ();
printf ("\n");
- print_info ();
+ g = create_handle ();
+ test_info (g, NR_TEST_PASSES);
+ guestfs_close (g);
printf ("\n");
print_analysis ();
printf ("\n");
@@ -823,37 +822,6 @@ dump_timeline (void)
}
}
-/* Print some information that will allow us to determine the test
- * system when reviewing the results in future.
- */
-static void
-print_info (void)
-{
- size_t i;
-
- printf ("%s %s\n", PACKAGE_NAME, PACKAGE_VERSION_FULL);
-
- printf ("Host:\n");
- ignore_value (system ("uname -a"));
- ignore_value (system ("grep '^model name' /proc/cpuinfo | head -1"));
-
- /* We can dig some information about qemu and the appliance out of
- * the events.
- */
- printf ("Appliance:\n");
- assert (NR_TEST_PASSES > 0);
- for (i = 0; i < pass_data[0].nr_events; ++i) {
- const char *message = pass_data[0].events[i].message;
- if (strstr (message, "qemu version") ||
- (strstr (message, "SeaBIOS") && strstr (message, "version")) ||
- strstr (message, "Linux version") ||
- (strstr (message, "supermin") && strstr (message, "starting up"))) {
- print_escaped_string (message);
- putchar ('\n');
- }
- }
-}
-
static void
print_activity (struct activity *activity)
{
diff --git a/tests/qemu/boot-benchmark.c b/tests/qemu/boot-benchmark.c
index 2a6a038..0508ee9 100644
--- a/tests/qemu/boot-benchmark.c
+++ b/tests/qemu/boot-benchmark.c
@@ -179,13 +179,8 @@ run_test (void)
/* Print the test parameters. */
printf ("\n");
- printf (" passes %d\n", NR_TEST_PASSES);
g = create_handle ();
- printf (" append %s\n", guestfs_get_append (g) ? : "");
- printf ("backend %s\n", guestfs_get_backend (g));
- printf (" hv %s\n", guestfs_get_hv (g));
- printf ("memsize %d\n", guestfs_get_memsize (g));
- printf (" smp %d\n", guestfs_get_smp (g));
+ test_info (g, NR_TEST_PASSES);
guestfs_close (g);
/* Print the result. */
--
1.8.3.1