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