de8de1bf769c7a796fa9484b6d256dd9c716b873
[nepi.git] / test / core / execute.py
1 #!/usr/bin/env python
2 # -*- coding: utf-8 -*-
3
4 from nepi.util import tags
5 from nepi.util.constants import ApplicationStatus as AS
6 import getpass
7 import mock
8 import mock.metadata 
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"] = mock.metadata
16     
17     def make_mock_test(self, instance):
18         instance.defer_configure("fake", True)
19         instance.defer_create(2, "Node")
20         instance.defer_create(3, "Node")
21         instance.defer_create(4, "Node")
22         instance.defer_create(5, "Interface")
23         instance.defer_create_set(5, "fake", True)
24         instance.defer_connect(2, "devs", 5, "node")
25         instance.defer_create(6, "Interface")
26         instance.defer_create_set(6, "fake", True)
27         instance.defer_connect(3, "devs", 6, "node")
28         instance.defer_connect(5, "iface", 6, "iface")
29         instance.defer_create(7, "Application")
30         instance.defer_add_trace(7, "fake")
31         instance.defer_connect(7, "node", 2, "apps")
32     
33     def do_presteps(self, instance):
34         instance.do_setup()
35         instance.do_create()
36         instance.do_connect_init()
37         instance.do_connect_compl()
38         instance.do_preconfigure()
39         instance.do_configure()
40         instance.do_prestart()
41
42     def test_execute(self):
43         instance = mock.TestbedController()
44         
45         self.make_mock_test(instance)
46         self.do_presteps(instance)
47
48         instance.start()
49         attr_list = instance.get_attribute_list(5)
50         self.assertEquals(attr_list, ["test", "fake", "cross", "maxAddresses", "label"])
51         while instance.status(7) != AS.STATUS_FINISHED:
52             time.sleep(0.5)
53         app_result = instance.trace(7, "fake")
54         comp_result = """PING 10.0.0.2 (10.0.0.2) 56(84) bytes of data.
55
56 --- 10.0.0.2 ping statistics ---
57 1 packets transmitted, 1 received, 0% packet loss, time 0ms
58 """
59         self.assertTrue(app_result.startswith(comp_result))
60
61         traces_info = instance.traces_info()
62         expected_traces_info = dict({
63             7 : dict({
64                 'fake': dict({
65                     'host': 'localhost', 
66                     'user': getpass.getuser(), 
67                     'filepath': '<test>'
68                     })
69                 })
70             })
71         self.assertEquals(traces_info, expected_traces_info)
72
73         instance.stop()
74         instance.shutdown()
75
76 if __name__ == '__main__':
77     unittest.main()
78