-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsecureProvider.py
66 lines (52 loc) · 1.75 KB
/
secureProvider.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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
import simpy
import node
import membrane
import rendezvousPoint
import flow
env = simpy.Environment()
#init events
# Initial set up
p_node = node.Node(env)
print("p_node: {0}".format(p_node))
p_mem = membrane.Membrane(env, p_node)
print("p_mem: {0}".format(p_mem))
p_rp = rendezvousPoint.RendezvousPoint(env, p_node)
print("p_rp: {0}".format(p_rp))
# Create a "public" copy of the RP and wrap it in the membrane
p_rp_public = rendezvousPoint.RendezvousPoint(env, p_node)
print("p_rp_public: {0}".format(p_rp_public))
env.process(p_mem.wrap(p_rp_public))
#p_flow = flow.Flow(env, p_node, None)
#print(p_flow)
c_node = node.Node(env)
print("c_node: {0}".format(c_node))
#env.process(c_node.addRPCap(p_rp_public, 1))
# Step 1
c_mem = membrane.Membrane(env, c_node)
print("c_mem: {0}".format(c_mem))
c_rp = rendezvousPoint.RendezvousPoint(env, c_node)
print("c_rp: {0}".format(c_rp))
# Copy of RP to send to provider node
env.process(c_node.sendCap(c_rp, p_rp_public, c_mem, 5))
env.process(p_node.recvCap(p_rp_public, p_mem, 5))
# Send new c_node through the c_rp sent
c_node_2 = node.Node(env)
env.process(c_node.addNodeCap(c_node_2, 1))
env.process(c_node.sendCap(c_node_2, c_rp, c_mem, 10))
env.process(p_node.recvCap(c_rp, None, 10))
# TODO: How to implement "blocking receive on c_rp" (to allow provider to finish installing)
# Step 2
# Clean Node c_node_2
env.process(c_node_2.reset(15))
# Step 3
# install_service()
# Create rp for c_node_2 by p_node
c_rp_2 = rendezvousPoint.RendezvousPoint(env, c_node_2)
print("c_rp_2: {0}".format(c_rp_2))
# p_node sends rp over c_rp thus it is received membrane free
env.process(p_node.sendCap(c_rp_2, c_rp, c_mem, 20))
env.process(c_node.recvCap(c_rp, c_mem, 20))
# Step 4
# Clear membrane c_mem
env.process(c_mem.clear(25))
env.run()