memif: socket filename add/del bugfix
[vpp.git] / test / hook.py
index 0ef1377..7287aaa 100644 (file)
@@ -1,8 +1,11 @@
 import signal
 import os
+import sys
 import traceback
 from log import RED, single_line_delim, double_line_delim
 from debug import spawn_gdb
+from subprocess import check_output, CalledProcessError
+from util import check_core_path
 
 
 class Hook(object):
@@ -62,10 +65,22 @@ class PollHook(Hook):
 
     def on_crash(self, core_path):
         if self.testcase.debug_core:
+            # notify parent process that we're handling a core file
+            open('%s/_core_handled' % self.testcase.tempdir, 'a').close()
             spawn_gdb(self.testcase.vpp_bin, core_path, self.logger)
         else:
-            self.logger.critical("Core file present, debug with: gdb %s %s" %
-                                 (self.testcase.vpp_bin, core_path))
+            self.logger.error("Core file present, debug with: gdb %s %s" %
+                              (self.testcase.vpp_bin, core_path))
+            check_core_path(self.logger, core_path)
+            self.logger.error("Running `file %s':" % core_path)
+            try:
+                info = check_output(["file", core_path])
+                self.logger.error(info)
+            except CalledProcessError as e:
+                self.logger.error(
+                    "Could not run `file' utility on core-file, "
+                    "rc=%s" % e.returncode)
+                pass
 
     def poll_vpp(self):
         """
@@ -161,18 +176,19 @@ class StepHook(PollHook):
             print('%02d.\t%s\t%s:%d\t[%s]' % (counter, e[2], e[0], e[1], e[3]))
             counter += 1
         print(single_line_delim)
-        print("You can enter a number of stack frame chosen from above")
+        print("You may enter a number of stack frame chosen from above")
         print("Calls in/below that stack frame will be not be stepped anymore")
         print(single_line_delim)
         while True:
-            choice = raw_input("Enter your choice, if any, and press ENTER to "
-                               "continue running the testcase...")
+            print("Enter your choice, if any, and press ENTER to continue "
+                  "running the testcase...")
+            choice = sys.stdin.readline().rstrip('\r\n')
             if choice == "":
                 choice = None
             try:
                 if choice is not None:
                     num = int(choice)
-            except:
+            except ValueError:
                 print("Invalid input")
                 continue
             if choice is not None and (num < 0 or num >= len(stack)):