Fix stability issues at the end of testcase run. 11/1011/2
authorMartin Klozik <martinx.klozik@intel.com>
Tue, 14 Jul 2015 00:48:09 +0000 (01:48 +0100)
committerMaryam Tahhan <maryam.tahhan@intel.com>
Fri, 17 Jul 2015 08:51:51 +0000 (08:51 +0000)
Cleanup procedure is performed at the end of each testcase run.
Procedure consists of termination of vswitch processes,
removal of unneeded kernel drivers, unmount of hugepages, etc.
There must be enough time for vswitch processes to terminate
properly before OS resources are freed. Otherwise OS stability
issues can be observed (e.g. server reboot).
Process termination is implemented by sending signal SIGTERM
to the process instead of previously used signal SIGINT.

Change-Id: I7e8c7a86ae2a75f2a18db0d9340726fb649a685b
JIRA: VSPERF-27
Signed-off-by: Martin Klozik <martinx.klozik@intel.com>
Reviewed-by: Maryam Tahhan <maryam.tahhan@intel.com>
Reviewed-by: Billy O Mahony <billy.o.mahony@intel.com>
Reviewed-by: Eugene Snider <Eugene.Snider@huawei.com>
Reviewed-by: Gurpreet Singh <gurpreet.singh@spirent.com>
Reviewed-by: Tv Rao <tv.rao@freescale.com>
src/ovs/daemon.py
tools/tasks.py

index ee3446d..323644c 100644 (file)
@@ -138,5 +138,5 @@ class VSwitchd(tasks.Process):
         :returns: None
         """
         if self._ovsdb_pid:
-            tasks.run_task(['sudo', 'kill', '-2', str(self._ovsdb_pid)],
+            tasks.run_task(['sudo', 'kill', '-15', str(self._ovsdb_pid)],
                            self._logger, 'Killing ovsdb-server...')
index f8f11d4..555a592 100644 (file)
@@ -23,6 +23,7 @@ import threading
 import sys
 import os
 import locale
+import time
 
 from conf import settings
 
@@ -244,8 +245,10 @@ class Process(object):
         """Kill process instance if it is alive.
         """
         if self._child and self._child.isalive():
-            run_task(['sudo', 'kill', '-2', str(self._child.pid)],
+            run_task(['sudo', 'kill', '-15', str(self._child.pid)],
                      self._logger)
+            self._logger.debug('Wait for process to terminate')
+            time.sleep(2)
 
             if self.is_relinquished():
                 self._relinquish_thread.join()