fix unit and integration tests

this include the following:

1. using horizon settings for running unit tests instead of
   specific for sahara-dashboard;
2. using fedora image for integration tests;
3. job timeout is not enough to complete 2->3 nodes scaling
   in devstack. using 1->2 scheme instead.

Change-Id: Ifbff37f61f32a7de26ed49dcf08e1a43dc597696
This commit is contained in:
Vitaly Gridnev 2016-07-14 07:38:38 +00:00
parent bcf8e2938d
commit 6e6848a2bb
3 changed files with 18 additions and 195 deletions

View File

@ -34,13 +34,13 @@ explicit_wait=300
[image]
# http accessible image (string value)
http_image=http://download.cirros-cloud.net/0.3.1/cirros-0.3.1-x86_64-uec.tar.gz
http_image=http://tarballs.openstack.org/heat-test-image/fedora-heat-test-image.qcow2
[sahara]
# http accessible image (string value)
fake_http_image=https://cloud-images.ubuntu.com/trusty/current/trusty-server-cloudimg-amd64-disk1.img
fake_http_image=http://tarballs.openstack.org/heat-test-image/fedora-heat-test-image.qcow2
# ssh username for image (string value)
fake_image_ssh_user=ubuntu
fake_image_ssh_user=fedora
# Floating IP pool name (string value)
ip_pool=public
# Cluster launch timeout in seconds (integer value)

View File

@ -83,20 +83,12 @@ class TestCRUDBase(SaharaTestCase):
nodegrouptpls_pg.create(
PLUGIN_NAME, PLUGIN_VERSION, nodegroup_name=self.worker_name,
floating_ip_pool=self.CONFIG.sahara.ip_pool,
flavor=self.flavor_name, processes=['tasktracker', 'datanode'])
self.assertTrue(nodegrouptpls_pg.has_success_message())
self.assertFalse(nodegrouptpls_pg.has_error_message())
self.assertTrue(nodegrouptpls_pg.is_present(self.worker_name),
"Worker template was not created.")
nodegrouptpls_pg.create(
PLUGIN_NAME, PLUGIN_VERSION, nodegroup_name=self.master_name,
flavor=self.flavor_name,
proxygateway=True, floating_ip_pool=self.CONFIG.sahara.ip_pool,
processes=['jobtracker', 'namenode'])
self.assertTrue(nodegrouptpls_pg.has_success_message())
self.assertFalse(nodegrouptpls_pg.has_error_message())
self.assertTrue(nodegrouptpls_pg.is_present(self.master_name),
"Worker template was not created.")
clustertpls_pg = (
self.home_pg.go_to_dataprocessing_clusters_clustertemplatespage())
@ -135,7 +127,7 @@ class TestCRUDBase(SaharaTestCase):
self.assertTrue(cluster_pg.is_cluster_active(self.cluster_name),
"Cluster is not active")
self.assertEqual(
cluster_pg.get_cluster_instances_count(self.cluster_name), 3,
cluster_pg.get_cluster_instances_count(self.cluster_name), 2,
"Cluster was not scaled")
def create_datasources(self):

View File

@ -1,187 +1,18 @@
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
import importlib
import os
import six
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
from horizon.test.settings import * # noqa
from horizon.utils import secret_key
from openstack_dashboard import exceptions
from openstack_dashboard.test.settings import * # noqa
DEBUG = True
TEMPLATE_DEBUG = DEBUG
TEST_DIR = os.path.dirname(os.path.abspath(__file__))
ROOT_PATH = os.path.abspath(os.path.join(TEST_DIR, ".."))
MEDIA_ROOT = os.path.abspath(os.path.join(ROOT_PATH, '..', 'media'))
MEDIA_URL = '/media/'
STATIC_ROOT = os.path.abspath(os.path.join(ROOT_PATH, '..', 'static'))
STATIC_URL = '/static/'
SECRET_KEY = secret_key.generate_or_read_from_file(
os.path.join(TEST_DIR, '.secret_key_store'))
ROOT_URLCONF = 'sahara_dashboard.test.urls'
TEMPLATE_DIRS = (
os.path.join(TEST_DIR, 'templates'),
)
TEMPLATE_CONTEXT_PROCESSORS += (
'openstack_dashboard.context_processors.openstack',
)
INSTALLED_APPS = (
'django.contrib.contenttypes',
'django.contrib.auth',
'django.contrib.sessions',
'django.contrib.staticfiles',
'django.contrib.messages',
'django.contrib.humanize',
'django_nose',
'openstack_auth',
'compressor',
'horizon',
'openstack_dashboard',
'openstack_dashboard.dashboards',
)
AUTHENTICATION_BACKENDS = ('openstack_auth.backend.KeystoneBackend',)
SITE_BRANDING = 'OpenStack'
HORIZON_CONFIG = {
"password_validator": {
"regex": '^.{8,18}$',
"help_text": "Password must be between 8 and 18 characters."
},
'user_home': None,
'help_url': "http://docs.openstack.org",
'exceptions': {'recoverable': exceptions.RECOVERABLE,
'not_found': exceptions.NOT_FOUND,
'unauthorized': exceptions.UNAUTHORIZED},
'angular_modules': [],
'js_files': [],
}
# Load the pluggable dashboard settings
from openstack_dashboard.utils import settings
dashboard_module_names = [
'openstack_dashboard.enabled',
'openstack_dashboard.local.enabled',
'sahara_dashboard.enabled',
]
dashboard_modules = []
# All dashboards must be enabled for the namespace to get registered, which is
# needed by the unit tests.
for module_name in dashboard_module_names:
module = importlib.import_module(module_name)
dashboard_modules.append(module)
for submodule in six.itervalues(settings.import_submodules(module)):
if getattr(submodule, 'DISABLED', None):
delattr(submodule, 'DISABLED')
INSTALLED_APPS = list(INSTALLED_APPS) # Make sure it's mutable
settings.update_dashboards(dashboard_modules, HORIZON_CONFIG, INSTALLED_APPS)
# Set to True to allow users to upload images to glance via Horizon server.
# When enabled, a file form field will appear on the create image form.
# See documentation for deployment considerations.
HORIZON_IMAGES_ALLOW_UPLOAD = True
AVAILABLE_REGIONS = [
('http://localhost:5000/v2.0', 'local'),
('http://remote:5000/v2.0', 'remote'),
]
OPENSTACK_API_VERSIONS = {
"identity": 3
}
OPENSTACK_KEYSTONE_URL = "http://localhost:5000/v2.0"
OPENSTACK_KEYSTONE_DEFAULT_ROLE = "_member_"
OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = True
OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = 'test_domain'
OPENSTACK_KEYSTONE_BACKEND = {
'name': 'native',
'can_edit_user': True,
'can_edit_group': True,
'can_edit_project': True,
'can_edit_domain': True,
'can_edit_role': True
}
OPENSTACK_CINDER_FEATURES = {
'enable_backup': True,
}
OPENSTACK_NEUTRON_NETWORK = {
'enable_lb': False,
'enable_firewall': False,
'enable_vpn': False
}
OPENSTACK_HYPERVISOR_FEATURES = {
'can_set_mount_point': True,
# NOTE: as of Grizzly this is not yet supported in Nova so enabling this
# setting will not do anything useful
'can_encrypt_volumes': False
}
LOGGING['loggers']['openstack_dashboard'] = {
'handlers': ['test'],
'propagate': False,
}
LOGGING['loggers']['selenium'] = {
'handlers': ['test'],
'propagate': False,
}
LOGGING['loggers']['sahara_dashboard'] = {
'handlers': ['test'],
'propagate': False,
}
SECURITY_GROUP_RULES = {
'all_tcp': {
'name': 'ALL TCP',
'ip_protocol': 'tcp',
'from_port': '1',
'to_port': '65535',
},
'http': {
'name': 'HTTP',
'ip_protocol': 'tcp',
'from_port': '80',
'to_port': '80',
},
}
NOSE_ARGS = ['--nocapture',
'--nologcapture',
'--cover-package=openstack_dashboard',
'--cover-inclusive',
'--all-modules']
POLICY_FILES_PATH = os.path.join(ROOT_PATH, "conf")
POLICY_FILES = {
'identity': 'keystone_policy.json',
'compute': 'nova_policy.json'
}
# The openstack_auth.user.Token object isn't JSON-serializable ATM
SESSION_SERIALIZER = 'django.contrib.sessions.serializers.PickleSerializer'
INSTALLED_APPS = list(INSTALLED_APPS)
INSTALLED_APPS.append('sahara_dashboard.content.data_processing.clusters')
INSTALLED_APPS.append('sahara_dashboard.content.data_processing.jobs')