2 # -*- coding: utf-8 -*-
4 from nepi.core.design import ExperimentDescription, FactoriesProvider
5 from nepi.core.design import AF_INET
12 class Ns3DesignTestCase(unittest.TestCase):
13 def test_design_if(self):
14 exp_desc = ExperimentDescription()
15 testbed_version = "3_9_RC3"
17 provider = FactoriesProvider(testbed_id, testbed_version)
18 tstbd_desc = exp_desc.add_testbed_description(provider)
20 node1 = tstbd_desc.create("ns3::Node")
21 ipv41 = tstbd_desc.create("ns3::Ipv4L3Protocol")
22 arp1 = tstbd_desc.create("ns3::ArpL3Protocol")
23 icmp1 = tstbd_desc.create("ns3::Icmpv4L4Protocol")
24 udp1 = tstbd_desc.create("ns3::UdpL4Protocol")
25 node1.connector("protos").connect(ipv41.connector("node"))
26 node1.connector("protos").connect(arp1.connector("node"))
27 node1.connector("protos").connect(icmp1.connector("node"))
28 node1.connector("protos").connect(udp1.connector("node"))
29 iface1 = tstbd_desc.create("ns3::PointToPointNetDevice")
30 queue1 = tstbd_desc.create("ns3::DropTailQueue")
31 node1.connector("devs").connect(iface1.connector("node"))
32 iface1.connector("queue").connect(queue1.connector("dev"))
33 trace1 = iface1.enable_trace("P2PPcapTrace")
34 ip1 = iface1.add_address()
35 ip1.set_attribute_value("Address", "10.0.0.1")
37 node2 = tstbd_desc.create("ns3::Node")
38 ipv42 = tstbd_desc.create("ns3::Ipv4L3Protocol")
39 arp2 = tstbd_desc.create("ns3::ArpL3Protocol")
40 icmp2 = tstbd_desc.create("ns3::Icmpv4L4Protocol")
41 udp2 = tstbd_desc.create("ns3::UdpL4Protocol")
42 node2.connector("protos").connect(ipv42.connector("node"))
43 node2.connector("protos").connect(arp2.connector("node"))
44 node2.connector("protos").connect(icmp2.connector("node"))
45 node2.connector("protos").connect(udp2.connector("node"))
46 iface2 = tstbd_desc.create("ns3::PointToPointNetDevice")
47 queue2 = tstbd_desc.create("ns3::DropTailQueue")
48 node2.connector("devs").connect(iface2.connector("node"))
49 iface2.connector("queue").connect(queue2.connector("dev"))
50 trace2 = iface2.enable_trace("P2PPcapTrace")
51 ip2 = iface1.add_address()
52 ip2.set_attribute_value("Address", "10.0.0.2")
54 chan = tstbd_desc.create("ns3::PointToPointChannel")
55 iface1.connector("chan").connect(chan.connector("dev2"))
56 iface2.connector("chan").connect(chan.connector("dev2"))
58 app = tstbd_desc.create("ns3::V4Ping")
59 app.set_attribute_value("Remote", "10.0.0.2")
60 app.set_attribute_value("StartTime", "0s")
61 app.set_attribute_value("StopTime", "20s")
62 app.set_attribute_value("Verbose", False)
63 app.connector("node").connect(node1.connector("apps"))
65 xml = exp_desc.to_xml()
66 exp_desc2 = ExperimentDescription()
67 exp_desc2.from_xml(xml)
68 xml2 = exp_desc2.to_xml()
69 self.assertTrue(xml == xml2)
71 if __name__ == '__main__':