summaryrefslogtreecommitdiff
path: root/tests/api_send_eth0_3s1r
diff options
context:
space:
mode:
authorLoic Guegan <manzerbredes@mailbox.org>2022-06-30 12:11:59 +0200
committerLoic Guegan <manzerbredes@mailbox.org>2022-06-30 12:11:59 +0200
commitd0ae9f329685a19136cfd9a890b305db3bc384b9 (patch)
treeb3c72908b8930db16b1f682bb7119abeaf72fadf /tests/api_send_eth0_3s1r
parent1bef51d87860f782f687533012167bebb43c093d (diff)
Improve tests
Diffstat (limited to 'tests/api_send_eth0_3s1r')
-rw-r--r--tests/api_send_eth0_3s1r/out40
-rw-r--r--tests/api_send_eth0_3s1r/receiver.py19
-rw-r--r--tests/api_send_eth0_3s1r/sender.py37
-rwxr-xr-xtests/api_send_eth0_3s1r/simulator.py16
4 files changed, 112 insertions, 0 deletions
diff --git a/tests/api_send_eth0_3s1r/out b/tests/api_send_eth0_3s1r/out
new file mode 100644
index 0000000..714a4c8
--- /dev/null
+++ b/tests/api_send_eth0_3s1r/out
@@ -0,0 +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=23.000,src=esds] Simulation ends
diff --git a/tests/api_send_eth0_3s1r/receiver.py b/tests/api_send_eth0_3s1r/receiver.py
new file mode 100644
index 0000000..4516d7a
--- /dev/null
+++ b/tests/api_send_eth0_3s1r/receiver.py
@@ -0,0 +1,19 @@
+#!/usr/bin/env python
+
+def receive(node, n):
+ for i in range(0,n):
+ code, data=node.receive("eth0")
+ msg="Received: "+data if code == 0 else "Receive failed code="+str(code)
+ node.log(msg)
+
+def execute(api):
+ # Receive the first 3 send that should end at 3s
+ receive(api,3)
+ # Receive the first 3 send that should end at 7s
+ receive(api,3)
+ # Receive the first 3 send that should end at 12s
+ receive(api,3)
+ # Receive the first 3 send that should end at 18s
+ receive(api,3)
+ # Should ends at 23s
+ receive(api,1)
diff --git a/tests/api_send_eth0_3s1r/sender.py b/tests/api_send_eth0_3s1r/sender.py
new file mode 100644
index 0000000..6b8312b
--- /dev/null
+++ b/tests/api_send_eth0_3s1r/sender.py
@@ -0,0 +1,37 @@
+#!/usr/bin/env python
+
+# Node that bandwidths at setup in a way that 1 byte is send in 1 seconds with no sharing
+
+def execute(api):
+ # Should be completed at 3s (bandwidth divided by 3)
+ api.send("eth0","Hello World from {}!".format(api.node_id),1,3) # Shoud lasts 3s
+
+ # These send should start at 3s and be completed at 7s
+ if api.node_id==0:
+ api.send("eth0","Hello World (2bytes) from {}!".format(api.node_id),2,3) # Should lasts 3s + 1s = 4s
+ else:
+ api.send("eth0","Hello World from {}!".format(api.node_id),1,3) # Should lasts 3s
+ api.wait(1) # Sync with node 0 at 7s
+
+ # Those sends should start at 7s and be completed at 12s
+ if api.node_id<=1:
+ api.send("eth0","Hello World (2bytes) from {}!".format(api.node_id),2,3) # Should last 3s + 2s = 5s
+ # Completed at 12s since 3 nodes are sharing the bandwidth up to 10s
+ # then the 2 two remaining node send their last byte up to 12s
+ else:
+ api.send("eth0","Hello World from {}!".format(api.node_id),1,3) # Should last 3s
+ # Completed at 10s (3 nodes are sharing the bandwidth)
+ api.wait(2) # Sync with node 0-1 at 12s
+
+ # Should start at 12s
+ # Node 0 sends 1 byte, node 1 sends 2 byte and node 2 sends 3
+ # These send should end at 18s
+ api.send("eth0","Hello World from {}!".format(api.node_id),api.node_id+1,3) # Should lasts 3s, 5s and 6s
+
+ # Finally a single send from node 0
+ if api.node_id==0:
+ api.wait(3) # Since node 0 send ends at 15s we sync it to 18s
+ api.send("eth0","Hello World from {}!".format(api.node_id),5,3) # Should takes 5 seconds (ends at 23s)
+
+
+
diff --git a/tests/api_send_eth0_3s1r/simulator.py b/tests/api_send_eth0_3s1r/simulator.py
new file mode 100755
index 0000000..84c0de0
--- /dev/null
+++ b/tests/api_send_eth0_3s1r/simulator.py
@@ -0,0 +1,16 @@
+#!/usr/bin/env python
+
+# Load ESDS
+import esds
+import numpy as np
+
+B=np.full((4,4),8)
+L=np.full((4,4),0)
+s=esds.Simulator({"wlan0":{"bandwidth":B, "latency":L, "is_wired":False}, "eth0":{"bandwidth":B, "latency":L, "is_wired":True}})
+
+s.create_node("sender")
+s.create_node("sender")
+s.create_node("sender")
+s.create_node("receiver")
+
+s.run()