]> git.ipfire.org Git - thirdparty/openembedded/openembedded-core-contrib.git/commitdiff
oeqa/runtime: Add debugging if networking fails
authorRichard Purdie <richard.purdie@linuxfoundation.org>
Sat, 19 Oct 2024 08:59:21 +0000 (09:59 +0100)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Tue, 11 Feb 2025 11:42:23 +0000 (11:42 +0000)
If networking fails, we can get useful informaiton over the serial connection. Add
this fallback code so that any issues can be more easily debugged by showing the
host and target networking states.

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
meta/lib/oeqa/runtime/case.py
meta/lib/oeqa/runtime/cases/ping.py
meta/lib/oeqa/runtime/cases/ssh.py

index f036982e1f87efab39efcf6c6955046b168fb4c8..9515ca2f3d622037b0a8845d7564f4489211f8ea 100644 (file)
@@ -4,6 +4,9 @@
 # SPDX-License-Identifier: MIT
 #
 
+import os
+import subprocess
+import time
 from oeqa.core.case import OETestCase
 from oeqa.utils.package_manager import install_package, uninstall_package
 
@@ -18,3 +21,16 @@ class OERuntimeTestCase(OETestCase):
     def tearDown(self):
         super(OERuntimeTestCase, self).tearDown()
         uninstall_package(self)
+
+def run_network_serialdebug(runner):
+    status, output = runner.run_serial("ip addr")
+    print("ip addr on target: %s %s" % (output, status))
+    status, output = runner.run_serial("ping -c 1 %s" % self.target.server_ip)
+    print("ping on target for %s: %s %s" % (self.target.server_ip, output, status))
+    status, output = runner.run_serial("ping -c 1 %s" % self.target.ip)
+    print("ping on target for %s: %s %s" % (self.target.ip, output, status))
+    # Have to use a full path for netstat which isn't in HOSTTOOLS
+    subprocess.call(["/usr/bin/netstat", "-tunape"])
+    subprocess.call(["/usr/bin/netstat", "-ei"])
+    subprocess.call(["ps", "-awx"], shell=True)
+    print("PID: %s %s" % (str(os.getpid()), time.time()))
index bc543f6c41e48469dfa5c460ced1987ee4012283..efb91d4cc9da93028e1ed29f339eeab6c7536a64 100644 (file)
@@ -7,7 +7,7 @@
 from subprocess import Popen, PIPE
 from time import sleep
 
-from oeqa.runtime.case import OERuntimeTestCase
+from oeqa.runtime.case import OERuntimeTestCase, run_network_serialdebug
 from oeqa.core.decorator.oetimeout import OETimeout
 from oeqa.core.exception import OEQATimeoutError
 
@@ -36,6 +36,7 @@ class PingTest(OERuntimeTestCase):
                     count = 0
                     sleep(1)
         except OEQATimeoutError:
+            run_network_serialdebug(self.target.runner)
             self.fail("Ping timeout error for address %s, count %s, output: %s" % (self.target.ip, count, output))
         msg = ('Expected 5 consecutive, got %d.\n'
                'ping output is:\n%s' % (count,output))
index 89d64430e5ce80e70dfdff3d097cf2218afc21a2..b632a29a0178bf1c0015b84bca8e3fc3fd18fa74 100644 (file)
@@ -7,7 +7,7 @@
 import time
 import signal
 
-from oeqa.runtime.case import OERuntimeTestCase
+from oeqa.runtime.case import OERuntimeTestCase, run_network_serialdebug
 from oeqa.core.decorator.depends import OETestDepends
 from oeqa.runtime.decorator.package import OEHasPackage
 
@@ -32,6 +32,7 @@ class SSHTest(OERuntimeTestCase):
               time.sleep(5)
               continue
           else:
+              run_network_serialdebug(self.target.runner)
               self.fail("uname failed with \"%s\" (exit code %s)" % (output, status))
         if status != 0:
             self.fail("ssh failed with \"%s\" (exit code %s)" % (output, status))