blob: cc690482d04c37769ef264f15032c95b7b6c5112 [file] [log] [blame]
from nose.plugins.attrib import attr
from tempest import openstack
from tempest import exceptions
from tempest.common.utils.data_utils import rand_name
from base_compute_test import BaseComputeTest
class FloatingIPsTest(BaseComputeTest):
server_id = None
floating_ip = None
@classmethod
def setUpClass(cls):
cls.os = openstack.Manager()
cls.client = cls.floating_ips_client
cls.servers_client = cls.servers_client
#Server creation
resp, server = cls.servers_client.create_server('floating-server',
cls.image_ref,
cls.flavor_ref)
cls.servers_client.wait_for_server_status(server['id'], 'ACTIVE')
cls.server_id = server['id']
resp, body = cls.servers_client.get_server(server['id'])
#Floating IP creation
resp, body = cls.client.create_floating_ip()
cls.floating_ip_id = body['id']
cls.floating_ip = body['ip']
#Generating a nonexistant floatingIP id
cls.floating_ip_ids = []
resp, body = cls.client.list_floating_ips()
for i in range(len(body)):
cls.floating_ip_ids.append(body[i]['id'])
while True:
cls.non_exist_id = rand_name('999')
if cls.non_exist_id not in cls.floating_ip_ids:
break
@classmethod
def tearDownClass(cls):
#Deleting the server which is created in this method
resp, body = cls.servers_client.delete_server(cls.server_id)
#Deleting the floating IP which is created in this method
resp, body = cls.client.delete_floating_ip(cls.floating_ip_id)
@attr(type='positive')
def test_allocate_floating_ip(self):
"""
Positive test:Allocation of a new floating IP to a project
should be succesfull
"""
resp, body = self.client.create_floating_ip()
self.assertEqual(200, resp.status)
floating_ip_id_allocated = body['id']
resp, floating_ip_details = \
self.client.get_floating_ip_details(floating_ip_id_allocated)
#Checking if the details of allocated IP is in list of floating IP
resp, body = self.client.list_floating_ips()
self.assertTrue(floating_ip_details in body)
#Deleting the floating IP which is created in this method
self.client.delete_floating_ip(floating_ip_id_allocated)
@attr(type='positive')
def test_delete_floating_ip(self):
"""
Positive test:Deletion of valid floating IP from project
should be succesfull
"""
#Creating the floating IP that is to be deleted in this method
resp, floating_ip_body = self.client.create_floating_ip()
#Storing the details of floating IP before deleting it
resp, floating_ip_details = \
self.client.get_floating_ip_details(floating_ip_body['id'])
#Deleting the floating IP from the project
resp, body = self.client.delete_floating_ip(floating_ip_body['id'])
self.assertEqual(202, resp.status)
#Listing the floating IPs and checking the existence
#of deleted floating IP
resp, body = self.client.list_floating_ips()
self.assertTrue(floating_ip_details not in body)
@attr(type='positive')
def test_associate_floating_ip(self):
"""
Positive test:Associate the provided floating IP to a specific server
should be successfull
l"""
#Association of floating IP to fixed IP address
resp, body =\
self.client.associate_floating_ip_to_server(self.floating_ip,
self.server_id)
self.assertEqual(202, resp.status)
#Disassociation of floating IP that was associated in this method
resp, body = \
self.client.disassociate_floating_ip_from_server(self.floating_ip,
self.server_id)
@attr(type='positive')
def test_dissociate_floating_ip(self):
"""
Positive test:Dissociate the provided floating IP
from a specific server should be successfull
"""
#Association of floating IP to a specific server
#so as to check dissociation
resp, body = \
self.client.associate_floating_ip_to_server(self.floating_ip,
self.server_id)
#Disassociation of floating IP
resp, body = \
self.client.disassociate_floating_ip_from_server(self.floating_ip,
self.server_id)
self.assertEqual(202, resp.status)
@attr(type='negative')
def test_delete_nonexistant_floating_ip(self):
"""
Negative test:Deletion of a nonexistant floating IP
from project should fail
"""
#Deleting the non existant floating IP
try:
resp, body = self.client.delete_floating_ip(self.non_exist_id)
except:
pass
else:
self.fail('Should not be able to delete a nonexistant floating IP')
@attr(type='negative')
def test_associate_nonexistant_floating_ip(self):
"""
Negative test:Association of a non existant floating IP
to specific server should fail
"""
#Associating non existant floating IP
try:
resp, body = \
self.client.associate_floating_ip_to_server("0.0.0.0",
self.server_id)
except:
pass
else:
self.fail('Should not be able to associate'
' a nonexistant floating IP')
@attr(type='negative')
def test_dissociate_nonexistant_floating_ip(self):
"""
Negative test:Dissociation of a non existant floating IP should fail
"""
#Dissociating non existant floating IP
try:
resp, body = \
self.client.disassociate_floating_ip_from_server("0.0.0.0",
self.server_id)
except:
pass
else:
self.fail('Should not be able to dissociate'
' a nonexistant floating IP')