mirror of
https://github.com/ansible/awx.git
synced 2026-01-12 02:19:58 -03:30
Generate large test license for cloud inventory import unit tests.
This commit is contained in:
parent
d2d7ac3d1c
commit
3a5db149e9
@ -9,6 +9,7 @@ import json
|
||||
import os
|
||||
import random
|
||||
import shutil
|
||||
import sys
|
||||
import tempfile
|
||||
import time
|
||||
from multiprocessing import Process
|
||||
@ -28,6 +29,7 @@ from awx.main.backend import LDAPSettings
|
||||
from awx.main.management.commands.run_callback_receiver import run_subscriber
|
||||
from awx.main.management.commands.run_task_system import run_taskmanager
|
||||
from awx.main.utils import get_ansible_version
|
||||
from awx.main.task_engine import TaskEngager as LicenseWriter
|
||||
|
||||
|
||||
class BaseTestMixin(object):
|
||||
@ -38,6 +40,13 @@ class BaseTestMixin(object):
|
||||
def setUp(self):
|
||||
super(BaseTestMixin, self).setUp()
|
||||
self.object_ctr = 0
|
||||
# Save sys.path before tests.
|
||||
self._sys_path = [x for x in sys.path]
|
||||
# Save os.environ before tests.
|
||||
self._environ = dict(os.environ.items())
|
||||
# Capture current directory to change back after each test.
|
||||
self._cwd = os.getcwd()
|
||||
# Capture list of temp files/directories created during tests.
|
||||
self._temp_paths = []
|
||||
self._current_auth = None
|
||||
self._user_passwords = {}
|
||||
@ -46,8 +55,6 @@ class BaseTestMixin(object):
|
||||
# Wrap settings so we can redefine them within each test.
|
||||
self._wrapped = settings._wrapped
|
||||
settings._wrapped = UserSettingsHolder(settings._wrapped)
|
||||
# Capture current directory, change back after each test.
|
||||
self._cwd = os.getcwd()
|
||||
# Set all AUTH_LDAP_* settings to defaults to avoid using LDAP for
|
||||
# tests unless expicitly configured.
|
||||
for name, value in LDAPSettings.defaults.items():
|
||||
@ -84,6 +91,18 @@ class BaseTestMixin(object):
|
||||
|
||||
def tearDown(self):
|
||||
super(BaseTestMixin, self).tearDown()
|
||||
# Restore sys.path after tests.
|
||||
sys.path = self._sys_path
|
||||
# Restore os.environ after tests.
|
||||
for k,v in self._environ.items():
|
||||
if os.environ.get(k, None) != v:
|
||||
os.environ[k] = v
|
||||
for k,v in os.environ.items():
|
||||
if k not in self._environ.keys():
|
||||
del os.environ[k]
|
||||
# Restore current directory after each test.
|
||||
os.chdir(self._cwd)
|
||||
# Cleanup temp files/directories created during tests.
|
||||
for project_dir in self._temp_paths:
|
||||
if os.path.exists(project_dir):
|
||||
if os.path.isdir(project_dir):
|
||||
@ -92,8 +111,20 @@ class BaseTestMixin(object):
|
||||
os.remove(project_dir)
|
||||
# Restore previous settings after each test.
|
||||
settings._wrapped = self._wrapped
|
||||
# Restore current directory after each test.
|
||||
os.chdir(self._cwd)
|
||||
|
||||
def create_test_license_file(self, instance_count=10000):
|
||||
writer = LicenseWriter(
|
||||
company_name='AWX',
|
||||
contact_name='AWX Admin',
|
||||
contact_email='awx@example.com',
|
||||
license_date=int(time.time() + 3600),
|
||||
instance_count=instance_count,
|
||||
)
|
||||
handle, license_path = tempfile.mkstemp(suffix='.json')
|
||||
os.close(handle)
|
||||
writer.write_file(license_path)
|
||||
self._temp_paths.append(license_path)
|
||||
os.environ['AWX_LICENSE_FILE'] = license_path
|
||||
|
||||
def assertElapsedLessThan(self, seconds):
|
||||
elapsed = time.time() - self._start_time
|
||||
|
||||
@ -21,7 +21,6 @@ from django.utils.timezone import now
|
||||
from django.test.utils import override_settings
|
||||
|
||||
# AWX
|
||||
from awx.main.task_engine import TaskEngager as LicenseWriter
|
||||
from awx.main.models import *
|
||||
from awx.main.tests.base import BaseTest, BaseLiveServerTest
|
||||
|
||||
@ -97,25 +96,6 @@ class BaseCommandMixin(object):
|
||||
Base class for tests that run management commands.
|
||||
'''
|
||||
|
||||
def setUp(self):
|
||||
super(BaseCommandMixin, self).setUp()
|
||||
self._sys_path = [x for x in sys.path]
|
||||
self._environ = dict(os.environ.items())
|
||||
self._temp_files = []
|
||||
|
||||
def tearDown(self):
|
||||
super(BaseCommandMixin, self).tearDown()
|
||||
sys.path = self._sys_path
|
||||
for k,v in self._environ.items():
|
||||
if os.environ.get(k, None) != v:
|
||||
os.environ[k] = v
|
||||
for k,v in os.environ.items():
|
||||
if k not in self._environ.keys():
|
||||
del os.environ[k]
|
||||
for tf in self._temp_files:
|
||||
if os.path.exists(tf):
|
||||
os.remove(tf)
|
||||
|
||||
def create_test_inventories(self):
|
||||
self.setup_users()
|
||||
self.organizations = self.make_organizations(self.super_django_user, 2)
|
||||
@ -439,27 +419,13 @@ class InventoryImportTest(BaseCommandMixin, BaseLiveServerTest):
|
||||
self.create_test_ini()
|
||||
self.create_test_license_file()
|
||||
|
||||
def create_test_license_file(self):
|
||||
writer = LicenseWriter(
|
||||
company_name='AWX',
|
||||
contact_name='AWX Admin',
|
||||
contact_email='awx@example.com',
|
||||
license_date=int(time.time() + 3600),
|
||||
instance_count=10000,
|
||||
)
|
||||
handle, license_path = tempfile.mkstemp(suffix='.json')
|
||||
os.close(handle)
|
||||
writer.write_file(license_path)
|
||||
self._temp_files.append(license_path)
|
||||
os.environ['AWX_LICENSE_FILE'] = license_path
|
||||
|
||||
def create_test_ini(self, inv_dir=None, ini_content=None):
|
||||
ini_content = ini_content or TEST_INVENTORY_INI
|
||||
handle, self.ini_path = tempfile.mkstemp(suffix='.txt', dir=inv_dir)
|
||||
ini_file = os.fdopen(handle, 'w')
|
||||
ini_file.write(ini_content)
|
||||
ini_file.close()
|
||||
self._temp_files.append(self.ini_path)
|
||||
self._temp_paths.append(self.ini_path)
|
||||
|
||||
def create_test_dir(self, hostnames=None):
|
||||
hostnames = hostnames or []
|
||||
|
||||
@ -1373,6 +1373,7 @@ class InventoryUpdatesTest(BaseTransactionTest):
|
||||
source_regions = getattr(settings, 'TEST_AWS_REGIONS', 'all')
|
||||
if not all([source_username, source_password]):
|
||||
self.skipTest('no test ec2 credentials defined!')
|
||||
self.create_test_license_file()
|
||||
credential = Credential.objects.create(kind='aws',
|
||||
user=self.super_django_user,
|
||||
username=source_username,
|
||||
@ -1419,6 +1420,7 @@ class InventoryUpdatesTest(BaseTransactionTest):
|
||||
source_regions = getattr(settings, 'TEST_RACKSPACE_REGIONS', '')
|
||||
if not all([source_username, source_password]):
|
||||
self.skipTest('no test rackspace credentials defined!')
|
||||
self.create_test_license_file()
|
||||
credential = Credential.objects.create(kind='rax',
|
||||
user=self.super_django_user,
|
||||
username=source_username,
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user