Skip to content

Commit d00c8ef

Browse files
committed
fix return boolean for client.track when using redis pipeline
1 parent 7156bdc commit d00c8ef

File tree

2 files changed

+41
-8
lines changed

2 files changed

+41
-8
lines changed

splitio/recorder/recorder.py

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -152,11 +152,18 @@ def record_track_stats(self, event, latency):
152152
:param event: events tracked
153153
:type event: splitio.models.events.EventWrapper
154154
"""
155-
pipe = self._make_pipe()
156-
rc = self._event_sotrage.add_events_to_pipe(event, pipe)
157-
self._telemetry_redis_storage.add_latency_to_pipe(MethodExceptionsAndLatencies.TRACK, latency, pipe)
158-
result = pipe.execute()
159-
if len(result) == 2:
160-
self._event_sotrage.expire_keys(result[0], len(event))
161-
self._telemetry_redis_storage.expire_latency_keys(result[1], latency)
162-
return rc
155+
try:
156+
pipe = self._make_pipe()
157+
self._event_sotrage.add_events_to_pipe(event, pipe)
158+
self._telemetry_redis_storage.add_latency_to_pipe(MethodExceptionsAndLatencies.TRACK, latency, pipe)
159+
result = pipe.execute()
160+
if len(result) == 2:
161+
self._event_sotrage.expire_keys(result[0], len(event))
162+
self._telemetry_redis_storage.expire_latency_keys(result[1], latency)
163+
if result[0] > 0:
164+
return True
165+
return False
166+
except Exception: # pylint: disable=broad-except
167+
_LOGGER.error('Error recording events')
168+
_LOGGER.debug('Error: ', exc_info=True)
169+
return False

tests/integration/test_client_e2e.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -269,6 +269,17 @@ def test_get_treatments_with_config(self):
269269
('sample_feature', 'invalidKey', 'off'),
270270
)
271271

272+
def test_track(self):
273+
"""Test client.track()."""
274+
try:
275+
client = self.factory.client()
276+
except:
277+
pass
278+
assert(client.track('user1', 'user', 'conversion'))
279+
assert(not client.track(None, 'user', 'conversion'))
280+
assert(not client.track('user1', None, 'conversion'))
281+
assert(not client.track('user1', 'user', None))
282+
272283
def test_manager_methods(self):
273284
"""Test manager.split/splits."""
274285
try:
@@ -529,6 +540,13 @@ def test_manager_methods(self):
529540
assert len(manager.split_names()) == 7
530541
assert len(manager.splits()) == 7
531542

543+
def test_track(self):
544+
"""Test client.track()."""
545+
client = self.factory.client()
546+
assert(client.track('user1', 'user', 'conversion'))
547+
assert(not client.track(None, 'user', 'conversion'))
548+
assert(not client.track('user1', None, 'conversion'))
549+
assert(not client.track('user1', 'user', None))
532550

533551
class RedisIntegrationTests(object):
534552
"""Redis storage-based integration tests."""
@@ -765,6 +783,14 @@ def test_get_treatments_with_config(self):
765783
('sample_feature', 'invalidKey', 'off'),
766784
)
767785

786+
def test_track(self):
787+
"""Test client.track()."""
788+
client = self.factory.client()
789+
assert(client.track('user1', 'user', 'conversion'))
790+
assert(not client.track(None, 'user', 'conversion'))
791+
assert(not client.track('user1', None, 'conversion'))
792+
assert(not client.track('user1', 'user', None))
793+
768794
def test_manager_methods(self):
769795
"""Test manager.split/splits."""
770796
try:

0 commit comments

Comments
 (0)