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 def test_run_ping_if(self):
18 testbed_version = "3_9_RC3"
19 instance = ns3.TestbedInstance(testbed_version)
20 instance.configure("homeDirectory", self.root_dir)
21 instance.create(2, "ns3::Node")
22 instance.create(3, "ns3::Ipv4L3Protocol")
23 instance.create(4, "ns3::ArpL3Protocol")
24 instance.create(5, "ns3::Icmpv4L4Protocol")
25 instance.create(6, "ns3::UdpL4Protocol")
26 instance.connect(2, "protos", 3, "node")
27 instance.connect(2, "protos", 4, "node")
28 instance.connect(2, "protos", 5, "node")
29 instance.connect(2, "protos", 6, "node")
30 instance.create(7, "ns3::PointToPointNetDevice")
31 instance.create(8, "ns3::DropTailQueue")
32 instance.connect(2, "devs", 7, "node")
33 instance.connect(7, "queue", 8, "dev")
34 instance.add_trace(7, "P2PPcapTrace")
35 instance.add_address(7, "10.0.0.1", 24, None)
37 instance.create(9, "ns3::Node")
38 instance.create(10, "ns3::Ipv4L3Protocol")
39 instance.create(11, "ns3::ArpL3Protocol")
40 instance.create(12, "ns3::Icmpv4L4Protocol")
41 instance.create(13, "ns3::UdpL4Protocol")
42 instance.connect(9, "protos", 10, "node")
43 instance.connect(9, "protos", 11, "node")
44 instance.connect(9, "protos", 12, "node")
45 instance.connect(9, "protos", 13, "node")
46 instance.create(14, "ns3::PointToPointNetDevice")
47 instance.create(15, "ns3::DropTailQueue")
48 instance.connect(9, "devs", 14, "node")
49 instance.connect(14, "queue", 15, "dev")
50 instance.add_trace(14, "P2PPcapTrace")
51 instance.add_address(14, "10.0.0.2", 24, None)
53 instance.create(16, "ns3::PointToPointChannel")
54 instance.connect(7, "chan", 16, "dev2")
55 instance.connect(14, "chan", 16, "dev2")
57 instance.create(17, "ns3::V4Ping")
58 instance.create_set(17, "Remote", "10.0.0.2")
59 instance.create_set(17, "StartTime", "0s")
60 instance.create_set(17, "StopTime", "10s")
61 instance.create_set(17, "Verbose", True)
62 instance.connect(17, "node", 2, "apps")
67 instance.do_configure()
69 while instance.status(17) != STATUS_FINISHED:
71 comp_result = """PING 10.0.0.2 (10.0.0.2) 56(84) bytes of data.
73 --- 10.0.0.2 ping statistics ---
74 1 packets transmitted, 1 received, 0% packet loss, time 0ms
76 #self.assertTrue(ping_result.startswith(comp_result))
80 def test_run_ping_routing(self):
81 testbed_version = "3_9_RC3"
82 instance = ns3.TestbedInstance(testbed_version)
83 instance.configure("homeDirectory", self.root_dir)
84 instance.create(2, "ns3::Node")
85 instance.create(3, "ns3::Ipv4L3Protocol")
86 instance.create(4, "ns3::ArpL3Protocol")
87 instance.create(5, "ns3::Icmpv4L4Protocol")
88 instance.create(6, "ns3::UdpL4Protocol")
89 instance.connect(2, "protos", 3, "node")
90 instance.connect(2, "protos", 4, "node")
91 instance.connect(2, "protos", 5, "node")
92 instance.connect(2, "protos", 6, "node")
93 instance.create(7, "ns3::PointToPointNetDevice")
94 instance.create(8, "ns3::DropTailQueue")
95 instance.connect(2, "devs", 7, "node")
96 instance.connect(7, "queue", 8, "dev")
97 instance.add_trace(7, "P2PPcapTrace")
98 instance.add_address(7, "10.0.0.1", 24, None)
100 instance.create(9, "ns3::Node")
101 instance.create(10, "ns3::Ipv4L3Protocol")
102 instance.create(11, "ns3::ArpL3Protocol")
103 instance.create(12, "ns3::Icmpv4L4Protocol")
104 instance.create(13, "ns3::UdpL4Protocol")
105 instance.connect(9, "protos", 10, "node")
106 instance.connect(9, "protos", 11, "node")
107 instance.connect(9, "protos", 12, "node")
108 instance.connect(9, "protos", 13, "node")
109 instance.create(14, "ns3::PointToPointNetDevice")
110 instance.create(15, "ns3::DropTailQueue")
111 instance.connect(9, "devs", 14, "node")
112 instance.connect(14, "queue", 15, "dev")
113 instance.add_trace(14, "P2PPcapTrace")
114 instance.add_address(14, "10.0.0.2", 24, None)
116 instance.create(16, "ns3::PointToPointChannel")
117 instance.connect(7, "chan", 16, "dev2")
118 instance.connect(14, "chan", 16, "dev2")
120 instance.create(17, "ns3::PointToPointNetDevice")
121 instance.create(18, "ns3::DropTailQueue")
122 instance.connect(9, "devs", 17, "node")
123 instance.connect(17, "queue", 18, "dev")
124 instance.add_trace(17, "P2PPcapTrace")
125 instance.add_address(17, "10.0.1.1", 24, None)
127 instance.create(19, "ns3::Node")
128 instance.create(20, "ns3::Ipv4L3Protocol")
129 instance.create(21, "ns3::ArpL3Protocol")
130 instance.create(22, "ns3::Icmpv4L4Protocol")
131 instance.create(23, "ns3::UdpL4Protocol")
132 instance.connect(19, "protos", 20, "node")
133 instance.connect(19, "protos", 21, "node")
134 instance.connect(19, "protos", 22, "node")
135 instance.connect(19, "protos", 23, "node")
136 instance.create(24, "ns3::PointToPointNetDevice")
137 instance.create(25, "ns3::DropTailQueue")
138 instance.connect(19, "devs", 24, "node")
139 instance.connect(24, "queue", 25, "dev")
140 instance.add_trace(24, "P2PPcapTrace")
141 instance.add_address(24, "10.0.1.2", 24, None)
143 instance.create(26, "ns3::PointToPointChannel")
144 instance.connect(17, "chan", 26, "dev2")
145 instance.connect(24, "chan", 26, "dev2")
147 instance.create(27, "ns3::V4Ping")
148 instance.create_set(27, "Remote", "10.0.1.2")
149 instance.create_set(27, "StartTime", "0s")
150 instance.create_set(27, "StopTime", "10s")
151 instance.create_set(27, "Verbose", True)
152 instance.connect(27, "node", 2, "apps")
154 instance.add_route(2, "10.0.1.0", 24, "10.0.0.2")
155 instance.add_route(19, "10.0.0.0", 24, "10.0.1.1")
159 instance.do_connect()
160 instance.do_configure()
162 while instance.status(27) != STATUS_FINISHED:
164 comp_result = """PING 10.0.0.2 (10.0.0.2) 56(84) bytes of data.
166 --- 10.0.0.2 ping statistics ---
167 1 packets transmitted, 1 received, 0% packet loss, time 0ms
169 #self.assertTrue(ping_result.startswith(comp_result))
174 #shutil.rmtree(self.root_dir)
177 if __name__ == '__main__':