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: class Node:
available_node_id=0 available_node_id=0
def __init__(self,src,interfaces): def __init__(self,src,interfaces,grp):
""" """
self.chest: contains mutex protected data self.chest: contains mutex protected data
""" """
self.node_id=Node.available_node_id self.node_id=Node.available_node_id
self.grp=grp # Node group
Node.available_node_id+=1 # Refresh node id Node.available_node_id+=1 # Refresh node id
self.src=src # Store the node source code self.src=src # Store the node source code
self.args=None # Store the node arguments (passed through Simulator.create_node() self.args=None # Store the node arguments (passed through Simulator.create_node()

View file

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

View file

@ -75,18 +75,19 @@ class Simulator:
event[2][5]=new_duration event[2][5]=new_duration
self.netmat=netmat 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 Create a node thread and run it
""" """
node=Node(src, self.netmat.keys()) node=Node(src, self.netmat.keys(), grp)
self.nodes.append(node) 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=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() thread.start()
def log(self,msg,node=None): def log(self,msg,node=None):
src = "esds" if node is None else "n"+str(node) logline="[t="+str(self.time_truncated)+",src=esds] "+msg
logline="[t="+str(self.time_truncated)+",src="+src+"] "+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: if self.debug is not None:
self.debug.append_log(logline) self.debug.append_log(logline)
print(logline) print(logline)
@ -118,7 +119,7 @@ class Simulator:
break break
elif not timeout_remove_only: elif not timeout_remove_only:
if node["request"] == "log": if node["request"] == "log":
self.log(node.rargs,node=node.node_id) self.log(node.rargs,node=node)
node["state"]="running" node["state"]="running"
node.rqueue.put(("log",RCode.SUCCESS)) node.rqueue.put(("log",RCode.SUCCESS))
elif node["request"] == "timeout_add": elif node["request"] == "timeout_add":
@ -140,7 +141,7 @@ class Simulator:
node["state"]="running" node["state"]="running"
node.rqueue.put(("notify_remove",RCode.SUCCESS)) node.rqueue.put(("notify_remove",RCode.SUCCESS))
elif node["request"] == "abort": elif node["request"] == "abort":
self.log("Simulation aborted: "+node.rargs,node=node.node_id) self.log("Simulation aborted: "+node.rargs,node=node)
exit(1) exit(1)
elif node["request"] == "read": elif node["request"] == "read":
node["state"]="running" node["state"]="running"
@ -159,12 +160,12 @@ class Simulator:
elif node["request"] == "turn_on": elif node["request"] == "turn_on":
node["state"]="running" node["state"]="running"
node.rqueue.put(("turn_on",RCode.SUCCESS)) 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": elif node["request"] == "turn_off":
# Update node state after turning off # Update node state after turning off
node["state"]="running" node["state"]="running"
node.rqueue.put(("turn_off",RCode.SUCCESS)) 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 # We cancel communication after node has turned off
self.cancel_communications(node.node_id,reason=RCode.RECEIVER_TURNED_OFF) self.cancel_communications(node.node_id,reason=RCode.RECEIVER_TURNED_OFF)
elif node["request"] == "send_cancel": elif node["request"] == "send_cancel":
@ -281,7 +282,7 @@ class Simulator:
if len(selector) != 0: if len(selector) != 0:
self.events=self.events[~np.array(selector)] self.events=self.events[~np.array(selector)]
for node in notify: for node in notify:
self.log("Interferences on "+interface,node=node) self.log("Interferences on "+interface,node=self.nodes[node])
return status return status
def sync_node_blocking(self, node): def sync_node_blocking(self, node):
@ -294,7 +295,7 @@ class Simulator:
interface, data, datasize, dst, receiver_required=node.rargs interface, data, datasize, dst, receiver_required=node.rargs
if dst != None: if dst != None:
if not (dst >=0 and dst <=len(self.nodes)): 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) exit(1)
if not self.communicate(interface, node.node_id, dst, data, datasize,receiver_required): if not self.communicate(interface, node.node_id, dst, data, datasize,receiver_required):
node["state"]="running" node["state"]="running"
@ -323,7 +324,7 @@ class Simulator:
""" """
nsrc=self.nodes[src] nsrc=self.nodes[src]
if self.netmat[interface]["is_wired"]: 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: if not self.nodes[dst]["turned_on"] and receiver_required:
return(False) return(False)
self.update_sharing(dst,1,interface) # Update sharing first 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] 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)) self.add_event(0,duration+self.time,(src,dst,interface,data,datasize,duration,datasize,self.time,self.nodes[dst]["turned_on"],receiver_required))
else: 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): for dst in self.list_receivers(nsrc,interface):
if self.nodes[dst]["turned_on"]: if self.nodes[dst]["turned_on"]:
duration=datasize*8/self.netmat[interface]["bandwidth"][src,dst]+self.netmat[interface]["latency"][src,dst] duration=datasize*8/self.netmat[interface]["bandwidth"][src,dst]+self.netmat[interface]["latency"][src,dst]
@ -418,7 +419,7 @@ class Simulator:
if perform_delivery: if perform_delivery:
dst["interfaces"][interface].put((data,start_at,self.time)) dst["interfaces"][interface].put((data,start_at,self.time))
dst["interfaces_queue_size"][interface]+=1 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 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": if dst["state"] == "call_blocking" and dst["request"] == "receive":
dst["interfaces_queue_size"][interface]-=1 dst["interfaces_queue_size"][interface]-=1
@ -437,7 +438,7 @@ class Simulator:
if perform_delivery: if perform_delivery:
dst["interfaces"][interface].put((data,start_at,self.time)) dst["interfaces"][interface].put((data,start_at,self.time))
dst["interfaces_queue_size"][interface]+=1 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 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": if dst["state"] == "call_blocking" and dst["request"] == "receive":
dst["interfaces_queue_size"][interface]-=1 dst["interfaces_queue_size"][interface]-=1

View file

@ -28,6 +28,10 @@ nodes:
# 0-@ receiver.py is equivalent to 0-4 receiver.py # 0-@ receiver.py is equivalent to 0-4 receiver.py
implementations: implementations:
- all sender.py - 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 # Node implementation arguments
# arguments keys are ranges of nodes, and values are passed to the specified nodes # arguments keys are ranges of nodes, and values are passed to the specified nodes
arguments: arguments:

View file

@ -1,21 +1,21 @@
[t=0.000,src=n0] A [t=0.000,src=n0,grp=def] A
[t=0.000,src=n0] B [t=0.000,src=n0,grp=def] B
[t=0.000,src=n0] C [t=0.000,src=n0,grp=def] C
[t=0.000,src=n0] D [t=0.000,src=n0,grp=def] D
[t=0.000,src=n1] A [t=0.000,src=n1,grp=def] A
[t=0.000,src=n1] B [t=0.000,src=n1,grp=def] B
[t=0.000,src=n1] C [t=0.000,src=n1,grp=def] C
[t=0.000,src=n1] D [t=0.000,src=n1,grp=def] D
[t=0.000,src=n2] A [t=0.000,src=n2,grp=def] A
[t=0.000,src=n2] B [t=0.000,src=n2,grp=def] B
[t=0.000,src=n2] C [t=0.000,src=n2,grp=def] C
[t=0.000,src=n2] D [t=0.000,src=n2,grp=def] D
[t=0.000,src=n3] A [t=0.000,src=n3,grp=def] A
[t=0.000,src=n3] B [t=0.000,src=n3,grp=def] B
[t=0.000,src=n3] C [t=0.000,src=n3,grp=def] C
[t=0.000,src=n3] D [t=0.000,src=n3,grp=def] D
[t=0.000,src=n4] A [t=0.000,src=n4,grp=def] A
[t=0.000,src=n4] B [t=0.000,src=n4,grp=def] B
[t=0.000,src=n4] C [t=0.000,src=n4,grp=def] C
[t=0.000,src=n4] D [t=0.000,src=n4,grp=def] D
[t=0.000,src=esds] Simulation ends [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=n0,grp=def] Clock is 0.0s
[t=0.000,src=n1] Clock is 0.0s [t=0.000,src=n1,grp=def] Clock is 0.0s
[t=5698.126,src=n0] Clock is 5698.1256s [t=5698.126,src=n0,grp=def] Clock is 5698.1256s
[t=5698.126,src=n0] Clock is 5698.1256s [t=5698.126,src=n0,grp=def] Clock is 5698.1256s
[t=5698.126,src=n1] Clock is 5698.1256s [t=5698.126,src=n1,grp=def] Clock is 5698.1256s
[t=5698.126,src=n1] Clock is 5698.1256s [t=5698.126,src=n1,grp=def] Clock is 5698.1256s
[t=5698.126,src=esds] Simulation ends [t=5698.126,src=esds] Simulation ends

View file

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

View file

@ -1,11 +1,11 @@
[t=0.000,src=n2] wlan0 is 0 [t=0.000,src=n2,grp=def] wlan0 is 0
[t=624.000,src=n2] wlan0 is 0 [t=624.000,src=n2,grp=def] wlan0 is 0
[t=1248.000,src=n0] Send 50 bytes on wlan0 [t=1248.000,src=n0,grp=def] Send 50 bytes on wlan0
[t=1249.000,src=n2] wlan0 is 1 [t=1249.000,src=n2,grp=def] wlan0 is 1
[t=1249.000,src=n1] Send 50 bytes on wlan0 [t=1249.000,src=n1,grp=def] Send 50 bytes on wlan0
[t=1250.000,src=n2] wlan0 is 2 [t=1250.000,src=n2,grp=def] wlan0 is 2
[t=1381.333,src=n1] Receive 50 bytes on wlan0 [t=1381.333,src=n1,grp=def] Receive 50 bytes on wlan0
[t=1381.333,src=n2] Receive 50 bytes on wlan0 [t=1381.333,src=n2,grp=def] Receive 50 bytes on wlan0
[t=1382.333,src=n0] Receive 50 bytes on wlan0 [t=1382.333,src=n0,grp=def] Receive 50 bytes on wlan0
[t=1382.333,src=n2] Receive 50 bytes on wlan0 [t=1382.333,src=n2,grp=def] Receive 50 bytes on wlan0
[t=1382.333,src=esds] Simulation ends [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=n0,grp=def] Send 1 bytes to n1 on eth0
[t=0.000,src=n1] Receive failed code=RCode.TIMEOUT_EXPIRE [t=0.000,src=n1,grp=def] Receive failed code=RCode.TIMEOUT_EXPIRE
[t=1.000,src=n1] Receive 1 bytes on eth0 [t=1.000,src=n1,grp=def] Receive 1 bytes on eth0
[t=1.000,src=n1] Received: Hello World! [t=1.000,src=n1,grp=def] Received: Hello World!
[t=1.000,src=esds] Simulation ends [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=0.000,src=n0,grp=def] Send 1 bytes to n1 on eth0
[t=1.000,src=n1] Receive 1 bytes on eth0 [t=1.000,src=n1,grp=def] Receive 1 bytes on eth0
[t=1.000,src=n1] Received: Hello World! [t=1.000,src=n1,grp=def] Received: Hello World!
[t=1.000,src=n0] Send 1 bytes to n1 on eth0 [t=1.000,src=n0,grp=def] Send 1 bytes to n1 on eth0
[t=1.500,src=n1] Receive failed code=RCode.TIMEOUT_EXPIRE [t=1.500,src=n1,grp=def] Receive failed code=RCode.TIMEOUT_EXPIRE
[t=2.000,src=n1] Receive 1 bytes on eth0 [t=2.000,src=n1,grp=def] Receive 1 bytes on eth0
[t=2.000,src=n1] Received: Hello World! [t=2.000,src=n1,grp=def] Received: Hello World!
[t=2.000,src=esds] Simulation ends [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=n0,grp=def] Send 0 bytes to n1 on eth0
[t=0.000,src=n1] Receive 0 bytes on eth0 [t=0.000,src=n1,grp=def] Receive 0 bytes on eth0
[t=0.000,src=n1] Received: Hello World! [t=0.000,src=n1,grp=def] Received: Hello World!
[t=0.000,src=n0] Send 0 bytes to n1 on eth0 [t=0.000,src=n0,grp=def] Send 0 bytes to n1 on eth0
[t=0.000,src=n1] Receive 0 bytes on eth0 [t=0.000,src=n1,grp=def] Receive 0 bytes on eth0
[t=0.000,src=n1] Received: Hello World! [t=0.000,src=n1,grp=def] Received: Hello World!
[t=1.000,src=n0] Send 0 bytes to n1 on eth0 [t=1.000,src=n0,grp=def] Send 0 bytes to n1 on eth0
[t=1.000,src=n1] Receive 0 bytes on eth0 [t=1.000,src=n1,grp=def] Receive 0 bytes on eth0
[t=1.000,src=n1] Received: Hello World! [t=1.000,src=n1,grp=def] Received: Hello World!
[t=3.000,src=n0] Send 0 bytes to n1 on eth0 [t=3.000,src=n0,grp=def] Send 0 bytes to n1 on eth0
[t=3.000,src=n1] Receive 0 bytes on eth0 [t=3.000,src=n1,grp=def] Receive 0 bytes on eth0
[t=3.000,src=n1] Received: Hello World! [t=3.000,src=n1,grp=def] Received: Hello World!
[t=3.000,src=n0] Send 0 bytes to n1 on eth0 [t=3.000,src=n0,grp=def] Send 0 bytes to n1 on eth0
[t=3.000,src=n1] Receive 0 bytes on eth0 [t=3.000,src=n1,grp=def] Receive 0 bytes on eth0
[t=3.000,src=n1] Received: Hello World! [t=3.000,src=n1,grp=def] Received: Hello World!
[t=3.000,src=esds] Simulation ends [t=3.000,src=esds] Simulation ends

View file

@ -1,14 +1,14 @@
[t=0.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] Receive 1 bytes on wlan0 [t=1.000,src=n1,grp=def] Receive 1 bytes on wlan0
[t=1.000,src=n0] Send 1 bytes on wlan1 [t=1.000,src=n0,grp=def] Send 1 bytes on wlan1
[t=2.000,src=n1] Receive 1 bytes on wlan1 [t=2.000,src=n1,grp=def] Receive 1 bytes on wlan1
[t=2.000,src=n2] Receive 1 bytes on wlan1 [t=2.000,src=n2,grp=def] Receive 1 bytes on wlan1
[t=2.000,src=n0] Send 1 bytes to n1 on eth0 [t=2.000,src=n0,grp=def] Send 1 bytes to n1 on eth0
[t=3.000,src=n1] Receive 1 bytes on eth0 [t=3.000,src=n1,grp=def] Receive 1 bytes on eth0
[t=3.000,src=n0] Send 1 bytes to n2 on eth0 [t=3.000,src=n0,grp=def] Send 1 bytes to n2 on eth0
[t=4.000,src=n2] Receive 1 bytes on eth0 [t=4.000,src=n2,grp=def] Receive 1 bytes on eth0
[t=4.000,src=n0] Send 1 bytes to n1 on eth1 [t=4.000,src=n0,grp=def] Send 1 bytes to n1 on eth1
[t=4.500,src=n1] Receive 1 bytes on eth1 [t=4.500,src=n1,grp=def] Receive 1 bytes on eth1
[t=4.500,src=n0] Send 1 bytes to n2 on eth1 [t=4.500,src=n0,grp=def] Send 1 bytes to n2 on eth1
[t=5.000,src=n2] Receive 1 bytes on eth1 [t=5.000,src=n2,grp=def] Receive 1 bytes on eth1
[t=5.000,src=esds] Simulation ends [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=0.000,src=n0,grp=def] Send 1 bytes to n1 on eth0
[t=1.000,src=n1] Receive 1 bytes on eth0 [t=1.000,src=n1,grp=def] Receive 1 bytes on eth0
[t=1.000,src=n1] Received: Hello World! [t=1.000,src=n1,grp=def] Received: Hello World!
[t=1.000,src=n0] Send 1 bytes to n1 on eth0 [t=1.000,src=n0,grp=def] Send 1 bytes to n1 on eth0
[t=2.000,src=n1] Receive 1 bytes on eth0 [t=2.000,src=n1,grp=def] Receive 1 bytes on eth0
[t=3.000,src=n0] Send 15 bytes to n1 on eth0 [t=3.000,src=n0,grp=def] Send 15 bytes to n1 on eth0
[t=3.000,src=n1] Received: Hello World! [t=3.000,src=n1,grp=def] Received: Hello World!
[t=3.000,src=n1] Turned off [t=3.000,src=n1,grp=def] Turned off
[t=4.000,src=n1] Turned on [t=4.000,src=n1,grp=def] Turned on
[t=5.000,src=n1] Receive failed code=RCode.TIMEOUT_EXPIRE [t=5.000,src=n1,grp=def] Receive failed code=RCode.TIMEOUT_EXPIRE
[t=18.000,src=n0] End transmission [t=18.000,src=n0,grp=def] End transmission
[t=18.000,src=n0] Send 15 bytes to n1 on eth0 [t=18.000,src=n0,grp=def] Send 15 bytes to n1 on eth0
[t=33.000,src=n1] Receive 15 bytes on eth0 [t=33.000,src=n1,grp=def] Receive 15 bytes on eth0
[t=33.000,src=n0] End transmission [t=33.000,src=n0,grp=def] End transmission
[t=33.000,src=n0] Send 15 bytes to n1 on eth0 [t=33.000,src=n0,grp=def] Send 15 bytes to n1 on eth0
[t=35.000,src=n1] Turned off [t=35.000,src=n1,grp=def] Turned off
[t=35.000,src=n0] End transmission [t=35.000,src=n0,grp=def] End transmission
[t=35.000,src=esds] Simulation ends [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=n0,grp=def] Send 1 bytes to n2 on eth0
[t=0.000,src=n1] 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] Receive 1 bytes on eth0 [t=2.000,src=n2,grp=def] Receive 1 bytes on eth0
[t=2.000,src=n2] Receive 1 bytes on eth0 [t=2.000,src=n2,grp=def] Receive 1 bytes on eth0
[t=2.000,src=n2] Received: Hello World from 0! [t=2.000,src=n2,grp=def] Received: Hello World from 0!
[t=2.000,src=n2] Received: Hello World from 1! [t=2.000,src=n2,grp=def] Received: Hello World from 1!
[t=2.000,src=esds] Simulation ends [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=n0,grp=def] Send 1 bytes to n3 on eth0
[t=0.000,src=n1] 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] 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] Receive 1 bytes on eth0 [t=3.000,src=n3,grp=def] Receive 1 bytes on eth0
[t=3.000,src=n3] Receive 1 bytes on eth0 [t=3.000,src=n3,grp=def] Receive 1 bytes on eth0
[t=3.000,src=n3] Receive 1 bytes on eth0 [t=3.000,src=n3,grp=def] Receive 1 bytes on eth0
[t=3.000,src=n3] Received: Hello World from 0! [t=3.000,src=n3,grp=def] Received: Hello World from 0!
[t=3.000,src=n0] Send 2 bytes to n3 on eth0 [t=3.000,src=n0,grp=def] Send 2 bytes to n3 on eth0
[t=3.000,src=n1] Send 1 bytes to n3 on eth0 [t=3.000,src=n1,grp=def] Send 1 bytes to n3 on eth0
[t=3.000,src=n2] 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] Received: Hello World from 1! [t=3.000,src=n3,grp=def] Received: Hello World from 1!
[t=3.000,src=n3] Received: Hello World from 2! [t=3.000,src=n3,grp=def] Received: Hello World from 2!
[t=6.000,src=n3] Receive 1 bytes on eth0 [t=6.000,src=n3,grp=def] Receive 1 bytes on eth0
[t=6.000,src=n3] Receive 1 bytes on eth0 [t=6.000,src=n3,grp=def] Receive 1 bytes on eth0
[t=6.000,src=n3] Received: Hello World from 1! [t=6.000,src=n3,grp=def] Received: Hello World from 1!
[t=6.000,src=n3] Received: Hello World from 2! [t=6.000,src=n3,grp=def] Received: Hello World from 2!
[t=7.000,src=n3] Receive 2 bytes on eth0 [t=7.000,src=n3,grp=def] Receive 2 bytes on eth0
[t=7.000,src=n3] Received: Hello World (2bytes) from 0! [t=7.000,src=n3,grp=def] Received: Hello World (2bytes) from 0!
[t=7.000,src=n0] Send 2 bytes to n3 on eth0 [t=7.000,src=n0,grp=def] Send 2 bytes to n3 on eth0
[t=7.000,src=n1] 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] Send 1 bytes to n3 on eth0 [t=7.000,src=n2,grp=def] Send 1 bytes to n3 on eth0
[t=10.000,src=n3] Receive 1 bytes on eth0 [t=10.000,src=n3,grp=def] Receive 1 bytes on eth0
[t=10.000,src=n3] Received: Hello World from 2! [t=10.000,src=n3,grp=def] Received: Hello World from 2!
[t=12.000,src=n3] Receive 2 bytes on eth0 [t=12.000,src=n3,grp=def] Receive 2 bytes on eth0
[t=12.000,src=n3] Receive 2 bytes on eth0 [t=12.000,src=n3,grp=def] Receive 2 bytes on eth0
[t=12.000,src=n3] Received: Hello World (2bytes) from 0! [t=12.000,src=n3,grp=def] Received: Hello World (2bytes) from 0!
[t=12.000,src=n0] Send 1 bytes to n3 on eth0 [t=12.000,src=n0,grp=def] Send 1 bytes to n3 on eth0
[t=12.000,src=n1] Send 2 bytes to n3 on eth0 [t=12.000,src=n1,grp=def] Send 2 bytes to n3 on eth0
[t=12.000,src=n2] Send 3 bytes to n3 on eth0 [t=12.000,src=n2,grp=def] Send 3 bytes to n3 on eth0
[t=12.000,src=n3] Received: Hello World (2bytes) from 1! [t=12.000,src=n3,grp=def] Received: Hello World (2bytes) from 1!
[t=15.000,src=n3] Receive 1 bytes on eth0 [t=15.000,src=n3,grp=def] Receive 1 bytes on eth0
[t=15.000,src=n3] Received: Hello World from 0! [t=15.000,src=n3,grp=def] Received: Hello World from 0!
[t=17.000,src=n3] Receive 2 bytes on eth0 [t=17.000,src=n3,grp=def] Receive 2 bytes on eth0
[t=17.000,src=n3] Received: Hello World from 1! [t=17.000,src=n3,grp=def] Received: Hello World from 1!
[t=18.000,src=n3] Receive 3 bytes on eth0 [t=18.000,src=n3,grp=def] Receive 3 bytes on eth0
[t=18.000,src=n3] Received: Hello World from 2! [t=18.000,src=n3,grp=def] Received: Hello World from 2!
[t=18.000,src=n0] Send 5 bytes to n3 on eth0 [t=18.000,src=n0,grp=def] Send 5 bytes to n3 on eth0
[t=23.000,src=n3] Receive 5 bytes on eth0 [t=23.000,src=n3,grp=def] Receive 5 bytes on eth0
[t=23.000,src=n3] Received: Hello World from 0! [t=23.000,src=n3,grp=def] Received: Hello World from 0!
[t=23.000,src=esds] Simulation ends [t=23.000,src=esds] Simulation ends

View file

@ -1,16 +1,16 @@
[t=0.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] Receive 1 bytes on wlan0 [t=1.000,src=n1,grp=def] Receive 1 bytes on wlan0
[t=1.000,src=n2] Receive 1 bytes on wlan0 [t=1.000,src=n2,grp=def] Receive 1 bytes on wlan0
[t=1.000,src=n1] Received: Hello World! [t=1.000,src=n1,grp=def] Received: Hello World!
[t=1.000,src=n2] Received: Hello World! [t=1.000,src=n2,grp=def] Received: Hello World!
[t=1.000,src=n2] Turned off [t=1.000,src=n2,grp=def] Turned off
[t=1.000,src=n0] Send 1 bytes on wlan0 [t=1.000,src=n0,grp=def] Send 1 bytes on wlan0
[t=2.000,src=n1] Receive 1 bytes on wlan0 [t=2.000,src=n1,grp=def] Receive 1 bytes on wlan0
[t=2.000,src=n1] Received: Hello World! [t=2.000,src=n1,grp=def] Received: Hello World!
[t=2.000,src=n2] Turned on [t=2.000,src=n2,grp=def] Turned on
[t=2.000,src=n0] Send 1 bytes on wlan0 [t=2.000,src=n0,grp=def] Send 1 bytes on wlan0
[t=2.500,src=n2] Turned off [t=2.500,src=n2,grp=def] Turned off
[t=3.000,src=n1] Receive 1 bytes on wlan0 [t=3.000,src=n1,grp=def] Receive 1 bytes on wlan0
[t=3.000,src=n1] Received: Hello World! [t=3.000,src=n1,grp=def] Received: Hello World!
[t=3.000,src=n2] Turned on [t=3.000,src=n2,grp=def] Turned on
[t=3.000,src=esds] Simulation ends [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=n0,grp=def] Send 1 bytes on wlan0
[t=0.000,src=n1] Send 1 bytes on wlan0 [t=0.000,src=n1,grp=def] Send 1 bytes on wlan0
[t=0.000,src=n0] Interferences on wlan0 [t=0.000,src=n0,grp=def] Interferences on wlan0
[t=0.000,src=n1] Interferences on wlan0 [t=0.000,src=n1,grp=def] Interferences on wlan0
[t=0.000,src=n2] Interferences on wlan0 [t=0.000,src=n2,grp=def] Interferences on wlan0
[t=1.000,src=esds] Simulation ends [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=0.000,src=n0,grp=def] Send 1 bytes to n1 on eth0
[t=1.000,src=n1] Receive 1 bytes on eth0 [t=1.000,src=n1,grp=def] Receive 1 bytes on eth0
[t=1.000,src=n0] Send worked! [t=1.000,src=n0,grp=def] Send worked!
[t=1.000,src=n1] Received: Hello World! [t=1.000,src=n1,grp=def] Received: Hello World!
[t=1.000,src=n0] Send 1 bytes to n1 on eth0 [t=1.000,src=n0,grp=def] Send 1 bytes to n1 on eth0
[t=1.500,src=n0] Send failed [t=1.500,src=n0,grp=def] Send failed
[t=1.500,src=n0] Send 1 bytes to n1 on eth0 [t=1.500,src=n0,grp=def] Send 1 bytes to n1 on eth0
[t=2.500,src=n1] Receive 1 bytes on eth0 [t=2.500,src=n1,grp=def] Receive 1 bytes on eth0
[t=2.500,src=n0] Send worked! [t=2.500,src=n0,grp=def] Send worked!
[t=2.500,src=n1] Received: Hello World! [t=2.500,src=n1,grp=def] Received: Hello World!
[t=2.500,src=esds] Simulation ends [t=2.500,src=esds] Simulation ends

View file

@ -1,7 +1,7 @@
[t=0.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] Receive 1 bytes on wlan0 [t=1.000,src=n1,grp=def] Receive 1 bytes on wlan0
[t=1.000,src=n2] Receive 1 bytes on wlan0 [t=1.000,src=n2,grp=def] Receive 1 bytes on wlan0
[t=1.000,src=n1] Received: Hello World! [t=1.000,src=n1,grp=def] Received: Hello World!
[t=1.000,src=n2] Received: Hello World! [t=1.000,src=n2,grp=def] Received: Hello World!
[t=1.000,src=n0] Send 1 bytes on wlan0 [t=1.000,src=n0,grp=def] Send 1 bytes on wlan0
[t=1.500,src=esds] Simulation ends [t=1.500,src=esds] Simulation ends

View file

@ -1,9 +1,9 @@
[t=0.000,src=n0] Before wait [t=0.000,src=n0,grp=def] Before wait
[t=0.000,src=n1] Before wait [t=0.000,src=n1,grp=def] Before wait
[t=2.000,src=n0] After wait [t=2.000,src=n0,grp=def] After wait
[t=2.000,src=n0] Before wait [t=2.000,src=n0,grp=def] Before wait
[t=2.000,src=n1] After wait [t=2.000,src=n1,grp=def] After wait
[t=2.000,src=n1] Before wait [t=2.000,src=n1,grp=def] Before wait
[t=5.000,src=n0] After wait [t=5.000,src=n0,grp=def] After wait
[t=5.000,src=n1] After wait [t=5.000,src=n1,grp=def] After wait
[t=5.000,src=esds] Simulation ends [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,grp=def] Before wait for 0s
[t=0.000,src=n0] First wait end [t=0.000,src=n0,grp=def] First wait end
[t=0.000,src=n1] Before wait for 1s [t=0.000,src=n1,grp=def] Before wait for 1s
[t=0.000,src=n2] Before wait for 2s [t=0.000,src=n2,grp=def] Before wait for 2s
[t=1.000,src=n1] First wait end [t=1.000,src=n1,grp=def] First wait end
[t=2.000,src=n2] First wait end [t=2.000,src=n2,grp=def] First wait end
[t=2.000,src=n0] Terminated [t=2.000,src=n0,grp=def] Terminated
[t=2.000,src=n1] Terminated [t=2.000,src=n1,grp=def] Terminated
[t=2.000,src=n2] Terminated [t=2.000,src=n2,grp=def] Terminated
[t=2.000,src=esds] Simulation ends [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=3.300,src=esds] Hello Callback!
[t=6.600,src=esds] Hello Callback! [t=6.600,src=esds] Hello Callback!
[t=9.900,src=esds] Hello Callback! [t=9.900,src=esds] Hello Callback!
[t=13.200,src=esds] Hello Callback! [t=13.200,src=esds] Hello Callback!
[t=16.500,src=esds] Hello Callback! [t=16.500,src=esds] Hello Callback!
[t=19.800,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 [t=20.000,src=esds] Simulation ends

View file

@ -1,5 +1,5 @@
[t=0.000,src=n0] Running [t=0.000,src=n0,grp=def] Running
[t=0.000,src=n1] Running [t=0.000,src=n1,grp=def] Running
[t=1.000,src=esds] Hello Callback! [t=1.000,src=esds] Hello Callback!
[t=2.000,src=esds] Hello Callback! [t=2.000,src=esds] Hello Callback!
[t=3.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=n0,grp=def] Running
[t=0.000,src=n1] Running [t=0.000,src=n1,grp=def] Running
[t=10.000,src=esds] Simulation ends [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=n0,grp=def] Send 1 bytes on wlan0
[t=0.000,src=n2] Send 1 bytes on wlan0 [t=0.000,src=n2,grp=def] Send 1 bytes on wlan0
[t=0.000,src=n1] Interferences on wlan0 [t=0.000,src=n1,grp=def] Interferences on wlan0
[t=1.000,src=esds] Simulation ends [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.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 [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=n0,grp=def] Send 1 bytes to n2 on eth0
[t=0.000,src=n1] 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.000,src=esds] Network update!
[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] Receive 1 bytes on eth0 [t=1.500,src=n2,grp=def] Receive 1 bytes on eth0
[t=1.500,src=esds] Simulation ends [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=0.500,src=esds] Network update!
[t=1.000,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 [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=n0,grp=def] Send 1 bytes to n2 on eth0
[t=0.000,src=n1] 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.000,src=esds] Network update!
[t=2.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,grp=def] 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=esds] Simulation ends [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.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 [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=0.500,src=esds] Network update!
[t=1.000,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 [t=1.333,src=esds] Simulation ends