Skip to content

Commit b834061

Browse files
committed
common/redis_client
1 parent dd63b54 commit b834061

File tree

8 files changed

+105
-49
lines changed

8 files changed

+105
-49
lines changed

lambdas/mns_subscription/poetry.lock

Lines changed: 33 additions & 8 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lambdas/redis_sync/src/redis_cacher.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@
22

33
import json
44
from transform_map import transform_map
5-
from common.clients import get_redis_client, logger
5+
from common.clients import logger
6+
from common.redis_client import get_redis_client
67
from common.s3_reader import S3Reader
78

89

lambdas/redis_sync/src/redis_sync.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
from event_read import read_event
22
from record_processor import process_record
3-
from common.clients import get_redis_client, STREAM_NAME, logger
3+
from common.clients import STREAM_NAME, logger
44
from common.log_decorator import logging_decorator
5+
from common.redis_client import get_redis_client
56
from common.s3_event import S3Event
67
'''
78
Event Processor

lambdas/redis_sync/tests/test_redis_cacher.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ def setUp(self):
1111
self.mock_s3_reader = self.s3_reader_patcher.start()
1212
self.transform_map_patcher = patch("redis_cacher.transform_map")
1313
self.mock_transform_map = self.transform_map_patcher.start()
14-
self.redis_client_patcher = patch("common.clients.redis_client")
14+
self.redis_client_patcher = patch("common.redis_client.redis_client")
1515
self.mock_redis_client = self.redis_client_patcher.start()
1616
self.logger_info_patcher = patch("logging.Logger.info")
1717
self.mock_logger_info = self.logger_info_patcher.start()
Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import os
22
import logging
3-
import redis
43
from boto3 import client as boto3_client, resource as boto3_resource
54

65
logging.basicConfig(level="INFO")
@@ -12,22 +11,9 @@
1211

1312
REGION_NAME = os.getenv("AWS_REGION", "eu-west-2")
1413

15-
REDIS_HOST = os.getenv("REDIS_HOST", "")
16-
REDIS_PORT = os.getenv("REDIS_PORT", 6379)
17-
1814
s3_client = boto3_client("s3", region_name=REGION_NAME)
1915
firehose_client = boto3_client("firehose", region_name=REGION_NAME)
2016

2117
secrets_manager_client = boto3_client("secretsmanager", region_name=REGION_NAME)
2218
dynamodb_resource = boto3_resource("dynamodb", region_name=REGION_NAME)
2319
dynamodb_client = boto3_client("dynamodb", region_name=REGION_NAME)
24-
25-
redis_client = None
26-
27-
28-
def get_redis_client():
29-
global redis_client
30-
if redis_client is None:
31-
logger.info(f"Connecting to Redis at {REDIS_HOST}:{REDIS_PORT}")
32-
redis_client = redis.StrictRedis(host=REDIS_HOST, port=REDIS_PORT, decode_responses=True)
33-
return redis_client
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import os
2+
import redis
3+
from common.clients import logger
4+
5+
STREAM_NAME = os.getenv("SPLUNK_FIREHOSE_NAME", "firehose-name-not-defined")
6+
CONFIG_BUCKET_NAME = os.getenv("CONFIG_BUCKET_NAME", "variconfig-bucketable-not-defined")
7+
8+
REGION_NAME = os.getenv("AWS_REGION", "eu-west-2")
9+
10+
REDIS_HOST = os.getenv("REDIS_HOST", "")
11+
REDIS_PORT = os.getenv("REDIS_PORT", 6379)
12+
13+
redis_client = None
14+
15+
16+
def get_redis_client():
17+
global redis_client
18+
if redis_client is None:
19+
logger.info(f"Connecting to Redis at {REDIS_HOST}:{REDIS_PORT}")
20+
redis_client = redis.StrictRedis(host=REDIS_HOST, port=REDIS_PORT, decode_responses=True)
21+
return redis_client

lambdas/shared/tests/test_common/test_clients.py

Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,6 @@ class TestClients(unittest.TestCase):
88

99
BUCKET_NAME = "default-bucket"
1010
AWS_REGION = "eu-west-2"
11-
REDIS_HOST = "mock-redis-host"
12-
REDIS_PORT = 6379
1311

1412
def setUp(self):
1513
self.boto3_client_patch = patch("boto3.client")
@@ -23,14 +21,8 @@ def setUp(self):
2321
self.mock_getenv.side_effect = lambda key, default=None: {
2422
"CONFIG_BUCKET_NAME": self.BUCKET_NAME,
2523
"AWS_REGION": self.AWS_REGION,
26-
"REDIS_HOST": self.REDIS_HOST,
27-
"REDIS_PORT": self.REDIS_PORT
2824
}.get(key, default)
2925

30-
self.redis_patch = patch("redis.StrictRedis")
31-
self.mock_redis = self.redis_patch.start()
32-
33-
self.mock_redis.return_value = self.mock_redis
3426
self.mock_boto3_client.return_value = self.mock_boto3_client
3527
self.mock_boto3_client.return_value.send_message = {}
3628

@@ -42,8 +34,6 @@ def test_os_environ(self):
4234
importlib.reload(clients)
4335
self.assertEqual(clients.CONFIG_BUCKET_NAME, self.BUCKET_NAME)
4436
self.assertEqual(clients.REGION_NAME, self.AWS_REGION)
45-
self.assertEqual(clients.REDIS_HOST, self.REDIS_HOST)
46-
self.assertEqual(clients.REDIS_PORT, self.REDIS_PORT)
4737

4838
def test_boto3_client(self):
4939
''' Test boto3 client is created with correct parameters '''
@@ -55,11 +45,6 @@ def test_firehose_client(self):
5545
importlib.reload(clients)
5646
self.mock_boto3_client.assert_any_call("firehose", region_name=self.AWS_REGION)
5747

58-
def test_redis_client(self):
59-
''' Test redis client is not initialized on import '''
60-
importlib.reload(clients)
61-
self.mock_redis.assert_not_called()
62-
6348
def test_logging_setup(self):
6449
''' Test logging is set up correctly '''
6550
importlib.reload(clients)
@@ -70,15 +55,6 @@ def test_logging_configuration(self):
7055
importlib.reload(clients)
7156
clients.logger.setLevel.assert_called_once_with("INFO")
7257

73-
def test_redis_client_initialization(self):
74-
''' Test redis client is initialized exactly once even with multiple invocations'''
75-
importlib.reload(clients)
76-
clients.get_redis_client()
77-
clients.get_redis_client()
78-
self.mock_redis.assert_called_once_with(host=self.REDIS_HOST, port=self.REDIS_PORT, decode_responses=True)
79-
self.assertTrue(hasattr(clients, 'redis_client'))
80-
self.assertIsInstance(clients.redis_client, self.mock_redis.return_value.__class__)
81-
8258
def test_logging_initialization(self):
8359
''' Test logging initialization '''
8460
importlib.reload(clients)

0 commit comments

Comments
 (0)