added mock testbed for unit testing.
[nepi.git] / test / core / integration.py
1 #!/usr/bin/env python
2 # -*- coding: utf-8 -*-
3
4 from nepi.core.execute import ExperimentController
5 from nepi.core.design import ExperimentDescription, FactoriesProvider
6 from nepi.util.constants import STATUS_FINISHED
7 import mock
8 import mock.metadata_v01 
9 import sys
10 import time
11 import unittest
12
13 class ExecuteTestCase(unittest.TestCase):
14     def setUp(self):
15         sys.modules["nepi.testbeds.mock.metadata_v01"] = mock.metadata_v01
16         sys.modules["nepi.testbeds.mock"] = mock
17
18     def test_integration(self):
19         exp_desc = ExperimentDescription()
20         testbed_version = "01"
21         testbed_id = "mock"
22         provider = FactoriesProvider(testbed_id, testbed_version)
23         desc = exp_desc.add_testbed_description(provider)
24         desc.set_attribute_value("fake", True)
25         node1 = desc.create("Node")
26         node2 = desc.create("Node")
27         iface1 = desc.create("Interface")
28         iface1.set_attribute_value("fake", True)
29         node1.connector("devs").connect(iface1.connector("node"))
30         iface2 = desc.create("Interface")
31         iface2.set_attribute_value("fake", True)
32         node2.connector("devs").connect(iface2.connector("node"))
33         iface1.connector("iface").connect(iface2.connector("iface"))
34         app = desc.create("Application")
35         app.connector("node").connect(node1.connector("apps"))
36         app.enable_trace("fake")
37
38         xml = exp_desc.to_xml()
39         controller = ExperimentController(xml)
40         controller.start()
41         while not controller.is_finished(app.guid):
42             time.sleep(0.5)
43         fake_result = controller.trace(desc.guid, app.guid, "fake")
44         comp_result = """PING 10.0.0.2 (10.0.0.2) 56(84) bytes of data.
45
46 --- 10.0.0.2 ping statistics ---
47 1 packets transmitted, 1 received, 0% packet loss, time 0ms
48 """
49         self.assertTrue(fake_result.startswith(comp_result))
50         controller.stop()
51         controller.shutdown()
52
53 if __name__ == '__main__':
54     unittest.main()
55