diff mbox series

bitbake: toaster: add functional testing toaster error details

Message ID 20231212202428.1374197-1-alexander.lussier-cullen@savoirfairelinux.com
State New
Headers show
Series bitbake: toaster: add functional testing toaster error details | expand

Commit Message

Alexander Lussier-Cullen Dec. 12, 2023, 8:24 p.m. UTC
Functional tests can sometimes fail to initialize toaster.
Most often this is due to a conflict on port 8000.
Add command information about whichever other process is running on
that port to better describe the initialization failure.

Signed-off-by: Alexander Lussier-Cullen <alexander.lussier-cullen@savoirfairelinux.com>
---
 .../lib/toaster/tests/functional/functional_helpers.py | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)
diff mbox series

Patch

diff --git a/bitbake/lib/toaster/tests/functional/functional_helpers.py b/bitbake/lib/toaster/tests/functional/functional_helpers.py
index d3e037a6d0..09cf3ba8e0 100644
--- a/bitbake/lib/toaster/tests/functional/functional_helpers.py
+++ b/bitbake/lib/toaster/tests/functional/functional_helpers.py
@@ -28,7 +28,7 @@  class SeleniumFunctionalTestCase(SeleniumTestCaseBase):
         # So that the buildinfo helper uses the test database'
         if os.environ.get('DJANGO_SETTINGS_MODULE', '') != \
             'toastermain.settings_test':
-            raise RuntimeError("Please initialise django with the tests settings:  " \
+            raise RuntimeError("Please initialise django with the tests settings:  "
                 "DJANGO_SETTINGS_MODULE='toastermain.settings_test'")
 
         # start toaster
@@ -38,7 +38,13 @@  class SeleniumFunctionalTestCase(SeleniumTestCaseBase):
             cwd=os.environ.get("BUILDDIR"),
             shell=True)
         if cls.p.wait() != 0:
-            raise RuntimeError("Can't initialize toaster")
+            port_use = os.popen("lsof -i -P -n | grep '8000 (LISTEN)'").read().strip()
+            message = ''
+            if port_use:
+                process_id = port_use.split()[1]
+                process = os.popen(f"ps -o cmd= -p {process_id}").read().strip()
+                message = f"Port 8000 occupied by {process}"
+            raise RuntimeError(f"Can't initialize toaster. {message}")
 
         super(SeleniumFunctionalTestCase, cls).setUpClass()
         cls.live_server_url = 'http://localhost:8000/'