-
Notifications
You must be signed in to change notification settings - Fork 1
/
test_vsr.py
49 lines (34 loc) · 1.33 KB
/
test_vsr.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
39
40
41
42
43
44
45
46
47
48
49
from vsr_2 import Client, Replica
from network import Network
import threading
import time
import logging
import multiprocessing
def main():
ip = "127.0.0.1"
node_ids = [0, 1, 2, 3, 4]
node_addresses = [(ip, port) for port in [5001, 5002, 5003, 5004, 5005]]
client_addr = ("127.0.0.1", 5000)
scenario = "best"
directory = f'queries/{scenario}/vsr/query_1.txt'
network = Network(node_ids, node_addresses)
f = 1
quorumsize = f + 1
processes = []
for i in node_ids:
run_process = multiprocessing.Process(target=start_replica, args=(network, i, node_addresses[i], quorumsize, 1))
run_process.name = f"run_process_replica_{i}"
processes.append(run_process)
run_process.start()
client_process = multiprocessing.Process(target=start_client, args=(node_addresses, 30, client_addr, scenario))
client_process.name = "client_process"
processes.append(client_process)
client_process.run()
def start_replica(network, id, address, quorumsize, timeout):
replica = Replica(network, id, address, quorumsize, timeout, ("127.0.0.1", 5000))
replica.run()
def start_client(node_addresses, timeout, client_addr, scenario):
client = Client(node_addresses, timeout, client_addr, scenario)
client.run()
if __name__ == "__main__":
main()