Skip to content

Commit 956667e

Browse files
author
Matias Melograno
committed
fixed test and added clear coverage
1 parent c9c3e13 commit 956667e

File tree

3 files changed

+79
-2
lines changed

3 files changed

+79
-2
lines changed

tests/client/test_client.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -378,12 +378,15 @@ def _get_storage_mock(name):
378378
factory._get_storage = _get_storage_mock
379379
destroyed_mock = mocker.PropertyMock()
380380
destroyed_mock.return_value = False
381+
factory._waiting_fork.return_value = False
381382
type(factory).destroyed = destroyed_mock
382383
factory._apikey = 'test'
383384
mocker.patch('splitio.client.client.utctime_ms', new=lambda: 1000)
384385

385386
impmanager = mocker.Mock(spec=ImpressionManager)
386-
client = Client(factory, impmanager, True)
387+
recorder = StandardRecorder(impmanager, telemetry_storage, event_storage,
388+
impression_storage)
389+
client = Client(factory, recorder, True)
387390
assert client.track('key', 'user', 'purchase', 12) is True
388391
assert mocker.call([
389392
EventWrapper(

tests/client/test_factory.py

Lines changed: 37 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -486,6 +486,39 @@ def _make_factory_with_apikey(apikey, *_, **__):
486486

487487
def test_uwsgi_preforked(self, mocker):
488488
"""Test preforked initializations."""
489+
490+
def clear_impressions():
491+
clear_impressions._called += 1
492+
493+
def clear_events():
494+
clear_events._called += 1
495+
496+
def clear_telemetry():
497+
clear_telemetry._called += 1
498+
499+
clear_impressions._called = 0
500+
clear_events._called = 0
501+
clear_telemetry._called = 0
502+
split_storage = mocker.Mock(spec=inmemmory.SplitStorage)
503+
segment_storage = mocker.Mock(spec=inmemmory.SegmentStorage)
504+
impression_storage = mocker.Mock(spec=inmemmory.ImpressionStorage)
505+
impression_storage.clear.side_effect = clear_impressions
506+
event_storage = mocker.Mock(spec=inmemmory.EventStorage)
507+
event_storage.clear.side_effect = clear_events
508+
telemetry_storage = mocker.Mock(spec=inmemmory.TelemetryStorage)
509+
telemetry_storage.clear.side_effect = clear_telemetry
510+
511+
def _get_storage_mock(self, name):
512+
return {
513+
'splits': split_storage,
514+
'segments': segment_storage,
515+
'impressions': impression_storage,
516+
'events': event_storage,
517+
'telemetry': telemetry_storage
518+
}[name]
519+
520+
mocker.patch('splitio.client.factory.SplitFactory._get_storage', new=_get_storage_mock)
521+
489522
global called_sync_all
490523
called_sync_all = 0
491524
global called_start
@@ -495,7 +528,6 @@ def test_uwsgi_preforked(self, mocker):
495528

496529
# Mocking
497530
def _sync_all(self):
498-
print('here')
499531
global called_sync_all
500532
called_sync_all += 1
501533
mocker.patch('splitio.sync.synchronizer.Synchronizer.sync_all', new=_sync_all)
@@ -522,3 +554,7 @@ def _recreate(self):
522554
factory.handle_post_fork()
523555
assert called_recreate == 1
524556
assert called_start == 1
557+
558+
assert clear_impressions._called == 1
559+
assert clear_events._called == 1
560+
assert clear_telemetry._called == 1

tests/storage/test_inmemory_storage.py

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -307,6 +307,15 @@ def test_queue_full_hook(self, mocker):
307307
storage.put(impressions)
308308
assert queue_full_hook.mock_calls == mocker.call()
309309

310+
def test_clear(self):
311+
"""Test clear method."""
312+
storage = InMemoryImpressionStorage(100)
313+
storage.put([Impression('key1', 'feature1', 'on', 'l1', 123456, 'b1', 321654)])
314+
315+
assert storage._impressions.qsize() == 1
316+
storage.clear()
317+
assert storage._impressions.qsize() == 0
318+
310319

311320
class InMemoryEventsStorageTests(object):
312321
"""InMemory events storage test cases."""
@@ -372,6 +381,18 @@ def test_queue_full_hook_properties(self, mocker):
372381
storage.put(events)
373382
assert queue_full_hook.mock_calls == [mocker.call()]
374383

384+
def test_clear(self):
385+
"""Test clear method."""
386+
storage = InMemoryEventStorage(100)
387+
storage.put([EventWrapper(
388+
event=Event('key1', 'user', 'purchase', 3.5, 123456, None),
389+
size=1024,
390+
)])
391+
392+
assert storage._events.qsize() == 1
393+
storage.clear()
394+
assert storage._events.qsize() == 0
395+
375396

376397
class InMemoryTelemetryStorageTests(object):
377398
"""In-Memory telemetry storage unit tests."""
@@ -413,3 +434,20 @@ def test_gauges(self):
413434
assert gauges['some_gauge_1'] == 321
414435
assert gauges['some_gauge_2'] == 654
415436
assert storage.pop_gauges() == {}
437+
438+
def test_clear(self):
439+
"""Test clear."""
440+
storage = InMemoryTelemetryStorage()
441+
storage.put_gauge('some_gauge_1', 321)
442+
storage.inc_counter('some_counter_1')
443+
storage.inc_latency('sdk.get_treatment', 5)
444+
445+
assert len(storage._counters) == 1
446+
assert len(storage._gauges) == 1
447+
assert len(storage._latencies) == 1
448+
449+
storage.clear()
450+
451+
assert len(storage._counters) == 0
452+
assert len(storage._gauges) == 0
453+
assert len(storage._latencies) == 0

0 commit comments

Comments
 (0)