b8f04f1baa8d569e4ae81a7ab0871d57d1a60860
[nepi.git] / test / core / design.py
1 #!/usr/bin/env python
2 # -*- coding: utf-8 -*-
3
4 from nepi.core.design import ExperimentDescription, FactoriesProvider
5 from nepi.util import tags
6 import mock.metadata
7 import sys
8 import unittest
9
10 class DesignTestCase(unittest.TestCase):
11     def setUp(self):
12         sys.modules["nepi.testbeds.mock.metadata"] = mock.metadata
13
14     def test_design(self):
15         exp_desc = ExperimentDescription()
16         testbed_id = "mock"
17         provider = FactoriesProvider(testbed_id)
18         desc = exp_desc.add_testbed_description(provider)
19         desc.set_attribute_value("fake", True)
20         node1 = desc.create("Node")
21         node2 = desc.create("Node")
22         iface1 = desc.create("Interface")
23         iface1.set_attribute_value("fake", True)
24         addr1 = iface1.add_address()
25         addr2 = iface1.add_address()
26         addr3 = iface1.add_address()
27         self.assertRaises(RuntimeError, iface1.add_address)
28         node1.connector("devs").connect(iface1.connector("node"))
29         iface2 = desc.create("Interface")
30         iface2.set_attribute_value("fake", True)
31         node2.connector("devs").connect(iface2.connector("node"))
32         iface1.connector("iface").connect(iface2.connector("iface"))
33         app = desc.create("Application")
34         app.connector("node").connect(node1.connector("apps"))
35         app.enable_trace("fake")
36
37         self.assertEquals(node1.tags, [tags.MOBILE, tags.NODE, tags.ALLOW_ROUTES])
38
39         xml = exp_desc.to_xml()
40         exp_desc2 = ExperimentDescription()
41         exp_desc2.from_xml(xml)
42         xml2 = exp_desc2.to_xml()
43         self.assertTrue(xml == xml2)
44
45 if __name__ == '__main__':
46     unittest.main()
47