Skip to content

Test suite improvements #118

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 5 commits into from
Sep 13, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
63 changes: 52 additions & 11 deletions run-tests
Original file line number Diff line number Diff line change
Expand Up @@ -14,18 +14,36 @@
# GNU General Public License for more details.

# Set colour escape sequences
RED='\033[0;31m'
YELLOW='\033[1;33m'
ORANGE='\033[0;33m'
GREEN='\033[0;32m'
DARK='\033[1;30m'
RESET='\033[0m'

PS4='+ ${BASH_SOURCE:-$0}@${LINENO:-0}${FUNCNAME:+#${FUNCNAME}()}: '

if [[ -n "${NO_COLOR:-}" ]] || ! colors="$(tput colors 2>/dev/null)" || (( "${colors:-0}" < 16 )); then
RED=''
YELLOW=''
ORANGE=''
GREEN=''
DARK=''
RESET=''
else
RED='\033[0;31m'
YELLOW='\033[1;33m'
ORANGE='\033[0;33m'
GREEN='\033[0;32m'
DARK='\033[1;30m'
RESET='\033[0m'
fi

# Set Pass/Fail signatures
PASS="✓"
FAIL="✗"

# Counters
COUNT_PASS=0
COUNT_FAIL=0

# Names of files in which test cases failed
declare -A FAILED

# Flag for determining whether a test script called the `runtest' function
RUNTEST_CALLED=0

Expand Down Expand Up @@ -284,6 +302,9 @@ function _pass {

function _fail {
COUNT_FAIL=$((COUNT_FAIL+1))
if [[ -v TEST ]]; then
FAILED["$TEST"]=1
fi
( >&2 echo -e " ${RED}${FAIL} ${@}${RESET}" )
}

Expand Down Expand Up @@ -342,16 +363,28 @@ evaltest() {
TEST_BUSCTL_STATUS_RC=""
# Keep this random, as we will never know the ifindex up-front
ip_ifindex=$((RANDOM%=64))
# Same for the device
dev="tun${RANDOM}"

# Clear foreign_option_*
for foreign_option_varname in "${!foreign_option_@}"; do
declare "${foreign_option_varname}="
done
unset "${!foreign_option_@}"

# Import the test configuration
source "${TEST}"
source "${TEST}" || return

if (( RUNTEST_CALLED > 0 )); then
return
fi

declare -a foreign_options || return

local i=0
local opt
for opt in "${foreign_options[@]}" in; do
declare "foreign_option_$(( i += 1 ))=${opt}"
done

(( RUNTEST_CALLED > 0 )) || runtest
runtest
}

echo "update-systemd-resolved Test Suite"
Expand All @@ -376,5 +409,13 @@ done
echo -e " ${GREEN}${PASS} ${COUNT_PASS} Passed${RESET}"
echo -e " ${RED}${FAIL} ${COUNT_FAIL} Failed${RESET}"

if (( "${#FAILED[@]}" > 0 )); then
echo -e "\n ${YELLOW}The following files have failing test cases:${RESET}"

for failed in "${!FAILED[@]}"; do
echo -e " ${ORANGE}${failed}${RESET}"
done
fi

# Make sure we fail if there are failed tests
[[ ${COUNT_FAIL} -eq 0 ]]
1 change: 0 additions & 1 deletion tests/01_no_updates.sh
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
# Emulate OpenVPN environment
script_type="up"
dev="tun01"

TEST_TITLE="No Updates"
TEST_BUSCTL_CALLED=1
4 changes: 2 additions & 2 deletions tests/02_single_ipv4_dns.sh
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
script_type="up"
dev="tun02"
foreign_option_1="dhcp-option DNS 1.23.4.56"

foreign_options=("dhcp-option DNS 1.23.4.56")

TEST_TITLE="Single IPv4 DNS Server"
TEST_BUSCTL_CALLED=1
Expand Down
9 changes: 6 additions & 3 deletions tests/03a_multiple_ipv4_dns_1.sh
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
script_type="up"
dev="tun03"
foreign_option_1="dhcp-option DNS 1.23.4.56"
foreign_option_2="dhcp-option DNS 5.6.7.89"


foreign_options=(
"dhcp-option DNS 1.23.4.56"
"dhcp-option DNS 5.6.7.89"
)

TEST_TITLE="Multiple IPv4 DNS Servers (Part 1)"
TEST_BUSCTL_CALLED=1
Expand Down
10 changes: 6 additions & 4 deletions tests/03b_multiple_ipv4_dns_2.sh
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
script_type="up"
dev="tun03"
foreign_option_1="dhcp-option DNS 1.23.4.56"
foreign_option_2="dhcp-option DNS 5.6.7.89"
foreign_option_3="dhcp-option DNS 34.5.67.8"

foreign_options=(
"dhcp-option DNS 1.23.4.56"
"dhcp-option DNS 5.6.7.89"
"dhcp-option DNS 34.5.67.8"
)

TEST_TITLE="Multiple IPv4 DNS Servers (Part 2)"
TEST_BUSCTL_CALLED=1
Expand Down
4 changes: 2 additions & 2 deletions tests/04a_single_dns_domain.sh
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
script_type="up"
dev="tun04"
foreign_option_1="dhcp-option DOMAIN example.com"

foreign_options=("dhcp-option DOMAIN example.com")

TEST_TITLE="Single DNS Domain"
TEST_BUSCTL_CALLED=1
Expand Down
8 changes: 5 additions & 3 deletions tests/04b_multiple_dns_domains.sh
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
script_type="up"
dev="tun04"
foreign_option_1="dhcp-option DOMAIN example.com"
foreign_option_2="dhcp-option DOMAIN example.co"

foreign_options=(
"dhcp-option DOMAIN example.com"
"dhcp-option DOMAIN example.co"
)

TEST_TITLE="Multiple DNS Domains"
TEST_BUSCTL_CALLED=1
Expand Down
8 changes: 5 additions & 3 deletions tests/05a_dns_domain_and_search_1.sh
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
script_type="up"
dev="tun05"
foreign_option_1="dhcp-option DOMAIN example.com"
foreign_option_2="dhcp-option DOMAIN-SEARCH example.org"

foreign_options=(
"dhcp-option DOMAIN example.com"
"dhcp-option DOMAIN-SEARCH example.org"
)

TEST_TITLE="DNS Single Domain and Single Search"
TEST_BUSCTL_CALLED=1
Expand Down
10 changes: 6 additions & 4 deletions tests/05b_dns_domain_and_search_2.sh
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
script_type="up"
dev="tun05"
foreign_option_1="dhcp-option DOMAIN example.com"
foreign_option_2="dhcp-option DOMAIN-SEARCH example.org"
foreign_option_3="dhcp-option DOMAIN-SEARCH example.net"

foreign_options=(
"dhcp-option DOMAIN example.com"
"dhcp-option DOMAIN-SEARCH example.org"
"dhcp-option DOMAIN-SEARCH example.net"
)

TEST_TITLE="DNS Single Domain and Dual Search"
TEST_BUSCTL_CALLED=1
Expand Down
10 changes: 6 additions & 4 deletions tests/05c_dns_domain_and_search_3.sh
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
script_type="up"
dev="tun05"
foreign_option_1="dhcp-option DOMAIN-SEARCH example.org"
foreign_option_2="dhcp-option DOMAIN example.com"
foreign_option_3="dhcp-option DOMAIN-SEARCH example.net"

foreign_options=(
"dhcp-option DOMAIN-SEARCH example.org"
"dhcp-option DOMAIN example.com"
"dhcp-option DOMAIN-SEARCH example.net"
)

TEST_TITLE="DNS Single Domain and Dual Search (with Order Check)"
TEST_BUSCTL_CALLED=1
Expand Down
12 changes: 7 additions & 5 deletions tests/05d_dns_domain_and_search_4.sh
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
script_type="up"
dev="tun05"
foreign_option_1="dhcp-option DOMAIN-SEARCH example.org"
foreign_option_2="dhcp-option DOMAIN example.co"
foreign_option_3="dhcp-option DOMAIN example.com"
foreign_option_4="dhcp-option DOMAIN-SEARCH example.net"

foreign_options=(
"dhcp-option DOMAIN-SEARCH example.org"
"dhcp-option DOMAIN example.co"
"dhcp-option DOMAIN example.com"
"dhcp-option DOMAIN-SEARCH example.net"
)

TEST_TITLE="DNS Dual Domain and Dual Search (with Order Check)"
TEST_BUSCTL_CALLED=1
Expand Down
4 changes: 2 additions & 2 deletions tests/05e_dns_domain_alternate.sh
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
script_type="up"
dev="tun05"
foreign_option_1="dhcp-option ADAPTER_DOMAIN_SUFFIX example.org"

foreign_options=("dhcp-option ADAPTER_DOMAIN_SUFFIX example.org")

TEST_TITLE="DNS Doamin using ADAPTER_DOMAIN_SUFFIX"
TEST_BUSCTL_CALLED=1
Expand Down
4 changes: 2 additions & 2 deletions tests/06a_single_domain_route.sh
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
script_type="up"
dev="tun06"
foreign_option_1="dhcp-option DOMAIN-ROUTE example.com"

foreign_options=("dhcp-option DOMAIN-ROUTE example.com")

TEST_TITLE="Single DNS Route"
TEST_BUSCTL_CALLED=1
Expand Down
10 changes: 6 additions & 4 deletions tests/06b_multiple_domain_routes.sh
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
script_type="up"
dev="tun06"
foreign_option_1="dhcp-option DOMAIN-ROUTE example.com"
foreign_option_2="dhcp-option DOMAIN-ROUTE example.co"
foreign_option_3="dhcp-option DOMAIN-ROUTE example.co.uk"

foreign_options=(
"dhcp-option DOMAIN-ROUTE example.com"
"dhcp-option DOMAIN-ROUTE example.co"
"dhcp-option DOMAIN-ROUTE example.co.uk"
)

TEST_TITLE="Single DNS Route"
TEST_BUSCTL_DOMAINS="3 example.com true example.co true example.co.uk true"
Expand Down
12 changes: 7 additions & 5 deletions tests/07a_dns_domain_search_and_route_1.sh
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
script_type="up"
dev="tun07"
foreign_option_1="dhcp-option DOMAIN example.com"
foreign_option_2="dhcp-option DOMAIN-SEARCH example.org"
foreign_option_3="dhcp-option DOMAIN-SEARCH example.co.uk"
foreign_option_4="dhcp-option DOMAIN-ROUTE example.net"

foreign_options=(
"dhcp-option DOMAIN example.com"
"dhcp-option DOMAIN-SEARCH example.org"
"dhcp-option DOMAIN-SEARCH example.co.uk"
"dhcp-option DOMAIN-ROUTE example.net"
)

TEST_TITLE="DNS Single Domain, Dual Search, Single Route"
TEST_BUSCTL_CALLED=1
Expand Down
16 changes: 9 additions & 7 deletions tests/07b_dns_domain_search_and_route_2.sh
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
script_type="up"
dev="tun07"
foreign_option_1="dhcp-option DOMAIN example.com"
foreign_option_2="dhcp-option DOMAIN-SEARCH example.org"
foreign_option_3="dhcp-option DOMAIN-ROUTE example.net"
foreign_option_4="dhcp-option DOMAIN-SEARCH example.co.uk"
foreign_option_5="dhcp-option DOMAIN example.co"
foreign_option_6="dhcp-option DOMAIN-ROUTE example.uk.com"

foreign_options=(
"dhcp-option DOMAIN example.com"
"dhcp-option DOMAIN-SEARCH example.org"
"dhcp-option DOMAIN-ROUTE example.net"
"dhcp-option DOMAIN-SEARCH example.co.uk"
"dhcp-option DOMAIN example.co"
"dhcp-option DOMAIN-ROUTE example.uk.com"
)

TEST_TITLE="DNS Dual Domain, Dual Search, Dual Route (with Order Check)"
TEST_BUSCTL_CALLED=1
Expand Down
10 changes: 6 additions & 4 deletions tests/08a_dns_ipv4_and_domain.sh
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
script_type="up"
dev="tun08"
foreign_option_1="dhcp-option DNS 1.23.4.56"
foreign_option_2="dhcp-option DNS 2.34.56.7"
foreign_option_3="dhcp-option DOMAIN example.com"

foreign_options=(
"dhcp-option DNS 1.23.4.56"
"dhcp-option DNS 2.34.56.7"
"dhcp-option DOMAIN example.com"
)

TEST_TITLE="DNS IPv4 Servers and Domain"
TEST_BUSCTL_CALLED=1
Expand Down
14 changes: 8 additions & 6 deletions tests/08b_dns_ipv4_domain_and_search.sh
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
script_type="up"
dev="tun08"
foreign_option_1="dhcp-option DNS 1.23.4.56"
foreign_option_2="dhcp-option DNS 2.34.5.67"
foreign_option_3="dhcp-option DOMAIN example.co.uk"
foreign_option_4="dhcp-option DOMAIN-SEARCH example.co"
foreign_option_5="dhcp-option DOMAIN-SEARCH example.com"

foreign_options=(
"dhcp-option DNS 1.23.4.56"
"dhcp-option DNS 2.34.5.67"
"dhcp-option DOMAIN example.co.uk"
"dhcp-option DOMAIN-SEARCH example.co"
"dhcp-option DOMAIN-SEARCH example.com"
)

TEST_TITLE="DNS IPv4 Servers, Domain, and Search"
TEST_BUSCTL_CALLED=1
Expand Down
14 changes: 8 additions & 6 deletions tests/08b_dns_ipv4_domain_search_and_route.sh
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
script_type="up"
dev="tun08"
foreign_option_1="dhcp-option DNS 1.23.4.56"
foreign_option_2="dhcp-option DNS 2.34.5.67"
foreign_option_3="dhcp-option DOMAIN example.co.uk"
foreign_option_4="dhcp-option DOMAIN-SEARCH example.co"
foreign_option_5="dhcp-option DOMAIN-ROUTE example.com"

foreign_options=(
"dhcp-option DNS 1.23.4.56"
"dhcp-option DNS 2.34.5.67"
"dhcp-option DOMAIN example.co.uk"
"dhcp-option DOMAIN-SEARCH example.co"
"dhcp-option DOMAIN-ROUTE example.com"
)

TEST_TITLE="DNS IPv4 Servers, Domain, Search, and Route"
TEST_BUSCTL_CALLED=1
Expand Down
4 changes: 2 additions & 2 deletions tests/10_single_ipv6_dns_full.sh
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
script_type="up"
dev="tun10"
foreign_option_1="dhcp-option DNS 1234:5678:90ab:cdef:4321:8765:ba09:fedc"

foreign_options=("dhcp-option DNS 1234:5678:90ab:cdef:4321:8765:ba09:fedc")

TEST_TITLE="Single IPv6 DNS Server (Full)"
TEST_BUSCTL_CALLED=1
Expand Down
4 changes: 2 additions & 2 deletions tests/11_single_ipv6_dns_simple.sh
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
script_type="up"
dev="tun11"
foreign_option_1="dhcp-option DNS 1234:567:89:0:ab:cde:f123:4567"

foreign_options=("dhcp-option DNS 1234:567:89:0:ab:cde:f123:4567")

TEST_TITLE="Single IPv6 DNS Server (Full, Simple)"
TEST_BUSCTL_CALLED=1
Expand Down
4 changes: 2 additions & 2 deletions tests/12_single_ipv6_dns_compact_1.sh
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
script_type="up"
dev="tun12"
foreign_option_1="dhcp-option DNS 1234:567:89:0:ab:cde:f123:4567"

foreign_options=("dhcp-option DNS 1234:567:89:0:ab:cde:f123:4567")

TEST_TITLE="Single IPv6 DNS Server (Compact) (Part 1)"
TEST_BUSCTL_CALLED=1
Expand Down
4 changes: 2 additions & 2 deletions tests/13_single_ipv6_dns_compact_2.sh
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
script_type="up"
dev="tun13"
foreign_option_1="dhcp-option DNS 1234:567:89::ab:cdef"

foreign_options=("dhcp-option DNS 1234:567:89::ab:cdef")

TEST_TITLE="Single IPv6 DNS Server (Compact) (Part 2)"
TEST_BUSCTL_CALLED=1
Expand Down
4 changes: 2 additions & 2 deletions tests/14_single_ipv6_dns_compact_3.sh
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
script_type="up"
dev="tun14"
foreign_option_1="dhcp-option DNS 20a0::1"

foreign_options=("dhcp-option DNS 20a0::1")

TEST_TITLE="Single IPv6 DNS Server (Compact) (Part 3)"
TEST_BUSCTL_CALLED=1
Expand Down
Loading