fixeria has submitted this change. ( 
https://gerrit.osmocom.org/c/osmo-msc/+/41127?usp=email )

Change subject: tests/{ctrl,vty}_test_runner.py: dump stdout/stderr
......................................................................

tests/{ctrl,vty}_test_runner.py: dump stdout/stderr

>From time to time, we're seeing the following error in Jenkins:

----------------------------------------------------------------------
Traceback (most recent call last):
  File ".../tests/vty_test_runner.py", line 70, in tearDown
    raise Exception("Process returned %d" % rc)
Exception: Process returned -9
----------------------------------------------------------------------

Let's dump stdout/stderr of the process to get more information.

Change-Id: Ie6a2f5b1bc56d35513643b52923403798e5a0a5a
Related: OS#5665
---
M tests/ctrl_test_runner.py
M tests/vty_test_runner.py
2 files changed, 37 insertions(+), 2 deletions(-)

Approvals:
  Jenkins Builder: Verified
  pespin: Looks good to me, but someone else must approve
  osmith: Looks good to me, approved




diff --git a/tests/ctrl_test_runner.py b/tests/ctrl_test_runner.py
index 16d1e7c..127d747 100755
--- a/tests/ctrl_test_runner.py
+++ b/tests/ctrl_test_runner.py
@@ -26,6 +26,8 @@
 import socket
 import sys
 import struct
+import subprocess
+import tempfile

 import osmopy.obscvty as obscvty
 import osmopy.osmoutil as osmoutil
@@ -50,8 +52,12 @@
             cfi = config_index + 1
             osmo_ctrl_cmd[cfi] = os.path.join(confpath, osmo_ctrl_cmd[cfi])

+        self.stdout = tempfile.TemporaryFile()
+        self.stderr = tempfile.TemporaryFile()
         try:
-            self.proc = osmoutil.popen_devnull(osmo_ctrl_cmd)
+            # self.proc = osmoutil.popen_devnull(osmo_ctrl_cmd)
+            print("Launching: PWD=%s %s" % (os.getcwd(), ' '.join([repr(c) for 
c in osmo_ctrl_cmd])))
+            self.proc = subprocess.Popen(osmo_ctrl_cmd, stdout=self.stdout, 
stderr=self.stderr)
         except OSError:
             print("Current directory: %s" % os.getcwd(), file=sys.stderr)
             print("Consider setting -b", file=sys.stderr)
@@ -62,11 +68,23 @@
         self.connect("127.0.0.1", appport)
         self.next_id = 1000

+    def dump_file(self, file, name):
+        file.seek(0)
+        data = file.read()
+        print('=' * 80)
+        print(name)
+        print('=' * 80)
+        print(data.decode())
+
     def tearDown(self):
         self.disconnect()
         rc = osmoutil.end_proc(self.proc)
         if rc is not None and rc != 0:
+            self.dump_file(self.stdout, 'stdout')
+            self.dump_file(self.stderr, 'stderr')
             raise Exception("Process returned %d" % rc)
+        self.stdout.close()
+        self.stderr.close()

     def disconnect(self):
         if not (self.sock is None):
diff --git a/tests/vty_test_runner.py b/tests/vty_test_runner.py
index 2dfa155..571080e 100755
--- a/tests/vty_test_runner.py
+++ b/tests/vty_test_runner.py
@@ -20,6 +20,7 @@
 import unittest
 import socket
 import subprocess
+import tempfile

 import osmopy.obscvty as obscvty
 import osmopy.osmoutil as osmoutil
@@ -51,8 +52,12 @@
             cfi = config_index + 1
             osmo_vty_cmd[cfi] = os.path.join(confpath, osmo_vty_cmd[cfi])

+        self.stdout = tempfile.TemporaryFile()
+        self.stderr = tempfile.TemporaryFile()
         try:
-            self.proc = osmoutil.popen_devnull(osmo_vty_cmd)
+            # self.proc = osmoutil.popen_devnull(osmo_vty_cmd)
+            print("Launching: PWD=%s %s" % (os.getcwd(), ' '.join([repr(c) for 
c in osmo_vty_cmd])))
+            self.proc = subprocess.Popen(osmo_vty_cmd, stdout=self.stdout, 
stderr=self.stderr)
         except OSError:
             print("Current directory: %s" % os.getcwd(), file=sys.stderr)
             print("Consider setting -b", file=sys.stderr)
@@ -61,13 +66,25 @@
         appport = self.vty_app()[0]
         self.vty = obscvty.VTYInteract(appstring, "127.0.0.1", appport)

+    def dump_file(self, file, name):
+        file.seek(0)
+        data = file.read()
+        print('=' * 80)
+        print(name)
+        print('=' * 80)
+        print(data.decode())
+
     def tearDown(self):
         if self.vty:
             self.vty._close_socket()
         self.vty = None
         rc = osmoutil.end_proc(self.proc)
         if rc is not None and rc != 0:
+            self.dump_file(self.stdout, 'stdout')
+            self.dump_file(self.stderr, 'stderr')
             raise Exception("Process returned %d" % rc)
+        self.stdout.close()
+        self.stderr.close()

 class TestVTYMSC(TestVTYBase):


--
To view, visit https://gerrit.osmocom.org/c/osmo-msc/+/41127?usp=email
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.osmocom.org/settings?usp=email

Gerrit-MessageType: merged
Gerrit-Project: osmo-msc
Gerrit-Branch: master
Gerrit-Change-Id: Ie6a2f5b1bc56d35513643b52923403798e5a0a5a
Gerrit-Change-Number: 41127
Gerrit-PatchSet: 2
Gerrit-Owner: fixeria <vyanits...@sysmocom.de>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: fixeria <vyanits...@sysmocom.de>
Gerrit-Reviewer: osmith <osm...@sysmocom.de>
Gerrit-Reviewer: pespin <pes...@sysmocom.de>

Reply via email to