assert instances exist in unified way

This commit is contained in:
Tyler Johnson 2019-08-09 15:42:11 -06:00
parent 03da233c35
commit 6840d5f9e1
No known key found for this signature in database
GPG key ID: 691E31397E27D004
15 changed files with 77 additions and 117 deletions

View file

@ -69,7 +69,7 @@ class DigitalOceanTest(CloudTest):
.format(PROVIDER_NAME)
)
self.assertEqual(self._instance_exists(), False,
self.assertFalse(self._instance_exists(),
'The instance "{}" exists before it was created by the test'.format(self.instance_name))
def test_list_images(self):
@ -151,9 +151,7 @@ class DigitalOceanTest(CloudTest):
Test creating an instance on DigitalOcean
'''
# check if instance with salt installed returned
self.assertIn(
self.instance_name,
[i.strip() for i in self.run_cloud('-p digitalocean-test {0}'.format(self.instance_name), timeout=TIMEOUT)]
)
self.assertEqual(self._instance_exists(), True)
ret_str = self.run_cloud('-p digitalocean-test {0}'.format(self.instance_name), timeout=TIMEOUT)
self.assertInstanceExists(ret_str)
self._destroy_instance()

View file

@ -64,7 +64,7 @@ class DimensionDataTest(CloudTest):
.format(PROVIDER_NAME)
)
self.assertEqual(self._instance_exists(), False,
self.assertFalse(self._instance_exists(),
'The instance "{}" exists before it was created by the test'.format(self.instance_name))
def test_list_images(self):
@ -102,9 +102,7 @@ class DimensionDataTest(CloudTest):
Test creating an instance on Dimension Data's cloud
'''
# check if instance with salt installed returned
self.assertIn(
self.instance_name,
[i.strip() for i in self.run_cloud('-p dimensiondata-test {0}'.format(self.instance_name), timeout=TIMEOUT)]
)
ret_val = self.run_cloud('-p dimensiondata-test {0}'.format(self.instance_name), timeout=TIMEOUT)
self.assertInstanceExists(ret_val)
self._destroy_instance()

View file

@ -107,7 +107,7 @@ class EC2Test(CloudTest):
.format(PROVIDER_NAME)
)
self.assertEqual(self._instance_exists(), False,
self.assertFalse(self._instance_exists(),
'The instance "{}" exists before it was created by the test'.format(self.instance_name))
def override_profile_config(self, name, data):
@ -141,12 +141,10 @@ class EC2Test(CloudTest):
if debug:
cmd.extend(['-l', 'debug'])
cmd.append(self.instance_name)
instance = self.run_cloud(' '.join(cmd), timeout=TIMEOUT)
ret_str = '{0}:'.format(self.instance_name)
ret_val = self.run_cloud(' '.join(cmd), timeout=TIMEOUT)
# check if instance returned with salt installed
self.assertIn(ret_str, instance)
self.assertEqual(self._instance_exists(), True)
self.assertInstanceExists(ret_val)
self._destroy_instance()
@ -157,11 +155,10 @@ class EC2Test(CloudTest):
# Start with a name that is different from usual so that it will get deleted normally after the test
changed_name = self.instance_name + '-changed'
# create the instance
instance = self.run_cloud('-p ec2-test {0} --no-deploy'.format(changed_name), timeout=TIMEOUT)
ret_str = '{0}:'.format(changed_name)
ret_val = self.run_cloud('-p ec2-test {0} --no-deploy'.format(changed_name), timeout=TIMEOUT)
# check if instance returned
self.assertIn(ret_str, instance)
self.assertInstanceExists(ret_val)
change_name = self.run_cloud('-a rename {0} newname={1} --assume-yes'.format(changed_name, self.instance_name),
timeout=TIMEOUT)

View file

@ -75,12 +75,10 @@ class GCETest(CloudTest):
'''
# create the instance
instance = self.run_cloud('-p gce-test {0}'.format(self.instance_name), timeout=TIMEOUT)
ret_str = '{0}:'.format(self.instance_name)
ret_str = self.run_cloud('-p gce-test {0}'.format(self.instance_name), timeout=TIMEOUT)
# check if instance returned with salt installed
self.assertIn(ret_str, instance)
self.assertEqual(self._instance_exists(), True)
self.assertInstanceExists(ret_str)
self._destroy_instance()
def test_instance_extra(self):
@ -89,12 +87,8 @@ class GCETest(CloudTest):
'''
# create the instance
instance = self.run_cloud('-p gce-test-extra \
{0}'.format(self.instance_name),
timeout=TIMEOUT)
ret_str = '{0}:'.format(self.instance_name)
ret_str = self.run_cloud('-p gce-test-extra {0}'.format(self.instance_name), timeout=TIMEOUT)
# check if instance returned with salt installed
self.assertIn(ret_str, instance)
self.assertEqual(self._instance_exists(), True)
self.assertInstanceExists(ret_str)
self._destroy_instance()

View file

@ -64,7 +64,7 @@ class GoGridTest(CloudTest):
.format(PROVIDER_NAME)
)
self.assertEqual(self._instance_exists(), False,
self.assertFalse(self._instance_exists(),
'The instance "{}" exists before it was created by the test'.format(self.instance_name))
def test_instance(self):
@ -72,9 +72,7 @@ class GoGridTest(CloudTest):
Test creating an instance on GoGrid
'''
# check if instance with salt installed returned
self.assertIn(
self.instance_name,
[i.strip() for i in self.run_cloud('-p gogrid-test {0}'.format(self.instance_name), timeout=TIMEOUT)]
)
self.assertEqual(self._instance_exists(), True)
ret_str = self.run_cloud('-p gogrid-test {0}'.format(self.instance_name), timeout=TIMEOUT)
self.assertInstanceExists(ret_str)
self._destroy_instance()

View file

@ -8,10 +8,9 @@ from __future__ import absolute_import, print_function, unicode_literals
import os
# Import Salt Testing Libs
from unittest import skipIf
from tests.support.paths import FILES
from tests.support.helpers import expensiveTest
from tests.support.paths import FILES
from tests.support.unit import skipIf
# Import Salt Libs
from salt.config import cloud_providers_config
@ -67,16 +66,14 @@ class JoyentTest(CloudTest):
'tests/integration/files/conf/cloud.providers.d/{0}.conf'
.format(PROVIDER_NAME)
)
self.assertEqual(self._instance_exists(), False,
self.assertFalse(self._instance_exists(),
'The instance "{}" exists before it was created by the test'.format(self.instance_name))
def test_instance(self):
'''
Test creating and deleting instance on Joyent
'''
self.assertIn(
self.instance_name,
[i.strip() for i in self.run_cloud('-p joyent-test {0}'.format(self.instance_name), timeout=TIMEOUT)]
)
self.assertEqual(self._instance_exists(), True)
ret_str = self.run_cloud('-p joyent-test {0}'.format(self.instance_name), timeout=TIMEOUT)
self.assertInstanceExists(ret_str)
self._destroy_instance()

View file

@ -62,7 +62,7 @@ class LinodeTest(CloudTest):
)
)
self.assertEqual(self._instance_exists(), False,
self.assertFalse(self._instance_exists(),
'The instance "{}" exists before it was created by the test'.format(self.instance_name))
def test_instance(self):
@ -70,9 +70,7 @@ class LinodeTest(CloudTest):
Test creating an instance on Linode
'''
# check if instance with salt installed returned
self.assertIn(
self.instance_name,
[i.strip() for i in self.run_cloud('-p linode-test {0}'.format(self.instance_name), timeout=TIMEOUT)]
)
self.assertEqual(self._instance_exists(), True)
ret_str = self.run_cloud('-p linode-test {0}'.format(self.instance_name), timeout=TIMEOUT)
self.assertInstanceExists(ret_str)
self._destroy_instance()

View file

@ -51,6 +51,7 @@ def __has_required_azure():
return False
@skipIf(True, 'MSAzure will be deprecated in favor of azurearm')
@skipIf(HAS_AZURE is False, 'These tests require the Azure Python SDK to be installed.')
@skipIf(__has_required_azure() is False, 'The Azure Python SDK must be >= 0.11.1.')
class AzureTest(CloudTest):
@ -110,7 +111,7 @@ class AzureTest(CloudTest):
)
)
self.assertEqual(self._instance_exists(), False,
self.assertFalse(self._instance_exists(),
'The instance "{}" exists before it was created by the test'.format(self.instance_name))
def test_instance(self):
@ -118,14 +119,7 @@ class AzureTest(CloudTest):
Test creating an instance on Azure
'''
# check if instance with salt installed returned
self.assertIn(
self.instance_name,
[i.strip() for i in self.run_cloud(
'-p {0} {1}'.format(
PROFILE_NAME,
self.instance_name
), timeout=TIMEOUT
)]
)
self.assertEqual(self._instance_exists(), True)
ret_val = self.run_cloud('-p {0} {1}'.format(PROFILE_NAME, self.instance_name), timeout=TIMEOUT)
self.assertInstanceExists(ret_val)
self._destroy_instance()

View file

@ -72,7 +72,7 @@ class OneAndOneTest(CloudTest):
.format(PROVIDER_NAME)
)
self.assertEqual(self._instance_exists(), False,
self.assertFalse(self._instance_exists(),
'The instance "{}" exists before it was created by the test'.format(INSTANCE_NAME))
def test_list_images(self):
@ -90,12 +90,7 @@ class OneAndOneTest(CloudTest):
Test creating an instance on 1and1
'''
# check if instance with salt installed returned
self.assertIn(
INSTANCE_NAME,
[i.strip() for i in self.run_cloud(
'-p oneandone-test {0}'.format(INSTANCE_NAME), timeout=TIMEOUT
)]
)
self.assertEqual(self._instance_exists(), True)
ret_str = self.run_cloud('-p oneandone-test {0}'.format(INSTANCE_NAME), timeout=TIMEOUT)
self.assertInstanceExists(ret_str)
self._destroy_instance()

View file

@ -220,7 +220,7 @@ class RackspaceTest(CloudTest):
.format(PROVIDER_NAME)
)
self.assertEqual(self._instance_exists(), False,
self.assertFalse(self._instance_exists(),
'The instance "{}" exists before it was created by the test'.format(self.instance_name))
def test_instance(self):
@ -228,10 +228,7 @@ class RackspaceTest(CloudTest):
Test creating an instance on rackspace with the openstack driver
'''
# check if instance with salt installed returned
self.assertIn(
self.instance_name,
[i.strip() for i in self.run_cloud('-p rackspace-test {0}'.format(self.instance_name), timeout=TIMEOUT)]
)
ret_val = self.run_cloud('-p rackspace-test {0}'.format(self.instance_name), timeout=TIMEOUT)
self.assertInstanceExists(ret_val)
self.assertEqual(self._instance_exists(), True)
self._destroy_instance()

View file

@ -76,7 +76,7 @@ class ProfitBricksTest(CloudTest):
.format(PROVIDER_NAME)
)
self.assertEqual(self._instance_exists(), False,
self.assertFalse(self._instance_exists(),
'The instance "{}" exists before it was created by the test'.format(self.instance_name))
def test_list_images(self):
@ -188,13 +188,7 @@ class ProfitBricksTest(CloudTest):
Test creating an instance on ProfitBricks
'''
# check if instance with salt installed returned
self.assertIn(
self.instance_name,
[i.strip() for i in self.run_cloud(
'-p profitbricks-test {0}'.format(self.instance_name),
timeout=TIMEOUT
)]
)
self.assertEqual(self._instance_exists(), True)
ret_str = self.run_cloud('-p profitbricks-test {0}'.format(self.instance_name),timeout=TIMEOUT)
self.assertInstanceExists(ret_str)
self._destroy_instance()

View file

@ -72,7 +72,7 @@ class VMWareTest(CloudTest):
.format(PROVIDER_NAME)
)
self.assertEqual(self._instance_exists(), False,
self.assertFalse(self._instance_exists(),
'The instance "{}" exists before it was created by the test'.format(self.instance_name))
def test_instance(self):
@ -90,14 +90,13 @@ class VMWareTest(CloudTest):
profile_config = cloud_config(profile)
disk_datastore = profile_config['vmware-test']['devices']['disk']['Hard disk 2']['datastore']
instance = self.run_cloud('-p vmware-test {0}'.format(self.instance_name), timeout=TIMEOUT)
ret_str = '{0}:'.format(self.instance_name)
disk_datastore_str = ' [{0}] {1}/Hard disk 2-flat.vmdk'.format(disk_datastore, self.instance_name)
ret_val = self.run_cloud('-p vmware-test {0}'.format(self.instance_name), timeout=TIMEOUT)
disk_datastore_str = ' [{0}] {1}/Hard disk 2-flat.vmdk'.format(disk_datastore,
self.instance_name)
# check if instance returned with salt installed
self.assertIn(ret_str, instance)
self.assertEqual(self._instance_exists(), True)
self.assertIn(disk_datastore_str, instance,
self.assertInstanceExists(ret_val)
self.assertIn(disk_datastore_str, ret_val,
msg='Hard Disk 2 did not use the Datastore {0} '.format(disk_datastore))
self._destroy_instance()
@ -107,21 +106,17 @@ class VMWareTest(CloudTest):
Tests creating snapshot and creating vm with --no-deploy
'''
# create the instance
instance = self.run_cloud('-p vmware-test {0} --no-deploy'.format(self.instance_name),
timeout=TIMEOUT)
ret_str = '{0}:'.format(self.instance_name)
ret_val = self.run_cloud('-p vmware-test {0} --no-deploy'.format(self.instance_name),
timeout=TIMEOUT)
# check if instance returned with salt installed
self.assertIn(ret_str, instance)
self.assertEqual(self._instance_exists(), True)
self.assertInstanceExists(ret_val)
create_snapshot = self.run_cloud('-a create_snapshot {0} \
snapshot_name=\'Test Cloud\' \
memdump=True -y'.format(self.instance_name),
timeout=TIMEOUT)
memdump=True -y'.format(self.instance_name), timeout=TIMEOUT)
s_ret_str = 'Snapshot created successfully'
self.assertIn(s_ret_str, six.text_type(create_snapshot))
self.assertEqual(self._instance_exists(), True)
self._destroy_instance()

View file

@ -16,7 +16,6 @@ from tests.support.unit import skipIf
# Import Salt Libs
from salt.config import cloud_providers_config
from salt.ext import six
# Create the cloud instance name to be used throughout the tests
@ -67,7 +66,7 @@ class VultrTest(CloudTest):
.format(PROVIDER_NAME)
)
self.assertEqual(self._instance_exists(), False,
self.assertFalse(self._instance_exists(),
'The instance "{}" exists before it was created by the test'.format(self.instance_name))
def test_list_images(self):
@ -147,13 +146,8 @@ class VultrTest(CloudTest):
Test creating an instance on Vultr
'''
# check if instance with salt installed returned
create_vm = self.run_cloud('-p vultr-test {0}'.format(self.instance_name), timeout=TIMEOUT + 300)
self.assertIn(
self.instance_name,
[i.strip() for i in create_vm]
)
self.assertNotIn('Failed to start', six.text_type(create_vm))
self.assertEqual(self._instance_exists(), True)
ret_val = self.run_cloud('-p vultr-test {0}'.format(self.instance_name), timeout=TIMEOUT + 300)
self.assertInstanceExists(ret_val)
# Vultr won't let us delete an instance less than 5 minutes old.
time.sleep(300)

View file

@ -12,6 +12,9 @@ from time import sleep
from tests.support.case import ShellCase
from tests.support.helpers import generate_random_name
# Import Salt Libs
from salt.ext import six
log = logging.getLogger(__name__)
TIMEOUT = 500
@ -28,7 +31,16 @@ class CloudTest(ShellCase):
# salt-cloud -a show_instance myinstance
query = self.run_cloud('--query')
log.debug('Checking for "{}" in => {}'.format(self.instance_name, query))
return any(self.instance_name is q.strip(': ') for q in query)
return any(self.instance_name == q.strip(': ') for q in query)
def assertInstanceExists(self, creation_ret=None):
'''
:param creation_ret: The return value from the run_cloud() function that created the instance
'''
if creation_ret:
self.assertIn(self.instance_name, [i.strip(': ') for i in creation_ret])
self.assertNotIn('Failed to start', six.text_type(creation_ret))
self.assertTrue(self._instance_exists(), 'Instance "{}" was not created successfully')
def _destroy_instance(self):
log.debug('Deleting instance "{}"'.format(self.instance_name))
@ -52,7 +64,7 @@ class CloudTest(ShellCase):
log.warning('Instance "{}" may not have been deleted properly'.format(self.instance_name))
# By now it should all be over
self.assertEqual(self._instance_exists(), False, 'Could not destroy "{}"'.format(self.instance_name))
self.assertFalse(self._instance_exists(), 'Could not destroy "{}"'.format(self.instance_name))
log.debug('Instance "{}" no longer exists'.format(self.instance_name))
def tearDown(self):
@ -71,9 +83,9 @@ class CloudTest(ShellCase):
sleep(30)
else:
break
self.assertEqual(self._instance_exists(), False, 'Instance exists after multiple attempts to delete: {}'
self.assertFalse(self._instance_exists(), 'Instance exists after multiple attempts to delete: {}'
.format(self.instance_name))
# Complain if the instance was destroyed in this tearDown.
# Destroying instances in the tearDown is a contingency, not the way things should work by default.
self.assertEqual(instance_deleted, True, 'The Instance "{}" was not deleted properly at the end of the test'
.format(self.instance_name))
self.assertTrue(instance_deleted, 'The Instance "{}" was not deleted properly at the end of the test'
.format(self.instance_name))

View file

@ -54,7 +54,7 @@ class CloudClientTestCase(CloudTest):
cloud_client = salt.cloud.CloudClient(self.config_file)
# Create the VM using salt.cloud.CloudClient.create() instead of calling salt-cloud
created = cloud_client.create(
ret_val = cloud_client.create(
provider=self.provider_name,
names=[self.instance_name],
image=self.image_name,
@ -62,8 +62,7 @@ class CloudClientTestCase(CloudTest):
)
# Check that the VM was created correctly
self.assertIn(self.instance_name, created)
self.assertEqual(self._instance_exists(), True)
self.assertInstanceExists(ret_val)
# Clean up after ourselves and delete the VM
deleted = cloud_client.destroy(names=[self.instance_name])