starts the kresd@1 service and finally attempts to use it to resolve
a domain name. It also tests that DNSSEC validation is turned on.
-By default, the *knot-resolver-latest* repo is used. To test the
-*knot-resolver-devel* repo, enable in it `knot-resolver-test.yaml`.
+By default, the *knot-resolver-devel* repo (for knot-resolver) along
+with *knot-resoler-latest* (for knot) is used. To test only the
+*knot-resolver-latest* repo, set it in `repos.yaml` (or use the
+test-distro.sh script which overwrites this file). If you're running
+tests in parallel, they all HAVE TO use the same repo(s).
Run the following command for every distro (aka directory with
Vagrantfile):
-./test-distro.sh debian9
+```
+./test-distro.sh devel debian9
+```
-Caveats
--------
+or
-This tests the latest `knot-resolver` package that is available. In certain
-cases, this may result in unexpected behaviour, because it might be testing a
-different package than expected.
+```
+./test-distro.sh latest debian9
+```
+At the end of the test, the package version that was tested is
+printed out. Make sure you're testing what you intended to.
become: true
vars:
- repos:
- - knot-resolver-latest
- # - knot-resolver-devel # enable to test development builds
ansible_python_interpreter: /usr/bin/python2
dig_package:
Debian: dnsutils
wget -nv https://download.opensuse.org/repositories/home:CZ-NIC:{{ item }}/xUbuntu_16.04/Release.key -O Release.key &&
apt-key add - < Release.key &&
apt-get update
+ show_package_version:
+ Archlinux:
+ pacman -Qi knot-resolver | grep '^Version'
+ Fedora: |
+ rpm -qi knot-resolver | grep '^Version'
+ CentOS: |
+ rpm -qi knot-resolver | grep '^Version'
+ Debian:
+ dpkg -s knot-resolver | grep '^Version'
+ Ubuntu: |
+ dpkg -s knot-resolver | grep '^Version'
+ vars_files:
+ - repos.yaml
# HACK: Ansible requires Python 2, but it's not installed by default in all distros
gather_facts: false
name: knot-resolver
state: latest
+ - name: get installed package version
+ shell: "{{ show_package_version[ansible_distribution] }}"
+ register: package_version
+
- name: install dig
package:
name: "{{ dig_package[ansible_distribution] }}"
state: latest
when: ansible_distribution in ['RedHat', 'Fedora']
- - name: start kresd@1.service
- service:
- name: kresd@1.service
- state: restarted
-
- - name: resolve nic.cz
- shell: dig @127.0.0.1 nic.cz
- register: res
- failed_when: '"status: NOERROR" not in res.stdout'
-
- - name: test dnssec is turned on
+ - name: testing block
block:
- - name: test dnssec-failed.org +cd returns NOERROR
- shell: dig +cd @127.0.0.1 dnssec-failed.org
+ - name: start kresd@1.service
+ service:
+ name: kresd@1.service
+ state: restarted
+
+ - name: resolve nic.cz
+ shell: dig @127.0.0.1 nic.cz
register: res
failed_when: '"status: NOERROR" not in res.stdout'
- - name: test dnssec-failed.org returns SERVFAIL
- shell: dig @127.0.0.1 dnssec-failed.org
- register: res
- failed_when: '"status: SERVFAIL" not in res.stdout'
+ - name: test dnssec is turned on
+ block:
+ - name: test dnssec-failed.org +cd returns NOERROR
+ shell: dig +cd @127.0.0.1 dnssec-failed.org
+ register: res
+ failed_when: '"status: NOERROR" not in res.stdout'
+
+ - name: test dnssec-failed.org returns SERVFAIL
+ shell: dig @127.0.0.1 dnssec-failed.org
+ register: res
+ failed_when: '"status: SERVFAIL" not in res.stdout'
+ always:
+ - name: show installed version
+ debug:
+ var: package_version.stdout
#!/bin/bash -x
-# Configure which repos to use in knot-resolver-test.yaml (vars - repos)
-# Example usage: ./test-distro.sh debian9
+# ./test-distro.sh {devel|latest} {distro}
+# Example usage: ./test-distro.sh devel debian9
-cd "$1"
+distro=$2
+repo=$1
+
+# Select repos
+echo -e 'repos:\n - knot-resolver-latest' > repos.yaml # latest is needed for knot
+case "$repo" in
+ devel)
+ echo -e ' - knot-resolver-devel' >> repos.yaml
+ ;;
+ latest)
+ ;;
+ *)
+ echo "Unknown repo, choose devel|latest"
+ exit 1
+ ;;
+esac
+
+cd "$distro"
vagrant destroy &>/dev/null
vagrant up
ret=$?