Fix gate test failures

The horizon settings have changed and the corresponding changes
were not picked up the trove-dashboard.  Import the horizon settings
file to prevent code skew and add the panels to the list of
installed apps.

Once the above was fixed it revealed one code change that was
needed due to commit ea0e472edd194243392fd51a5af3a3a77101fddd.
The Paginated object was changed in the above commit resulting
in the change in the trove.py file.  Also changed the test to
reflect the new signature.

Also changed the tox.ini to be consistent with the horizon tox.ini.

Change-Id: Id484fe373b79f00b90ca8b890aa3b9f73a475a50
This commit is contained in:
Duk Loi 2016-07-29 14:19:10 -04:00
parent 0181571553
commit 59525185d5
4 changed files with 10 additions and 181 deletions

View File

@ -1,6 +1,6 @@
[tox] [tox]
minversion = 1.6 minversion = 1.6
envlist = py27,pep8,py27dj17 envlist = py27,pep8,py27dj18
skipsdist = True skipsdist = True
[testenv] [testenv]
@ -23,11 +23,6 @@ commands = flake8
install_command = pip install -U --force-reinstall {opts} {packages} install_command = pip install -U --force-reinstall {opts} {packages}
commands = {posargs} commands = {posargs}
[testenv:py27dj17]
basepython = python2.7
commands = pip install django>=1.7,<1.8
/bin/bash run_tests.sh -N --no-pep8 {posargs}
# Django-1.8 is LTS # Django-1.8 is LTS
[testenv:py27dj18] [testenv:py27dj18]
basepython = python2.7 basepython = python2.7

View File

@ -116,7 +116,8 @@ def instance_list_all(request):
while marker: while marker:
temp_instances = instance_list(request, marker=marker) temp_instances = instance_list(request, marker=marker)
marker = temp_instances.next marker = temp_instances.next
instances.items += temp_instances.items for instance in temp_instances:
instances.append(instance)
instances.links = temp_instances.links instances.links = temp_instances.links
instances.next = None instances.next = None
return instances return instances

View File

@ -1145,9 +1145,9 @@ class DatabaseTests(test.TestCase):
def test_master_list_pagination(self): def test_master_list_pagination(self):
request = http.HttpRequest() request = http.HttpRequest()
first_part = common.Paginated(self.databases.list()[:1], first_part = common.Paginated(items=self.databases.list()[:1],
next_marker='marker') next_marker='marker')
second_part = common.Paginated(self.databases.list()[1:]) second_part = common.Paginated(items=self.databases.list()[1:])
api.trove.instance_list(request).AndReturn(first_part) api.trove.instance_list(request).AndReturn(first_part)
(api.trove.instance_list(request, marker='marker') (api.trove.instance_list(request, marker='marker')

View File

@ -11,177 +11,10 @@
# License for the specific language governing permissions and limitations # License for the specific language governing permissions and limitations
# under the License. # under the License.
import importlib
import os
import six
from horizon.test.settings import * # noqa from horizon.test.settings import * # noqa
from horizon.utils import secret_key from openstack_dashboard.test.settings import * # noqa
from openstack_dashboard import exceptions
INSTALLED_APPS = list(INSTALLED_APPS)
DEBUG = True INSTALLED_APPS.append('trove_dashboard.content.database_backups')
TEMPLATE_DEBUG = DEBUG INSTALLED_APPS.append('trove_dashboard.content.database_clusters')
INSTALLED_APPS.append('trove_dashboard.content.databases')
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 = 'trove_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',
'trove_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']['trove_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'