From 686543e4aa052f2d87e5dd9895689dc59cbf7552 Mon Sep 17 00:00:00 2001 From: Fabien Boucher Date: Aug 13 2020 08:52:25 +0000 Subject: Add functional tests --- diff --git a/README.md b/README.md index 1deef3f..7ddc297 100644 --- a/README.md +++ b/README.md @@ -43,7 +43,7 @@ $ exit Update the local access setting: ``` -$ sudo sed -i /var/lib/pgsql/data/pg_hba.conf 's/127.0.0.1/32 ident/127.0.0.1/32 md5/' +$ sudo sed -i 's|127.0.0.1/32 ident|127.0.0.1/32 md5|' /var/lib/pgsql/data/pg_hba.conf $ sudo systemctl restart posgreql ``` diff --git a/tests/install_zuul.yml b/tests/install_zuul.yml new file mode 100644 index 0000000..3a3e1c1 --- /dev/null +++ b/tests/install_zuul.yml @@ -0,0 +1,10 @@ +- name: Install Zuul packages + package: + name: + - zuul-scheduler + - zuul-executor + - zuul-web + - zuul-webui + - zuul-doc + state: present + become: true diff --git a/tests/setup_postgres.yml b/tests/setup_postgres.yml new file mode 100644 index 0000000..4b6357e --- /dev/null +++ b/tests/setup_postgres.yml @@ -0,0 +1,40 @@ +- name: Install postgres + package: + name: + - postgresql + - python3-psycopg2 + state: present + become: true + +- name: Setup a postgres admin password + shell: psql -c "ALTER USER postgres WITH PASSWORD 'mypassword';" + become_user: postgres + become: true + environment: + PGPASSWORD: mypassword + +- name: Create the database for zuul + shell: createdb --owner=postgres zuul + register: cmd + failed_when: cmd.rc != 0 and not "'already exists' in cmd.stderr" + ignore_errors: true + become_user: postgres + become: true + environment: + PGPASSWORD: mypassword + +- name: Enable auth access + shell: sed -i 's|127.0.0.1/32 ident|127.0.0.1/32 md5|' /var/lib/pgsql/data/pg_hba.conf + become: true + +- name: Restart postgres + service: + name: postgresql + state: restarted + become: true + +- name: Ensure postgres access + shell: psql -h 127.0.0.1 -U postgres zuul -c "\dt" + environment: + PGPASSWORD: mypassword + diff --git a/tests/setup_zookeeper.yml b/tests/setup_zookeeper.yml new file mode 100644 index 0000000..b9d2c03 --- /dev/null +++ b/tests/setup_zookeeper.yml @@ -0,0 +1,29 @@ +- name: Install JDK + package: + name: java-latest-openjdk + state: present + become: true + +- name: Create /tmp/zookeeper + file: + path: /tmp/zookeeper + state: directory + +- name: Get and extract Zookeeper + unarchive: + src: https://downloads.apache.org/zookeeper/zookeeper-{{ zookeeper_version }}/apache-zookeeper-{{ zookeeper_version }}-bin.tar.gz + dest: /tmp/zookeeper + remote_src: yes + +- name: Setup Zookeeper config file + copy: + src: /tmp/zookeeper/apache-zookeeper-{{ zookeeper_version }}-bin/conf/zoo_sample.cfg + dest: /tmp/zookeeper/apache-zookeeper-{{ zookeeper_version }}-bin/conf/zoo.cfg + remote_src: true + +- name: Ensure Zookeeper not running + command: pkill -f zookeeper + ignore_errors: true + +- name: Start Zookeeper + shell: /tmp/zookeeper/apache-zookeeper-{{ zookeeper_version }}-bin/bin/zkServer.sh start diff --git a/tests/setup_zuul_core.yml b/tests/setup_zuul_core.yml new file mode 100644 index 0000000..961d236 --- /dev/null +++ b/tests/setup_zuul_core.yml @@ -0,0 +1,49 @@ +- name: Ensure scheduler and executor service are down + service: + name: "{{ item }}" + state: stopped + loop: + - zuul-executor + - zuul-scheduler + become: true + +- name: Define the sql connection + blockinfile: + path: /etc/zuul/zuul.conf + block: | + [connection sqlreporter] + driver=sql + dburi=postgresql://postgres:mypassword@127.0.0.1:5432/zuul + become: true + +- name: Setup Ansible virtual environment for the Zuul executor + shell: zuul-manage-ansible -u -r /var/lib/zuul/ansible-bin + become_user: zuul + become: true + +- name: Create ssh keypair for Zuul + shell: ssh-keygen -t rsa -N '' -f /var/lib/zuul/.ssh/id_rsa + args: + creates: /var/lib/zuul/.ssh/id_rsa + become_user: zuul + become: true + +- name: Start scheduler and executor services + service: + name: "{{ item }}" + state: started + loop: + - zuul-executor + - zuul-scheduler + become: true + +- name: Give some time to services to fully start + pause: + seconds: 15 + +- name: Check zuul core services are up + shell: systemctl is-active {{ item }} + loop: + - zuul-executor + - zuul-scheduler + become: true diff --git a/tests/setup_zuul_web.yml b/tests/setup_zuul_web.yml new file mode 100644 index 0000000..eb43ac5 --- /dev/null +++ b/tests/setup_zuul_web.yml @@ -0,0 +1,79 @@ +- name: Ensure zuul-web service is down + service: + name: zuul-web + state: stopped + become: true + +- name: Install httpd + package: + name: + - httpd + state: present + become: true + +- name: Ensure httpd can connect to zuul-web + command: setsebool -P httpd_can_network_connect on + become: true + +- name: Add the reverse proxy setting in httpd + blockinfile: + path: /etc/httpd/conf.d/zuul.conf + block: | + RewriteEngine on + RewriteRule ^/api/tenant/(.*)/console-stream ws://localhost:9000/api/tenant/$1/console-stream [P] + RewriteRule ^/(.*)$ http://localhost:9000/$1 [P] + become: true + +- name: Reload httpd + service: + name: httpd + state: reloaded + become: true + +- name: Add the yarn yum repository + shell: "curl --silent --location https://dl.yarnpkg.com/rpm/yarn.repo | sudo tee /etc/yum.repos.d/yarn.repo" + become: true + +- name: Install yarn + package: + name: yarn + state: present + become: true + +- name: Start a production build of the Zuul web UI + shell: "{{ item }}" + args: + chdir: /usr/share/zuul-ui/ + environment: + REACT_APP_ZUUL_API: 'http://domain.com' + loop: + - yarn install + - yarn build + become: true + +- name: Ensure zuul-web service is up + service: + name: zuul-web + state: started + become: true + +- name: Give some time to services to fully start + pause: + seconds: 15 + +- name: Check zuul web services are up + shell: systemctl is-active {{ item }} + loop: + - zuul-web + - httpd + become: true + +- name: Check we can access the Zuul API + shell: curl http://localhost:9000/api/tenants + register: cmd + failed_when: not "'default' in cmd.stdout" + +- name: Check we can access the Zuul API via httpd + shell: curl http://localhost/api/tenants + register: cmd + failed_when: not "'default' in cmd.stdout" diff --git a/tests/tests.yml b/tests/tests.yml new file mode 100644 index 0000000..020c5f2 --- /dev/null +++ b/tests/tests.yml @@ -0,0 +1,19 @@ +- hosts: localhost + vars: + zookeeper_version: "3.6.1" + tasks: + - import_tasks: setup_zookeeper.yml + tags: + - zookeeper + - import_tasks: setup_postgres.yml + tags: + - postgres + - import_tasks: install_zuul.yml + tags: + - install_zuul + - import_tasks: setup_zuul_core.yml + tags: + - setup_zuul_core + - import_tasks: setup_zuul_web.yml + tags: + - setup_zuul_web