diff --git a/.gitignore b/.gitignore index 21adf3c..5421f90 100644 --- a/.gitignore +++ b/.gitignore @@ -61,11 +61,11 @@ ChangeLog releasenotes/build # Test temp files -tests/plugins -tests/playbooks -tests/test.retry +tests/common +tests/*.retry # Vagrant artifacts .vagrant - +# Git clones +openstack-ansible-ops diff --git a/Vagrantfile b/Vagrantfile index 4bca85d..46436cf 100644 --- a/Vagrantfile +++ b/Vagrantfile @@ -1,34 +1,43 @@ +# Note: +# This file is maintained in the openstack-ansible-tests repository. +# https://git.openstack.org/cgit/openstack/openstack-ansible-tests/tree/Vagrantfile +# +# If you need to perform any change on it, you should modify the central file, +# then, an OpenStack CI job will propagate your changes to every OSA repository +# since every repo uses the same Vagrantfile + +# Verify whether required plugins are installed. +required_plugins = [ "vagrant-disksize" ] +required_plugins.each do |plugin| + if not Vagrant.has_plugin?(plugin) + raise "The vagrant plugin #{plugin} is required. Please run `vagrant plugin install #{plugin}`" + end +end + Vagrant.configure(2) do |config| config.vm.provider "virtualbox" do |v| - v.memory = 2048 + v.memory = 4096 v.cpus = 2 end + config.vm.provision "shell", + privileged: false, + inline: <<-SHELL + cd /vagrant + ./run_tests.sh + SHELL + config.vm.define "ubuntu1604" do |xenial| + xenial.disksize.size = "40GB" xenial.vm.box = "ubuntu/xenial64" - xenial.vm.provision "shell", inline: <<-SHELL - sudo su - - cd /vagrant - ./run_tests.sh - SHELL end - config.vm.define "opensuse421" do |leap421| - leap421.vm.box = "opensuse/openSUSE-42.1-x86_64" - leap421.vm.provision "shell", inline: <<-SHELL - sudo su - - cd /vagrant - ./run_tests.sh - SHELL + config.vm.define "opensuse422" do |leap422| + leap422.vm.box = "opensuse/openSUSE-42.2-x86_64" end config.vm.define "centos7" do |centos7| centos7.vm.box = "centos/7" - centos7.vm.provision "shell", inline: <<-SHELL - sudo su - - cd /vagrant - ./run_tests.sh - SHELL end end diff --git a/bindep.txt b/bindep.txt index 02339d5..f2924a2 100644 --- a/bindep.txt +++ b/bindep.txt @@ -28,28 +28,36 @@ git-core [platform:dpkg] libssl-dev [platform:dpkg] libffi-dev [platform:dpkg] python2.7 [platform:dpkg] +python-apt [platform:dpkg] python-dev [platform:dpkg] # Base requirements for RPM distros gcc [platform:rpm] gcc-c++ [platform:rpm] git [platform:rpm] -libffi-devel [platform:rpm] -openssl-devel [platform:rpm] +libffi-devel [platform:rpm !platform:opensuseproject-42] +libffi-devel-gcc5 [platform:opensuseproject-42] +openssl-devel [platform:redhat] +libopenssl-devel [platform:suse] python-devel [platform:rpm] +python2-dnf [platform:fedora] # For SELinux -libselinux-python [platform:centos] -libsemanage-python [platform:centos] +libselinux-python [platform:redhat] +libsemanage-python [platform:redhat] # For SSL SNI support -python-pyasn1 [platform:dpkg platform:suselinux] -python-openssl [platform:dpkg platform:suselinux] -python-ndg-httpsclient [platform:ubuntu] -python2-pyasn1 [platform:centos] -python2-pyOpenSSL [platform:centos] -python-pyOpenSSL [platform:suselinux] -python-ndg_httpsclient [platform:centos] +python-pyasn1 [platform:dpkg platform:suse] +python-openssl [platform:dpkg] +python-ndg-httpsclient [platform:ubuntu !platform:ubuntu-14] +python2-pyasn1 [platform:redhat] +python2-pyOpenSSL [platform:redhat !platform:fedora] +pyOpenSSL [platform:fedora] +python-pyOpenSSL [platform:opensuseproject-42] +python2-pyOpenSSL [platform:suse !platform:opensuseproject-42] +python-ndg_httpsclient [platform:redhat !platform:fedora] +python2-ndg_httpsclient [platform:fedora] +python-ndg-httpsclient [platform:suse] # Required for compressing collected log files in CI gzip diff --git a/run_tests.sh b/run_tests.sh index 5e775e5..969e3db 100755 --- a/run_tests.sh +++ b/run_tests.sh @@ -12,10 +12,25 @@ # 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. +# +# Note: +# This file is maintained in the openstack-ansible-tests repository. +# https://git.openstack.org/cgit/openstack/openstack-ansible-tests/tree/run_tests.sh +# If you need to modify this file, update the one in the openstack-ansible-tests +# repository and then update this file as well. The purpose of this file is to +# prepare the host and then execute all the tox tests. +# +## Shell Opts ---------------------------------------------------------------- set -xeu -source /etc/os-release || /usr/lib/os-release +## Vars ---------------------------------------------------------------------- + +export WORKING_DIR=${WORKING_DIR:-$(pwd)} + +## Main ---------------------------------------------------------------------- + +source /etc/os-release || source /usr/lib/os-release install_pkg_deps() { pkg_deps="git" @@ -33,7 +48,15 @@ install_pkg_deps() { git_clone_repo() { if [[ ! -d tests/common ]]; then - git clone https://git.openstack.org/openstack/openstack-ansible-tests tests/common + # The tests repo doesn't need a clone, we can just + # symlink it. + if [[ "$(basename ${WORKING_DIR})" == "openstack-ansible-tests" ]]; then + ln -s ${WORKING_DIR} ${WORKING_DIR}/tests/common + else + git clone \ + https://git.openstack.org/openstack/openstack-ansible-tests \ + tests/common + fi fi } @@ -42,6 +65,5 @@ install_pkg_deps git_clone_repo # start executing the main test script -source tests/common/run_tests.sh +source tests/common/run_tests_common.sh -# vim: set ts=4 sw=4 expandtab: diff --git a/tests/tests-repo-clone.sh b/tests/tests-repo-clone.sh index 619a905..9c793c5 100755 --- a/tests/tests-repo-clone.sh +++ b/tests/tests-repo-clone.sh @@ -34,28 +34,39 @@ export TESTING_HOME=${TESTING_HOME:-$HOME} export WORKING_DIR=${WORKING_DIR:-$(pwd)} export CLONE_UPGRADE_TESTS=${CLONE_UPGRADE_TESTS:-no} -## Main ---------------------------------------------------------------------- +## Functions ----------------------------------------------------------------- + +function create_tests_clonemap { # Prepare the clonemap for zuul-cloner to use -# This is placed here instead of inside the conditional -# to prevent indentation problems. cat > ${TESTING_HOME}/tests-clonemap.yaml << EOF clonemap: - name: openstack/openstack-ansible-tests dest: ${WORKING_DIR}/tests/common EOF +} + +## Main ---------------------------------------------------------------------- + # If zuul-cloner is present, use it so that we # also include any dependent patches from the # tests repo noted in the commit message. if [[ -x /usr/zuul-env/bin/zuul-cloner ]]; then + # Prepare the clonemap for zuul-cloner to use + create_tests_clonemap + + # Execute the clone /usr/zuul-env/bin/zuul-cloner \ --cache-dir /opt/git \ --map ${TESTING_HOME}/tests-clonemap.yaml \ git://git.openstack.org \ openstack/openstack-ansible-tests + # Clean up the clonemap. + rm -f ${TESTING_HOME}/tests-clonemap.yaml + # Alternatively, use a simple git-clone. We do # not re-clone if the directory exists already # to prevent overwriting any local changes which @@ -73,9 +84,6 @@ elif [[ ! -d tests/common ]]; then fi fi -# Clean up the clonemap. -rm -f ${TESTING_HOME}/tests-clonemap.yaml - # If this test set includes an upgrade test, the # previous stable release tests repo must also be # cloned.