X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=test%2Fexecution%2Fresource.py;h=6a4fd8c06163e91be4329b4cf49237028812a1af;hb=1d2350d56f314a6e3de43517a66f7e2f48128d44;hp=f820f686b1c7a809d5fbf56482ded0bf0a6c5018;hpb=5f52b47aee711cb3b6581829c337666cbd8df65f;p=nepi.git diff --git a/test/execution/resource.py b/test/execution/resource.py index f820f686..6a4fd8c0 100755 --- a/test/execution/resource.py +++ b/test/execution/resource.py @@ -4,9 +4,8 @@ # Copyright (C) 2013 INRIA # # This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. +# it under the terms of the GNU General Public License version 2 as +# published by the Free Software Foundation; # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -65,8 +64,8 @@ class Interface(ResourceManager): super(Interface, self).__init__(ec, guid) def do_deploy(self): - node = self.get_connected(Node.rtype())[0] - chan = self.get_connected(Channel.rtype())[0] + node = self.get_connected(Node.get_rtype())[0] + chan = self.get_connected(Channel.get_rtype())[0] if node.state < ResourceState.PROVISIONED: self.ec.schedule("0.5s", self.deploy) @@ -90,7 +89,7 @@ class Node(ResourceManager): self.logger.debug(" -------- PROVISIONED ------- ") self.ec.schedule("1s", self.deploy) elif self.state == ResourceState.PROVISIONED: - ifaces = self.get_connected(Interface.rtype()) + ifaces = self.get_connected(Interface.get_rtype()) for rm in ifaces: if rm.state < ResourceState.READY: self.ec.schedule("0.5s", self.deploy) @@ -106,7 +105,7 @@ class Application(ResourceManager): super(Application, self).__init__(ec, guid) def do_deploy(self): - node = self.get_connected(Node.rtype())[0] + node = self.get_connected(Node.get_rtype())[0] if node.state < ResourceState.READY: self.ec.schedule("0.5s", self.deploy) else: @@ -117,7 +116,7 @@ class Application(ResourceManager): def do_start(self): super(Application, self).do_start() time.sleep(random.random() * 3) - self.ec.schedule("0.5s", self.finish) + self.ec.schedule("0.5s", self.stop) class ErrorApplication(ResourceManager): _rtype = "ErrorApplication" @@ -126,12 +125,12 @@ class ErrorApplication(ResourceManager): super(ErrorApplication, self).__init__(ec, guid) def do_deploy(self): - node = self.get_connected(Node.rtype())[0] + node = self.get_connected(Node.get_rtype())[0] if node.state < ResourceState.READY: self.ec.schedule("0.5s", self.deploy) else: time.sleep(random.random() * 2) - raise RuntimeError, "NOT A REAL ERROR. JUST TESTING" + raise RuntimeError("NOT A REAL ERROR. JUST TESTING") class ResourceFactoryTestCase(unittest.TestCase): def test_add_resource_factory(self): @@ -141,16 +140,17 @@ class ResourceFactoryTestCase(unittest.TestCase): ResourceFactory.register_type(MyResource) ResourceFactory.register_type(AnotherResource) - self.assertEquals(MyResource.rtype(), "MyResource") - self.assertEquals(len(MyResource._attributes), 2) + # Take into account default 'Critical' attribute + self.assertEqual(MyResource.get_rtype(), "MyResource") + self.assertEqual(len(MyResource._attributes), 3) - self.assertEquals(ResourceManager.rtype(), "Resource") - self.assertEquals(len(ResourceManager._attributes), 1) + self.assertEqual(ResourceManager.get_rtype(), "Resource") + self.assertEqual(len(ResourceManager._attributes), 2) - self.assertEquals(AnotherResource.rtype(), "AnotherResource") - self.assertEquals(len(AnotherResource._attributes), 1) + self.assertEqual(AnotherResource.get_rtype(), "AnotherResource") + self.assertEqual(len(AnotherResource._attributes), 2) - self.assertEquals(len(ResourceFactory.resource_types()), 2) + self.assertEqual(len(ResourceFactory.resource_types()), 2) # restore factory state for other tests from nepi.execution.resource import populate_factory @@ -175,7 +175,7 @@ class ResourceManagerTestCase(unittest.TestCase): for (group, state, time) in conditions: waiting_for.extend(group) - self.assertEquals(waiting_for, [1, 3, 5, 7, 10, 8]) + self.assertEqual(waiting_for, [1, 3, 5, 7, 10, 8]) group = [1, 2, 3, 4, 6] rm.unregister_condition(group) @@ -185,7 +185,7 @@ class ResourceManagerTestCase(unittest.TestCase): for (group, state, time) in conditions: waiting_for.extend(group) - self.assertEquals(waiting_for, [5, 7, 10, 8]) + self.assertEqual(waiting_for, [5, 7, 10, 8]) def test_deploy_in_order(self): """ @@ -269,7 +269,7 @@ class ResourceManagerTestCase(unittest.TestCase): node = ec.register_resource("Node") apps = list() - for i in xrange(1000): + for i in range(1000): app = ec.register_resource("Application") ec.register_connection(app, node) apps.append(app) @@ -280,7 +280,7 @@ class ResourceManagerTestCase(unittest.TestCase): self.assertTrue(ec.state(node) == ResourceState.STARTED) self.assertTrue( - all([ec.state(guid) == ResourceState.FINISHED \ + all([ec.state(guid) == ResourceState.STOPPED \ for guid in apps]) ) @@ -306,7 +306,7 @@ class ResourceManagerTestCase(unittest.TestCase): ec.shutdown() - self.assertEquals(ec._fm._failure_level, FailureLevel.RM_FAILURE) + self.assertEqual(ec._fm._failure_level, FailureLevel.RM_FAILURE) def test_critical(self): from nepi.execution.resource import ResourceFactory @@ -327,7 +327,7 @@ class ResourceManagerTestCase(unittest.TestCase): ec.register_connection(eapp, node) apps.append(eapp) - for i in xrange(10): + for i in range(10): app = ec.register_resource("Application") ec.register_connection(app, node) apps.append(app) @@ -337,25 +337,79 @@ class ResourceManagerTestCase(unittest.TestCase): ec.wait_finished(apps) state = ec.state(eapp) - self.assertEquals(state, ResourceState.FAILED) + self.assertEqual(state, ResourceState.FAILED) apps.remove(eapp) for app in apps: state = ec.state(app) - self.assertEquals(state, ResourceState.FINISHED) + self.assertEqual(state, ResourceState.STOPPED) ec.shutdown() - self.assertEquals(ec._fm._failure_level, FailureLevel.OK) + self.assertEqual(ec._fm._failure_level, FailureLevel.OK) - def ztest_start_with_condition(self): - # TODO!!! - pass - - def ztest_stop_with_condition(self): - # TODO!!! - pass + def test_start_with_condition(self): + from nepi.execution.resource import ResourceFactory + + ResourceFactory.register_type(Application) + ResourceFactory.register_type(Node) + ResourceFactory.register_type(Interface) + + ec = ExperimentController() + + node = ec.register_resource("Node") + + app1 = ec.register_resource("Application") + ec.register_connection(app1, node) + + app2 = ec.register_resource("Application") + ec.register_connection(app2, node) + + ec.register_condition(app2, ResourceAction.START, app1, + ResourceState.STARTED, time = "5s") + + ec.deploy() + + ec.wait_finished([app1, app2]) + + rmapp1 = ec.get_resource(app1) + rmapp2 = ec.get_resource(app2) + + self.assertTrue(rmapp2.start_time > rmapp1.start_time) + + ec.shutdown() + + def test_stop_with_condition(self): + from nepi.execution.resource import ResourceFactory + + ResourceFactory.register_type(Application) + ResourceFactory.register_type(Node) + ResourceFactory.register_type(Interface) + + ec = ExperimentController() + + node = ec.register_resource("Node") + + app1 = ec.register_resource("Application") + ec.register_connection(app1, node) + + app2 = ec.register_resource("Application") + ec.register_connection(app2, node) + + ec.register_condition(app2, ResourceAction.START, app1, + ResourceState.STOPPED) + + ec.deploy() + + ec.wait_finished([app1, app2]) + + rmapp1 = ec.get_resource(app1) + rmapp2 = ec.get_resource(app2) + + self.assertTrue(rmapp2.start_time > rmapp1.stop_time) + + ec.shutdown() def ztest_set_with_condition(self): # TODO!!!