2 # -*- coding: utf-8 -*-
11 from nepi.core.design import ExperimentDescription, FactoriesProvider
12 from nepi.core.execute import ExperimentController
16 root_dir = tempfile.mkdtemp()
18 exp_desc = ExperimentDescription()
21 ns3_provider = FactoriesProvider(testbed_id)
22 ns3_desc = exp_desc.add_testbed_description(ns3_provider)
23 ns3_desc.set_attribute_value("homeDirectory", root_dir)
24 ns3_desc.set_attribute_value("SimulatorImplementationType", "ns3::RealtimeSimulatorImpl")
25 ns3_desc.set_attribute_value("ChecksumEnabled", True)
27 node1 = ns3_desc.create("ns3::Node")
28 ipv41 = ns3_desc.create("ns3::Ipv4L3Protocol")
29 arp1 = ns3_desc.create("ns3::ArpL3Protocol")
30 icmp1 = ns3_desc.create("ns3::Icmpv4L4Protocol")
31 node1.connector("protos").connect(ipv41.connector("node"))
32 node1.connector("protos").connect(arp1.connector("node"))
33 node1.connector("protos").connect(icmp1.connector("node"))
34 iface1 = ns3_desc.create("ns3::PointToPointNetDevice")
35 queue1 = ns3_desc.create("ns3::DropTailQueue")
36 node1.connector("devs").connect(iface1.connector("node"))
37 iface1.connector("queue").connect(queue1.connector("dev"))
38 trace1 = iface1.enable_trace("P2PAsciiTrace")
39 ip1 = iface1.add_address()
40 ip1.set_attribute_value("Address", "10.0.0.1")
42 node2 = ns3_desc.create("ns3::Node")
43 ipv42 = ns3_desc.create("ns3::Ipv4L3Protocol")
44 arp2 = ns3_desc.create("ns3::ArpL3Protocol")
45 icmp2 = ns3_desc.create("ns3::Icmpv4L4Protocol")
46 node2.connector("protos").connect(ipv42.connector("node"))
47 node2.connector("protos").connect(arp2.connector("node"))
48 node2.connector("protos").connect(icmp2.connector("node"))
49 iface2 = ns3_desc.create("ns3::PointToPointNetDevice")
50 queue2 = ns3_desc.create("ns3::DropTailQueue")
51 node2.connector("devs").connect(iface2.connector("node"))
52 iface2.connector("queue").connect(queue2.connector("dev"))
53 trace2 = iface2.enable_trace("P2PAsciiTrace")
54 ip2 = iface2.add_address()
55 ip2.set_attribute_value("Address", "10.0.0.2")
57 chan = ns3_desc.create("ns3::PointToPointChannel")
58 chan.set_attribute_value("Delay", "0ns")
59 iface1.connector("chan").connect(chan.connector("dev2"))
60 iface2.connector("chan").connect(chan.connector("dev2"))
62 app = ns3_desc.create("ns3::V4Ping")
63 app.set_attribute_value("Remote", "10.0.0.2")
64 app.set_attribute_value("Verbose", True)
65 app.set_attribute_value("StartTime", "0s")
66 app.set_attribute_value("StopTime", "20s")
68 app.connector("node").connect(node1.connector("apps"))
70 xml = exp_desc.to_xml()
72 controller = ExperimentController(xml, root_dir)
77 controller.set(chan.guid, "Delay", "10s")
81 controller.set(chan.guid, "Delay", "0s")
83 while not controller.is_finished(app.guid):