Skip to content

Commit

Permalink
TEST/MAJOR: e2e: fix proper version checking in all tests
Browse files Browse the repository at this point in the history
  • Loading branch information
mjuraga committed Jan 22, 2024
1 parent 014482d commit cd89926
Show file tree
Hide file tree
Showing 14 changed files with 68 additions and 38 deletions.
36 changes: 22 additions & 14 deletions e2e/libs/haproxy_config_setup.bash
Original file line number Diff line number Diff line change
Expand Up @@ -29,27 +29,35 @@ setup() {
skip
fi

# replace the default haproxy config file
local haproxy_cfg_file="${BATS_TEST_DIRNAME}/data/haproxy_*.cfg"
local haproxy_file_version=""
local copy_haproxy_file=true

if ls $haproxy_cfg_file 1> /dev/null 2>&1; then
haproxy_file_version=$(echo $haproxy_cfg_file | sed 's/.*_\([0-9]\+\.[0-9]\+\)\.cfg/\1/')
haproxy_file_version=$(echo $haproxy_cfg_file | sed 's/.*_\([0-9]\+\.[0-9]\+\)\.cfg/\1/')
major_file_version=$(echo $haproxy_file_version | cut -d '.' -f 1)
minor_file_version=$(echo $haproxy_file_version | cut -d '.' -f 2)
major_cfg_version=$(echo $HAPROXY_VERSION | cut -d '.' -f 1)
minor_cfg_version=$(echo $HAPROXY_VERSION | cut -d '.' -f 2)
if [[ -f "${BATS_TEST_DIRNAME}/data/haproxy_${haproxy_file_version}.cfg" ]] ; then
if [[ $major_cfg_version -eq $major_file_version && $minor_cfg_version -ge $minor_file_version || $major_cfg_version -gt $major_file_version ]] ; then
run docker cp "${BATS_TEST_DIRNAME}/data/haproxy_${haproxy_file_version}.cfg" "${DOCKER_CONTAINER_NAME}:/etc/haproxy/haproxy.cfg"
copy_haproxy_file=false
assert_success
fi
fi
fi

major_file_version=$(echo $haproxy_file_version | cut -d '.' -f 1)
minor_file_version=$(echo $haproxy_file_version | cut -d '.' -f 2)
major_cfg_version=$(echo $HAPROXY_VERSION | cut -d '.' -f 1)
minor_cfg_version=$(echo $HAPROXY_VERSION | cut -d '.' -f 2)

# replace the default haproxy config file
if [[ $major_cfg_version -ge $major_file_version && $minor_cfg_version -ge $minor_file_version ]] && [ -f "${BATS_TEST_DIRNAME}/data/haproxy_${haproxy_file_version}.cfg" ]; then
run docker cp "${BATS_TEST_DIRNAME}/data/haproxy_${haproxy_file_version}.cfg" "${DOCKER_CONTAINER_NAME}:/etc/haproxy/haproxy.cfg"
elif [ -f "${BATS_TEST_DIRNAME}/data/haproxy.cfg" ]; then
run docker cp "${BATS_TEST_DIRNAME}/data/haproxy.cfg" "${DOCKER_CONTAINER_NAME}:/etc/haproxy/haproxy.cfg"
else
run docker cp "${E2E_DIR}/fixtures/haproxy.cfg" "${DOCKER_CONTAINER_NAME}:/etc/haproxy/haproxy.cfg"
if [[ "$copy_haproxy_file" = true ]] ; then
if [ -f "${BATS_TEST_DIRNAME}/data/haproxy.cfg" ]; then
run docker cp "${BATS_TEST_DIRNAME}/data/haproxy.cfg" "${DOCKER_CONTAINER_NAME}:/etc/haproxy/haproxy.cfg"
assert_success
else
run docker cp "${E2E_DIR}/fixtures/haproxy.cfg" "${DOCKER_CONTAINER_NAME}:/etc/haproxy/haproxy.cfg"
assert_success
fi
fi
assert_success

# replace the default dataplaneapi config file
if [ -f "${BATS_TEST_DIRNAME}/dataplaneapi.yaml" ]; then
Expand Down
14 changes: 9 additions & 5 deletions e2e/libs/haproxy_version.bash
Original file line number Diff line number Diff line change
Expand Up @@ -27,12 +27,16 @@
# >>> 1
function haproxy_version_ge() {
target=$1; shift
major_minor=$HAPROXY_VERSION
numerical_v="${major_minor//.}"
numerical_target="${target//.}"

if [ "$numerical_v" -ge "$numerical_target" ]
then
IFS='.' read -ra version_parts <<< "$HAPROXY_VERSION"
haproxy_major="${version_parts[0]}"
haproxy_minor="${version_parts[1]}"

IFS='.' read -ra version_parts_target <<< "$target"
target_major="${version_parts_target[0]}"
target_minor="${version_parts_target[1]}"

if [[ "$haproxy_major" -eq "$target_major" && "$haproxy_minor" -ge "$target_minor" || "$haproxy_major" -gt "$target_major" ]] ; then
return 0
else
return 1
Expand Down
7 changes: 6 additions & 1 deletion e2e/run.bash
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,12 @@ if [ ! -z $PREWIPE ] && [ "$PREWIPE" == "y" ]; then
fi

# Custom configuration to run tests with the master socket.
if [ $HAPROXY_VERSION = 2.7 ]; then
IFS='.' read -ra version_parts <<< "$HAPROXY_VERSION"
major="${version_parts[0]}"
minor="${version_parts[1]}"

if [[ "$major" -eq "2" && "$minor" -ge "7" || "$major" -gt "2" ]] ; then
echo "Running<<<<<<<<<<< master socket"
HAPROXY_FLAGS="-W -db -S /var/lib/haproxy/master -f /usr/local/etc/haproxy/haproxy.cfg"
VARIANT="-master-socket"
fi
Expand Down
4 changes: 4 additions & 0 deletions e2e/tests/acl_files/acl_file_entries.bats
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ load '../../libs/dataplaneapi'
load "../../libs/get_json_path"
load '../../libs/haproxy_config_setup'
load '../../libs/resource_client'
load '../../libs/haproxy_version'

load 'utils/_helpers'

Expand Down Expand Up @@ -55,6 +56,9 @@ load 'utils/_helpers'
}

@test "acl_runtime: Delete an ACL file entry by its ID" {
if haproxy_version_ge "2.9"; then
skip "cause: bug in HAPRoxy 2.9"
fi
# checking items and retrieving first ID
resource_get "$_RUNTIME_ACL_FILE_ENTRIES_BASE_PATH" "acl_id=1"
assert_equal "$SC" 200
Expand Down
3 changes: 2 additions & 1 deletion e2e/tests/http_after_response_rules/delete.bats
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ load '../../libs/get_json_path'
load '../../libs/haproxy_config_setup'
load '../../libs/resource_client'
load '../../libs/version'
load '../../libs/haproxy_version'

load 'utils/_helpers'

Expand All @@ -39,7 +40,7 @@ load 'utils/_helpers'
resource_delete "$_RES_RULES_BASE_PATH/0" "parent_type=frontend&parent_name=test_frontend&force_reload=true"
assert_equal "$SC" 204
#
if [[ "$HAPROXY_VERSION" == "2.8" ]]; then
if haproxy_version_ge "2.8"; then
# Deleting the third one
#
resource_delete "$_RES_RULES_BASE_PATH/0" "parent_type=frontend&parent_name=test_frontend&force_reload=true"
Expand Down
5 changes: 3 additions & 2 deletions e2e/tests/http_after_response_rules/list.bats
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ load '../../libs/get_json_path'
load '../../libs/haproxy_config_setup'
load '../../libs/resource_client'
load '../../libs/version'
load '../../libs/haproxy_version'

load 'utils/_helpers'

Expand All @@ -30,7 +31,7 @@ load 'utils/_helpers'

resource_get "$_RES_RULES_BASE_PATH" "parent_type=frontend&parent_name=test_frontend"
assert_equal "$SC" 200
if [[ "$HAPROXY_VERSION" == "2.8" ]]; then
if haproxy_version_ge "2.8"; then
assert_equal "$(get_json_path "$BODY" ".data | length")" 11
else
assert_equal "$(get_json_path "$BODY" ".data | length")" 2
Expand All @@ -43,7 +44,7 @@ load 'utils/_helpers'
assert_equal "$(get_json_path "$BODY" ".data[1].hdr_name")" "X-Del-Frontend"
assert_equal "$(get_json_path "$BODY" ".data[1].cond")" "if"
assert_equal "$(get_json_path "$BODY" ".data[1].cond_test")" "{ src 10.1.0.0/16 }"
if [[ "$HAPROXY_VERSION" == "2.8" ]]; then
if haproxy_version_ge "2.8"; then
assert_equal "$(get_json_path "$BODY" ".data[2].type")" "set-map"
assert_equal "$(get_json_path "$BODY" ".data[2].map_file")" "map.lst"
assert_equal "$(get_json_path "$BODY" ".data[2].map_keyfmt")" "%[src]"
Expand Down
3 changes: 2 additions & 1 deletion e2e/tests/http_request_rules/delete.bats
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ load '../../libs/get_json_path'
load '../../libs/haproxy_config_setup'
load '../../libs/resource_client'
load '../../libs/version'
load '../../libs/haproxy_version'

load 'utils/_helpers'

Expand All @@ -35,7 +36,7 @@ load 'utils/_helpers'
resource_delete "$_REQ_RULES_BASE_PATH/0" "parent_type=frontend&parent_name=test_frontend&force_reload=true"
assert_equal "$SC" 204
#
if [[ "$HAPROXY_VERSION" == "2.8" ]]; then
if haproxy_version_ge "2.8"; then
# Deleting third
#
resource_delete "$_REQ_RULES_BASE_PATH/0" "parent_type=frontend&parent_name=test_frontend&force_reload=true"
Expand Down
5 changes: 3 additions & 2 deletions e2e/tests/http_request_rules/list.bats
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,14 @@ load '../../libs/get_json_path'
load '../../libs/haproxy_config_setup'
load '../../libs/resource_client'
load '../../libs/version'
load '../../libs/haproxy_version'

load 'utils/_helpers'

@test "http_request_rules: Return an array of all HTTP Request Rules from frontend" {
resource_get "$_REQ_RULES_BASE_PATH" "parent_type=frontend&parent_name=test_frontend"
assert_equal "$SC" 200
if [[ "$HAPROXY_VERSION" == "2.8" ]]; then
if haproxy_version_ge "2.8"; then
assert_equal "$(get_json_path "$BODY" ".data | length")" 3
else
assert_equal "$(get_json_path "$BODY" ".data | length")" 2
Expand All @@ -39,7 +40,7 @@ load 'utils/_helpers'
assert_equal "$(get_json_path "$BODY" ".data[1].hdr_name")" "X-Del-Frontend"
assert_equal "$(get_json_path "$BODY" ".data[1].cond")" "if"
assert_equal "$(get_json_path "$BODY" ".data[1].cond_test")" "{ src 10.1.0.0/16 }"
if [[ "$HAPROXY_VERSION" == "2.8" ]]; then
if haproxy_version_ge "2.8"; then
assert_equal "$(get_json_path "$BODY" ".data[2].type")" "sc-add-gpc"
assert_equal "$(get_json_path "$BODY" ".data[2].index")" "2"
assert_equal "$(get_json_path "$BODY" ".data[2].sc_id")" "1"
Expand Down
3 changes: 2 additions & 1 deletion e2e/tests/http_response_rules/delete.bats
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ load '../../libs/get_json_path'
load '../../libs/haproxy_config_setup'
load '../../libs/resource_client'
load '../../libs/version'
load '../../libs/haproxy_version'

load 'utils/_helpers'

Expand All @@ -35,7 +36,7 @@ load 'utils/_helpers'
resource_delete "$_RES_RULES_BASE_PATH/0" "parent_type=frontend&parent_name=test_frontend&force_reload=true"
assert_equal "$SC" 204
#
if [[ "$HAPROXY_VERSION" == "2.8" ]]; then
if haproxy_version_ge "2.8"; then
# Deleting the third one
#
resource_delete "$_RES_RULES_BASE_PATH/0" "parent_type=frontend&parent_name=test_frontend&force_reload=true"
Expand Down
5 changes: 3 additions & 2 deletions e2e/tests/http_response_rules/list.bats
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,14 @@ load '../../libs/get_json_path'
load '../../libs/haproxy_config_setup'
load '../../libs/resource_client'
load '../../libs/version'
load '../../libs/haproxy_version'

load 'utils/_helpers'

@test "http_response_rules: Return an array of all HTTP Response Rules from frontend" {
resource_get "$_RES_RULES_BASE_PATH" "parent_type=frontend&parent_name=test_frontend"
assert_equal "$SC" 200
if [[ "$HAPROXY_VERSION" == "2.8" ]]; then
if haproxy_version_ge "2.8"; then
assert_equal "$(get_json_path "$BODY" ".data | length")" 3
else
assert_equal "$(get_json_path "$BODY" ".data | length")" 2
Expand All @@ -39,7 +40,7 @@ load 'utils/_helpers'
assert_equal "$(get_json_path "$BODY" ".data[1].hdr_name")" "X-Del-Frontend"
assert_equal "$(get_json_path "$BODY" ".data[1].cond")" "if"
assert_equal "$(get_json_path "$BODY" ".data[1].cond_test")" "{ src 10.1.0.0/16 }"
if [[ "$HAPROXY_VERSION" == "2.8" ]]; then
if haproxy_version_ge "2.8"; then
assert_equal "$(get_json_path "$BODY" ".data[2].type")" "sc-add-gpc"
assert_equal "$(get_json_path "$BODY" ".data[2].index")" "2"
assert_equal "$(get_json_path "$BODY" ".data[2].sc_id")" "1"
Expand Down
3 changes: 2 additions & 1 deletion e2e/tests/tcp_request_rules/delete.bats
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ load '../../libs/dataplaneapi'
load '../../libs/haproxy_config_setup'
load '../../libs/resource_client'
load '../../libs/version'
load '../../libs/haproxy_version'

load 'utils/_helpers'

Expand All @@ -29,7 +30,7 @@ load 'utils/_helpers'
resource_delete "$_TCP_REQ_RULES_CERTS_BASE_PATH/0" "parent_type=frontend&parent_name=test_frontend&force_reload=true"
assert_equal "$SC" 204

if [[ "$HAPROXY_VERSION" == "2.8" ]]; then
if haproxy_version_ge "2.8"; then
resource_delete "$_TCP_REQ_RULES_CERTS_BASE_PATH/0" "parent_type=frontend&parent_name=test_frontend&force_reload=true"
assert_equal "$SC" 204

Expand Down
4 changes: 2 additions & 2 deletions e2e/tests/tcp_request_rules/list.bats
Original file line number Diff line number Diff line change
Expand Up @@ -28,15 +28,15 @@ load 'utils/_helpers'
resource_get "$_TCP_REQ_RULES_CERTS_BASE_PATH" "parent_type=frontend&parent_name=test_frontend"
assert_equal "$SC" 200

if [[ "$HAPROXY_VERSION" == "2.8" ]]; then
if haproxy_version_ge "2.8"; then
assert_equal "$(get_json_path "${BODY}" ".data | length")" 5
else
assert_equal "$(get_json_path "${BODY}" ".data | length")" 2
fi
assert_equal "$(get_json_path "$BODY" ".data[0].type")" "inspect-delay"
assert_equal "$(get_json_path "$BODY" ".data[1].type")" "content"
assert_equal "$(get_json_path "$BODY" ".data[1].action")" "accept"
if [[ "$HAPROXY_VERSION" == "2.8" ]]; then
if haproxy_version_ge "2.8"; then
assert_equal "$(get_json_path "$BODY" ".data[2].type")" "connection"
assert_equal "$(get_json_path "$BODY" ".data[2].action")" "sc-add-gpc"
assert_equal "$(get_json_path "$BODY" ".data[3].type")" "session"
Expand Down
9 changes: 5 additions & 4 deletions e2e/tests/tcp_response_rules/delete.bats
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ load '../../libs/dataplaneapi'
load '../../libs/haproxy_config_setup'
load '../../libs/resource_client'
load '../../libs/version'
load '../../libs/haproxy_version'

load 'utils/_helpers'

Expand All @@ -29,10 +30,10 @@ load 'utils/_helpers'
resource_delete "$_TCP_RES_RULES_CERTS_BASE_PATH/0" "backend=test_backend&force_reload=true"
assert_equal "$SC" 204

if [[ "$HAPROXY_VERSION" == "2.8" ]]; then
resource_delete "$_TCP_RES_RULES_CERTS_BASE_PATH/0" "backend=test_backend&force_reload=true"
assert_equal "$SC" 204
fi
if haproxy_version_ge "2.8"; then
resource_delete "$_TCP_RES_RULES_CERTS_BASE_PATH/0" "backend=test_backend&force_reload=true"
assert_equal "$SC" 204
fi

resource_delete "$_TCP_RES_RULES_CERTS_BASE_PATH/0" "backend=test_backend&force_reload=true"
assert_equal "$SC" 404
Expand Down
5 changes: 3 additions & 2 deletions e2e/tests/tcp_response_rules/list.bats
Original file line number Diff line number Diff line change
Expand Up @@ -20,21 +20,22 @@ load '../../libs/get_json_path'
load '../../libs/haproxy_config_setup'
load '../../libs/resource_client'
load '../../libs/version'
load '../../libs/haproxy_version'

load 'utils/_helpers'

@test "tcp_response_rules: Return one TCP Response Rule from backend" {
resource_get "$_TCP_RES_RULES_CERTS_BASE_PATH" "backend=test_backend"
assert_equal "$SC" 200

if [[ "$HAPROXY_VERSION" == "2.8" ]]; then
if haproxy_version_ge "2.8"; then
assert_equal "$(get_json_path "${BODY}" ".data | length")" 3
else
assert_equal "$(get_json_path "${BODY}" ".data | length")" 2
fi
assert_equal "$(get_json_path "$BODY" ".data[] | select(.action | contains(\"accept\") ).action")" "accept"
assert_equal "$(get_json_path "$BODY" ".data[] | select(.action | contains(\"reject\") ).action")" "reject"
if [[ "$HAPROXY_VERSION" == "2.8" ]]; then
if haproxy_version_ge "2.8"; then
assert_equal "$(get_json_path "$BODY" ".data[] | select(.action | contains(\"sc-add-gpc\") ).action")" "sc-add-gpc"
fi
}

0 comments on commit cd89926

Please sign in to comment.