replacing assertEquals into assertEqual
[nepi.git] / test / execution / resource.py
index f820f68..6a4fd8c 100755 (executable)
@@ -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!!!