From d23e9796be3ddb96cf6fac1b879e1ff54f09ef38 Mon Sep 17 00:00:00 2001 From: Matias Melograno Date: Thu, 8 Apr 2021 12:26:49 -0300 Subject: [PATCH 1/3] encoding python3 --- splitio/client/config.py | 4 +-- splitio/storage/adapters/redis.py | 26 +++++++------------ tests/.DS_Store | Bin 0 -> 6148 bytes tests/client/test_factory.py | 6 ++--- tests/integration/test_client_e2e.py | 7 ++--- tests/storage/adapters/test_redis_adapter.py | 6 ++--- 6 files changed, 21 insertions(+), 28 deletions(-) create mode 100644 tests/.DS_Store diff --git a/splitio/client/config.py b/splitio/client/config.py index b051a2c0..98dbfec8 100644 --- a/splitio/client/config.py +++ b/splitio/client/config.py @@ -41,9 +41,9 @@ 'redisUnixSocketPath': None, 'redisEncoding': 'utf-8', 'redisEncodingErrors': 'strict', - 'redisCharset': None, + 'redisCharset': 'utf-8', 'redisErrors': None, - 'redisDecodeResponses': False, + 'redisDecodeResponses': True, 'redisRetryOnTimeout': False, 'redisSsl': False, 'redisSslKeyfile': None, diff --git a/splitio/storage/adapters/redis.py b/splitio/storage/adapters/redis.py index 5fa372bb..35575eff 100644 --- a/splitio/storage/adapters/redis.py +++ b/splitio/storage/adapters/redis.py @@ -15,12 +15,6 @@ def missing_redis_dependencies(*_, **__): StrictRedis = Sentinel = missing_redis_dependencies -def _bytes_to_string(maybe_bytes, encode='utf-8'): - if type(maybe_bytes).__name__ == 'bytes': - return str(maybe_bytes, encode) - return maybe_bytes - - class RedisAdapterException(Exception): """Exception to be thrown when a redis command fails with an exception.""" @@ -135,7 +129,7 @@ def keys(self, pattern): """Mimic original redis function but using user custom prefix.""" try: return [ - _bytes_to_string(key) + key for key in self._prefix_helper.remove_prefix(self._decorated.keys(self._prefix_helper.add_prefix(pattern))) ] except RedisError as exc: @@ -153,7 +147,7 @@ def set(self, name, value, *args, **kwargs): def get(self, name): """Mimic original redis function but using user custom prefix.""" try: - return _bytes_to_string(self._decorated.get(self._prefix_helper.add_prefix(name))) + return self._decorated.get(self._prefix_helper.add_prefix(name)) except RedisError as exc: raise RedisAdapterException('Error executing get operation') from exc @@ -189,7 +183,7 @@ def mget(self, names): """Mimic original redis function but using user custom prefix.""" try: return [ - _bytes_to_string(item) + item for item in self._decorated.mget(self._prefix_helper.add_prefix(names)) ] except RedisError as exc: @@ -199,7 +193,7 @@ def smembers(self, name): """Mimic original redis function but using user custom prefix.""" try: return [ - _bytes_to_string(item) + item for item in self._decorated.smembers(self._prefix_helper.add_prefix(name)) ] except RedisError as exc: @@ -243,7 +237,7 @@ def hset(self, name, key, value): def hget(self, name, key): """Mimic original redis function but using user custom prefix.""" try: - return _bytes_to_string(self._decorated.hget(self._prefix_helper.add_prefix(name), key)) + return self._decorated.hget(self._prefix_helper.add_prefix(name), key) except RedisError as exc: raise RedisAdapterException('Error executing hget operation') from exc @@ -257,7 +251,7 @@ def incr(self, name, amount=1): def getset(self, name, value): """Mimic original redis function but using user custom prefix.""" try: - return _bytes_to_string(self._decorated.getset(self._prefix_helper.add_prefix(name), value)) + return self._decorated.getset(self._prefix_helper.add_prefix(name), value) except RedisError as exc: raise RedisAdapterException('Error executing getset operation') from exc @@ -278,7 +272,7 @@ def expire(self, key, value): def rpop(self, key): """Mimic original redis function but using user custom prefix.""" try: - return _bytes_to_string(self._decorated.rpop(self._prefix_helper.add_prefix(key))) + return self._decorated.rpop(self._prefix_helper.add_prefix(key)) except RedisError as exc: raise RedisAdapterException('Error executing rpop operation') from exc @@ -359,9 +353,9 @@ def _build_default_client(config): # pylint: disable=too-many-locals unix_socket_path = config.get('redisUnixSocketPath', None) encoding = config.get('redisEncoding', 'utf-8') encoding_errors = config.get('redisEncodingErrors', 'strict') - charset = config.get('redisCharset', None) + charset = config.get('redisCharset', 'utf-8') errors = config.get('redisErrors', None) - decode_responses = config.get('redisDecodeResponses', False) + decode_responses = config.get('redisDecodeResponses', True) retry_on_timeout = config.get('redisRetryOnTimeout', False) ssl = config.get('redisSsl', False) ssl_keyfile = config.get('redisSslKeyfile', None) @@ -438,7 +432,7 @@ def _build_sentinel_client(config): # pylint: disable=too-many-locals connection_pool = config.get('redisConnectionPool', None) encoding = config.get('redisEncoding', 'utf-8') encoding_errors = config.get('redisEncodingErrors', 'strict') - decode_responses = config.get('redisDecodeResponses', False) + decode_responses = config.get('redisDecodeResponses', True) retry_on_timeout = config.get('redisRetryOnTimeout', False) max_connections = config.get('redisMaxConnections', None) prefix = config.get('redisPrefix') diff --git a/tests/.DS_Store b/tests/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..ab1b61f97e8de91e1f5ea7ca39c7e9ac4e976bce GIT binary patch literal 6148 zcmeHKJ8Hu~5S?*c2-K)dxmU;y79pR&7f2vM7=jGOPOU2E%F*)XLqNzWT(~iBVCL=4 z&Rd~ZXfz_C{pI~dq!W<_ZYbXt)@JACE8Ap7fpFY0%1PejEC)HRs;?)E+oFB~>tn&6 zzV@f-^Ei!h`*k|ARDcRl0V+TRsKAX1Snq{3Z6G5RpaN9jPXYTr6u4ncoCE#Sf#4$m zaEr7X);>!BizR?HaSlWVra=V;RddA9pd(+ht|rcbK^M*8L-Wa+6N>uNaewi0(Hh7| z1*pJMfv4DZ*8g|#f9C%si90Gl1s+NP-46Sq$17!TUA>(3+5&%tTg?yL3~Q$#csmAq iJI2P^@v|32U9mOJYvLT}bmW~5| literal 0 HcmV?d00001 diff --git a/tests/client/test_factory.py b/tests/client/test_factory.py index 7d9136c8..997540e5 100644 --- a/tests/client/test_factory.py +++ b/tests/client/test_factory.py @@ -81,9 +81,7 @@ def test_redis_client_creation(self, mocker): 'redisSocketKeepaliveOptions': False, 'redisConnectionPool': False, 'redisUnixSocketPath': '/some_path', - 'redisEncoding': 'ascii', 'redisEncodingErrors': 'non-strict', - 'redisCharset': 'ascii', 'redisErrors': True, 'redisDecodeResponses': True, 'redisRetryOnTimeout': True, @@ -120,9 +118,9 @@ def test_redis_client_creation(self, mocker): socket_keepalive_options=False, connection_pool=False, unix_socket_path='/some_path', - encoding='ascii', + encoding='utf-8', encoding_errors='non-strict', - charset='ascii', + charset='utf-8', errors=True, decode_responses=True, retry_on_timeout=True, diff --git a/tests/integration/test_client_e2e.py b/tests/integration/test_client_e2e.py index 0a7e8ff6..9723f655 100644 --- a/tests/integration/test_client_e2e.py +++ b/tests/integration/test_client_e2e.py @@ -12,10 +12,11 @@ InMemorySegmentStorage, InMemorySplitStorage, InMemoryTelemetryStorage from splitio.storage.redis import RedisEventsStorage, RedisImpressionsStorage, \ RedisSplitStorage, RedisSegmentStorage, RedisTelemetryStorage -from splitio.storage.adapters.redis import RedisAdapter +from splitio.storage.adapters.redis import build, RedisAdapter from splitio.models import splits, segments from splitio.engine.impressions import Manager as ImpressionsManager, ImpressionsMode from splitio.recorder.recorder import StandardRecorder, PipelinedRecorder +from splitio.client.config import DEFAULT_CONFIG class InMemoryIntegrationTests(object): @@ -489,7 +490,7 @@ class RedisIntegrationTests(object): def setup_method(self): """Prepare storages with test data.""" metadata = SdkMetadata('python-1.2.3', 'some_ip', 'some_name') - redis_client = RedisAdapter(StrictRedis()) + redis_client = build(DEFAULT_CONFIG.copy()) split_storage = RedisSplitStorage(redis_client) segment_storage = RedisSegmentStorage(redis_client) @@ -771,7 +772,7 @@ class RedisWithCacheIntegrationTests(RedisIntegrationTests): def setup_method(self): """Prepare storages with test data.""" metadata = SdkMetadata('python-1.2.3', 'some_ip', 'some_name') - redis_client = RedisAdapter(StrictRedis()) + redis_client = build(DEFAULT_CONFIG.copy()) split_storage = RedisSplitStorage(redis_client, True) segment_storage = RedisSegmentStorage(redis_client) diff --git a/tests/storage/adapters/test_redis_adapter.py b/tests/storage/adapters/test_redis_adapter.py index 4d948d28..a159a918 100644 --- a/tests/storage/adapters/test_redis_adapter.py +++ b/tests/storage/adapters/test_redis_adapter.py @@ -90,7 +90,7 @@ def test_adapter_building(self, mocker): 'redisUnixSocketPath': '/tmp/socket', 'redisEncoding': 'utf-8', 'redisEncodingErrors': 'strict', - 'redisCharset': 'ascii', + 'redisCharset': 'utf-8', 'redisErrors': 'abc', 'redisDecodeResponses': True, 'redisRetryOnTimeout': True, @@ -117,7 +117,7 @@ def test_adapter_building(self, mocker): unix_socket_path='/tmp/socket', encoding='utf-8', encoding_errors='strict', - charset='ascii', + charset='utf-8', errors='abc', decode_responses=True, retry_on_timeout=True, @@ -142,7 +142,7 @@ def test_adapter_building(self, mocker): 'redisUnixSocketPath': '/tmp/socket', 'redisEncoding': 'utf-8', 'redisEncodingErrors': 'strict', - 'redisCharset': 'ascii', + 'redisCharset': 'utf-8', 'redisErrors': 'abc', 'redisDecodeResponses': True, 'redisRetryOnTimeout': True, From 2173cc42af3e15a04e472cba14d37c9da24fd56e Mon Sep 17 00:00:00 2001 From: Matias Melograno Date: Thu, 8 Apr 2021 13:52:01 -0300 Subject: [PATCH 2/3] removed DS --- tests/.DS_Store | Bin 6148 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 tests/.DS_Store diff --git a/tests/.DS_Store b/tests/.DS_Store deleted file mode 100644 index ab1b61f97e8de91e1f5ea7ca39c7e9ac4e976bce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHKJ8Hu~5S?*c2-K)dxmU;y79pR&7f2vM7=jGOPOU2E%F*)XLqNzWT(~iBVCL=4 z&Rd~ZXfz_C{pI~dq!W<_ZYbXt)@JACE8Ap7fpFY0%1PejEC)HRs;?)E+oFB~>tn&6 zzV@f-^Ei!h`*k|ARDcRl0V+TRsKAX1Snq{3Z6G5RpaN9jPXYTr6u4ncoCE#Sf#4$m zaEr7X);>!BizR?HaSlWVra=V;RddA9pd(+ht|rcbK^M*8L-Wa+6N>uNaewi0(Hh7| z1*pJMfv4DZ*8g|#f9C%si90Gl1s+NP-46Sq$17!TUA>(3+5&%tTg?yL3~Q$#csmAq iJI2P^@v|32U9mOJYvLT}bmW~5| From 6aa18c2a44ebab82a2c313e1a7c1e8df5de41b08 Mon Sep 17 00:00:00 2001 From: Matias Melograno Date: Thu, 8 Apr 2021 13:53:49 -0300 Subject: [PATCH 3/3] excluding DS_Store --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index 72f8848f..31959c04 100644 --- a/.gitignore +++ b/.gitignore @@ -71,3 +71,5 @@ target/ # vim backup files *.swp + +.DS_Store \ No newline at end of file