Import OVN LB functional tests

This patch imports OVN LB functional tests.

Unfortunately neutron hasn't been released yet
so for test requirements we need to install it
from git, from commit that imports functional
base class to neutron [1].

[1] https://review.opendev.org/#/c/701733/


Change-Id: Ia65492db1688f3a3fce22a4432ae8445f67c37b3
This commit is contained in:
Maciej Józefczyk
2020-02-24 08:15:13 +00:00
parent 000049c15d
commit ec629c2e0c
17 changed files with 1333 additions and 5 deletions
File diff suppressed because it is too large Load Diff
+4
View File
@@ -0,0 +1,4 @@
- hosts: all
roles:
- setup_logdir
- configure_functional_tests
+5
View File
@@ -0,0 +1,5 @@
- hosts: all
roles:
- fetch_journal_log
- fetch-tox-output
- fetch-subunit-output
+10
View File
@@ -0,0 +1,10 @@
- hosts: all
roles:
- run-devstack
# Run bindep and test-setup after devstack so that they won't interfere
- role: bindep
bindep_profile: test
bindep_dir: "{{ zuul_work_dir }}"
- test-setup
- ensure-tox
- tox
@@ -0,0 +1,21 @@
Configure host to run on it Neutron functional/fullstack tests
**Role Variables**
.. zuul:rolevar:: tests_venv
:default: {{ tox_envlist }}
.. zuul:rolevar:: project_name
:default: neutron
.. zuul:rolevar:: base_dir
:default: {{ ansible_user_dir }}/src/opendev.org
.. zuul:rolevar:: gate_dest_dir
:default: {{ base_dir }}/openstack
.. zuul:rolevar:: devstack_dir
:default: {{ base_dir }}/openstack/devstack
.. zuul:rolevar:: neutron_dir
:default: {{ gate_dest_dir }}/neutron
@@ -0,0 +1,7 @@
tests_venv: "{{ tox_envlist }}"
project_name: "ovn-octavia-provider"
base_dir: "{{ ansible_user_dir }}/src/opendev.org"
gate_dest_dir: "{{ base_dir }}/openstack"
devstack_dir: "{{ base_dir }}/openstack/devstack"
neutron_dir: "{{ gate_dest_dir }}/neutron"
ovn_octavia_provider_dir: "{{ gate_dest_dir }}/ovn-octavia-provider"
@@ -0,0 +1,20 @@
- shell:
cmd: |
set -e
set -x
GATE_STACK_USER={{ ansible_user }}
IS_GATE=True
BASE_DIR={{ base_dir }}
GATE_DEST={{ gate_dest_dir }}
PROJECT_NAME={{ project_name }}
NEUTRON_PATH={{ neutron_dir }}
DEVSTACK_PATH={{ devstack_dir }}
VENV={{ tests_venv }}
source $DEVSTACK_PATH/functions
source $NEUTRON_PATH/devstack/lib/ovs
source $NEUTRON_PATH/tools/configure_for_func_testing.sh
configure_host_for_func_testing
executable: /bin/bash
+16
View File
@@ -0,0 +1,16 @@
Collect journal log from test run
By default, this stores journal log into log file and store it in
"journal_log_file_path"
**Role Variables**
.. zuul:rolevar:: journal_log_path
:default: {{ ansible_user_dir }}/workspace/logs
Path where journal log file will be stored on job's node.
.. zuul:rolevar:: journal_log_file_name
:default: {{ journal_log_path }}/journal.log
Name of journal log file.
@@ -0,0 +1,2 @@
journal_log_path: "{{ ansible_user_dir }}/logs"
journal_log_file_name: "{{ journal_log_path }}/journal.log"
+22
View File
@@ -0,0 +1,22 @@
- name: Ensure {{ journal_log_path }} exists
become: yes
file:
path: "{{ journal_log_path }}"
state: directory
owner: "{{ ansible_user }}"
group: "{{ ansible_user }}"
mode: 0775
- name: Store journal logs in {{ journal_log_file_name }}
become: yes
shell:
cmd: |
/bin/journalctl -a > {{ journal_log_file_name }}
- name: Set journal.log file permissions
become: yes
file:
path: '{{ journal_log_file_name }}'
owner: '{{ ansible_user }}'
group: '{{ ansible_user }}'
mode: 0644
+8
View File
@@ -0,0 +1,8 @@
Configure logs dir to be accessible for ``stack`` user.
**Role Variables**
.. zuul:rolevar:: logdir
:default: /opt/stack/logs
Name of the directory where logs will be stored.
+1
View File
@@ -0,0 +1 @@
logdir: /opt/stack/logs
+8
View File
@@ -0,0 +1,8 @@
- name: Ensure logdir exists
become: yes
file:
path: "{{ logdir }}"
state: directory
owner: stack
group: "{{ ansible_user }}"
mode: 0775
+4
View File
@@ -17,4 +17,8 @@ testresources>=2.0.0 # Apache-2.0/BSD
testscenarios>=0.4 # Apache-2.0/BSD
WebTest>=2.0.27 # MIT
testtools>=2.2.0 # MIT
# NOTE: Precisely we need ussuri neutron and neutron 15.y.z is train release
# but zuul installs neutron master as we specify it as required-projects.
# Let's update the lower bound once neutron ussuri is releaesd including beta.
neutron>=15.0.0 # Apache-2.0
+1 -1
View File
@@ -52,7 +52,7 @@ setenv = {[testenv:functional]setenv}
{[testenv:dsvm]setenv}
deps = {[testenv:functional]deps}
commands =
{toxinidir}/tools/ostestr_compat_shim.sh {posargs}
stestr run {posargs}
[testenv:cover]
envdir = {toxworkdir}/shared
+32
View File
@@ -0,0 +1,32 @@
- job:
name: ovn-octavia-provider-functional
parent: devstack-minimal
description: Run OVN Octavia provider functional tests
timeout: 7800
required-projects:
- opendev.org/openstack/devstack
- openstack/neutron
- openstack/requirements
roles:
- zuul: openstack/devstack
pre-run: playbooks/configure_functional_job.yaml
run: playbooks/run_functional_job.yaml
post-run: playbooks/post_functional_job.yaml
irrelevant-files:
- ^.*\.rst$
- ^doc/.*$
- ^releasenotes/.*$
vars:
devstack_services:
# Ignore any default set by devstack. Emit a "disable_all_services".
base: false
devstack_localrc:
INSTALL_TESTONLY_PACKAGES: true
DATABASE_PASSWORD: stackdb
tox_envlist: dsvm-functional
tox_constraints_file: '{{ ansible_user_dir }}/src/opendev.org/openstack/requirements/upper-constraints.txt'
zuul_copy_output:
# We need to copy directory with logs to have it in job artifacts also,
# /opt/stack/logs is default logs directory defined in neutron's
# tox.ini file
'{{ devstack_base_dir }}/logs/dsvm-functional-logs': logs
+2 -4
View File
@@ -11,9 +11,7 @@
required-projects:
- openstack/neutron
voting: false
- ovn-octavia-provider-functional
gate:
jobs:
- openstack-tox-cover:
required-projects:
- openstack/neutron
voting: false
- ovn-octavia-provider-functional