Native Zuul v3 dashboard-integration test
- create a native Zuul v3 job, and move it to experimental until it works; - install libav-utils on dpkg systems and enable the capture of the video; - adapt to the changes in OverviewPage: * go_to_system_flavorspage -> go_to_admin_compute_flavorspage * go_to_compute_imagespage -> go_to_project_compute_imagespage The job is failing right now, but apart the increased running time, at least the tests are now executed. Story: 2001686 Task: 8662 Change-Id: I311203779bd3e6c6660cfe1b84e89c7dc0825c98
This commit is contained in:
parent
268febe615
commit
bd66017874
36
.zuul.yaml
36
.zuul.yaml
@ -9,8 +9,9 @@
|
|||||||
jobs:
|
jobs:
|
||||||
- sahara-dashboard-tox-py35dj20:
|
- sahara-dashboard-tox-py35dj20:
|
||||||
voting: false
|
voting: false
|
||||||
- legacy-sahara-dashboard-dsvm-integration:
|
experimental:
|
||||||
voting: false
|
jobs:
|
||||||
|
- sahara-dashboard-integration
|
||||||
|
|
||||||
- job:
|
- job:
|
||||||
name: sahara-dashboard-tox-base
|
name: sahara-dashboard-tox-base
|
||||||
@ -28,3 +29,34 @@
|
|||||||
parent: sahara-dashboard-tox-base
|
parent: sahara-dashboard-tox-base
|
||||||
vars:
|
vars:
|
||||||
tox_envlist: py35dj20
|
tox_envlist: py35dj20
|
||||||
|
|
||||||
|
- job:
|
||||||
|
name: sahara-dashboard-integration
|
||||||
|
parent: devstack
|
||||||
|
required-projects:
|
||||||
|
- openstack/heat
|
||||||
|
- openstack/horizon
|
||||||
|
- openstack/sahara
|
||||||
|
- openstack/sahara-plugin-ambari
|
||||||
|
- openstack/sahara-plugin-cdh
|
||||||
|
- openstack/sahara-plugin-mapr
|
||||||
|
- openstack/sahara-plugin-spark
|
||||||
|
- openstack/sahara-plugin-storm
|
||||||
|
- openstack/sahara-plugin-vanilla
|
||||||
|
- openstack/sahara-dashboard
|
||||||
|
roles:
|
||||||
|
- zuul: openstack/horizon
|
||||||
|
vars:
|
||||||
|
devstack_plugins:
|
||||||
|
sahara: 'git://git.openstack.org/openstack/sahara'
|
||||||
|
sahara-dashboard: 'git://git.openstack.org/openstack/sahara-dashboard'
|
||||||
|
heat: 'git://git.openstack.org/openstack/heat'
|
||||||
|
devstack_services:
|
||||||
|
horizon: true
|
||||||
|
tls-proxy: false
|
||||||
|
pre-run: playbooks/sahara-dashboard-integration/pre.yaml
|
||||||
|
run: playbooks/sahara-dashboard-integration/run.yaml
|
||||||
|
irrelevant-files:
|
||||||
|
- ^.*\.rst$
|
||||||
|
- ^doc/.*$
|
||||||
|
- ^releasenotes/.*$
|
||||||
|
@ -34,3 +34,12 @@ python3.5 [platform:ubuntu-xenial]
|
|||||||
uuid-dev [platform:dpkg]
|
uuid-dev [platform:dpkg]
|
||||||
zlib-devel [platform:rpm]
|
zlib-devel [platform:rpm]
|
||||||
zlib1g-dev [platform:dpkg]
|
zlib1g-dev [platform:dpkg]
|
||||||
|
|
||||||
|
# integration tests
|
||||||
|
firefox [integrationtests]
|
||||||
|
dbus [integrationtests platform:redhat]
|
||||||
|
dbus-1 [integrationtests platform:suse]
|
||||||
|
xvfb [integrationtests platform:dpkg]
|
||||||
|
# already part of xorg-x11-server on openSUSE
|
||||||
|
xorg-x11-server-Xvfb [integrationtests platform:redhat]
|
||||||
|
libav-tools [integrationtests platform:dpkg]
|
||||||
|
8
playbooks/sahara-dashboard-integration/pre.yaml
Normal file
8
playbooks/sahara-dashboard-integration/pre.yaml
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
---
|
||||||
|
- hosts: controller
|
||||||
|
roles:
|
||||||
|
- role: bindep
|
||||||
|
bindep_profile: integrationtests
|
||||||
|
become: true
|
||||||
|
- setup-selenium-tests
|
||||||
|
- setup-sahara-ui-integration
|
13
playbooks/sahara-dashboard-integration/run.yaml
Normal file
13
playbooks/sahara-dashboard-integration/run.yaml
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
---
|
||||||
|
- hosts: all
|
||||||
|
strategy: linear
|
||||||
|
roles:
|
||||||
|
- orchestrate-devstack
|
||||||
|
|
||||||
|
- hosts: controller
|
||||||
|
roles:
|
||||||
|
- post-devstack-sahara-ui-integration
|
||||||
|
- role: tox
|
||||||
|
tox_environment:
|
||||||
|
AVCONV_INSTALLED: 1
|
||||||
|
tox_envlist: py27integration
|
@ -0,0 +1,4 @@
|
|||||||
|
---
|
||||||
|
devstack_base_dir: "/opt/stack"
|
||||||
|
sahara_cloud_admin: "devstack-admin"
|
||||||
|
sahara_cloud_demo: "devstack"
|
@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"plugin_labels": {
|
||||||
|
"hidden": {
|
||||||
|
"status": false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
10
roles/post-devstack-sahara-ui-integration/tasks/main.yaml
Normal file
10
roles/post-devstack-sahara-ui-integration/tasks/main.yaml
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
---
|
||||||
|
- name: copy the updated config snipped which enables the fake plugin
|
||||||
|
copy:
|
||||||
|
src: fake_config.json
|
||||||
|
dest: /tmp/sahara_fake_config.json
|
||||||
|
|
||||||
|
- name: change the config of the fake plugin
|
||||||
|
shell: |
|
||||||
|
openstack --os-cloud {{ sahara_cloud_admin }} --os-project-name demo \
|
||||||
|
dataprocessing plugin update fake /tmp/sahara_fake_config.json
|
5
roles/setup-sahara-ui-integration/defaults/main.yaml
Normal file
5
roles/setup-sahara-ui-integration/defaults/main.yaml
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
devstack_base_dir: "/opt/stack"
|
||||||
|
sahara_cloud_image: "https://cloud-images.ubuntu.com/xenial/current/xenial-server-cloudimg-amd64-disk1.img"
|
||||||
|
# TODO: if the following option is changed, it should also be specified in tempest.conf
|
||||||
|
sahara_cloud_image_remote_path: "/tmp/xenial-server-cloudimg-amd64-disk1.img"
|
@ -0,0 +1,5 @@
|
|||||||
|
[image]
|
||||||
|
panel_type=legacy
|
||||||
|
|
||||||
|
[flavors]
|
||||||
|
panel_type=legacy
|
21
roles/setup-sahara-ui-integration/tasks/main.yaml
Normal file
21
roles/setup-sahara-ui-integration/tasks/main.yaml
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
---
|
||||||
|
- name: download the ubuntu image file
|
||||||
|
get_url:
|
||||||
|
url: "{{ sahara_cloud_image }}"
|
||||||
|
dest: "{{ sahara_cloud_image_remote_path }}"
|
||||||
|
|
||||||
|
# enable legacy panels (two files in local/local_settings.d and a new setting file
|
||||||
|
# for the integration tests)
|
||||||
|
- name: setup the old behavior of tables for testing purposes
|
||||||
|
copy:
|
||||||
|
src: "{{ devstack_base_dir }}/horizon/openstack_dashboard/local/local_settings.d/{{ item }}.example"
|
||||||
|
dest: "{{ devstack_base_dir }}/horizon/openstack_dashboard/local/local_settings.d/{{ item }}"
|
||||||
|
remote_src: yes
|
||||||
|
with_items:
|
||||||
|
- '_20_integration_tests_scaffolds.py'
|
||||||
|
- '_2010_integration_tests_deprecated.py'
|
||||||
|
|
||||||
|
- name: setup the old behavior of panels for testing purposes
|
||||||
|
copy:
|
||||||
|
src: legacy_panels.conf
|
||||||
|
dest: "{{ devstack_base_dir }}/horizon/openstack_dashboard/test/integration_tests/local-horizon.conf"
|
@ -35,7 +35,7 @@ class TestCRUDBase(SaharaTestCase):
|
|||||||
self.jobtemplate_name = self.gen_name('test-job')
|
self.jobtemplate_name = self.gen_name('test-job')
|
||||||
|
|
||||||
def create_flavor(self):
|
def create_flavor(self):
|
||||||
flavors_page = self.home_pg.go_to_system_flavorspage()
|
flavors_page = self.home_pg.go_to_admin_compute_flavorspage()
|
||||||
|
|
||||||
flavors_page.create_flavor(
|
flavors_page.create_flavor(
|
||||||
name=self.flavor_name,
|
name=self.flavor_name,
|
||||||
@ -47,12 +47,12 @@ class TestCRUDBase(SaharaTestCase):
|
|||||||
self.assertTrue(flavors_page.is_flavor_present(self.flavor_name))
|
self.assertTrue(flavors_page.is_flavor_present(self.flavor_name))
|
||||||
|
|
||||||
def delete_flavor(self):
|
def delete_flavor(self):
|
||||||
flavors_page = self.home_pg.go_to_system_flavorspage()
|
flavors_page = self.home_pg.go_to_admin_compute_flavorspage()
|
||||||
flavors_page.delete_flavor_by_row(self.flavor_name)
|
flavors_page.delete_flavor_by_row(self.flavor_name)
|
||||||
self.assertFalse(flavors_page.is_flavor_present(self.flavor_name))
|
self.assertFalse(flavors_page.is_flavor_present(self.flavor_name))
|
||||||
|
|
||||||
def create_image(self):
|
def create_image(self):
|
||||||
image_pg = self.home_pg.go_to_compute_imagespage()
|
image_pg = self.home_pg.go_to_project_compute_imagespage()
|
||||||
image_pg.create_image(
|
image_pg.create_image(
|
||||||
self.image_name, image_file=self.CONFIG.sahara.fake_image_location)
|
self.image_name, image_file=self.CONFIG.sahara.fake_image_location)
|
||||||
image_pg._wait_until(
|
image_pg._wait_until(
|
||||||
@ -60,7 +60,7 @@ class TestCRUDBase(SaharaTestCase):
|
|||||||
timeout=10 * 60)
|
timeout=10 * 60)
|
||||||
|
|
||||||
def delete_image(self):
|
def delete_image(self):
|
||||||
image_pg = self.home_pg.go_to_compute_imagespage()
|
image_pg = self.home_pg.go_to_project_compute_imagespage()
|
||||||
image_pg.delete_image(self.image_name)
|
image_pg.delete_image(self.image_name)
|
||||||
|
|
||||||
def register_image(self):
|
def register_image(self):
|
||||||
|
@ -22,7 +22,7 @@ class TestSaharaImageRegistry(SaharaTestCase):
|
|||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super(TestSaharaImageRegistry, self).setUp()
|
super(TestSaharaImageRegistry, self).setUp()
|
||||||
image_pg = self.home_pg.go_to_compute_imagespage()
|
image_pg = self.home_pg.go_to_project_compute_imagespage()
|
||||||
image_pg.create_image(
|
image_pg.create_image(
|
||||||
IMAGE_NAME, image_file=self.CONFIG.sahara.fake_image_location)
|
IMAGE_NAME, image_file=self.CONFIG.sahara.fake_image_location)
|
||||||
image_pg.find_message_and_dismiss(messages.SUCCESS)
|
image_pg.find_message_and_dismiss(messages.SUCCESS)
|
||||||
@ -52,6 +52,6 @@ class TestSaharaImageRegistry(SaharaTestCase):
|
|||||||
"Image was not unregistered.")
|
"Image was not unregistered.")
|
||||||
|
|
||||||
def tearDown(self):
|
def tearDown(self):
|
||||||
image_pg = self.home_pg.go_to_compute_imagespage()
|
image_pg = self.home_pg.go_to_project_compute_imagespage()
|
||||||
image_pg.delete_image(IMAGE_NAME)
|
image_pg.delete_image(IMAGE_NAME)
|
||||||
super(TestSaharaImageRegistry, self).tearDown()
|
super(TestSaharaImageRegistry, self).tearDown()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user