On 15/02/2023 14.38, Fabiano Rosas wrote:
Daniel P. BerrangĂ© <[email protected]> writes:

On Wed, Feb 15, 2023 at 01:41:22PM +0100, Thomas Huth wrote:
We are facing the issues that some test logs in the gitlab CI are
too big (and thus cut off). The rtl8139-test is one of the few qtests
that prints many lines of output by default when running with V=1, so
it contributes to this problem. Almost all other qtests are silent
with V=1 and only print debug messages with V=2 and higher. Thus let's
change the rtl8139-test to behave more like the other tests and only
print the debug messages with V=2 (or higher).

Signed-off-by: Thomas Huth <[email protected]>
---
  tests/qtest/rtl8139-test.c | 15 +++++++++++++--
  1 file changed, 13 insertions(+), 2 deletions(-)

Reviewed-by: Daniel P. BerrangĂ© <[email protected]>


diff --git a/tests/qtest/rtl8139-test.c b/tests/qtest/rtl8139-test.c
index 8fa3313cc3..1beb83805c 100644
--- a/tests/qtest/rtl8139-test.c
+++ b/tests/qtest/rtl8139-test.c
@@ -12,6 +12,8 @@
  #include "libqos/pci-pc.h"
  #include "qemu/timer.h"
+static int verbosity_level;
+
  /* Tests only initialization so far. TODO: Replace with functional tests */
  static void nop(void)
  {
@@ -45,12 +47,16 @@ static QPCIDevice *get_device(void)
  static unsigned __attribute__((unused)) in_##name(void) \
  { \
      unsigned res = qpci_io_read##len(dev, dev_bar, (val));     \
-    g_test_message("*%s -> %x", #name, res); \
+    if (verbosity_level >= 2) { \
+        g_test_message("*%s -> %x", #name, res); \
+    } \
      return res; \
  } \
  static void out_##name(unsigned v) \
  { \
-    g_test_message("%x -> *%s", v, #name); \
+    if (verbosity_level >= 2) { \
+        g_test_message("%x -> *%s", v, #name); \
+    } \
      qpci_io_write##len(dev, dev_bar, (val), v);        \
  }
@@ -195,6 +201,11 @@ static void test_init(void)
  int main(int argc, char **argv)
  {
      int ret;
+    char *v_env = getenv("V");
+
+    if (v_env) {
+        verbosity_level = atoi(v_env);
+    }

*Not* something I'm requesting you to do now, just an observation / idea.

We've copied this pattern into several tests.

It is starting to feel like we should have a header with a
'qtests_env_setup()' method we call as first thing in main,
and exporting 'verbosity_level' from the header.

Perhaps also with a  'qtest_verbose(...)' macro that wraps

   if (verbosity_level >= 2) {
      g_test_message(...)
   }

Agree, we could generalize this stuff somehow ... maybe also simply adding a qtest_log(int level, char *format, ...) function that does the getenv() checking on the first invocation, or something like that.

Could we maybe play with g_test_verbose and g_test_quiet? The docs say
"The default is neither g_test_verbose() nor g_test_quiet()."  So
perhaps:

V=    --quiet, g_test_quiet
V=1 no option, default verbosity
V=2 --verbose, g_test_verbose

Then test g_test_quiet|verbose instead of reading from env directly.

Sounds like an option, too ... but we would not have a V=3 level that way (which is already used in qom-test.c - not sure whether we really need it, though, we could use V=2 for all debug messages, too).

 Thomas




Reply via email to