11"""Split Worker tests."""
22import time
33import queue
4+ import pytest
45
6+ from splitio .api import APIException
57from splitio .push .segmentworker import SegmentWorker
68from splitio .models .notification import SegmentChangeNotification
79
@@ -18,20 +20,41 @@ def handler_sync(segment_name, change_number):
1820
1921
2022class 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 ()
0 commit comments