/
test_harness.py
38 lines (27 loc) · 1010 Bytes
/
test_harness.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
36
37
38
#!/usr/bin/env python
from gevent import joinall, spawn
from acceptor import Acceptor
from proposer import Proposer
from client import Client
from learner import Learner
from logger import get_logger
from logging import getLogger, CRITICAL, INFO, DEBUG
critical, debug, info = get_logger(__name__)
if __name__ == '__main__':
debug('Starting processes')
from sys import stdin
values = [line.strip() for line in stdin]
config = 'config.txt'
acceptors = [Acceptor(1, config),
Acceptor(2, config),
Acceptor(3, config)]
proposers = [Proposer(1, config)]
learners = [Learner(1, config)]
clients = [Client(3, config, values)]
# suppress logging
for module in (x.__module__ for x in {Acceptor, Proposer, Client}):
getLogger(module).setLevel(level=CRITICAL)
getLogger(Learner.__module__).setLevel(level=INFO)
from sys import exit
joinall([spawn(x.reader_loop) for x in acceptors+proposers+learners+clients]
+ [spawn(x.check_loop, values, lambda: exit(0)) for x in learners])