ns3 metadata and design test in progress
[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 from nepi.core.design import AF_INET
6 import os
7 import shutil
8 import test_util
9 import unittest
10 import uuid
11
12 class Ns3DesignTestCase(unittest.TestCase):
13     def test_design_if(self):
14         exp_desc = ExperimentDescription()
15         testbed_version = "3_9_RC3"
16         testbed_id = "ns3"
17         provider = FactoriesProvider(testbed_id, testbed_version)
18         tstbd_desc = exp_desc.add_testbed_description(provider)
19
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")
36
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")
53
54         chan = tstbd_desc.create("ns3::PointToPointChannel")
55         iface1.connector("chan").connect(chan.connector("dev2"))
56         iface2.connector("chan").connect(chan.connector("dev2"))
57
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"))
64
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)
70         
71 if __name__ == '__main__':
72     unittest.main()
73