Changing ResourceManager naming for platform::ResourceName
[nepi.git] / test / resources / planetlab / sfa_node.py
index cd6e6bb..901865b 100755 (executable)
@@ -37,8 +37,8 @@ class DummyEC(ExperimentController):
 class PLSfaNodeFactoryTestCase(unittest.TestCase):
 
     def test_creation_phase(self):
-        self.assertEquals(PlanetlabSfaNode._rtype, "PlanetlabSfaNode")
-        self.assertEquals(len(PlanetlabSfaNode._attributes), 29)
+        self.assertEquals(PlanetlabSfaNode._rtype, "planetlab::sfa::Node")
+        self.assertEquals(len(PlanetlabSfaNode._attributes), 31)
 
 class PLSfaNodeTestCase(unittest.TestCase):
     """
@@ -50,7 +50,7 @@ class PLSfaNodeTestCase(unittest.TestCase):
 
     def setUp(self):
         self.ec = DummyEC()
-        self.username = os.environ.get('SFA_SLICE')
+        self.username = 'inria_lguevgeo'
         self.sfauser = os.environ.get('SFA_USER')
         self.sfaPrivateKey = os.environ.get('SFA_PK')
         
@@ -61,7 +61,7 @@ class PLSfaNodeTestCase(unittest.TestCase):
         instanciated, and is an instance of SFAAPI. Check that using
         the same credentials, the same object of the api is used.
         """
-        node1 = self.ec.register_resource("PlanetlabSfaNode")
+        node1 = self.ec.register_resource("planetlab::sfa::Node")
         self.ec.set(node1, "hostname", "planetlab2.ionio.gr")
         self.ec.set(node1, "username", self.username)
         self.ec.set(node1, "sfauser", self.sfauser)
@@ -73,10 +73,10 @@ class PLSfaNodeTestCase(unittest.TestCase):
 
         api1 = plnode_rm1.sfaapi
         self.assertIsInstance(api1, SFAAPI)
-        self.assertEquals(len(api1.reserved()), 0)
-        self.assertEquals(len(api1.blacklisted()), 0)
+        self.assertEquals(len(api1._reserved), 0)
+        self.assertEquals(len(api1._blacklist), 0)
 
-        node2 = self.ec.register_resource("PlanetlabSfaNode")
+        node2 = self.ec.register_resource("planetlab::sfa::Node")
         self.ec.set(node2, "hostname", "planetlab2.ionio.gr")
         self.ec.set(node2, "username", self.username)
         self.ec.set(node2, "sfauser", self.sfauser)
@@ -91,8 +91,8 @@ class PLSfaNodeTestCase(unittest.TestCase):
         """
         Check that the method do_discover reserve the right node.
         """
-        node = self.ec.register_resource("PlanetlabSfaNode")
-        self.ec.set(node, "hostname", "planetlab2.ionio.gr")
+        node = self.ec.register_resource("planetlab::sfa::Node")
+        self.ec.set(node, "hostname", "roti.mimuw.edu.pl")
         self.ec.set(node, "username", self.username)
         self.ec.set(node, "sfauser", self.sfauser)
         self.ec.set(node, "sfaPrivateKey", self.sfaPrivateKey)
@@ -102,11 +102,14 @@ class PLSfaNodeTestCase(unittest.TestCase):
         hostname = plnode_rm.get("hostname")
         self.assertIsNotNone(hostname)
 
-        self.assertEquals(plnode_rm.sfaapi.reserved(), set())
+        self.assertEquals(len(plnode_rm.sfaapi._reserved), 0)
 
         plnode_rm.do_discover()
-        self.assertEquals(plnode_rm.sfaapi.reserved().pop(), 'ple.dbislab.planetlab2.ionio.gr')
-        self.assertEquals(plnode_rm._node_to_provision, 'ple.dbislab.planetlab2.ionio.gr')
+
+        self.assertEquals(len(plnode_rm.sfaapi._reserved), 1)
+        self.assertEquals(plnode_rm._node_to_provision, 'ple.mimuw.roti.mimuw.edu.pl')
+        plnode_rm.sfaapi._reserved = set()
+        plnode_rm.sfaapi._blacklist = set()
 
     @skipIfNotSfaCredentials
     def test_provision(self):
@@ -114,7 +117,7 @@ class PLSfaNodeTestCase(unittest.TestCase):
         This test checks that the method do_provision add the node in the slice and check
         its well functioning.
         """
-        node = self.ec.register_resource("PlanetlabSfaNode")
+        node = self.ec.register_resource("planetlab::sfa::Node")
         self.ec.set(node, "hostname", "planetlab2.ionio.gr")
         self.ec.set(node, "username", self.username)
         self.ec.set(node, "sfauser", self.sfauser)
@@ -122,11 +125,9 @@ class PLSfaNodeTestCase(unittest.TestCase):
 
         plnode_rm = self.ec.get_resource(node)
 
-        self.assertEquals(plnode_rm.sfaapi.reserved(), set())
+        self.assertEquals(plnode_rm.sfaapi._reserved, set())
         self.assertIsNone(plnode_rm._node_to_provision)
 
-        slicename = 'ple.' + self.username.replace('_', '.')
-
         plnode_rm.do_discover()
         plnode_rm.do_provision()    
 
@@ -134,22 +135,15 @@ class PLSfaNodeTestCase(unittest.TestCase):
         ((out, err), proc) = plnode_rm.execute(cmd)
         self.assertEquals(out.strip(), "IT WORKED")
 
-        urn_to_delete = 'urn:publicid:IDN+ple:dbislab+node+planetlab2.ionio.gr'
-        plnode_rm.sfaapi.remove_resource_from_slice(slicename, urn_to_delete)
-
-        slice_resources = plnode_rm.sfaapi.get_slice_resources(slicename)['resource']
-        if slice_resources:
-            slice_resources_hrn = plnode_rm.sfaapi.get_resources_hrn(slice_resources)
-            self.assertNotIn('planetlab2.ionio.gr', slice_resources_hrn.keys())           
+        plnode_rm.sfaapi._reserved = set()
+        plnode_rm.sfaapi._blacklist = set()
 
     @skipIfNotSfaCredentials
-    def test_xdeploy(self):
+    def test_xdeploy1(self):
         """
-        Test with the nodes being discover and provision at the same time.
-        The deploy should fail as the test before, there aren't 4 nodes of 
-        that carachteristics.
+        Test deploy 1 node.
         """
-        node = self.ec.register_resource("PlanetlabSfaNode")
+        node = self.ec.register_resource("planetlab::sfa::Node")
         self.ec.set(node, "hostname", "planetlab2.ionio.gr")
         self.ec.set(node, "username", self.username)
         self.ec.set(node, "sfauser", self.sfauser)
@@ -158,7 +152,70 @@ class PLSfaNodeTestCase(unittest.TestCase):
         self.ec.deploy()
         self.ec.wait_deployed(node)
         state = self.ec.state(node)
-        self.assertEquals(state, 3)
+        if not self.ec.abort:
+            self.assertIn(state, (3, 4))
+
+        plnode_rm = self.ec.get_resource(1)
+        plnode_rm.sfaapi._reserved = set()
+        plnode_rm.sfaapi._blacklist = set()
+
+    @skipIfNotSfaCredentials
+    def test_xdeploy2(self):
+        """
+        Test deploy 2 nodes. Empty slice.
+        """
+        node1 = self.ec.register_resource("planetlab::sfa::Node")
+        self.ec.set(node1, "hostname", "planetlab3.xeno.cl.cam.ac.uk")
+        self.ec.set(node1, "username", self.username)
+        self.ec.set(node1, "sfauser", self.sfauser)
+        self.ec.set(node1, "sfaPrivateKey", self.sfaPrivateKey)
+
+        node2 = self.ec.register_resource("planetlab::sfa::Node")
+        self.ec.set(node2, "hostname", "planetlab1.cs.vu.nl")
+        self.ec.set(node2, "username", self.username)
+        self.ec.set(node2, "sfauser", self.sfauser)
+        self.ec.set(node2, "sfaPrivateKey", self.sfaPrivateKey)
+
+        node1rm = self.ec.get_resource(node1)
+        node1rm._delete_from_slice()
+
+        self.ec.deploy()
+        self.ec.wait_deployed([node1, node2])
+        state1 = self.ec.state(node1)
+        state2 = self.ec.state(node2)
+        if not self.ec.abort:
+            self.assertIn(state1, (3, 4))
+            self.assertIn(state2, (3, 4))
+
+        plnode_rm = self.ec.get_resource(1)
+        plnode_rm.sfaapi._reserved = set()
+        plnode_rm.sfaapi._blacklist = set()
+
+    @skipIfNotSfaCredentials
+    def test_xdeploy3(self):
+        """
+        Test deploy 2 nodes, already in the slice.
+        """
+        node1 = self.ec.register_resource("planetlab::sfa::Node")
+        self.ec.set(node1, "hostname", "planetlab3.xeno.cl.cam.ac.uk")
+        self.ec.set(node1, "username", self.username)
+        self.ec.set(node1, "sfauser", self.sfauser)
+        self.ec.set(node1, "sfaPrivateKey", self.sfaPrivateKey)
+
+        node2 = self.ec.register_resource("planetlab::sfa::Node")
+        self.ec.set(node2, "hostname", "planetlab1.cs.vu.nl")
+        self.ec.set(node2, "username", self.username)
+        self.ec.set(node2, "sfauser", self.sfauser)
+        self.ec.set(node2, "sfaPrivateKey", self.sfaPrivateKey)
+
+        self.ec.deploy()
+        self.ec.wait_deployed([node1, node2])
+        state1 = self.ec.state(node1)
+        state2 = self.ec.state(node2)
+        if not self.ec.abort:
+            self.assertIn(state1, (3, 4))
+            self.assertIn(state2, (3, 4))
+
 
     def tearDown(self):
         self.ec.shutdown()