commit 1fb05dc3b77ca5600303f9d0433b5446081861be Author: srvetus srvetus@users.noreply.github.com Date: Thu Dec 10 21:03:58 2015 +0100
Log failure when OpenVPN process hangs for user input --- ooni/nettests/third_party/openvpn.py | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-)
diff --git a/ooni/nettests/third_party/openvpn.py b/ooni/nettests/third_party/openvpn.py index 028bf17..bc2f0ea 100644 --- a/ooni/nettests/third_party/openvpn.py +++ b/ooni/nettests/third_party/openvpn.py @@ -57,6 +57,15 @@ class OpenVPNTest(ProcessTest): self.processDirector.transport.signalProcess('TERM') self.exited = True
+ def inConnectionLost(self): + """Monkeypatch inConnectionLost to log failure if the process ends + unexpectedly before OpenVPN bootstraps. + """ + log.debug("inConnectionLost") + + if not self.bootstrapped.called: + self.bootstrapped.errback(Exception("openvpn_exited_unexpectedly")) + def processExited(self, reason): """Monkeypatch processExited to log failure if the process ends unexpectedly before OpenVPN bootstraps. @@ -64,9 +73,11 @@ class OpenVPNTest(ProcessTest): log.debug("Exited %s" % handleAllFailures(reason))
# Process exited before OpenVPN bootstrapped. Add failure to report + # if it is not added already if not self.bootstrapped.called: self.bootstrapped.errback(Exception("openvpn_exited_unexpectedly"))
+ def handleRead(self, stdout=None, stderr=None): """handleRead is called with each chunk of data from stdout and stderr
@@ -116,7 +127,8 @@ class OpenVPNTest(ProcessTest): log.debug("Spawning OpenVPN") self.d = self.run(self.command)
- # Monkeypatch processExited to log when OpenVPN exits early + # Monkeypatch inConnectionLost and processExited to log when OpenVPN exits early + self.processDirector.inConnectionLost = self.inConnectionLost self.processDirector.processExited = self.processExited
# Try to make a request when the OpenVPN connection successfully bootstraps