[ARVADOS] updated: 0c848aa00c9af71ea2c7a575d8ee04b420a5eae7
Git user
git at public.curoverse.com
Fri Apr 8 10:33:12 EDT 2016
Summary of changes:
sdk/cli/bin/crunch-job | 24 +++++++++++----
sdk/cwl/arvados_cwl/__init__.py | 1 +
sdk/cwl/tests/test_submit.py | 57 ++++++++++++++++++++++++++++++-----
sdk/python/arvados/events.py | 3 +-
sdk/python/tests/test_websockets.py | 40 ++++++++++++++++++++++--
services/fuse/arvados_fuse/fusedir.py | 5 +++
services/fuse/tests/test_cache.py | 45 +++++++++++++++++++++++++++
7 files changed, 158 insertions(+), 17 deletions(-)
create mode 100644 services/fuse/tests/test_cache.py
via 0c848aa00c9af71ea2c7a575d8ee04b420a5eae7 (commit)
via a2dc68267b5ff974460cef796820e7f8b90e04bc (commit)
via 86996de865c2b4d395c2a3977b05f7278924f627 (commit)
via ae6ced575905d226963516bb7780c2bae391621c (commit)
via 448ec6cc59fe837eb71c416a82b8a72a959eddc8 (commit)
via fc6f80e4d1157b4b69bad852be1a7bb921fcb91b (commit)
via 2d18e31468b269e526cb6e4918912b60a48540b2 (commit)
via f37349e9436294472bdbdec820c5ec44ebe64430 (commit)
via 9c3a1a10b702ec7ee79bb0aa1beb3c227bec95dd (commit)
via 91b379c4a76b8278354903158a65e5d47babd363 (commit)
via b8ae9ce66c24055f3bf66b0956e15c44c9dd51f0 (commit)
via 8b93280fb2fae252e29263660e9591fcaa2d8722 (commit)
via 55778ad90a9b869f514e729b3f85c12383f4e2a7 (commit)
via eea5f75077ca5d3adced3ad3d90f755d0fa5b3d8 (commit)
from a2c147e469bc4ccc0e788f2e72b2d94aa81ba368 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
commit 0c848aa00c9af71ea2c7a575d8ee04b420a5eae7
Author: radhika <radhika at curoverse.com>
Date: Fri Apr 8 10:32:33 2016 -0400
7658: add test that verifies reconnect retry behavior
diff --git a/sdk/python/arvados/events.py b/sdk/python/arvados/events.py
index 57bf3ae..942fb76 100644
--- a/sdk/python/arvados/events.py
+++ b/sdk/python/arvados/events.py
@@ -109,6 +109,7 @@ class EventClient(object):
def on_closed(self):
if self.is_closed == False:
+ _logger.warn("Unexpected close. Reconnecting.")
self.ec = _EventClient(self.url, self.filters, self.on_event, self.last_log_id, self.on_closed)
while True:
try:
@@ -117,7 +118,7 @@ class EventClient(object):
self.ec.subscribe(self.subscriptions[s], self.last_log_id)
break
except:
- _logger.warn("Failed to reconnect to websockets on %s. Will retry after 5s." % endpoint)
+ _logger.warn("Error during websocket reconnect. Will retry after 5s.")
time.sleep(5)
diff --git a/sdk/python/tests/test_websockets.py b/sdk/python/tests/test_websockets.py
index 98d84ad..9c8def8 100644
--- a/sdk/python/tests/test_websockets.py
+++ b/sdk/python/tests/test_websockets.py
@@ -1,9 +1,12 @@
import arvados
import arvados.events
from datetime import datetime, timedelta, tzinfo
+import logging
import mock
+import os
import Queue
import run_test_server
+import tempfile
import threading
import time
import unittest
@@ -18,8 +21,11 @@ class WebsocketTest(run_test_server.TestCaseWithServers):
self.ws = None
def tearDown(self):
- if self.ws:
- self.ws.close()
+ try:
+ if self.ws:
+ self.ws.close()
+ except Exception as e:
+ print("Error in teardown: ", e)
super(WebsocketTest, self).tearDown()
run_test_server.reset()
@@ -121,7 +127,7 @@ class WebsocketTest(run_test_server.TestCaseWithServers):
"""Convert minutes-east-of-UTC to ISO8601 time zone designator"""
return '{:+03d}{:02d}'.format(offset/60, offset%60)
- # Test websocket reconnection on unexecpted close
+ # Test websocket reconnection on (un)execpted close
def _test_websocket_reconnect(self, close_unexpected):
run_test_server.authorize_with('active')
events = Queue.Queue(100)
@@ -173,3 +179,31 @@ class WebsocketTest(run_test_server.TestCaseWithServers):
def test_websocket_no_reconnect_on_close_by_user(self):
self._test_websocket_reconnect(False)
+
+ # Test websocket reconnection retry
+ @mock.patch('arvados.events._EventClient.connect')
+ def test_websocket_reconnect_retry(self, event_client_connect):
+ event_client_connect.side_effect = [None, Exception('EventClient.connect error'), None]
+
+ log_file = tempfile.NamedTemporaryFile(suffix='log.out', delete=True)
+ logging.basicConfig(filename=log_file.name, level=logging.DEBUG,)
+
+ run_test_server.authorize_with('active')
+ events = Queue.Queue(100)
+
+ filters = [['object_uuid', 'is_a', 'arvados#human']]
+ self.ws = arvados.events.subscribe(
+ arvados.api('v1'), filters,
+ events.put_nowait,
+ poll_fallback=False,
+ last_log_id=None)
+ self.assertIsInstance(self.ws, arvados.events.EventClient)
+
+ # simulate improper close
+ self.ws.on_closed()
+
+ # verify log messages to ensure retry happened
+ log_messages = log_file.read()
+ found = log_messages.find("Error during websocket reconnect. Will retry")
+ self.assertNotEqual(found, -1)
+ os.unlink(log_file.name)
commit a2dc68267b5ff974460cef796820e7f8b90e04bc
Merge: a2c147e 86996de
Author: radhika <radhika at curoverse.com>
Date: Thu Apr 7 11:21:57 2016 -0400
Merge branch 'master' into 7658-websockets-reconnect-on-close
-----------------------------------------------------------------------
hooks/post-receive
--
More information about the arvados-commits
mailing list