Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions splitio/api/telemetry.py
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,7 @@ def record_init(self, configs):
'Error posting init config because an exception was raised by the HTTPClient'
)
_LOGGER.debug('Error: ', exc_info=True)
raise APIException('Init config data not flushed properly.') from exc

def record_stats(self, stats):
"""
Expand Down
19 changes: 2 additions & 17 deletions splitio/storage/redis.py
Original file line number Diff line number Diff line change
Expand Up @@ -89,14 +89,7 @@ def get(self, feature_flag_name): # pylint: disable=method-hidden
raw = self._redis.get(self._get_key(feature_flag_name))
_LOGGER.debug("Fetchting Feature flag [%s] from redis" % feature_flag_name)
_LOGGER.debug(raw)
if raw is None:
return None

feature_flag = splits.from_raw(json.loads(raw))
if self.flag_set_filter.intersect(feature_flag.sets):
return feature_flag

return None
return splits.from_raw(json.loads(raw)) if raw is not None else None
except RedisAdapterException:
_LOGGER.error('Error fetching feature flag from storage')
_LOGGER.debug('Error: ', exc_info=True)
Expand Down Expand Up @@ -213,9 +206,6 @@ def get_split_names(self):
:return: List of feature flag names.
:rtype: list(str)
"""
if self.flag_set_filter.should_filter:
return self.get_feature_flags_by_sets(self.flag_set_filter.flag_sets)

try:
keys = self._redis.keys(self._get_key('*'))
_LOGGER.debug("Fetchting feature flag names from redis: %s" % keys)
Expand All @@ -239,12 +229,7 @@ def get_all_splits(self):
:return: List of all feature flags in cache.
:rtype: list(splitio.models.splits.Split)
"""
if self.flag_set_filter.should_filter:
keys = self.get_feature_flags_by_sets(self.flag_set_filter.flag_sets)
else:
keys = self._redis.keys(self._get_key('*'))
if keys == []:
return []
keys = self._redis.keys(self._get_key('*'))
to_return = []
try:
_LOGGER.debug("Fetchting all feature flags from redis: %s" % keys)
Expand Down
48 changes: 0 additions & 48 deletions tests/storage/test_redis.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,6 @@
from splitio.models.events import Event, EventWrapper
from splitio.models.telemetry import MethodExceptions, MethodLatencies, TelemetryConfig, MethodExceptionsAndLatencies
from splitio.storage import FlagSetsFilter
from tests.integration import splits_json


class RedisSplitStorageTests(object):
"""Redis split storage test cases."""
Expand Down Expand Up @@ -189,52 +187,6 @@ def test_flag_sets(self, mocker):
storage2 = RedisSplitStorage(adapter, True, 1, ['set2', 'set3'])
assert storage2.flag_set_filter.flag_sets == set({'set2', 'set3'})

def test_fetching_split_with_flag_set(self, mocker):
"""Test retrieving a split works."""
adapter = mocker.Mock(spec=RedisAdapter)
adapter.get.return_value = json.dumps(splits_json["splitChange1_1"]["splits"][0])
adapter.keys.return_value = ['SPLIT_1', 'SPLIT_2']

def mget(keys):
if keys == ['SPLIT_2']:
return [json.dumps(splits_json["splitChange1_1"]["splits"][0])]
if keys == ['SPLIT_2', 'SPLIT_1']:
return [json.dumps(splits_json["splitChange1_1"]["splits"][0]), json.dumps(splits_json["splitChange1_1"]["splits"][1])]
adapter.mget = mget

storage = RedisSplitStorage(adapter, config_flag_sets=['set_1'])

def get_feature_flags_by_sets(flag_sets):
if flag_sets=={'set_1'}:
return []
if flag_sets=={'set2'}:
return ['SPLIT_2']
if flag_sets=={'set2', 'set1'}:
return ['SPLIT_2', 'SPLIT_1']
storage.get_feature_flags_by_sets = get_feature_flags_by_sets

assert storage.get('SPLIT_2') == None
assert storage.get_split_names() == []
assert storage.get_all_splits() == []

storage = RedisSplitStorage(adapter, config_flag_sets=['set2'])
storage.get_feature_flags_by_sets = get_feature_flags_by_sets
assert storage.get('SPLIT_2').name == 'SPLIT_2'
assert storage.get_split_names() == ['SPLIT_2']
splits = storage.get_all_splits()
assert splits[0].name == 'SPLIT_2'
assert len(splits) == 1

storage = RedisSplitStorage(adapter, config_flag_sets=['set2', 'set1'])
storage.get_feature_flags_by_sets = get_feature_flags_by_sets
assert storage.get('SPLIT_2').name == 'SPLIT_2'
assert storage.get_split_names() == ['SPLIT_2', 'SPLIT_1']
splits = storage.get_all_splits()
assert splits[0].name == 'SPLIT_2'
assert splits[1].name == 'SPLIT_1'
assert len(splits) == 2


class RedisSegmentStorageTests(object):
"""Redis segment storage test cases."""

Expand Down