Add nodes groups features

This commit is contained in:
Loic Guegan 2023-06-28 15:46:15 +02:00
parent e95d50d0ff
commit f84359ec7a
32 changed files with 262 additions and 244 deletions

View file

@ -3,11 +3,12 @@ from esds.rcode import RCode
class Node:
available_node_id=0
def __init__(self,src,interfaces):
def __init__(self,src,interfaces,grp):
"""
self.chest: contains mutex protected data
"""
self.node_id=Node.available_node_id
self.grp=grp # Node group
Node.available_node_id+=1 # Refresh node id
self.src=src # Store the node source code
self.args=None # Store the node arguments (passed through Simulator.create_node()

View file

@ -58,6 +58,7 @@ class YAMLPlatformFile:
"node_count": 0,
"implementations": [],
"arguments": [],
"groups": dict(),
"interfaces": dict()
}
@ -145,6 +146,14 @@ class YAMLPlatformFile:
self.default["node_count"]=nodes["count"]
else:
self.parsing_error("node count not provided")
if "groups" in nodes:
if type(nodes["groups"]) != list:
self.parsing_error("nodes groups should be a list")
for grp in nodes["groups"]:
words=grp.split()
r=UnitsParser.node_range(words[0],self.default["node_count"])
for node in r:
self.default["groups"][node]=words[1]
if "implementations" in nodes:
if type(nodes["implementations"]) != list:
self.parsing_error("nodes implementations should be a list of file path")
@ -210,7 +219,10 @@ class YAMLPlatformFile:
##### Create simulator
simulator=Simulator(self.default["interfaces"])
for node_id in range(0,self.default["node_count"]):
simulator.create_node(self.default["implementations"][node_id], args=self.default["arguments"][node_id])
if node_id in self.default["groups"]:
simulator.create_node(self.default["implementations"][node_id], args=self.default["arguments"][node_id],grp=self.default["groups"][node_id])
else:
simulator.create_node(self.default["implementations"][node_id], args=self.default["arguments"][node_id])
##### Run simulation
simulator.run(
breakpoints=self.default["breakpoints"],

View file

@ -75,18 +75,19 @@ class Simulator:
event[2][5]=new_duration
self.netmat=netmat
def create_node(self, src, args=None):
def create_node(self, src, args=None, grp="def"):
"""
Create a node thread and run it
"""
node=Node(src, self.netmat.keys())
node=Node(src, self.netmat.keys(), grp)
self.nodes.append(node)
thread=threading.Thread(target=node.run,args=[args]) # There must be "daemon=True" as a parameter, but we removed it to be compatible with older version of python
thread.start()
def log(self,msg,node=None):
src = "esds" if node is None else "n"+str(node)
logline="[t="+str(self.time_truncated)+",src="+src+"] "+msg
logline="[t="+str(self.time_truncated)+",src=esds] "+msg
if node is not None:
logline="[t="+str(self.time_truncated)+",src=n"+str(node.node_id)+",grp="+str(node.grp)+"] "+msg
if self.debug is not None:
self.debug.append_log(logline)
print(logline)
@ -118,7 +119,7 @@ class Simulator:
break
elif not timeout_remove_only:
if node["request"] == "log":
self.log(node.rargs,node=node.node_id)
self.log(node.rargs,node=node)
node["state"]="running"
node.rqueue.put(("log",RCode.SUCCESS))
elif node["request"] == "timeout_add":
@ -140,7 +141,7 @@ class Simulator:
node["state"]="running"
node.rqueue.put(("notify_remove",RCode.SUCCESS))
elif node["request"] == "abort":
self.log("Simulation aborted: "+node.rargs,node=node.node_id)
self.log("Simulation aborted: "+node.rargs,node=node)
exit(1)
elif node["request"] == "read":
node["state"]="running"
@ -159,12 +160,12 @@ class Simulator:
elif node["request"] == "turn_on":
node["state"]="running"
node.rqueue.put(("turn_on",RCode.SUCCESS))
self.log("Turned on",node=node.node_id)
self.log("Turned on",node=node)
elif node["request"] == "turn_off":
# Update node state after turning off
node["state"]="running"
node.rqueue.put(("turn_off",RCode.SUCCESS))
self.log("Turned off",node=node.node_id)
self.log("Turned off",node=node)
# We cancel communication after node has turned off
self.cancel_communications(node.node_id,reason=RCode.RECEIVER_TURNED_OFF)
elif node["request"] == "send_cancel":
@ -281,7 +282,7 @@ class Simulator:
if len(selector) != 0:
self.events=self.events[~np.array(selector)]
for node in notify:
self.log("Interferences on "+interface,node=node)
self.log("Interferences on "+interface,node=self.nodes[node])
return status
def sync_node_blocking(self, node):
@ -294,7 +295,7 @@ class Simulator:
interface, data, datasize, dst, receiver_required=node.rargs
if dst != None:
if not (dst >=0 and dst <=len(self.nodes)):
self.log("Invalid dst used in send() or sendt(), node "+str(dst)+" not found", node=node.node_id)
self.log("Invalid dst used in send() or sendt(), node "+str(dst)+" not found", node=node)
exit(1)
if not self.communicate(interface, node.node_id, dst, data, datasize,receiver_required):
node["state"]="running"
@ -323,7 +324,7 @@ class Simulator:
"""
nsrc=self.nodes[src]
if self.netmat[interface]["is_wired"]:
self.log("Send "+str(datasize)+" bytes to n"+str(dst)+" on "+interface,node=src)
self.log("Send "+str(datasize)+" bytes to n"+str(dst)+" on "+interface,node=nsrc)
if not self.nodes[dst]["turned_on"] and receiver_required:
return(False)
self.update_sharing(dst,1,interface) # Update sharing first
@ -331,7 +332,7 @@ class Simulator:
duration=datasize*8/(self.netmat[interface]["bandwidth"][src,dst]/self.sharing[interface][dst])+self.netmat[interface]["latency"][src,dst]
self.add_event(0,duration+self.time,(src,dst,interface,data,datasize,duration,datasize,self.time,self.nodes[dst]["turned_on"],receiver_required))
else:
self.log("Send "+str(datasize)+" bytes on "+interface,node=src)
self.log("Send "+str(datasize)+" bytes on "+interface,node=nsrc)
for dst in self.list_receivers(nsrc,interface):
if self.nodes[dst]["turned_on"]:
duration=datasize*8/self.netmat[interface]["bandwidth"][src,dst]+self.netmat[interface]["latency"][src,dst]
@ -418,7 +419,7 @@ class Simulator:
if perform_delivery:
dst["interfaces"][interface].put((data,start_at,self.time))
dst["interfaces_queue_size"][interface]+=1
self.log("Receive "+str(datasize)+" bytes on "+interface,node=int(dst_id))
self.log("Receive "+str(datasize)+" bytes on "+interface,node=dst)
# If node is receiving makes it consume (this way if there is a timeout, it will be removed!)
if dst["state"] == "call_blocking" and dst["request"] == "receive":
dst["interfaces_queue_size"][interface]-=1
@ -437,7 +438,7 @@ class Simulator:
if perform_delivery:
dst["interfaces"][interface].put((data,start_at,self.time))
dst["interfaces_queue_size"][interface]+=1
self.log("Receive "+str(datasize)+" bytes on "+interface,node=int(dst_id))
self.log("Receive "+str(datasize)+" bytes on "+interface,node=dst)
# If node is receiving makes it consume (this way if there is a timeout, it will be removed!)
if dst["state"] == "call_blocking" and dst["request"] == "receive":
dst["interfaces_queue_size"][interface]-=1

View file

@ -28,6 +28,10 @@ nodes:
# 0-@ receiver.py is equivalent to 0-4 receiver.py
implementations:
- all sender.py
# Allow you to assign a group to each node (visible in ESDS log reports)
# If not specified, group is "def" for default
groups:
- 0-2 A
# Node implementation arguments
# arguments keys are ranges of nodes, and values are passed to the specified nodes
arguments:

View file

@ -1,21 +1,21 @@
[t=0.000,src=n0] A
[t=0.000,src=n0] B
[t=0.000,src=n0] C
[t=0.000,src=n0] D
[t=0.000,src=n1] A
[t=0.000,src=n1] B
[t=0.000,src=n1] C
[t=0.000,src=n1] D
[t=0.000,src=n2] A
[t=0.000,src=n2] B
[t=0.000,src=n2] C
[t=0.000,src=n2] D
[t=0.000,src=n3] A
[t=0.000,src=n3] B
[t=0.000,src=n3] C
[t=0.000,src=n3] D
[t=0.000,src=n4] A
[t=0.000,src=n4] B
[t=0.000,src=n4] C
[t=0.000,src=n4] D
[t=0.000,src=n0,grp=def] A
[t=0.000,src=n0,grp=def] B
[t=0.000,src=n0,grp=def] C
[t=0.000,src=n0,grp=def] D
[t=0.000,src=n1,grp=def] A
[t=0.000,src=n1,grp=def] B
[t=0.000,src=n1,grp=def] C
[t=0.000,src=n1,grp=def] D
[t=0.000,src=n2,grp=def] A
[t=0.000,src=n2,grp=def] B
[t=0.000,src=n2,grp=def] C
[t=0.000,src=n2,grp=def] D
[t=0.000,src=n3,grp=def] A
[t=0.000,src=n3,grp=def] B
[t=0.000,src=n3,grp=def] C
[t=0.000,src=n3,grp=def] D
[t=0.000,src=n4,grp=def] A
[t=0.000,src=n4,grp=def] B
[t=0.000,src=n4,grp=def] C
[t=0.000,src=n4,grp=def] D
[t=0.000,src=esds] Simulation ends

View file

@ -1,7 +1,7 @@
[t=0.000,src=n0] Clock is 0.0s
[t=0.000,src=n1] Clock is 0.0s
[t=5698.126,src=n0] Clock is 5698.1256s
[t=5698.126,src=n0] Clock is 5698.1256s
[t=5698.126,src=n1] Clock is 5698.1256s
[t=5698.126,src=n1] Clock is 5698.1256s
[t=0.000,src=n0,grp=def] Clock is 0.0s
[t=0.000,src=n1,grp=def] Clock is 0.0s
[t=5698.126,src=n0,grp=def] Clock is 5698.1256s
[t=5698.126,src=n0,grp=def] Clock is 5698.1256s
[t=5698.126,src=n1,grp=def] Clock is 5698.1256s
[t=5698.126,src=n1,grp=def] Clock is 5698.1256s
[t=5698.126,src=esds] Simulation ends

View file

@ -1,9 +1,9 @@
[t=0.000,src=n2] eth0 is 0
[t=624.000,src=n2] eth0 is 0
[t=1248.000,src=n0] Send 50 bytes to n2 on eth0
[t=1249.000,src=n2] eth0 is 1
[t=1249.000,src=n1] Send 50 bytes to n2 on eth0
[t=1250.000,src=n2] eth0 is 2
[t=1513.667,src=n2] Receive 50 bytes on eth0
[t=1514.667,src=n2] Receive 50 bytes on eth0
[t=0.000,src=n2,grp=def] eth0 is 0
[t=624.000,src=n2,grp=def] eth0 is 0
[t=1248.000,src=n0,grp=def] Send 50 bytes to n2 on eth0
[t=1249.000,src=n2,grp=def] eth0 is 1
[t=1249.000,src=n1,grp=def] Send 50 bytes to n2 on eth0
[t=1250.000,src=n2,grp=def] eth0 is 2
[t=1513.667,src=n2,grp=def] Receive 50 bytes on eth0
[t=1514.667,src=n2,grp=def] Receive 50 bytes on eth0
[t=1514.667,src=esds] Simulation ends

View file

@ -1,6 +1,6 @@
[t=0.000,src=n0] wlan0 is 0
[t=0.000,src=n2] wlan0 is 0
[t=0.000,src=n1] Send 1 bytes on wlan0
[t=1.000,src=n0] Receive 1 bytes on wlan0
[t=1.000,src=n2] Receive 1 bytes on wlan0
[t=0.000,src=n0,grp=def] wlan0 is 0
[t=0.000,src=n2,grp=def] wlan0 is 0
[t=0.000,src=n1,grp=def] Send 1 bytes on wlan0
[t=1.000,src=n0,grp=def] Receive 1 bytes on wlan0
[t=1.000,src=n2,grp=def] Receive 1 bytes on wlan0
[t=1.000,src=esds] Simulation ends

View file

@ -1,11 +1,11 @@
[t=0.000,src=n2] wlan0 is 0
[t=624.000,src=n2] wlan0 is 0
[t=1248.000,src=n0] Send 50 bytes on wlan0
[t=1249.000,src=n2] wlan0 is 1
[t=1249.000,src=n1] Send 50 bytes on wlan0
[t=1250.000,src=n2] wlan0 is 2
[t=1381.333,src=n1] Receive 50 bytes on wlan0
[t=1381.333,src=n2] Receive 50 bytes on wlan0
[t=1382.333,src=n0] Receive 50 bytes on wlan0
[t=1382.333,src=n2] Receive 50 bytes on wlan0
[t=0.000,src=n2,grp=def] wlan0 is 0
[t=624.000,src=n2,grp=def] wlan0 is 0
[t=1248.000,src=n0,grp=def] Send 50 bytes on wlan0
[t=1249.000,src=n2,grp=def] wlan0 is 1
[t=1249.000,src=n1,grp=def] Send 50 bytes on wlan0
[t=1250.000,src=n2,grp=def] wlan0 is 2
[t=1381.333,src=n1,grp=def] Receive 50 bytes on wlan0
[t=1381.333,src=n2,grp=def] Receive 50 bytes on wlan0
[t=1382.333,src=n0,grp=def] Receive 50 bytes on wlan0
[t=1382.333,src=n2,grp=def] Receive 50 bytes on wlan0
[t=1382.333,src=esds] Simulation ends

View file

@ -1,5 +1,5 @@
[t=0.000,src=n0] Send 1 bytes to n1 on eth0
[t=0.000,src=n1] Receive failed code=RCode.TIMEOUT_EXPIRE
[t=1.000,src=n1] Receive 1 bytes on eth0
[t=1.000,src=n1] Received: Hello World!
[t=0.000,src=n0,grp=def] Send 1 bytes to n1 on eth0
[t=0.000,src=n1,grp=def] Receive failed code=RCode.TIMEOUT_EXPIRE
[t=1.000,src=n1,grp=def] Receive 1 bytes on eth0
[t=1.000,src=n1,grp=def] Received: Hello World!
[t=1.000,src=esds] Simulation ends

View file

@ -1,8 +1,8 @@
[t=0.000,src=n0] Send 1 bytes to n1 on eth0
[t=1.000,src=n1] Receive 1 bytes on eth0
[t=1.000,src=n1] Received: Hello World!
[t=1.000,src=n0] Send 1 bytes to n1 on eth0
[t=1.500,src=n1] Receive failed code=RCode.TIMEOUT_EXPIRE
[t=2.000,src=n1] Receive 1 bytes on eth0
[t=2.000,src=n1] Received: Hello World!
[t=0.000,src=n0,grp=def] Send 1 bytes to n1 on eth0
[t=1.000,src=n1,grp=def] Receive 1 bytes on eth0
[t=1.000,src=n1,grp=def] Received: Hello World!
[t=1.000,src=n0,grp=def] Send 1 bytes to n1 on eth0
[t=1.500,src=n1,grp=def] Receive failed code=RCode.TIMEOUT_EXPIRE
[t=2.000,src=n1,grp=def] Receive 1 bytes on eth0
[t=2.000,src=n1,grp=def] Received: Hello World!
[t=2.000,src=esds] Simulation ends

View file

@ -1,16 +1,16 @@
[t=0.000,src=n0] Send 0 bytes to n1 on eth0
[t=0.000,src=n1] Receive 0 bytes on eth0
[t=0.000,src=n1] Received: Hello World!
[t=0.000,src=n0] Send 0 bytes to n1 on eth0
[t=0.000,src=n1] Receive 0 bytes on eth0
[t=0.000,src=n1] Received: Hello World!
[t=1.000,src=n0] Send 0 bytes to n1 on eth0
[t=1.000,src=n1] Receive 0 bytes on eth0
[t=1.000,src=n1] Received: Hello World!
[t=3.000,src=n0] Send 0 bytes to n1 on eth0
[t=3.000,src=n1] Receive 0 bytes on eth0
[t=3.000,src=n1] Received: Hello World!
[t=3.000,src=n0] Send 0 bytes to n1 on eth0
[t=3.000,src=n1] Receive 0 bytes on eth0
[t=3.000,src=n1] Received: Hello World!
[t=0.000,src=n0,grp=def] Send 0 bytes to n1 on eth0
[t=0.000,src=n1,grp=def] Receive 0 bytes on eth0
[t=0.000,src=n1,grp=def] Received: Hello World!
[t=0.000,src=n0,grp=def] Send 0 bytes to n1 on eth0
[t=0.000,src=n1,grp=def] Receive 0 bytes on eth0
[t=0.000,src=n1,grp=def] Received: Hello World!
[t=1.000,src=n0,grp=def] Send 0 bytes to n1 on eth0
[t=1.000,src=n1,grp=def] Receive 0 bytes on eth0
[t=1.000,src=n1,grp=def] Received: Hello World!
[t=3.000,src=n0,grp=def] Send 0 bytes to n1 on eth0
[t=3.000,src=n1,grp=def] Receive 0 bytes on eth0
[t=3.000,src=n1,grp=def] Received: Hello World!
[t=3.000,src=n0,grp=def] Send 0 bytes to n1 on eth0
[t=3.000,src=n1,grp=def] Receive 0 bytes on eth0
[t=3.000,src=n1,grp=def] Received: Hello World!
[t=3.000,src=esds] Simulation ends

View file

@ -1,14 +1,14 @@
[t=0.000,src=n0] Send 1 bytes on wlan0
[t=1.000,src=n1] Receive 1 bytes on wlan0
[t=1.000,src=n0] Send 1 bytes on wlan1
[t=2.000,src=n1] Receive 1 bytes on wlan1
[t=2.000,src=n2] Receive 1 bytes on wlan1
[t=2.000,src=n0] Send 1 bytes to n1 on eth0
[t=3.000,src=n1] Receive 1 bytes on eth0
[t=3.000,src=n0] Send 1 bytes to n2 on eth0
[t=4.000,src=n2] Receive 1 bytes on eth0
[t=4.000,src=n0] Send 1 bytes to n1 on eth1
[t=4.500,src=n1] Receive 1 bytes on eth1
[t=4.500,src=n0] Send 1 bytes to n2 on eth1
[t=5.000,src=n2] Receive 1 bytes on eth1
[t=0.000,src=n0,grp=def] Send 1 bytes on wlan0
[t=1.000,src=n1,grp=def] Receive 1 bytes on wlan0
[t=1.000,src=n0,grp=def] Send 1 bytes on wlan1
[t=2.000,src=n1,grp=def] Receive 1 bytes on wlan1
[t=2.000,src=n2,grp=def] Receive 1 bytes on wlan1
[t=2.000,src=n0,grp=def] Send 1 bytes to n1 on eth0
[t=3.000,src=n1,grp=def] Receive 1 bytes on eth0
[t=3.000,src=n0,grp=def] Send 1 bytes to n2 on eth0
[t=4.000,src=n2,grp=def] Receive 1 bytes on eth0
[t=4.000,src=n0,grp=def] Send 1 bytes to n1 on eth1
[t=4.500,src=n1,grp=def] Receive 1 bytes on eth1
[t=4.500,src=n0,grp=def] Send 1 bytes to n2 on eth1
[t=5.000,src=n2,grp=def] Receive 1 bytes on eth1
[t=5.000,src=esds] Simulation ends

View file

@ -1,18 +1,18 @@
[t=0.000,src=n0] Send 1 bytes to n1 on eth0
[t=1.000,src=n1] Receive 1 bytes on eth0
[t=1.000,src=n1] Received: Hello World!
[t=1.000,src=n0] Send 1 bytes to n1 on eth0
[t=2.000,src=n1] Receive 1 bytes on eth0
[t=3.000,src=n0] Send 15 bytes to n1 on eth0
[t=3.000,src=n1] Received: Hello World!
[t=3.000,src=n1] Turned off
[t=4.000,src=n1] Turned on
[t=5.000,src=n1] Receive failed code=RCode.TIMEOUT_EXPIRE
[t=18.000,src=n0] End transmission
[t=18.000,src=n0] Send 15 bytes to n1 on eth0
[t=33.000,src=n1] Receive 15 bytes on eth0
[t=33.000,src=n0] End transmission
[t=33.000,src=n0] Send 15 bytes to n1 on eth0
[t=35.000,src=n1] Turned off
[t=35.000,src=n0] End transmission
[t=0.000,src=n0,grp=def] Send 1 bytes to n1 on eth0
[t=1.000,src=n1,grp=def] Receive 1 bytes on eth0
[t=1.000,src=n1,grp=def] Received: Hello World!
[t=1.000,src=n0,grp=def] Send 1 bytes to n1 on eth0
[t=2.000,src=n1,grp=def] Receive 1 bytes on eth0
[t=3.000,src=n0,grp=def] Send 15 bytes to n1 on eth0
[t=3.000,src=n1,grp=def] Received: Hello World!
[t=3.000,src=n1,grp=def] Turned off
[t=4.000,src=n1,grp=def] Turned on
[t=5.000,src=n1,grp=def] Receive failed code=RCode.TIMEOUT_EXPIRE
[t=18.000,src=n0,grp=def] End transmission
[t=18.000,src=n0,grp=def] Send 15 bytes to n1 on eth0
[t=33.000,src=n1,grp=def] Receive 15 bytes on eth0
[t=33.000,src=n0,grp=def] End transmission
[t=33.000,src=n0,grp=def] Send 15 bytes to n1 on eth0
[t=35.000,src=n1,grp=def] Turned off
[t=35.000,src=n0,grp=def] End transmission
[t=35.000,src=esds] Simulation ends

View file

@ -1,7 +1,7 @@
[t=0.000,src=n0] Send 1 bytes to n2 on eth0
[t=0.000,src=n1] Send 1 bytes to n2 on eth0
[t=2.000,src=n2] Receive 1 bytes on eth0
[t=2.000,src=n2] Receive 1 bytes on eth0
[t=2.000,src=n2] Received: Hello World from 0!
[t=2.000,src=n2] Received: Hello World from 1!
[t=0.000,src=n0,grp=def] Send 1 bytes to n2 on eth0
[t=0.000,src=n1,grp=def] Send 1 bytes to n2 on eth0
[t=2.000,src=n2,grp=def] Receive 1 bytes on eth0
[t=2.000,src=n2,grp=def] Receive 1 bytes on eth0
[t=2.000,src=n2,grp=def] Received: Hello World from 0!
[t=2.000,src=n2,grp=def] Received: Hello World from 1!
[t=2.000,src=esds] Simulation ends

View file

@ -1,40 +1,40 @@
[t=0.000,src=n0] Send 1 bytes to n3 on eth0
[t=0.000,src=n1] Send 1 bytes to n3 on eth0
[t=0.000,src=n2] Send 1 bytes to n3 on eth0
[t=3.000,src=n3] Receive 1 bytes on eth0
[t=3.000,src=n3] Receive 1 bytes on eth0
[t=3.000,src=n3] Receive 1 bytes on eth0
[t=3.000,src=n3] Received: Hello World from 0!
[t=3.000,src=n0] Send 2 bytes to n3 on eth0
[t=3.000,src=n1] Send 1 bytes to n3 on eth0
[t=3.000,src=n2] Send 1 bytes to n3 on eth0
[t=3.000,src=n3] Received: Hello World from 1!
[t=3.000,src=n3] Received: Hello World from 2!
[t=6.000,src=n3] Receive 1 bytes on eth0
[t=6.000,src=n3] Receive 1 bytes on eth0
[t=6.000,src=n3] Received: Hello World from 1!
[t=6.000,src=n3] Received: Hello World from 2!
[t=7.000,src=n3] Receive 2 bytes on eth0
[t=7.000,src=n3] Received: Hello World (2bytes) from 0!
[t=7.000,src=n0] Send 2 bytes to n3 on eth0
[t=7.000,src=n1] Send 2 bytes to n3 on eth0
[t=7.000,src=n2] Send 1 bytes to n3 on eth0
[t=10.000,src=n3] Receive 1 bytes on eth0
[t=10.000,src=n3] Received: Hello World from 2!
[t=12.000,src=n3] Receive 2 bytes on eth0
[t=12.000,src=n3] Receive 2 bytes on eth0
[t=12.000,src=n3] Received: Hello World (2bytes) from 0!
[t=12.000,src=n0] Send 1 bytes to n3 on eth0
[t=12.000,src=n1] Send 2 bytes to n3 on eth0
[t=12.000,src=n2] Send 3 bytes to n3 on eth0
[t=12.000,src=n3] Received: Hello World (2bytes) from 1!
[t=15.000,src=n3] Receive 1 bytes on eth0
[t=15.000,src=n3] Received: Hello World from 0!
[t=17.000,src=n3] Receive 2 bytes on eth0
[t=17.000,src=n3] Received: Hello World from 1!
[t=18.000,src=n3] Receive 3 bytes on eth0
[t=18.000,src=n3] Received: Hello World from 2!
[t=18.000,src=n0] Send 5 bytes to n3 on eth0
[t=23.000,src=n3] Receive 5 bytes on eth0
[t=23.000,src=n3] Received: Hello World from 0!
[t=0.000,src=n0,grp=def] Send 1 bytes to n3 on eth0
[t=0.000,src=n1,grp=def] Send 1 bytes to n3 on eth0
[t=0.000,src=n2,grp=def] Send 1 bytes to n3 on eth0
[t=3.000,src=n3,grp=def] Receive 1 bytes on eth0
[t=3.000,src=n3,grp=def] Receive 1 bytes on eth0
[t=3.000,src=n3,grp=def] Receive 1 bytes on eth0
[t=3.000,src=n3,grp=def] Received: Hello World from 0!
[t=3.000,src=n0,grp=def] Send 2 bytes to n3 on eth0
[t=3.000,src=n1,grp=def] Send 1 bytes to n3 on eth0
[t=3.000,src=n2,grp=def] Send 1 bytes to n3 on eth0
[t=3.000,src=n3,grp=def] Received: Hello World from 1!
[t=3.000,src=n3,grp=def] Received: Hello World from 2!
[t=6.000,src=n3,grp=def] Receive 1 bytes on eth0
[t=6.000,src=n3,grp=def] Receive 1 bytes on eth0
[t=6.000,src=n3,grp=def] Received: Hello World from 1!
[t=6.000,src=n3,grp=def] Received: Hello World from 2!
[t=7.000,src=n3,grp=def] Receive 2 bytes on eth0
[t=7.000,src=n3,grp=def] Received: Hello World (2bytes) from 0!
[t=7.000,src=n0,grp=def] Send 2 bytes to n3 on eth0
[t=7.000,src=n1,grp=def] Send 2 bytes to n3 on eth0
[t=7.000,src=n2,grp=def] Send 1 bytes to n3 on eth0
[t=10.000,src=n3,grp=def] Receive 1 bytes on eth0
[t=10.000,src=n3,grp=def] Received: Hello World from 2!
[t=12.000,src=n3,grp=def] Receive 2 bytes on eth0
[t=12.000,src=n3,grp=def] Receive 2 bytes on eth0
[t=12.000,src=n3,grp=def] Received: Hello World (2bytes) from 0!
[t=12.000,src=n0,grp=def] Send 1 bytes to n3 on eth0
[t=12.000,src=n1,grp=def] Send 2 bytes to n3 on eth0
[t=12.000,src=n2,grp=def] Send 3 bytes to n3 on eth0
[t=12.000,src=n3,grp=def] Received: Hello World (2bytes) from 1!
[t=15.000,src=n3,grp=def] Receive 1 bytes on eth0
[t=15.000,src=n3,grp=def] Received: Hello World from 0!
[t=17.000,src=n3,grp=def] Receive 2 bytes on eth0
[t=17.000,src=n3,grp=def] Received: Hello World from 1!
[t=18.000,src=n3,grp=def] Receive 3 bytes on eth0
[t=18.000,src=n3,grp=def] Received: Hello World from 2!
[t=18.000,src=n0,grp=def] Send 5 bytes to n3 on eth0
[t=23.000,src=n3,grp=def] Receive 5 bytes on eth0
[t=23.000,src=n3,grp=def] Received: Hello World from 0!
[t=23.000,src=esds] Simulation ends

View file

@ -1,16 +1,16 @@
[t=0.000,src=n0] Send 1 bytes on wlan0
[t=1.000,src=n1] Receive 1 bytes on wlan0
[t=1.000,src=n2] Receive 1 bytes on wlan0
[t=1.000,src=n1] Received: Hello World!
[t=1.000,src=n2] Received: Hello World!
[t=1.000,src=n2] Turned off
[t=1.000,src=n0] Send 1 bytes on wlan0
[t=2.000,src=n1] Receive 1 bytes on wlan0
[t=2.000,src=n1] Received: Hello World!
[t=2.000,src=n2] Turned on
[t=2.000,src=n0] Send 1 bytes on wlan0
[t=2.500,src=n2] Turned off
[t=3.000,src=n1] Receive 1 bytes on wlan0
[t=3.000,src=n1] Received: Hello World!
[t=3.000,src=n2] Turned on
[t=0.000,src=n0,grp=def] Send 1 bytes on wlan0
[t=1.000,src=n1,grp=def] Receive 1 bytes on wlan0
[t=1.000,src=n2,grp=def] Receive 1 bytes on wlan0
[t=1.000,src=n1,grp=def] Received: Hello World!
[t=1.000,src=n2,grp=def] Received: Hello World!
[t=1.000,src=n2,grp=def] Turned off
[t=1.000,src=n0,grp=def] Send 1 bytes on wlan0
[t=2.000,src=n1,grp=def] Receive 1 bytes on wlan0
[t=2.000,src=n1,grp=def] Received: Hello World!
[t=2.000,src=n2,grp=def] Turned on
[t=2.000,src=n0,grp=def] Send 1 bytes on wlan0
[t=2.500,src=n2,grp=def] Turned off
[t=3.000,src=n1,grp=def] Receive 1 bytes on wlan0
[t=3.000,src=n1,grp=def] Received: Hello World!
[t=3.000,src=n2,grp=def] Turned on
[t=3.000,src=esds] Simulation ends

View file

@ -1,6 +1,6 @@
[t=0.000,src=n0] Send 1 bytes on wlan0
[t=0.000,src=n1] Send 1 bytes on wlan0
[t=0.000,src=n0] Interferences on wlan0
[t=0.000,src=n1] Interferences on wlan0
[t=0.000,src=n2] Interferences on wlan0
[t=0.000,src=n0,grp=def] Send 1 bytes on wlan0
[t=0.000,src=n1,grp=def] Send 1 bytes on wlan0
[t=0.000,src=n0,grp=def] Interferences on wlan0
[t=0.000,src=n1,grp=def] Interferences on wlan0
[t=0.000,src=n2,grp=def] Interferences on wlan0
[t=1.000,src=esds] Simulation ends

View file

@ -1,11 +1,11 @@
[t=0.000,src=n0] Send 1 bytes to n1 on eth0
[t=1.000,src=n1] Receive 1 bytes on eth0
[t=1.000,src=n0] Send worked!
[t=1.000,src=n1] Received: Hello World!
[t=1.000,src=n0] Send 1 bytes to n1 on eth0
[t=1.500,src=n0] Send failed
[t=1.500,src=n0] Send 1 bytes to n1 on eth0
[t=2.500,src=n1] Receive 1 bytes on eth0
[t=2.500,src=n0] Send worked!
[t=2.500,src=n1] Received: Hello World!
[t=0.000,src=n0,grp=def] Send 1 bytes to n1 on eth0
[t=1.000,src=n1,grp=def] Receive 1 bytes on eth0
[t=1.000,src=n0,grp=def] Send worked!
[t=1.000,src=n1,grp=def] Received: Hello World!
[t=1.000,src=n0,grp=def] Send 1 bytes to n1 on eth0
[t=1.500,src=n0,grp=def] Send failed
[t=1.500,src=n0,grp=def] Send 1 bytes to n1 on eth0
[t=2.500,src=n1,grp=def] Receive 1 bytes on eth0
[t=2.500,src=n0,grp=def] Send worked!
[t=2.500,src=n1,grp=def] Received: Hello World!
[t=2.500,src=esds] Simulation ends

View file

@ -1,7 +1,7 @@
[t=0.000,src=n0] Send 1 bytes on wlan0
[t=1.000,src=n1] Receive 1 bytes on wlan0
[t=1.000,src=n2] Receive 1 bytes on wlan0
[t=1.000,src=n1] Received: Hello World!
[t=1.000,src=n2] Received: Hello World!
[t=1.000,src=n0] Send 1 bytes on wlan0
[t=0.000,src=n0,grp=def] Send 1 bytes on wlan0
[t=1.000,src=n1,grp=def] Receive 1 bytes on wlan0
[t=1.000,src=n2,grp=def] Receive 1 bytes on wlan0
[t=1.000,src=n1,grp=def] Received: Hello World!
[t=1.000,src=n2,grp=def] Received: Hello World!
[t=1.000,src=n0,grp=def] Send 1 bytes on wlan0
[t=1.500,src=esds] Simulation ends

View file

@ -1,9 +1,9 @@
[t=0.000,src=n0] Before wait
[t=0.000,src=n1] Before wait
[t=2.000,src=n0] After wait
[t=2.000,src=n0] Before wait
[t=2.000,src=n1] After wait
[t=2.000,src=n1] Before wait
[t=5.000,src=n0] After wait
[t=5.000,src=n1] After wait
[t=0.000,src=n0,grp=def] Before wait
[t=0.000,src=n1,grp=def] Before wait
[t=2.000,src=n0,grp=def] After wait
[t=2.000,src=n0,grp=def] Before wait
[t=2.000,src=n1,grp=def] After wait
[t=2.000,src=n1,grp=def] Before wait
[t=5.000,src=n0,grp=def] After wait
[t=5.000,src=n1,grp=def] After wait
[t=5.000,src=esds] Simulation ends

View file

@ -1,10 +1,10 @@
[t=0.000,src=n0] Before wait for 0s
[t=0.000,src=n0] First wait end
[t=0.000,src=n1] Before wait for 1s
[t=0.000,src=n2] Before wait for 2s
[t=1.000,src=n1] First wait end
[t=2.000,src=n2] First wait end
[t=2.000,src=n0] Terminated
[t=2.000,src=n1] Terminated
[t=2.000,src=n2] Terminated
[t=0.000,src=n0,grp=def] Before wait for 0s
[t=0.000,src=n0,grp=def] First wait end
[t=0.000,src=n1,grp=def] Before wait for 1s
[t=0.000,src=n2,grp=def] Before wait for 2s
[t=1.000,src=n1,grp=def] First wait end
[t=2.000,src=n2,grp=def] First wait end
[t=2.000,src=n0,grp=def] Terminated
[t=2.000,src=n1,grp=def] Terminated
[t=2.000,src=n2,grp=def] Terminated
[t=2.000,src=esds] Simulation ends

View file

@ -1,9 +1,9 @@
[t=0.000,src=n0] Send 5 bytes to n1 on eth0
[t=0.000,src=n0,grp=def] Send 5 bytes to n1 on eth0
[t=3.300,src=esds] Hello Callback!
[t=6.600,src=esds] Hello Callback!
[t=9.900,src=esds] Hello Callback!
[t=13.200,src=esds] Hello Callback!
[t=16.500,src=esds] Hello Callback!
[t=19.800,src=esds] Hello Callback!
[t=20.000,src=n1] Receive 5 bytes on eth0
[t=20.000,src=n1,grp=def] Receive 5 bytes on eth0
[t=20.000,src=esds] Simulation ends

View file

@ -1,5 +1,5 @@
[t=0.000,src=n0] Running
[t=0.000,src=n1] Running
[t=0.000,src=n0,grp=def] Running
[t=0.000,src=n1,grp=def] Running
[t=1.000,src=esds] Hello Callback!
[t=2.000,src=esds] Hello Callback!
[t=3.000,src=esds] Hello Callback!

View file

@ -1,3 +1,3 @@
[t=0.000,src=n0] Running
[t=0.000,src=n1] Running
[t=0.000,src=n0,grp=def] Running
[t=0.000,src=n1,grp=def] Running
[t=10.000,src=esds] Simulation ends

View file

@ -1,4 +1,4 @@
[t=0.000,src=n0] Send 1 bytes on wlan0
[t=0.000,src=n2] Send 1 bytes on wlan0
[t=0.000,src=n1] Interferences on wlan0
[t=0.000,src=n0,grp=def] Send 1 bytes on wlan0
[t=0.000,src=n2,grp=def] Send 1 bytes on wlan0
[t=0.000,src=n1,grp=def] Interferences on wlan0
[t=1.000,src=esds] Simulation ends

View file

@ -1,4 +1,4 @@
[t=0.000,src=n0] Send 1 bytes to n1 on eth0
[t=0.000,src=n0,grp=def] Send 1 bytes to n1 on eth0
[t=0.500,src=esds] Network update!
[t=0.750,src=n1] Receive 1 bytes on eth0
[t=0.750,src=n1,grp=def] Receive 1 bytes on eth0
[t=0.750,src=esds] Simulation ends

View file

@ -1,6 +1,6 @@
[t=0.000,src=n0] Send 1 bytes to n2 on eth0
[t=0.000,src=n1] Send 1 bytes to n2 on eth0
[t=0.000,src=n0,grp=def] Send 1 bytes to n2 on eth0
[t=0.000,src=n1,grp=def] Send 1 bytes to n2 on eth0
[t=1.000,src=esds] Network update!
[t=1.500,src=n2] Receive 1 bytes on eth0
[t=1.500,src=n2] Receive 1 bytes on eth0
[t=1.500,src=n2,grp=def] Receive 1 bytes on eth0
[t=1.500,src=n2,grp=def] Receive 1 bytes on eth0
[t=1.500,src=esds] Simulation ends

View file

@ -1,5 +1,5 @@
[t=0.000,src=n0] Send 1 bytes to n1 on eth0
[t=0.000,src=n0,grp=def] Send 1 bytes to n1 on eth0
[t=0.500,src=esds] Network update!
[t=1.000,src=esds] Network update!
[t=1.333,src=n1] Receive 1 bytes on eth0
[t=1.333,src=n1,grp=def] Receive 1 bytes on eth0
[t=1.333,src=esds] Simulation ends

View file

@ -1,7 +1,7 @@
[t=0.000,src=n0] Send 1 bytes to n2 on eth0
[t=0.000,src=n1] Send 1 bytes to n2 on eth0
[t=0.000,src=n0,grp=def] Send 1 bytes to n2 on eth0
[t=0.000,src=n1,grp=def] Send 1 bytes to n2 on eth0
[t=1.000,src=esds] Network update!
[t=2.000,src=esds] Network update!
[t=2.300,src=n2] Receive 1 bytes on eth0
[t=2.300,src=n2] Receive 1 bytes on eth0
[t=2.300,src=n2,grp=def] Receive 1 bytes on eth0
[t=2.300,src=n2,grp=def] Receive 1 bytes on eth0
[t=2.300,src=esds] Simulation ends

View file

@ -1,4 +1,4 @@
[t=0.000,src=n0] Send 1 bytes on wlan0
[t=0.000,src=n0,grp=def] Send 1 bytes on wlan0
[t=0.500,src=esds] Network update!
[t=0.750,src=n1] Receive 1 bytes on wlan0
[t=0.750,src=n1,grp=def] Receive 1 bytes on wlan0
[t=0.750,src=esds] Simulation ends

View file

@ -1,5 +1,5 @@
[t=0.000,src=n0] Send 1 bytes on wlan0
[t=0.000,src=n0,grp=def] Send 1 bytes on wlan0
[t=0.500,src=esds] Network update!
[t=1.000,src=esds] Network update!
[t=1.333,src=n1] Receive 1 bytes on wlan0
[t=1.333,src=n1,grp=def] Receive 1 bytes on wlan0
[t=1.333,src=esds] Simulation ends