<p>pespin has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-gsm-tester/+/18659">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">process: Improve launch_sync() exception due to process failing<br><br>After this commit, in some situations ssh related errors are printed<br>directly in the exception to quickly find cause of the issue.<br><br>Example:<br>    FAIL: ping.py (5.0 sec) Error: rm-remote-dir(pid=25913): launch_sync(): local ssh process exited with status 255 (ssh: connect to host 10.42.42.110 port 22: No route to host) [trial↪4g:srsue-rftype@zmq+srsenb-rftype@zmq+mod-enb-nprb@6↪ping.py:9↪ping.py↪srsepc_10.42.42.118↪host-jenkins@10.42.42.110↪rm-remote-dir(pid=25913)]<br><br>Change-Id: Ia16c7dec96f70d761600ad6a50d9df8382d9c2c8<br>---<br>M src/osmo_gsm_tester/core/process.py<br>1 file changed, 17 insertions(+), 1 deletion(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-gsm-tester refs/changes/59/18659/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/osmo_gsm_tester/core/process.py b/src/osmo_gsm_tester/core/process.py</span><br><span>index 36ed057..33ae69a 100644</span><br><span>--- a/src/osmo_gsm_tester/core/process.py</span><br><span>+++ b/src/osmo_gsm_tester/core/process.py</span><br><span>@@ -196,7 +196,7 @@</span><br><span>             self.terminate()</span><br><span>             raise e</span><br><span>         if raise_nonsuccess and self.result != 0:</span><br><span style="color: hsl(0, 100%, 40%);">-            raise log.Error('Exited in error %d' % self.result)</span><br><span style="color: hsl(120, 100%, 40%);">+            raise self.RunError('launch_sync()')</span><br><span>         return self.result</span><br><span> </span><br><span>     def respawn(self):</span><br><span>@@ -357,6 +357,11 @@</span><br><span>             self.process_obj.stdin.write(cmd.encode("utf-8"))</span><br><span>             self.process_obj.stdin.flush()</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+    def RunError(self, msg_prefix):</span><br><span style="color: hsl(120, 100%, 40%);">+        'Get a log.Error filled in with Result information. Use when program is terminated and result !=0'</span><br><span style="color: hsl(120, 100%, 40%);">+        msg = '%s: local process exited with status %d' % (msg_prefix, self.result)</span><br><span style="color: hsl(120, 100%, 40%);">+        return log.Error(msg)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> class RemoteProcess(Process):</span><br><span> </span><br><span>     def __init__(self, name, run_dir, remote_user, remote_host, remote_cwd, popen_args, remote_env={}, **popen_kwargs):</span><br><span>@@ -382,6 +387,17 @@</span><br><span>                                          ' '.join(self.popen_args))]</span><br><span>         self.dbg(self.popen_args, dir=self.run_dir, conf=self.popen_kwargs, remote_env=self.remote_env)</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+    def RunError(self, msg_prefix):</span><br><span style="color: hsl(120, 100%, 40%);">+        'Overwrite Process method with ssh extra information'</span><br><span style="color: hsl(120, 100%, 40%);">+        # man ssh states it returns 255 if an ssh error occurred:</span><br><span style="color: hsl(120, 100%, 40%);">+        msg = msg_prefix + ': '</span><br><span style="color: hsl(120, 100%, 40%);">+        if self.result == 255:</span><br><span style="color: hsl(120, 100%, 40%);">+            tail = ' (' + (self.get_stderr_tail(tail=1, prefix='') or '').rstrip() + ')'</span><br><span style="color: hsl(120, 100%, 40%);">+            msg += 'local ssh process exited with status %d%s' % (self.result, tail if 'ssh' in tail else '')</span><br><span style="color: hsl(120, 100%, 40%);">+        else:</span><br><span style="color: hsl(120, 100%, 40%);">+            msg += 'remote process exited with status %d' % (self.result)</span><br><span style="color: hsl(120, 100%, 40%);">+        return log.Error(msg)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> class NetNSProcess(Process):</span><br><span>     NETNS_EXEC_BIN = 'osmo-gsm-tester_netns_exec.sh'</span><br><span>     def __init__(self, name, run_dir, netns, popen_args, **popen_kwargs):</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-gsm-tester/+/18659">change 18659</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/c/osmo-gsm-tester/+/18659"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-gsm-tester </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: Ia16c7dec96f70d761600ad6a50d9df8382d9c2c8 </div>
<div style="display:none"> Gerrit-Change-Number: 18659 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>