169 lines
5.4 KiB
Bash
169 lines
5.4 KiB
Bash
#!/usr/bin/env bash
|
|
set -u -o pipefail
|
|
|
|
TEST_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
source "${TEST_ROOT}/tests/testlib.sh"
|
|
source "${TEST_ROOT}/inc/post-install.inc"
|
|
|
|
POST_TEST_ROOT="$(mktemp -d /tmp/tapm-post-install.XXXXXX)"
|
|
TAPM_HOST_ROOT="$POST_TEST_ROOT"
|
|
|
|
cleanup_post_install_tests() {
|
|
if [[ "$POST_TEST_ROOT" == /tmp/tapm-post-install.* &&
|
|
-d "$POST_TEST_ROOT" ]]; then
|
|
rm -rf -- "$POST_TEST_ROOT"
|
|
fi
|
|
}
|
|
trap cleanup_post_install_tests EXIT
|
|
|
|
mkdir -p \
|
|
"${POST_TEST_ROOT}/etc/apt/apt.conf.d" \
|
|
"${POST_TEST_ROOT}/etc/systemd" \
|
|
"${POST_TEST_ROOT}/etc/logrotate.d" \
|
|
"${POST_TEST_ROOT}/etc/sysctl.d" \
|
|
"${POST_TEST_ROOT}/etc/network" \
|
|
"${POST_TEST_ROOT}/etc" \
|
|
"${POST_TEST_ROOT}/bin"
|
|
|
|
printf 'Acquire::Languages "none";\n' \
|
|
>"${POST_TEST_ROOT}/etc/apt/apt.conf.d/99-disable-translations"
|
|
assert_success "ProxMenux APT language setting recognized" \
|
|
TAPM_POST_EXACT_APT_LANGUAGES
|
|
|
|
printf 'Acquire::Languages "en";\n' \
|
|
>"${POST_TEST_ROOT}/etc/apt/apt.conf.d/99-disable-translations"
|
|
assert_failure "custom APT language setting preserved" \
|
|
TAPM_POST_EXACT_APT_LANGUAGES
|
|
|
|
cat >"${POST_TEST_ROOT}/etc/systemd/journald.conf" <<'EOF'
|
|
[Journal]
|
|
Storage=persistent
|
|
Seal=no
|
|
SystemMaxUse=64M
|
|
RuntimeMaxUse=60M
|
|
MaxLevelStore=info
|
|
EOF
|
|
assert_success "ProxMenux journald replacement recognized" \
|
|
TAPM_POST_PROXMENUX_JOURNALD
|
|
|
|
cat >"${POST_TEST_ROOT}/etc/logrotate.conf" <<'EOF'
|
|
# ProxMenux optimized configuration (Log2RAM-friendly)
|
|
daily
|
|
rotate 7
|
|
size 10M
|
|
copytruncate
|
|
include /etc/logrotate.d
|
|
EOF
|
|
assert_success "ProxMenux logrotate replacement recognized" \
|
|
TAPM_POST_PROXMENUX_LOGROTATE
|
|
|
|
cat >"${POST_TEST_ROOT}/bin/gzip" <<'EOF'
|
|
#!/bin/sh
|
|
GZIP="-1"
|
|
exec /usr/bin/pigz "$@"
|
|
EOF
|
|
cat >"${POST_TEST_ROOT}/bin/gzip.original" <<'EOF'
|
|
#!/bin/sh
|
|
if [ "${1:-}" = "--version" ]; then
|
|
printf 'gzip 1.13\n'
|
|
else
|
|
cat
|
|
fi
|
|
EOF
|
|
cp "${POST_TEST_ROOT}/bin/gzip" "${POST_TEST_ROOT}/bin/pigzwrapper"
|
|
chmod 0755 \
|
|
"${POST_TEST_ROOT}/bin/gzip" \
|
|
"${POST_TEST_ROOT}/bin/gzip.original" \
|
|
"${POST_TEST_ROOT}/bin/pigzwrapper"
|
|
assert_success "ProxMenux gzip wrapper recognized" \
|
|
TAPM_POST_PROXMENUX_GZIP_WRAPPER
|
|
assert_success "ProxMenux gzip wrapper repaired from valid original" \
|
|
TAPM_POST_REPAIR_GZIP
|
|
assert_failure "repaired gzip is no longer recognized as wrapper" \
|
|
TAPM_POST_PROXMENUX_GZIP_WRAPPER
|
|
assert_failure "obsolete gzip original removed after verification" \
|
|
test -e "${POST_TEST_ROOT}/bin/gzip.original"
|
|
|
|
assert_success "kernel panic profile written" TAPM_POST_CONFIGURE_PANIC
|
|
assert_success "inotify profile written" TAPM_POST_CONFIGURE_LIMITS
|
|
assert_success "memory profile written" TAPM_POST_CONFIGURE_MEMORY
|
|
assert_success "network profile written" TAPM_POST_CONFIGURE_NETWORK
|
|
assert_success "BBR profile written" TAPM_POST_CONFIGURE_BBR
|
|
assert_equal 30 \
|
|
"$(awk '/kernel.panic =/ {print $3}' \
|
|
"${POST_TEST_ROOT}/etc/sysctl.d/99-ta-proxmenu-kernel-panic.conf")" \
|
|
"kernel panic delay"
|
|
assert_equal 524288 \
|
|
"$(awk '/max_user_watches/ {print $3}' \
|
|
"${POST_TEST_ROOT}/etc/sysctl.d/99-ta-proxmenu-limits.conf")" \
|
|
"inotify watch limit"
|
|
assert_equal 10 \
|
|
"$(awk '/vm.swappiness/ {print $3}' \
|
|
"${POST_TEST_ROOT}/etc/sysctl.d/99-ta-proxmenu-memory.conf")" \
|
|
"host swappiness"
|
|
|
|
cat >"${POST_TEST_ROOT}/etc/vzdump.conf" <<'EOF'
|
|
# existing setting
|
|
bwlimit: 50000
|
|
pigz: 4
|
|
pigz: 8
|
|
EOF
|
|
assert_success "vzdump key replacement" \
|
|
TAPM_POST_SET_COLON_KEY /etc/vzdump.conf pigz 1
|
|
assert_equal 1 \
|
|
"$(awk -F: '/^pigz:/ {gsub(/[[:space:]]/, "", $2); print $2}' \
|
|
"${POST_TEST_ROOT}/etc/vzdump.conf")" \
|
|
"vzdump pigz setting is unique"
|
|
assert_success "vzdump key removal" \
|
|
TAPM_POST_REMOVE_COLON_KEY /etc/vzdump.conf bwlimit
|
|
assert_failure "vzdump bandwidth setting removed" \
|
|
grep -q '^bwlimit:' "${POST_TEST_ROOT}/etc/vzdump.conf"
|
|
|
|
printf 'deb should-be-backed-up\n' \
|
|
>"${POST_TEST_ROOT}/etc/apt/sources.list"
|
|
TAPM_POST_BACKUP_BASE='/var/backups/ta-proxmenu/post-install'
|
|
test_post_backup() {
|
|
TAPM_POST_BACKUP >/dev/null
|
|
}
|
|
assert_success "host configuration backup created" test_post_backup
|
|
printf 'changed\n' >"${POST_TEST_ROOT}/etc/apt/sources.list"
|
|
assert_success "host configuration backup restored" \
|
|
TAPM_POST_RESTORE_BACKUP "$TAPM_POST_LAST_BACKUP"
|
|
assert_equal 'deb should-be-backed-up' \
|
|
"$(cat "${POST_TEST_ROOT}/etc/apt/sources.list")" \
|
|
"restored APT sources"
|
|
|
|
assert_success "APT source layout enforced in fixture root" \
|
|
TAPM_POST_ENSURE_APT_LAYOUT
|
|
assert_equal 0 \
|
|
"$(wc -c <"${POST_TEST_ROOT}/etc/apt/sources.list" | tr -d ' ')" \
|
|
"main APT sources list is empty"
|
|
|
|
mkdir -p \
|
|
"${POST_TEST_ROOT}/etc/security/limits.d" \
|
|
"${POST_TEST_ROOT}/usr/local/share/proxmenux" \
|
|
"${POST_TEST_ROOT}/usr/local/bin"
|
|
cat >"${POST_TEST_ROOT}/etc/sysctl.d/99-network.conf" <<'EOF'
|
|
# Custom administrator network profile
|
|
net.ipv4.ip_forward = 1
|
|
EOF
|
|
cat >"${POST_TEST_ROOT}/etc/security/limits.d/99-limits.conf" <<'EOF'
|
|
# ProxMenux configuration
|
|
* soft nofile 1048576
|
|
EOF
|
|
cat >"${POST_TEST_ROOT}/usr/local/bin/menu" <<'EOF'
|
|
#!/bin/sh
|
|
exec /usr/local/share/proxmenux/menu.sh
|
|
EOF
|
|
assert_success "recognized ProxMenux settings cleaned" \
|
|
TAPM_POST_CLEAN_PROXMENUX_SETTINGS
|
|
assert_success "custom similarly named network profile retained" \
|
|
test -f "${POST_TEST_ROOT}/etc/sysctl.d/99-network.conf"
|
|
assert_failure "recognized ProxMenux limits profile removed" \
|
|
test -e "${POST_TEST_ROOT}/etc/security/limits.d/99-limits.conf"
|
|
assert_success "ProxMenux application removed" TAPM_POST_REMOVE_PROXMENUX_APP
|
|
assert_failure "ProxMenux menu launcher removed" \
|
|
test -e "${POST_TEST_ROOT}/usr/local/bin/menu"
|
|
|
|
finish_tests
|