cf36c7cd1a7d77d5495e120ef4b37a5907f57ccd
[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_version = "3_9_RC3"
15         testbed_id = "ns3"
16         provider = FactoriesProvider(testbed_id, testbed_version)
17         tstbd_desc = exp_desc.add_testbed_description(provider)
18
19         node1 = tstbd_desc.create("ns3::Node")
20         ipv41 = tstbd_desc.create("ns3::Ipv4L3Protocol")
21         arp1  = tstbd_desc.create("ns3::ArpL3Protocol")
22         icmp1 = tstbd_desc.create("ns3::Icmpv4L4Protocol")
23         udp1 = tstbd_desc.create("ns3::UdpL4Protocol")
24         node1.connector("protos").connect(ipv41.connector("node"))
25         node1.connector("protos").connect(arp1.connector("node"))
26         node1.connector("protos").connect(icmp1.connector("node"))
27         node1.connector("protos").connect(udp1.connector("node"))
28         iface1 = tstbd_desc.create("ns3::PointToPointNetDevice")
29         queue1 = tstbd_desc.create("ns3::DropTailQueue")
30         node1.connector("devs").connect(iface1.connector("node"))
31         iface1.connector("queue").connect(queue1.connector("dev"))
32         trace1 = iface1.enable_trace("P2PPcapTrace")
33         ip1 = iface1.add_address()
34         ip1.set_attribute_value("Address", "10.0.0.1")
35
36         node2 = tstbd_desc.create("ns3::Node")
37         ipv42 = tstbd_desc.create("ns3::Ipv4L3Protocol")
38         arp2  = tstbd_desc.create("ns3::ArpL3Protocol")
39         icmp2 = tstbd_desc.create("ns3::Icmpv4L4Protocol")
40         udp2 = tstbd_desc.create("ns3::UdpL4Protocol")
41         node2.connector("protos").connect(ipv42.connector("node"))
42         node2.connector("protos").connect(arp2.connector("node"))
43         node2.connector("protos").connect(icmp2.connector("node"))
44         node2.connector("protos").connect(udp2.connector("node"))
45         iface2 = tstbd_desc.create("ns3::PointToPointNetDevice")
46         queue2 = tstbd_desc.create("ns3::DropTailQueue")
47         node2.connector("devs").connect(iface2.connector("node"))
48         iface2.connector("queue").connect(queue2.connector("dev"))
49         trace2 = iface2.enable_trace("P2PPcapTrace")
50         ip2 = iface2.add_address()
51         ip2.set_attribute_value("Address", "10.0.0.2")
52
53         chan = tstbd_desc.create("ns3::PointToPointChannel")
54         iface1.connector("chan").connect(chan.connector("dev2"))
55         iface2.connector("chan").connect(chan.connector("dev2"))
56
57         app = tstbd_desc.create("ns3::V4Ping")
58         app.set_attribute_value("Remote", "10.0.0.2")
59         app.set_attribute_value("StartTime", "0s")
60         app.set_attribute_value("StopTime", "20s")
61         app.set_attribute_value("Verbose", False)
62         app.connector("node").connect(node1.connector("apps"))
63
64         xml = exp_desc.to_xml()
65         exp_desc2 = ExperimentDescription()
66         exp_desc2.from_xml(xml)
67         xml2 = exp_desc2.to_xml()
68         self.assertTrue(xml == xml2)
69         
70 if __name__ == '__main__':
71     unittest.main()
72