mirror of
https://github.com/ansible/awx.git
synced 2026-05-07 01:17:37 -02:30
Unit tests now start their own Redis.
This commit is contained in:
@@ -13,6 +13,7 @@ import sys
|
|||||||
import tempfile
|
import tempfile
|
||||||
import time
|
import time
|
||||||
from multiprocessing import Process
|
from multiprocessing import Process
|
||||||
|
from subprocess import Popen
|
||||||
|
|
||||||
# PyYAML
|
# PyYAML
|
||||||
import yaml
|
import yaml
|
||||||
@@ -445,6 +446,7 @@ class BaseTestMixin(object):
|
|||||||
self.assertTrue(set(obj.keys()) <= set(fields), msg)
|
self.assertTrue(set(obj.keys()) <= set(fields), msg)
|
||||||
|
|
||||||
def start_taskmanager(self, command_port):
|
def start_taskmanager(self, command_port):
|
||||||
|
self.start_redis()
|
||||||
self.taskmanager_process = Process(target=run_taskmanager,
|
self.taskmanager_process = Process(target=run_taskmanager,
|
||||||
args=(command_port,))
|
args=(command_port,))
|
||||||
self.taskmanager_process.start()
|
self.taskmanager_process.start()
|
||||||
@@ -452,8 +454,10 @@ class BaseTestMixin(object):
|
|||||||
def terminate_taskmanager(self):
|
def terminate_taskmanager(self):
|
||||||
if hasattr(self, 'taskmanager_process'):
|
if hasattr(self, 'taskmanager_process'):
|
||||||
self.taskmanager_process.terminate()
|
self.taskmanager_process.terminate()
|
||||||
|
self.stop_redis()
|
||||||
|
|
||||||
def start_queue(self):
|
def start_queue(self):
|
||||||
|
self.start_redis()
|
||||||
receiver = CallbackReceiver()
|
receiver = CallbackReceiver()
|
||||||
self.queue_process = Process(target=receiver.run_subscriber,
|
self.queue_process = Process(target=receiver.run_subscriber,
|
||||||
args=(False,))
|
args=(False,))
|
||||||
@@ -462,9 +466,21 @@ class BaseTestMixin(object):
|
|||||||
def terminate_queue(self):
|
def terminate_queue(self):
|
||||||
if hasattr(self, 'queue_process'):
|
if hasattr(self, 'queue_process'):
|
||||||
self.queue_process.terminate()
|
self.queue_process.terminate()
|
||||||
|
self.stop_redis()
|
||||||
|
|
||||||
|
def start_redis(self):
|
||||||
|
if not getattr(self, 'redis_process', None):
|
||||||
|
self.redis_process = Popen('redis-server --port 16379 > /dev/null',
|
||||||
|
shell=True, executable='/bin/bash')
|
||||||
|
|
||||||
|
def stop_redis(self):
|
||||||
|
if getattr(self, 'redis_process', None):
|
||||||
|
self.redis_process.kill()
|
||||||
|
self.redis_process = None
|
||||||
|
|
||||||
|
|
||||||
@override_settings(SYSTEM_UUID='00000000-0000-0000-0000-000000000000')
|
@override_settings(SYSTEM_UUID='00000000-0000-0000-0000-000000000000',
|
||||||
|
BROKER_URL='redis://localhost:16379/')
|
||||||
class BaseTest(BaseTestMixin, django.test.TestCase):
|
class BaseTest(BaseTestMixin, django.test.TestCase):
|
||||||
'''
|
'''
|
||||||
Base class for unit tests.
|
Base class for unit tests.
|
||||||
|
|||||||
@@ -194,9 +194,14 @@ class CleanupDeletedTest(BaseCommandMixin, BaseTest):
|
|||||||
'''
|
'''
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
|
self.start_redis()
|
||||||
super(CleanupDeletedTest, self).setUp()
|
super(CleanupDeletedTest, self).setUp()
|
||||||
self.create_test_inventories()
|
self.create_test_inventories()
|
||||||
|
|
||||||
|
def tearDown(self):
|
||||||
|
super(CleanupDeletedTest, self).tearDown()
|
||||||
|
self.stop_redis()
|
||||||
|
|
||||||
def get_model_counts(self):
|
def get_model_counts(self):
|
||||||
def get_models(m):
|
def get_models(m):
|
||||||
if not m._meta.abstract:
|
if not m._meta.abstract:
|
||||||
@@ -415,10 +420,15 @@ class InventoryImportTest(BaseCommandMixin, BaseLiveServerTest):
|
|||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super(InventoryImportTest, self).setUp()
|
super(InventoryImportTest, self).setUp()
|
||||||
|
self.start_redis()
|
||||||
self.create_test_inventories()
|
self.create_test_inventories()
|
||||||
self.create_test_ini()
|
self.create_test_ini()
|
||||||
self.create_test_license_file()
|
self.create_test_license_file()
|
||||||
|
|
||||||
|
def tearDown(self):
|
||||||
|
super(InventoryImportTest, self).tearDown()
|
||||||
|
self.stop_redis()
|
||||||
|
|
||||||
def create_test_ini(self, inv_dir=None, ini_content=None):
|
def create_test_ini(self, inv_dir=None, ini_content=None):
|
||||||
ini_content = ini_content or TEST_INVENTORY_INI
|
ini_content = ini_content or TEST_INVENTORY_INI
|
||||||
handle, self.ini_path = tempfile.mkstemp(suffix='.txt', dir=inv_dir)
|
handle, self.ini_path = tempfile.mkstemp(suffix='.txt', dir=inv_dir)
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ TEST_SIMPLE_INVENTORY_SCRIPT = "#!/usr/bin/env python\nimport json\nprint json.d
|
|||||||
class InventoryTest(BaseTest):
|
class InventoryTest(BaseTest):
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
|
self.start_redis()
|
||||||
super(InventoryTest, self).setUp()
|
super(InventoryTest, self).setUp()
|
||||||
self.setup_users()
|
self.setup_users()
|
||||||
self.organizations = self.make_organizations(self.super_django_user, 3)
|
self.organizations = self.make_organizations(self.super_django_user, 3)
|
||||||
@@ -47,6 +47,10 @@ class InventoryTest(BaseTest):
|
|||||||
permission_type = 'read'
|
permission_type = 'read'
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def tearDown(self):
|
||||||
|
super(InventoryTest, self).tearDown()
|
||||||
|
self.stop_redis()
|
||||||
|
|
||||||
def test_get_inventory_list(self):
|
def test_get_inventory_list(self):
|
||||||
url = reverse('api:inventory_list')
|
url = reverse('api:inventory_list')
|
||||||
qs = Inventory.objects.filter(active=True).distinct()
|
qs = Inventory.objects.filter(active=True).distinct()
|
||||||
|
|||||||
@@ -198,6 +198,14 @@ TEST_SURVEY_REQUIREMENTS = '''
|
|||||||
class BaseJobTestMixin(BaseTestMixin):
|
class BaseJobTestMixin(BaseTestMixin):
|
||||||
''''''
|
''''''
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
self.start_redis()
|
||||||
|
super(BaseJobTestMixin, self).setUp()
|
||||||
|
|
||||||
|
def tearDown(self):
|
||||||
|
self.stop_redis()
|
||||||
|
super(BaseJobTestMixin, self).tearDown()
|
||||||
|
|
||||||
def _create_inventory(self, name, organization, created_by,
|
def _create_inventory(self, name, organization, created_by,
|
||||||
groups_hosts_dict):
|
groups_hosts_dict):
|
||||||
'''Helper method for creating inventory with groups and hosts.'''
|
'''Helper method for creating inventory with groups and hosts.'''
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ from awx.main.task_engine import *
|
|||||||
class LicenseTests(BaseTest):
|
class LicenseTests(BaseTest):
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
|
self.start_redis()
|
||||||
super(LicenseTests, self).setUp()
|
super(LicenseTests, self).setUp()
|
||||||
self.setup_users()
|
self.setup_users()
|
||||||
u = self.super_django_user
|
u = self.super_django_user
|
||||||
@@ -34,6 +35,10 @@ class LicenseTests(BaseTest):
|
|||||||
host = Host.objects.create(name='a11', inventory=inventory, created_by=u)
|
host = Host.objects.create(name='a11', inventory=inventory, created_by=u)
|
||||||
host = Host.objects.create(name='a12', inventory=inventory, created_by=u)
|
host = Host.objects.create(name='a12', inventory=inventory, created_by=u)
|
||||||
|
|
||||||
|
def tearDown(self):
|
||||||
|
super(LicenseTests, self).tearDown()
|
||||||
|
self.stop_redis()
|
||||||
|
|
||||||
def test_license_writer(self):
|
def test_license_writer(self):
|
||||||
|
|
||||||
writer = TaskEngager(
|
writer = TaskEngager(
|
||||||
|
|||||||
@@ -57,6 +57,7 @@ class ScheduleTest(BaseTest):
|
|||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super(ScheduleTest, self).setUp()
|
super(ScheduleTest, self).setUp()
|
||||||
|
self.start_redis()
|
||||||
self.setup_users()
|
self.setup_users()
|
||||||
self.organizations = self.make_organizations(self.super_django_user, 2)
|
self.organizations = self.make_organizations(self.super_django_user, 2)
|
||||||
self.organizations[0].admins.add(self.normal_django_user)
|
self.organizations[0].admins.add(self.normal_django_user)
|
||||||
@@ -99,6 +100,10 @@ class ScheduleTest(BaseTest):
|
|||||||
self.without_valid_source_inventory_group = self.without_valid_source_inventory.groups.create(name='not valid source')
|
self.without_valid_source_inventory_group = self.without_valid_source_inventory.groups.create(name='not valid source')
|
||||||
self.without_valid_source_inventory_source = self.without_valid_source_inventory_group.inventory_source
|
self.without_valid_source_inventory_source = self.without_valid_source_inventory_group.inventory_source
|
||||||
|
|
||||||
|
def tearDown(self):
|
||||||
|
super(ScheduleTest, self).tearDown()
|
||||||
|
self.stop_redis()
|
||||||
|
|
||||||
def test_schedules_list(self):
|
def test_schedules_list(self):
|
||||||
url = reverse('api:schedule_list')
|
url = reverse('api:schedule_list')
|
||||||
enabled_schedules = Schedule.objects.filter(enabled=True).distinct()
|
enabled_schedules = Schedule.objects.filter(enabled=True).distinct()
|
||||||
|
|||||||
@@ -68,6 +68,7 @@ class InventoryScriptTest(BaseScriptTest):
|
|||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super(InventoryScriptTest, self).setUp()
|
super(InventoryScriptTest, self).setUp()
|
||||||
|
self.start_redis()
|
||||||
self.setup_users()
|
self.setup_users()
|
||||||
self.organizations = self.make_organizations(self.super_django_user, 2)
|
self.organizations = self.make_organizations(self.super_django_user, 2)
|
||||||
self.projects = self.make_projects(self.normal_django_user, 2)
|
self.projects = self.make_projects(self.normal_django_user, 2)
|
||||||
@@ -120,6 +121,10 @@ class InventoryScriptTest(BaseScriptTest):
|
|||||||
group.hosts.add(local)
|
group.hosts.add(local)
|
||||||
self.groups.extend(groups)
|
self.groups.extend(groups)
|
||||||
|
|
||||||
|
def tearDown(self):
|
||||||
|
super(InventoryScriptTest, self).tearDown()
|
||||||
|
self.stop_redis()
|
||||||
|
|
||||||
def run_inventory_script(self, *args, **options):
|
def run_inventory_script(self, *args, **options):
|
||||||
rest_api_url = self.live_server_url
|
rest_api_url = self.live_server_url
|
||||||
parts = urlparse.urlsplit(rest_api_url)
|
parts = urlparse.urlsplit(rest_api_url)
|
||||||
|
|||||||
Reference in New Issue
Block a user