2 # -*- coding: utf-8 -*-
4 from nepi.util.constants import STATUS_FINISHED
5 from nepi.testbeds import ns3
13 class Ns3ExecuteTestCase(unittest.TestCase):
15 self.root_dir = tempfile.mkdtemp()
17 @test_util.skipUnless(test_util.ns3_usable(),
18 "Test requires working ns-3 bindings")
19 def test_run_ping_if(self):
20 testbed_version = "3_9_RC3"
21 instance = ns3.TestbedController(testbed_version)
22 instance.defer_configure("homeDirectory", self.root_dir)
23 instance.defer_create(2, "ns3::Node")
24 instance.defer_create(3, "ns3::Ipv4L3Protocol")
25 instance.defer_create(4, "ns3::ArpL3Protocol")
26 instance.defer_create(5, "ns3::Icmpv4L4Protocol")
27 instance.defer_create(6, "ns3::UdpL4Protocol")
28 instance.defer_connect(2, "protos", 3, "node")
29 instance.defer_connect(2, "protos", 4, "node")
30 instance.defer_connect(2, "protos", 5, "node")
31 instance.defer_connect(2, "protos", 6, "node")
32 instance.defer_create(7, "ns3::PointToPointNetDevice")
33 instance.defer_create(8, "ns3::DropTailQueue")
34 instance.defer_connect(2, "devs", 7, "node")
35 instance.defer_connect(7, "queue", 8, "dev")
36 instance.defer_add_trace(7, "P2PAsciiTrace")
37 instance.defer_add_address(7, "10.0.0.1", 24, None)
39 instance.defer_create(9, "ns3::Node")
40 instance.defer_create(10, "ns3::Ipv4L3Protocol")
41 instance.defer_create(11, "ns3::ArpL3Protocol")
42 instance.defer_create(12, "ns3::Icmpv4L4Protocol")
43 instance.defer_create(13, "ns3::UdpL4Protocol")
44 instance.defer_connect(9, "protos", 10, "node")
45 instance.defer_connect(9, "protos", 11, "node")
46 instance.defer_connect(9, "protos", 12, "node")
47 instance.defer_connect(9, "protos", 13, "node")
48 instance.defer_create(14, "ns3::PointToPointNetDevice")
49 instance.defer_create(15, "ns3::DropTailQueue")
50 instance.defer_connect(9, "devs", 14, "node")
51 instance.defer_connect(14, "queue", 15, "dev")
52 instance.defer_add_trace(14, "P2PAsciiTrace")
53 instance.defer_add_address(14, "10.0.0.2", 24, None)
55 instance.defer_create(16, "ns3::PointToPointChannel")
56 instance.defer_connect(7, "chan", 16, "dev2")
57 instance.defer_connect(14, "chan", 16, "dev2")
59 instance.defer_create(17, "ns3::V4Ping")
60 instance.defer_create_set(17, "Remote", "10.0.0.2")
61 instance.defer_create_set(17, "StartTime", "0s")
62 instance.defer_create_set(17, "StopTime", "10s")
63 instance.defer_connect(17, "node", 2, "apps")
67 instance.do_connect_init()
68 instance.do_connect_compl()
69 instance.do_preconfigure()
70 instance.do_configure()
72 while instance.status(17) != STATUS_FINISHED:
74 ping_result = instance.trace(14, "P2PAsciiTrace")
75 comp_result = "- 9.021 /NodeList/1/DeviceList/0/$ns3::PointToPointNetDevice/TxQueue/Dequeue ns3::PppHeader (Point-to-Point Protocol: IP (0x0021)) ns3::Ipv4Header (tos 0x0 ttl 64 id 9 protocol 1 offset 0 flags [none] length: 84 10.0.0.2 > 10.0.0.1) ns3::Icmpv4Header (type=0, code=0) ns3::Icmpv4Echo (identifier=0, sequence=9)"
76 self.assertNotEqual(ping_result.find(comp_result), -1)
82 shutil.rmtree(self.root_dir)
86 shutil.rmtree(self.root_dir)
88 if __name__ == '__main__':