From 4d9cd894c4f2346587297a959fc412e0570357a1 Mon Sep 17 00:00:00 2001 From: Raghavendra Talur Date: Tue, 24 Nov 2015 18:18:01 +0530 Subject: [PATCH] tests: Introduce a Vagrant VM based make test This is still a work-in-progress. Comments welcome. Have disabled regression tests. Change-Id: Ic87801172c8b614cdecbdf2a765e1b3370a5faf7 Signed-off-by: Raghavendra Talur --- run-tests-in-vagrant.sh | 36 +++++++++ run-tests.sh | 1 + tests/vagrant/vagrant-template/Vagrantfile | 63 +++++++++++++++ .../roles/compile-gluster/handlers/main.yml | 0 .../roles/compile-gluster/meta/main.yml | 0 .../roles/compile-gluster/tasks/main.yml | 32 ++++++++ .../roles/compile-gluster/vars/main.yml | 0 .../roles/install-pkgs/handlers/main.yml | 0 .../roles/install-pkgs/meta/main.yml | 0 .../roles/install-pkgs/tasks/main.yml | 78 +++++++++++++++++++ .../roles/install-pkgs/vars/main.yml | 0 .../roles/iptables/handlers/main.yml | 0 .../roles/iptables/meta/main.yml | 0 .../roles/iptables/tasks/main.yml | 3 + .../roles/iptables/vars/main.yml | 0 .../roles/prepare-brick/handlers/main.yml | 0 .../roles/prepare-brick/meta/main.yml | 0 .../roles/prepare-brick/tasks/main.yml | 6 ++ .../roles/prepare-brick/vars/main.yml | 0 .../roles/selinux/handlers/main.yml | 0 .../roles/selinux/meta/main.yml | 0 .../roles/selinux/tasks/main.yml | 3 + .../roles/selinux/vars/main.yml | 0 .../roles/service/handlers/main.yml | 0 .../roles/service/meta/main.yml | 0 .../roles/service/tasks/main.yml | 15 ++++ .../roles/service/vars/main.yml | 0 .../roles/template-role/handlers/main.yml | 0 .../roles/template-role/meta/main.yml | 0 .../roles/template-role/tasks/main.yml | 0 .../roles/template-role/vars/main.yml | 0 .../roles/tests/handlers/main.yml | 0 .../roles/tests/meta/main.yml | 0 .../roles/tests/tasks/main.yml | 3 + .../roles/tests/vars/main.yml | 0 tests/vagrant/vagrant-template/setup.yml | 8 ++ tests/vagrant/vagrant-template/test.yml | 7 ++ 37 files changed, 255 insertions(+) create mode 100755 run-tests-in-vagrant.sh create mode 100644 tests/vagrant/vagrant-template/Vagrantfile create mode 100644 tests/vagrant/vagrant-template/roles/compile-gluster/handlers/main.yml create mode 100644 tests/vagrant/vagrant-template/roles/compile-gluster/meta/main.yml create mode 100644 tests/vagrant/vagrant-template/roles/compile-gluster/tasks/main.yml create mode 100644 tests/vagrant/vagrant-template/roles/compile-gluster/vars/main.yml create mode 100644 tests/vagrant/vagrant-template/roles/install-pkgs/handlers/main.yml create mode 100644 tests/vagrant/vagrant-template/roles/install-pkgs/meta/main.yml create mode 100644 tests/vagrant/vagrant-template/roles/install-pkgs/tasks/main.yml create mode 100644 tests/vagrant/vagrant-template/roles/install-pkgs/vars/main.yml create mode 100644 tests/vagrant/vagrant-template/roles/iptables/handlers/main.yml create mode 100644 tests/vagrant/vagrant-template/roles/iptables/meta/main.yml create mode 100644 tests/vagrant/vagrant-template/roles/iptables/tasks/main.yml create mode 100644 tests/vagrant/vagrant-template/roles/iptables/vars/main.yml create mode 100644 tests/vagrant/vagrant-template/roles/prepare-brick/handlers/main.yml create mode 100644 tests/vagrant/vagrant-template/roles/prepare-brick/meta/main.yml create mode 100644 tests/vagrant/vagrant-template/roles/prepare-brick/tasks/main.yml create mode 100644 tests/vagrant/vagrant-template/roles/prepare-brick/vars/main.yml create mode 100644 tests/vagrant/vagrant-template/roles/selinux/handlers/main.yml create mode 100644 tests/vagrant/vagrant-template/roles/selinux/meta/main.yml create mode 100644 tests/vagrant/vagrant-template/roles/selinux/tasks/main.yml create mode 100644 tests/vagrant/vagrant-template/roles/selinux/vars/main.yml create mode 100644 tests/vagrant/vagrant-template/roles/service/handlers/main.yml create mode 100644 tests/vagrant/vagrant-template/roles/service/meta/main.yml create mode 100644 tests/vagrant/vagrant-template/roles/service/tasks/main.yml create mode 100644 tests/vagrant/vagrant-template/roles/service/vars/main.yml create mode 100644 tests/vagrant/vagrant-template/roles/template-role/handlers/main.yml create mode 100644 tests/vagrant/vagrant-template/roles/template-role/meta/main.yml create mode 100644 tests/vagrant/vagrant-template/roles/template-role/tasks/main.yml create mode 100644 tests/vagrant/vagrant-template/roles/template-role/vars/main.yml create mode 100644 tests/vagrant/vagrant-template/roles/tests/handlers/main.yml create mode 100644 tests/vagrant/vagrant-template/roles/tests/meta/main.yml create mode 100644 tests/vagrant/vagrant-template/roles/tests/tasks/main.yml create mode 100644 tests/vagrant/vagrant-template/roles/tests/vars/main.yml create mode 100644 tests/vagrant/vagrant-template/setup.yml create mode 100644 tests/vagrant/vagrant-template/test.yml diff --git a/run-tests-in-vagrant.sh b/run-tests-in-vagrant.sh new file mode 100755 index 000000000..044bf84bb --- /dev/null +++ b/run-tests-in-vagrant.sh @@ -0,0 +1,36 @@ +#!/bin/bash + +function force_location() +{ + current_dir=$(dirname $0); + + if [ ! -f ${current_dir}/tests/vagrant/vagrant-template/Vagrantfile ]; then + echo "Aborting." + echo + echo "The tests/vagrant subdirectory seems to be missing." + echo + echo "Please correct the problem and try again." + echo + exit 1 + fi +} + + +force_location + +echo "Testing for Vagrant...." +echo "Testing for Ansible...." + +echo "Copy vagrant-template dir to a new workdir based on git branch" +BRANCHNAME=`git rev-parse --abbrev-ref HEAD` +echo $BRANCHNAME +mkdir tests/vagrant/$BRANCHNAME +cp -R tests/vagrant/vagrant-template/* tests/vagrant/$BRANCHNAME + +echo "Creating tar of source...." +tar chf tests/vagrant/$BRANCHNAME/roles/compile-gluster/files/glusterfs-vagrant-test.tar.gz --exclude=*glusterfs-vagrant-test.tar.gz . + +echo "change dir to new vagrant dir" +cd tests/vagrant/$BRANCHNAME + +vagrant up --provision diff --git a/run-tests.sh b/run-tests.sh index a64219c59..836ded81f 100755 --- a/run-tests.sh +++ b/run-tests.sh @@ -250,6 +250,7 @@ function run_all () function main() { + exit 0 if [ $# -lt 1 ]; then echo "Running all the regression test cases (new way)" #prove -rf --timer ${regression_testsdir}/tests; diff --git a/tests/vagrant/vagrant-template/Vagrantfile b/tests/vagrant/vagrant-template/Vagrantfile new file mode 100644 index 000000000..0a43533d4 --- /dev/null +++ b/tests/vagrant/vagrant-template/Vagrantfile @@ -0,0 +1,63 @@ +# -*- mode: ruby -*- +# vi: set ft=ruby : + +Vagrant.configure("2") do |config| + config.vm.define "vagrant-testVM" do |fedora22| + fedora22.vm.box = "fedora22" + fedora22.vm.hostname = "vagrant-testVM" + #fedora22.ssh.insert_key = false + fedora22.vm.synced_folder ".", "/vagrant", disabled: true + + + if Vagrant.has_plugin?("vagrant-cachier") + fedora22.cache.scope = :box + # vagrant-cachier fails for f22 because it does not have yum.conf + # Disable auto_detect for that + fedora22.cache.auto_detect = false + # f23 uses dnf be default, there was no bucket for dnf in vagrant-cachier + # Check out my pull request for the same: https://github.com/fgrehm/vagrant-cachier/pull/158 + # Comment out the next line if you don't have that patch + fedora22.cache.enable :dnf + fedora22.cache.synced_folder_opts = { + type: :nfs, + mount_options: ['rw', 'vers=3', 'tcp', 'nolock'] + } + end + + + # Define basic config for VM, memory, cpu, storage pool + fedora22.vm.provider "libvirt" do |lv| + lv.storage_pool_name = "default" + lv.memory = 1024 + lv.cpus = 1 + + + # We need a brick partition, lets have a 1G disk for that. + # If you need more bricks, just add more letters to the + # string below. + "b".split("").each do |i| + lv.storage :file, + #:path => "", + #:allow_existing => "", + :device => "vd#{i}", + :size => "5G", + :type => "qcow2", + :bus => "virtio", + :cache => "default" + end + end + + # Let's provision + fedora22.vm.provision "ansible" do |setup| + setup.verbose = "v" + setup.playbook = "setup.yml" + end + + fedora22.vm.provision "ansible", run: "always" do |test| + test.verbose = "v" + test.playbook = "test.yml" + end + + end +end + diff --git a/tests/vagrant/vagrant-template/roles/compile-gluster/handlers/main.yml b/tests/vagrant/vagrant-template/roles/compile-gluster/handlers/main.yml new file mode 100644 index 000000000..e69de29bb diff --git a/tests/vagrant/vagrant-template/roles/compile-gluster/meta/main.yml b/tests/vagrant/vagrant-template/roles/compile-gluster/meta/main.yml new file mode 100644 index 000000000..e69de29bb diff --git a/tests/vagrant/vagrant-template/roles/compile-gluster/tasks/main.yml b/tests/vagrant/vagrant-template/roles/compile-gluster/tasks/main.yml new file mode 100644 index 000000000..548a3233d --- /dev/null +++ b/tests/vagrant/vagrant-template/roles/compile-gluster/tasks/main.yml @@ -0,0 +1,32 @@ +--- +- name: create gluster src dir + file: path=/home/vagrant/glusterfs state=directory owner=vagrant group=vagrant + +- name: untar glusterfs.tar.gz + unarchive: src=glusterfs-vagrant-test.tar.gz dest=/home/vagrant/glusterfs + +- name: autogen.sh + shell: chdir=/home/vagrant/glusterfs ./autogen.sh + +- name: configure + shell: chdir=/home/vagrant/glusterfs CFLAGS="-g -O0 -Werror -Wall -Wno-error=cpp -Wno-error=maybe-uninitialized" \ + ./configure \ + --prefix=/usr \ + --exec-prefix=/usr \ + --bindir=/usr/bin \ + --sbindir=/usr/sbin \ + --sysconfdir=/etc \ + --datadir=/usr/share \ + --includedir=/usr/include \ + --libdir=/usr/lib64 \ + --libexecdir=/usr/libexec \ + --localstatedir=/var \ + --sharedstatedir=/var/lib \ + --mandir=/usr/share/man \ + --infodir=/usr/share/info \ + --libdir=/usr/lib64 \ + --enable-debug + +- name: make install + shell: chdir=/home/vagrant/glusterfs make install + diff --git a/tests/vagrant/vagrant-template/roles/compile-gluster/vars/main.yml b/tests/vagrant/vagrant-template/roles/compile-gluster/vars/main.yml new file mode 100644 index 000000000..e69de29bb diff --git a/tests/vagrant/vagrant-template/roles/install-pkgs/handlers/main.yml b/tests/vagrant/vagrant-template/roles/install-pkgs/handlers/main.yml new file mode 100644 index 000000000..e69de29bb diff --git a/tests/vagrant/vagrant-template/roles/install-pkgs/meta/main.yml b/tests/vagrant/vagrant-template/roles/install-pkgs/meta/main.yml new file mode 100644 index 000000000..e69de29bb diff --git a/tests/vagrant/vagrant-template/roles/install-pkgs/tasks/main.yml b/tests/vagrant/vagrant-template/roles/install-pkgs/tasks/main.yml new file mode 100644 index 000000000..73d866915 --- /dev/null +++ b/tests/vagrant/vagrant-template/roles/install-pkgs/tasks/main.yml @@ -0,0 +1,78 @@ +--- +- name: install deltarpm + dnf: name=deltarpm state=present + +- name: update system + shell: dnf update -y + +- name: install other packages + dnf: name={{ item }} state=present + with_items: + - attr + - autoconf + - automake + - bison + - cmockery2 + - cmockery2-devel + - cifs-utils + - dbench + - dos2unix + - e2fsprogs + - findutils + - flex + - fuse-devel + - fuse-libs + - gcc + - gdb + - git + - glib2-devel + - hostname + - libacl-devel + - libaio-devel + - libattr-devel + - libibverbs-devel + - librdmacm-devel + - libtool + - libxml2-devel + - lvm2-devel + - lvm2-devel + - make + - man-db + - mock + - net-tools + - nfs-utils + # - openssh-server + - openssl + - openssl-devel + - perl-Test-Harness + - pkgconfig + - procps-ng + - psmisc + - python-devel + - python-devel + - python-eventlet + - python-netifaces + - python-paste-deploy + - python-setuptools + - python-simplejson + - python-sphinx + - python-webob + - pyxattr + - readline-devel + - rpm-build + - screen + - strace + - supervisor + - systemtap-sdt-devel + - sqlite-devel + - samba* + - userspace-rcu-devel + - vim + - wget + - which + - xfsprogs + - yajl-devel + +- name: Erase gluster packages, keep dependencies; we will source install + shell: rpm -ev --nodeps `rpm -qa | grep ^gluster` + ignore_errors: True diff --git a/tests/vagrant/vagrant-template/roles/install-pkgs/vars/main.yml b/tests/vagrant/vagrant-template/roles/install-pkgs/vars/main.yml new file mode 100644 index 000000000..e69de29bb diff --git a/tests/vagrant/vagrant-template/roles/iptables/handlers/main.yml b/tests/vagrant/vagrant-template/roles/iptables/handlers/main.yml new file mode 100644 index 000000000..e69de29bb diff --git a/tests/vagrant/vagrant-template/roles/iptables/meta/main.yml b/tests/vagrant/vagrant-template/roles/iptables/meta/main.yml new file mode 100644 index 000000000..e69de29bb diff --git a/tests/vagrant/vagrant-template/roles/iptables/tasks/main.yml b/tests/vagrant/vagrant-template/roles/iptables/tasks/main.yml new file mode 100644 index 000000000..768cb0e86 --- /dev/null +++ b/tests/vagrant/vagrant-template/roles/iptables/tasks/main.yml @@ -0,0 +1,3 @@ +--- +- name: disable iptables, need to add specific rules later + shell: iptables -F diff --git a/tests/vagrant/vagrant-template/roles/iptables/vars/main.yml b/tests/vagrant/vagrant-template/roles/iptables/vars/main.yml new file mode 100644 index 000000000..e69de29bb diff --git a/tests/vagrant/vagrant-template/roles/prepare-brick/handlers/main.yml b/tests/vagrant/vagrant-template/roles/prepare-brick/handlers/main.yml new file mode 100644 index 000000000..e69de29bb diff --git a/tests/vagrant/vagrant-template/roles/prepare-brick/meta/main.yml b/tests/vagrant/vagrant-template/roles/prepare-brick/meta/main.yml new file mode 100644 index 000000000..e69de29bb diff --git a/tests/vagrant/vagrant-template/roles/prepare-brick/tasks/main.yml b/tests/vagrant/vagrant-template/roles/prepare-brick/tasks/main.yml new file mode 100644 index 000000000..6b3f6b8d3 --- /dev/null +++ b/tests/vagrant/vagrant-template/roles/prepare-brick/tasks/main.yml @@ -0,0 +1,6 @@ +--- +- name: Format backend + filesystem: fstype=xfs dev=/dev/vdb + +- name: Add entry to fstab and mount + mount: name=/d src=/dev/vdb fstype=xfs state=mounted diff --git a/tests/vagrant/vagrant-template/roles/prepare-brick/vars/main.yml b/tests/vagrant/vagrant-template/roles/prepare-brick/vars/main.yml new file mode 100644 index 000000000..e69de29bb diff --git a/tests/vagrant/vagrant-template/roles/selinux/handlers/main.yml b/tests/vagrant/vagrant-template/roles/selinux/handlers/main.yml new file mode 100644 index 000000000..e69de29bb diff --git a/tests/vagrant/vagrant-template/roles/selinux/meta/main.yml b/tests/vagrant/vagrant-template/roles/selinux/meta/main.yml new file mode 100644 index 000000000..e69de29bb diff --git a/tests/vagrant/vagrant-template/roles/selinux/tasks/main.yml b/tests/vagrant/vagrant-template/roles/selinux/tasks/main.yml new file mode 100644 index 000000000..c9ba96184 --- /dev/null +++ b/tests/vagrant/vagrant-template/roles/selinux/tasks/main.yml @@ -0,0 +1,3 @@ +--- +- name: Allow gfapi in Samba to bind to other ports than well known smb ports + seboolean: name=samba_load_libgfapi state=yes persistent=yes diff --git a/tests/vagrant/vagrant-template/roles/selinux/vars/main.yml b/tests/vagrant/vagrant-template/roles/selinux/vars/main.yml new file mode 100644 index 000000000..e69de29bb diff --git a/tests/vagrant/vagrant-template/roles/service/handlers/main.yml b/tests/vagrant/vagrant-template/roles/service/handlers/main.yml new file mode 100644 index 000000000..e69de29bb diff --git a/tests/vagrant/vagrant-template/roles/service/meta/main.yml b/tests/vagrant/vagrant-template/roles/service/meta/main.yml new file mode 100644 index 000000000..e69de29bb diff --git a/tests/vagrant/vagrant-template/roles/service/tasks/main.yml b/tests/vagrant/vagrant-template/roles/service/tasks/main.yml new file mode 100644 index 000000000..7cd47ecc0 --- /dev/null +++ b/tests/vagrant/vagrant-template/roles/service/tasks/main.yml @@ -0,0 +1,15 @@ +--- +- name: disable kernel nfs + service: name=nfs-server enabled=no + +- name: stop kernel nfs + service: name=nfs-server state=stopped + +- name: enable glusterd + service: name=glusterd enabled=yes + +- name: start glusterd + service: name=glusterd state=restarted + + + diff --git a/tests/vagrant/vagrant-template/roles/service/vars/main.yml b/tests/vagrant/vagrant-template/roles/service/vars/main.yml new file mode 100644 index 000000000..e69de29bb diff --git a/tests/vagrant/vagrant-template/roles/template-role/handlers/main.yml b/tests/vagrant/vagrant-template/roles/template-role/handlers/main.yml new file mode 100644 index 000000000..e69de29bb diff --git a/tests/vagrant/vagrant-template/roles/template-role/meta/main.yml b/tests/vagrant/vagrant-template/roles/template-role/meta/main.yml new file mode 100644 index 000000000..e69de29bb diff --git a/tests/vagrant/vagrant-template/roles/template-role/tasks/main.yml b/tests/vagrant/vagrant-template/roles/template-role/tasks/main.yml new file mode 100644 index 000000000..e69de29bb diff --git a/tests/vagrant/vagrant-template/roles/template-role/vars/main.yml b/tests/vagrant/vagrant-template/roles/template-role/vars/main.yml new file mode 100644 index 000000000..e69de29bb diff --git a/tests/vagrant/vagrant-template/roles/tests/handlers/main.yml b/tests/vagrant/vagrant-template/roles/tests/handlers/main.yml new file mode 100644 index 000000000..e69de29bb diff --git a/tests/vagrant/vagrant-template/roles/tests/meta/main.yml b/tests/vagrant/vagrant-template/roles/tests/meta/main.yml new file mode 100644 index 000000000..e69de29bb diff --git a/tests/vagrant/vagrant-template/roles/tests/tasks/main.yml b/tests/vagrant/vagrant-template/roles/tests/tasks/main.yml new file mode 100644 index 000000000..e0cfd5b59 --- /dev/null +++ b/tests/vagrant/vagrant-template/roles/tests/tasks/main.yml @@ -0,0 +1,3 @@ +--- +- name: run tests + shell: chdir=/home/vagrant/glusterfs ./run-tests.sh diff --git a/tests/vagrant/vagrant-template/roles/tests/vars/main.yml b/tests/vagrant/vagrant-template/roles/tests/vars/main.yml new file mode 100644 index 000000000..e69de29bb diff --git a/tests/vagrant/vagrant-template/setup.yml b/tests/vagrant/vagrant-template/setup.yml new file mode 100644 index 000000000..ff6d4ccdb --- /dev/null +++ b/tests/vagrant/vagrant-template/setup.yml @@ -0,0 +1,8 @@ +--- +- hosts: all + sudo: true + roles: + - install-pkgs + - prepare-brick + - selinux + - iptables diff --git a/tests/vagrant/vagrant-template/test.yml b/tests/vagrant/vagrant-template/test.yml new file mode 100644 index 000000000..991270ff0 --- /dev/null +++ b/tests/vagrant/vagrant-template/test.yml @@ -0,0 +1,7 @@ +--- +- hosts: all + sudo: true + roles: + - compile-gluster + - service + - tests -- 2.34.1