Skip to content

Commit 5e4fb95

Browse files
yossigoamotzg
authored andcommitted
Add basic config_set / config_get support.
1 parent 517897e commit 5e4fb95

File tree

2 files changed

+42
-0
lines changed

2 files changed

+42
-0
lines changed

mockredis/client.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ def __init__(self,
5353
self.blocking_sleep_interval = blocking_sleep_interval
5454
# The 'Redis' store
5555
self.redis = defaultdict(dict)
56+
self.redis_config = defaultdict(dict)
5657
self.timeouts = defaultdict(dict)
5758
# The 'PubSub' store
5859
self.pubsub = defaultdict(list)
@@ -1396,6 +1397,27 @@ def _normalize_command_response(self, command, response):
13961397

13971398
return response
13981399

1400+
# Config Set/Get commands #
1401+
1402+
def config_set(self, name, value):
1403+
"""
1404+
Set a configuration parameter.
1405+
"""
1406+
self.redis_config[name] = value
1407+
1408+
def config_get(self, pattern='*'):
1409+
"""
1410+
Get one or more configuration parameters.
1411+
"""
1412+
result = {}
1413+
for name, value in self.redis_config.items():
1414+
if fnmatch.fnmatch(name, pattern):
1415+
try:
1416+
result[name] = int(value)
1417+
except ValueError:
1418+
result[name] = value
1419+
return result
1420+
13991421
# PubSub commands #
14001422

14011423
def publish(self, channel, message):

mockredis/tests/test_config.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
from nose.tools import eq_, ok_
2+
3+
from mockredis.tests.fixtures import setup, teardown
4+
5+
6+
class TestRedisConfig(object):
7+
"""Redis config set/get tests"""
8+
9+
def setup(self):
10+
setup(self)
11+
12+
def teardown(self):
13+
teardown(self)
14+
15+
def test_config_set(self):
16+
eq_(self.redis.config_get('config-param'), {})
17+
self.redis.config_set('config-param', 'value')
18+
eq_(self.redis.config_get('config-param'), {'config-param': 'value'})
19+
eq_(self.redis.config_get('config*'), {'config-param': 'value'})
20+

0 commit comments

Comments
 (0)