Add option to expect bts/pcu failures and respawn its processes

Some tests may want to reproduce some scenarios in which it is expected
that a BTS process is stopped, for instance if the BSC link is dropped.
Provide a keepalive parameter to start() for bts and pcu objects to
inform suite that failures are expected and that it should keep them
alive in case that ocurrs by respawning the BTS process.

Change-Id: Ia2a7539f9fad457125ac9b60a52a52999e885ba8
diff --git a/src/osmo_gsm_tester/pcu_sysmo.py b/src/osmo_gsm_tester/pcu_sysmo.py
index 675de50..b97852a 100644
--- a/src/osmo_gsm_tester/pcu_sysmo.py
+++ b/src/osmo_gsm_tester/pcu_sysmo.py
@@ -43,7 +43,7 @@
         self.remote_env = {}
         self.remote_user = 'root'
 
-    def start(self):
+    def start(self, keepalive=False):
         self.run_dir = util.Dir(self.suite_run.get_test_run_dir().new_dir(self.name()))
         self.configure()
 
@@ -75,7 +75,7 @@
             ('LD_LIBRARY_PATH=%s' % remote_lib,
              remote_binary, '-c', remote_config_file, '-r', '1',
              '-i', self.sysmobts.bsc.addr()),
-            remote_cwd=remote_run_dir)
+            remote_cwd=remote_run_dir, keepalive=keepalive)
 
     def _process_remote(self, name, popen_args, remote_cwd=None):
         run_dir = self.run_dir.new_dir(name)
@@ -90,9 +90,9 @@
             log.ctx(proc)
             raise log.Error('Exited in error')
 
-    def launch_remote(self, name, popen_args, remote_cwd=None):
+    def launch_remote(self, name, popen_args, remote_cwd=None, keepalive=False):
         proc = self._process_remote(name, popen_args, remote_cwd)
-        self.suite_run.remember_to_stop(proc)
+        self.suite_run.remember_to_stop(proc, keepalive)
         proc.launch()
 
     def run_local(self, name, popen_args):