Skip to content

Commit 6c97010

Browse files
committed
Merge branch 'feature/streaming' of github.com:splitio/python-client into tests/push_integration
2 parents 5c4c402 + d32dcb5 commit 6c97010

File tree

5 files changed

+75
-19
lines changed

5 files changed

+75
-19
lines changed

splitio/push/segmentworker.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,11 @@ def _run(self):
4040
continue
4141
_LOGGER.debug('Processing segment_update: %s, change_number: %d',
4242
event.segment_name, event.change_number)
43-
self._handler(event.segment_name, event.change_number)
43+
try:
44+
self._handler(event.segment_name, event.change_number)
45+
except Exception:
46+
_LOGGER.error('Exception raised in segment synchronization')
47+
_LOGGER.debug('Exception information: ', exc_info=True)
4448

4549
def start(self):
4650
"""Start worker."""

splitio/push/splitworker.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,11 @@ def _run(self):
3939
if event == self._centinel:
4040
continue
4141
_LOGGER.debug('Processing split_update %d', event.change_number)
42-
self._handler(event.change_number)
42+
try:
43+
self._handler(event.change_number)
44+
except Exception:
45+
_LOGGER.error('Exception raised in split synchronization')
46+
_LOGGER.debug('Exception information: ', exc_info=True)
4347

4448
def start(self):
4549
"""Start worker."""

splitio/tasks/impressions_sync.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ def flush(self):
5656
class ImpressionsCountSyncTask(BaseSynchronizationTask):
5757
"""Impressions synchronization task uses an asynctask.AsyncTask to send impressions."""
5858

59-
_PERIOD = 5 # 30 * 60 # 30 minutes
59+
_PERIOD = 1800 # 30 * 60 # 30 minutes
6060

6161
def __init__(self, synchronize_counters):
6262
"""

tests/push/test_segment_worker.py

Lines changed: 31 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
"""Split Worker tests."""
22
import time
33
import queue
4+
import pytest
45

6+
from splitio.api import APIException
57
from splitio.push.segmentworker import SegmentWorker
68
from splitio.models.notification import SegmentChangeNotification
79

@@ -18,20 +20,41 @@ def handler_sync(segment_name, change_number):
1820

1921

2022
class SegmentWorkerTests(object):
21-
q = queue.Queue()
22-
segment_worker = SegmentWorker(handler_sync, q)
23+
def test_on_error(self):
24+
q = queue.Queue()
25+
26+
def handler_sync(change_number):
27+
raise APIException('some')
28+
29+
segment_worker = SegmentWorker(handler_sync, q)
30+
segment_worker.start()
31+
assert segment_worker.is_running()
32+
33+
q.put(SegmentChangeNotification('some', 'SEGMENT_UPDATE', 123456789, 'some'))
34+
35+
with pytest.raises(Exception):
36+
segment_worker._handler()
37+
38+
assert segment_worker.is_running()
39+
assert segment_worker._worker.is_alive()
40+
segment_worker.stop()
41+
time.sleep(1)
42+
assert not segment_worker.is_running()
43+
assert not segment_worker._worker.is_alive()
2344

2445
def test_handler(self):
46+
q = queue.Queue()
47+
segment_worker = SegmentWorker(handler_sync, q)
2548
global change_number_received
26-
assert not self.segment_worker.is_running()
27-
self.segment_worker.start()
28-
assert self.segment_worker.is_running()
49+
assert not segment_worker.is_running()
50+
segment_worker.start()
51+
assert segment_worker.is_running()
2952

30-
self.q.put(SegmentChangeNotification('some', 'SEGMENT_UPDATE', 123456789, 'some'))
53+
q.put(SegmentChangeNotification('some', 'SEGMENT_UPDATE', 123456789, 'some'))
3154

3255
time.sleep(0.1)
3356
assert change_number_received == 123456789
3457
assert segment_name_received == 'some'
3558

36-
self.segment_worker.stop()
37-
assert not self.segment_worker.is_running()
59+
segment_worker.stop()
60+
assert not segment_worker.is_running()

tests/push/test_split_worker.py

Lines changed: 33 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,57 @@
11
"""Split Worker tests."""
22
import time
33
import queue
4+
import pytest
45

6+
from splitio.api import APIException
57
from splitio.push.splitworker import SplitWorker
68
from splitio.models.notification import SplitChangeNotification
79

810
change_number_received = None
911

12+
1013
def handler_sync(change_number):
1114
global change_number_received
1215
change_number_received = change_number
1316
return
1417

1518

1619
class SplitWorkerTests(object):
17-
q = queue.Queue()
18-
split_worker = SplitWorker(handler_sync, q)
20+
21+
def test_on_error(self):
22+
q = queue.Queue()
23+
24+
def handler_sync(change_number):
25+
raise APIException('some')
26+
27+
split_worker = SplitWorker(handler_sync, q)
28+
split_worker.start()
29+
assert split_worker.is_running()
30+
31+
q.put(SplitChangeNotification('some', 'SPLIT_UPDATE', 123456789))
32+
with pytest.raises(Exception):
33+
split_worker._handler()
34+
35+
assert split_worker.is_running()
36+
assert split_worker._worker.is_alive()
37+
split_worker.stop()
38+
time.sleep(1)
39+
assert not split_worker.is_running()
40+
assert not split_worker._worker.is_alive()
1941

2042
def test_handler(self):
43+
q = queue.Queue()
44+
split_worker = SplitWorker(handler_sync, q)
45+
2146
global change_number_received
22-
assert self.split_worker.is_running() == False
23-
self.split_worker.start()
24-
assert self.split_worker.is_running() == True
47+
assert not split_worker.is_running()
48+
split_worker.start()
49+
assert split_worker.is_running()
2550

26-
self.q.put(SplitChangeNotification('some', 'SPLIT_UPDATE', 123456789))
51+
q.put(SplitChangeNotification('some', 'SPLIT_UPDATE', 123456789))
2752

2853
time.sleep(0.1)
2954
assert change_number_received == 123456789
3055

31-
self.split_worker.stop()
32-
assert self.split_worker.is_running() == False
56+
split_worker.stop()
57+
assert not split_worker.is_running()

0 commit comments

Comments
 (0)