Skip to content

Commit 4924c70

Browse files
committed
removed sdk timedout event
1 parent e614c66 commit 4924c70

File tree

7 files changed

+5
-210
lines changed

7 files changed

+5
-210
lines changed

splitio/client/factory.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -284,7 +284,6 @@ def block_until_ready(self, timeout=None):
284284

285285
if not ready:
286286
self._telemetry_init_producer.record_bur_time_out()
287-
self._internal_events_queue.put(SdkInternalEventNotification(SdkInternalEvent.SDK_TIMED_OUT, None))
288287
raise TimeoutException('SDK Initialization: time of %d exceeded' % timeout)
289288

290289
def destroy(self, destroyed_event=None):
@@ -439,7 +438,6 @@ async def block_until_ready(self, timeout=None):
439438
_LOGGER.error("Exception initializing SDK")
440439
_LOGGER.debug(str(e))
441440
await self._telemetry_init_producer.record_bur_time_out()
442-
await self._internal_events_queue.put(SdkInternalEventNotification(SdkInternalEvent.SDK_TIMED_OUT, None))
443441
raise TimeoutException('SDK Initialization: time of %d exceeded' % timeout)
444442

445443
async def destroy(self, destroyed_event=None):

splitio/events/events_manager_config.py

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -61,28 +61,25 @@ def _get_require_any(self):
6161
"""Return require_any dict"""
6262
return {
6363
SdkEvent.SDK_UPDATE: {SdkInternalEvent.FLAG_KILLED_NOTIFICATION, SdkInternalEvent.FLAGS_UPDATED,
64-
SdkInternalEvent.RB_SEGMENTS_UPDATED, SdkInternalEvent.SEGMENTS_UPDATED},
65-
SdkEvent.SDK_READY_TIMED_OUT: {SdkInternalEvent.SDK_TIMED_OUT}
64+
SdkInternalEvent.RB_SEGMENTS_UPDATED, SdkInternalEvent.SEGMENTS_UPDATED}
6665
}
6766

6867
def _get_suppressed_by(self):
6968
"""Return suppressed_by dict"""
7069
return {
71-
SdkEvent.SDK_READY_TIMED_OUT: {SdkEvent.SDK_READY}
7270
}
7371

7472
def _get_execution_limits(self):
7573
"""Return execution_limits dict"""
7674
return {
7775
SdkEvent.SDK_READY: 1,
78-
SdkEvent.SDK_READY_TIMED_OUT: -1,
7976
SdkEvent.SDK_UPDATE: -1
8077
}
8178

8279
def _get_sorted_events(self):
8380
"""Return dorted events set"""
8481
sorted_events = []
85-
for sdk_event in [SdkEvent.SDK_READY, SdkEvent.SDK_READY_TIMED_OUT, SdkEvent.SDK_UPDATE]:
82+
for sdk_event in [SdkEvent.SDK_READY, SdkEvent.SDK_UPDATE]:
8683
sorted_events = self._dfs_recursive(sdk_event, sorted_events)
8784

8885
return sorted_events

splitio/models/events.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,12 @@ class SdkEvent(Enum):
2424
"""Public SDK events"""
2525

2626
SDK_READY = 'SDK_READY'
27-
SDK_READY_TIMED_OUT = 'SDK_READY_TIMED_OUT'
2827
SDK_UPDATE = 'SDK_UPDATE'
2928

3029
class SdkInternalEvent(Enum):
3130
"""Internal SDK events"""
3231

3332
SDK_READY = 'SDK_READY'
34-
SDK_TIMED_OUT = 'SDK_TIMED_OUT'
3533
FLAGS_UPDATED = 'FLAGS_UPDATED'
3634
FLAG_KILLED_NOTIFICATION = 'FLAG_KILLED_NOTIFICATION'
3735
SEGMENTS_UPDATED = 'SEGMENTS_UPDATED'

tests/client/test_factory.py

Lines changed: 1 addition & 103 deletions
Original file line numberDiff line numberDiff line change
@@ -772,56 +772,6 @@ def synchronize_config(*_):
772772
assert event.metadata == None
773773
factory.destroy()
774774

775-
def test_internal_timeout_event_notification(self, mocker):
776-
"""Test that a client with in-memory storage is sending internal events correctly."""
777-
778-
telemetry_storage = InMemoryTelemetryStorage()
779-
telemetry_producer = TelemetryStorageProducer(telemetry_storage)
780-
events_queue = queue.Queue()
781-
split_storage = InMemorySplitStorage(events_queue)
782-
segment_storage = InMemorySegmentStorage(events_queue)
783-
rb_segment_storage = InMemoryRuleBasedSegmentStorage(events_queue)
784-
telemetry_runtime_producer = telemetry_producer.get_telemetry_runtime_producer()
785-
impression_storage = InMemoryImpressionStorage(10, telemetry_runtime_producer)
786-
impmanager = ImpressionsManager(StrategyDebugMode(), StrategyNoneMode(), telemetry_runtime_producer)
787-
event_storage = mocker.Mock(spec=EventStorage)
788-
789-
destroyed_property = mocker.PropertyMock()
790-
destroyed_property.return_value = False
791-
recorder = StandardRecorder(impmanager, event_storage, impression_storage, telemetry_producer.get_telemetry_evaluation_producer(), telemetry_producer.get_telemetry_runtime_producer())
792-
factory = SplitFactory("some key",
793-
{'splits': split_storage,
794-
'segments': segment_storage,
795-
'rule_based_segments': rb_segment_storage,
796-
'impressions': impression_storage,
797-
'events': event_storage},
798-
mocker.Mock(),
799-
recorder,
800-
events_queue,
801-
mocker.Mock(),
802-
mocker.Mock(),
803-
threading.Event(),
804-
telemetry_producer,
805-
telemetry_producer.get_telemetry_init_producer(),
806-
mocker.Mock()
807-
)
808-
809-
class TelemetrySubmitterMock():
810-
def synchronize_config(*_):
811-
pass
812-
factory._telemetry_submitter = TelemetrySubmitterMock()
813-
814-
try:
815-
factory.block_until_ready(1)
816-
except:
817-
pass
818-
819-
# assert not factory.ready
820-
event = events_queue.get()
821-
assert event.internal_event == SdkInternalEvent.SDK_TIMED_OUT
822-
assert event.metadata == None
823-
factory.destroy()
824-
825775
def test_uwsgi_forked_client_creation(self):
826776
"""Test client with preforked initialization."""
827777
# Invalid API Key with preforked should exit after 3 attempts.
@@ -1161,56 +1111,4 @@ async def record_active_and_redundant_factories(*_):
11611111
event = await factory._internal_events_queue.get()
11621112
assert event.internal_event == SdkInternalEvent.SDK_READY
11631113
assert event.metadata == None
1164-
await factory.destroy()
1165-
1166-
@pytest.mark.asyncio
1167-
async def test_internal_timeout_event_notification(self, mocker):
1168-
"""Test that a client with in-memory storage is sending internal events correctly."""
1169-
# Setup synchronizer
1170-
def _split_synchronizer(self, ready_flag, some, auth_api, streaming_enabled, sdk_matadata, telemetry_runtime_producer, sse_url=None, client_key=None):
1171-
synchronizer = mocker.Mock(spec=SynchronizerAsync)
1172-
async def sync_all(*_):
1173-
return None
1174-
synchronizer.sync_all = sync_all
1175-
1176-
def start_periodic_fetching():
1177-
pass
1178-
synchronizer.start_periodic_fetching = start_periodic_fetching
1179-
1180-
def start_periodic_data_recording():
1181-
pass
1182-
synchronizer.start_periodic_data_recording = start_periodic_data_recording
1183-
1184-
self._ready_flag = ready_flag
1185-
self._synchronizer = synchronizer
1186-
self._streaming_enabled = False
1187-
self._telemetry_runtime_producer = telemetry_runtime_producer
1188-
1189-
mocker.patch('splitio.sync.manager.ManagerAsync.__init__', new=_split_synchronizer)
1190-
1191-
async def synchronize_config(*_):
1192-
await asyncio.sleep(3)
1193-
pass
1194-
mocker.patch('splitio.sync.telemetry.InMemoryTelemetrySubmitterAsync.synchronize_config', new=synchronize_config)
1195-
1196-
async def record_ready_time(*_):
1197-
pass
1198-
mocker.patch('splitio.models.telemetry.TelemetryConfigAsync.record_ready_time', new=record_ready_time)
1199-
1200-
async def record_active_and_redundant_factories(*_):
1201-
pass
1202-
mocker.patch('splitio.models.telemetry.TelemetryConfigAsync.record_active_and_redundant_factories', new=record_active_and_redundant_factories)
1203-
1204-
# Start factory and make assertions
1205-
factory = await get_factory_async('some_api_key', config={'streamingEmabled': False})
1206-
for task in asyncio.all_tasks():
1207-
if task._coro.__qualname__ == "EventsTaskAsync._run":
1208-
task.cancel()
1209-
try:
1210-
await factory.block_until_ready(1)
1211-
except:
1212-
pass
1213-
event = await factory._internal_events_queue.get()
1214-
assert event.internal_event == SdkInternalEvent.SDK_TIMED_OUT
1215-
assert event.metadata == None
1216-
await factory.destroy()
1114+
await factory.destroy()

tests/events/test_events_manager.py

Lines changed: 0 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ class EventsManagerTests(object):
1313
"""Tests for EventsManager."""
1414

1515
sdk_ready_flag = False
16-
sdk_timed_out_flag = False
1716
sdk_update_flag = False
1817
metadata = None
1918

@@ -28,60 +27,40 @@ def test_firing_events(self):
2827
events_manager.notify_internal_event(SdkInternalEvent.RB_SEGMENTS_UPDATED, metadata)
2928
events_manager.notify_internal_event(SdkInternalEvent.SEGMENTS_UPDATED, metadata)
3029
assert not self.sdk_ready_flag
31-
assert not self.sdk_timed_out_flag
3230
assert not self.sdk_update_flag
3331

34-
self._reset_flags()
35-
events_manager.notify_internal_event(SdkInternalEvent.SDK_TIMED_OUT, metadata)
36-
assert not self.sdk_ready_flag
37-
assert not self.sdk_timed_out_flag # not registered yet
38-
assert not self.sdk_update_flag
39-
40-
events_manager.register(SdkEvent.SDK_READY_TIMED_OUT, self._sdk_timeout_callback)
41-
events_manager.notify_internal_event(SdkInternalEvent.SDK_TIMED_OUT, metadata)
42-
assert not self.sdk_ready_flag
43-
assert self.sdk_timed_out_flag
44-
assert not self.sdk_update_flag
45-
self._verify_metadata(metadata)
46-
4732
self._reset_flags()
4833
events_manager.notify_internal_event(SdkInternalEvent.SDK_READY, metadata)
4934
assert self.sdk_ready_flag
50-
assert not self.sdk_timed_out_flag
5135
assert not self.sdk_update_flag
5236
self._verify_metadata(metadata)
5337

5438
self._reset_flags()
5539
events_manager.notify_internal_event(SdkInternalEvent.RB_SEGMENTS_UPDATED, metadata)
5640
assert not self.sdk_ready_flag
57-
assert not self.sdk_timed_out_flag
5841
assert self.sdk_update_flag
5942
self._verify_metadata(metadata)
6043

6144
self._reset_flags()
6245
events_manager.notify_internal_event(SdkInternalEvent.FLAG_KILLED_NOTIFICATION, metadata)
6346
assert not self.sdk_ready_flag
64-
assert not self.sdk_timed_out_flag
6547
assert self.sdk_update_flag
6648
self._verify_metadata(metadata)
6749

6850
self._reset_flags()
6951
events_manager.notify_internal_event(SdkInternalEvent.FLAGS_UPDATED, metadata)
7052
assert not self.sdk_ready_flag
71-
assert not self.sdk_timed_out_flag
7253
assert self.sdk_update_flag
7354
self._verify_metadata(metadata)
7455

7556
self._reset_flags()
7657
events_manager.notify_internal_event(SdkInternalEvent.SEGMENTS_UPDATED, metadata)
7758
assert not self.sdk_ready_flag
78-
assert not self.sdk_timed_out_flag
7959
assert self.sdk_update_flag
8060
self._verify_metadata(metadata)
8161

8262
def _reset_flags(self):
8363
self.sdk_ready_flag = False
84-
self.sdk_timed_out_flag = False
8564
self.sdk_update_flag = False
8665
self.metadata = None
8766

@@ -93,10 +72,6 @@ def _sdk_update_callback(self, metadata):
9372
self.sdk_update_flag = True
9473
self.metadata = metadata
9574

96-
def _sdk_timeout_callback(self, metadata):
97-
self.sdk_timed_out_flag = True
98-
self.metadata = metadata
99-
10075
def _verify_metadata(self, metadata):
10176
assert metadata.get_type() == self.metadata.get_type()
10277
assert metadata.get_names() == self.metadata.get_names()
@@ -105,7 +80,6 @@ class EventsManagerAsyncTests(object):
10580
"""Tests for EventsManagerAsync."""
10681

10782
sdk_ready_flag = False
108-
sdk_timed_out_flag = False
10983
sdk_update_flag = False
11084
metadata = None
11185

@@ -121,66 +95,45 @@ async def test_firing_events(self):
12195
await events_manager.notify_internal_event(SdkInternalEvent.RB_SEGMENTS_UPDATED, metadata)
12296
await events_manager.notify_internal_event(SdkInternalEvent.SEGMENTS_UPDATED, metadata)
12397
assert not self.sdk_ready_flag
124-
assert not self.sdk_timed_out_flag
12598
assert not self.sdk_update_flag
12699

127-
self._reset_flags()
128-
await events_manager.notify_internal_event(SdkInternalEvent.SDK_TIMED_OUT, metadata)
129-
assert not self.sdk_ready_flag
130-
assert not self.sdk_timed_out_flag # not registered yet
131-
assert not self.sdk_update_flag
132-
133-
await events_manager.register(SdkEvent.SDK_READY_TIMED_OUT, self._sdk_timeout_callback)
134-
await events_manager.notify_internal_event(SdkInternalEvent.SDK_TIMED_OUT, metadata)
135-
await asyncio.sleep(.3)
136-
assert not self.sdk_ready_flag
137-
assert self.sdk_timed_out_flag
138-
assert not self.sdk_update_flag
139-
self._verify_metadata(metadata)
140-
141100
self._reset_flags()
142101
await events_manager.notify_internal_event(SdkInternalEvent.SDK_READY, metadata)
143102
await asyncio.sleep(.3)
144103
assert self.sdk_ready_flag
145-
assert not self.sdk_timed_out_flag
146104
assert not self.sdk_update_flag
147105
self._verify_metadata(metadata)
148106

149107
self._reset_flags()
150108
await events_manager.notify_internal_event(SdkInternalEvent.RB_SEGMENTS_UPDATED, metadata)
151109
await asyncio.sleep(.3)
152110
assert not self.sdk_ready_flag
153-
assert not self.sdk_timed_out_flag
154111
assert self.sdk_update_flag
155112
self._verify_metadata(metadata)
156113

157114
self._reset_flags()
158115
await events_manager.notify_internal_event(SdkInternalEvent.FLAG_KILLED_NOTIFICATION, metadata)
159116
await asyncio.sleep(.3)
160117
assert not self.sdk_ready_flag
161-
assert not self.sdk_timed_out_flag
162118
assert self.sdk_update_flag
163119
self._verify_metadata(metadata)
164120

165121
self._reset_flags()
166122
await events_manager.notify_internal_event(SdkInternalEvent.FLAGS_UPDATED, metadata)
167123
await asyncio.sleep(.3)
168124
assert not self.sdk_ready_flag
169-
assert not self.sdk_timed_out_flag
170125
assert self.sdk_update_flag
171126
self._verify_metadata(metadata)
172127

173128
self._reset_flags()
174129
await events_manager.notify_internal_event(SdkInternalEvent.SEGMENTS_UPDATED, metadata)
175130
await asyncio.sleep(.3)
176131
assert not self.sdk_ready_flag
177-
assert not self.sdk_timed_out_flag
178132
assert self.sdk_update_flag
179133
self._verify_metadata(metadata)
180134

181135
def _reset_flags(self):
182136
self.sdk_ready_flag = False
183-
self.sdk_timed_out_flag = False
184137
self.sdk_update_flag = False
185138
self.metadata = None
186139

@@ -192,10 +145,6 @@ async def _sdk_update_callback(self, metadata):
192145
self.sdk_update_flag = True
193146
self.metadata = metadata
194147

195-
async def _sdk_timeout_callback(self, metadata):
196-
self.sdk_timed_out_flag = True
197-
self.metadata = metadata
198-
199148
def _verify_metadata(self, metadata):
200149
assert metadata.get_type() == self.metadata.get_type()
201150
assert metadata.get_names() == self.metadata.get_names()

tests/events/test_events_manager_config.py

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -15,29 +15,20 @@ def test_build_instance(self):
1515

1616
assert SdkEvent.SDK_READY in config.prerequisites[SdkEvent.SDK_UPDATE]
1717

18-
assert config.execution_limits[SdkEvent.SDK_READY_TIMED_OUT] == -1
1918
assert config.execution_limits[SdkEvent.SDK_UPDATE] == -1
2019
assert config.execution_limits[SdkEvent.SDK_READY] == 1
2120

22-
assert len(config.require_any[SdkEvent.SDK_READY_TIMED_OUT]) == 1
23-
assert SdkInternalEvent.SDK_TIMED_OUT in config.require_any[SdkEvent.SDK_READY_TIMED_OUT]
24-
2521
assert len(config.require_any[SdkEvent.SDK_UPDATE]) == 4
2622
assert SdkInternalEvent.FLAG_KILLED_NOTIFICATION in config.require_any[SdkEvent.SDK_UPDATE]
2723
assert SdkInternalEvent.FLAGS_UPDATED in config.require_any[SdkEvent.SDK_UPDATE]
2824
assert SdkInternalEvent.RB_SEGMENTS_UPDATED in config.require_any[SdkEvent.SDK_UPDATE]
2925
assert SdkInternalEvent.SEGMENTS_UPDATED in config.require_any[SdkEvent.SDK_UPDATE]
3026

31-
assert len(config.suppressed_by[SdkEvent.SDK_READY_TIMED_OUT]) == 1
32-
assert SdkEvent.SDK_READY in config.suppressed_by[SdkEvent.SDK_READY_TIMED_OUT]
33-
3427
order = 0
35-
assert len(config.evaluation_order) == 3
28+
assert len(config.evaluation_order) == 2
3629
for sdk_event in config.evaluation_order:
3730
order += 1
3831
if order == 1:
39-
assert sdk_event == SdkEvent.SDK_READY_TIMED_OUT
40-
if order == 2:
4132
assert sdk_event == SdkEvent.SDK_READY
42-
if order == 3:
33+
if order == 2:
4334
assert sdk_event == SdkEvent.SDK_UPDATE

0 commit comments

Comments
 (0)