forked from Netflix/dynomite
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathredis_node.py
executable file
·35 lines (26 loc) · 930 Bytes
/
redis_node.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#!/usr/bin/env python3
import redis
from node import Node
from plumbum import BG
from plumbum import local
redis_bin = local.get('./test/_binaries/redis-server', 'redis-server')
class RedisNode(Node):
def __init__(self, ip, port):
super(RedisNode, self).__init__(ip, port)
self.name = "Redis" + self.name
self.logfile = 'logs/redis_{}.log'.format(self.ip)
self.proc_future = None
def get_connection(self):
return redis.StrictRedis(self.ip, self.port, db=0)
def get_pid(self):
return self.proc_future.proc.pid
def launch(self):
self.proc_future = \
(redis_bin['--bind', self.ip, '--port', self.port] > self.logfile) & BG(-9)
def teardown(self):
self.proc_future.proc.kill()
self.proc_future.wait()
def __enter__(self):
self.launch()
def __exit__(self, type_, value, traceback):
self.teardown()