1+ """EventsManager test module."""
2+ import pytest
3+ import queue
4+ import time
5+
6+ from splitio .models .events import SdkInternalEvent
7+ from splitio .models .notification import SdkInternalEventNotification
8+ from splitio .events .events_metadata import EventsMetadata
9+ from splitio .events .events_metadata import SdkEventType
10+ from splitio .events .events_task import EventsTask
11+
12+
13+ class EventsTaskTests (object ):
14+ """Tests for EventsManager."""
15+
16+ internal_event = None
17+ metadata = None
18+
19+ def test_firing_events (self ):
20+ events_queue = queue .Queue ()
21+ events_task = EventsTask (self ._event_callback , events_queue )
22+
23+ events_task .start ()
24+ assert events_task .is_running ()
25+
26+ metadata = EventsMetadata (SdkEventType .FLAG_UPDATE , { "feature1" })
27+ events_queue .put (SdkInternalEventNotification (SdkInternalEvent .SDK_READY , metadata ))
28+ time .sleep (.5 )
29+ assert self .internal_event == SdkInternalEvent .SDK_READY
30+ self ._verify_metadata (metadata )
31+
32+ self ._reset_flags ()
33+ events_queue .put (SdkInternalEventNotification (SdkInternalEvent .RB_SEGMENTS_UPDATED , metadata ))
34+ time .sleep (.5 )
35+ assert self .internal_event == SdkInternalEvent .RB_SEGMENTS_UPDATED
36+ self ._verify_metadata (metadata )
37+
38+ events_task .stop ()
39+ time .sleep (.5 )
40+ assert not events_task .is_running ()
41+
42+ def test_on_error (self ):
43+ events_queue = queue .Queue ()
44+
45+ def handler_sync (internal_event , metadata ):
46+ raise Exception ('some' )
47+
48+ events_task = EventsTask (handler_sync , events_queue )
49+ events_task .start ()
50+ assert events_task .is_running ()
51+
52+ events_queue .put (SdkInternalEventNotification (SdkInternalEvent .SDK_READY , None ))
53+
54+ with pytest .raises (Exception ):
55+ events_task ._handler ()
56+
57+ assert events_task .is_running ()
58+ events_task .stop ()
59+ time .sleep (1 )
60+ assert not events_task .is_running ()
61+
62+ def _reset_flags (self ):
63+ self .internal_event = None
64+ self .metadata = None
65+
66+ def _event_callback (self , internal_event , metadata ):
67+ self .internal_event = internal_event
68+ self .metadata = metadata
69+
70+ def _verify_metadata (self , metadata ):
71+ assert metadata .get_type () == self .metadata .get_type ()
72+ assert metadata .get_names () == self .metadata .get_names ()
73+
74+
0 commit comments