summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKlement Sekera <ksekera@cisco.com>2016-11-03 05:36:01 +0100
committerDamjan Marion <dmarion.lists@gmail.com>2016-11-03 16:43:04 +0000
commit931be3aca223e094241a92ae7184ff97375fa155 (patch)
tree4708e25d2f2ede55ecc37c86c847c87d004d1f38
parentbdb1f8193736c0c63429d049397d4783959c1148 (diff)
Test framework: improve gdbserver handling
Produce a user-friendly message if gdbserver is not available, instead of cryptic exception. Change-Id: Ia0d99e0488d2ee6e8af764b466dae2639f17ea55 Signed-off-by: Klement Sekera <ksekera@cisco.com>
-rw-r--r--test/framework.py26
1 files changed, 19 insertions, 7 deletions
diff --git a/test/framework.py b/test/framework.py
index ed71908c..b10592cf 100644
--- a/test/framework.py
+++ b/test/framework.py
@@ -152,13 +152,24 @@ class VppTestCase(unittest.TestCase):
cmdline = cls.vpp_cmdline
if cls.debug_gdbserver:
- cmdline = ['gdbserver', 'localhost:7777'] + cls.vpp_cmdline
+ gdbserver = '/usr/bin/gdbserver'
+ if not os.path.isfile(gdbserver) or \
+ not os.access(gdbserver, os.X_OK):
+ raise Exception("gdbserver binary '%s' does not exist or is "
+ "not executable" % gdbserver)
+
+ cmdline = [gdbserver, 'localhost:7777'] + cls.vpp_cmdline
cls.logger.info("Gdbserver cmdline is %s", " ".join(cmdline))
- cls.vpp = subprocess.Popen(cmdline,
- stdout=subprocess.PIPE,
- stderr=subprocess.PIPE,
- bufsize=1)
+ try:
+ cls.vpp = subprocess.Popen(cmdline,
+ stdout=subprocess.PIPE,
+ stderr=subprocess.PIPE,
+ bufsize=1)
+ except Exception as e:
+ cls.logger.critical("Couldn't start vpp: %s" % e)
+ raise
+
cls.wait_for_enter()
@classmethod
@@ -209,8 +220,9 @@ class VppTestCase(unittest.TestCase):
target=pump_output, args=(cls.vpp.stderr, cls.vpp_stderr_queue))
cls.vpp_stderr_reader_thread.start()
except:
- cls.vpp.terminate()
- del cls.vpp
+ if hasattr(cls, 'vpp'):
+ cls.vpp.terminate()
+ del cls.vpp
raise
@classmethod