testscript
This commit is contained in:
parent
9286678bc0
commit
f6130d653e
@ -1,9 +1,10 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright (c) 2021-2025 tteck
|
||||
# Author: tteck (tteckster)
|
||||
# Copyright (c) 2021-2025 community-scripts ORG
|
||||
# Author: Test Suite for tools.func
|
||||
# License: MIT
|
||||
# https://github.com/community-scripts/ProxmoxVED/raw/main/LICENSE
|
||||
# Purpose: Comprehensive test of all setup_* functions from tools.func
|
||||
|
||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
||||
color
|
||||
@ -13,31 +14,274 @@ setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
msg_info "Installing Dependencies"
|
||||
$STD apt-get install -y gpg
|
||||
msg_ok "Installed Dependencies"
|
||||
msg_info "Installing Base Dependencies"
|
||||
$STD apt-get install -y curl wget gpg jq git build-essential
|
||||
msg_ok "Installed Base Dependencies"
|
||||
|
||||
#install_vaapi_userland_interactive
|
||||
# Helper function to test and validate installation
|
||||
test_and_validate() {
|
||||
local test_name="$1"
|
||||
local command_check="$2"
|
||||
local version_cmd="$3"
|
||||
|
||||
#setup_mariadb
|
||||
echo -e "\n${GN}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${CL}"
|
||||
echo -e "${GN}Testing: ${test_name}${CL}"
|
||||
echo -e "${GN}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${CL}\n"
|
||||
|
||||
#FFMPEG_VERSION="n7.1.1" FFMPEG_TYPE="full" setup_ffmpeg
|
||||
if command -v "$command_check" &>/dev/null; then
|
||||
local version_output
|
||||
version_output=$($version_cmd 2>&1 | head -n1)
|
||||
msg_ok "${test_name} installed: ${version_output}"
|
||||
return 0
|
||||
else
|
||||
msg_error "${test_name} validation FAILED - command not found: $command_check"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
#fetch_and_deploy_gh_release "argus" "release-argus/Argus" "singlefile" "latest" "/opt/argus" "Argus-.*linux-amd64"
|
||||
#fetch_and_deploy_gh_release "planka" "plankanban/planka" "prebuild" "latest" "/opt/planka" "planka-prebuild.zip"
|
||||
# ==============================================================================
|
||||
# 1. YQ - YAML Processor
|
||||
# ==============================================================================
|
||||
echo -e "\n${YW}[1/20] Testing: YQ${CL}"
|
||||
setup_yq
|
||||
test_and_validate "yq" "yq" "yq --version"
|
||||
|
||||
#PYTHON_VERSION="3.12" setup_uv
|
||||
# ==============================================================================
|
||||
# 2. ADMINER - Database Management Tool
|
||||
# ==============================================================================
|
||||
echo -e "\n${YW}[2/20] Testing: Adminer${CL}"
|
||||
setup_adminer
|
||||
if [ -f "/usr/share/adminer/latest.php" ]; then
|
||||
msg_ok "Adminer installed at /usr/share/adminer/latest.php"
|
||||
else
|
||||
msg_error "Adminer installation FAILED"
|
||||
fi
|
||||
|
||||
#PHP_VERSION=8.2 PHP_FPM=YES setup_php
|
||||
#setup_composer
|
||||
# ==============================================================================
|
||||
# 3. LOCAL IP HELPER
|
||||
# ==============================================================================
|
||||
echo -e "\n${YW}[3/20] Testing: Local IP Helper${CL}"
|
||||
setup_local_ip_helper
|
||||
if systemctl is-enabled local-ip-helper.service &>/dev/null; then
|
||||
msg_ok "Local IP Helper service enabled"
|
||||
else
|
||||
msg_error "Local IP Helper service NOT enabled"
|
||||
fi
|
||||
|
||||
# Example Setting for Test
|
||||
#NODE_MODULE="pnpm@10.1,yarn"
|
||||
#RELEASE=$(curl_handler -fsSL https://api.github.com/repos/babybuddy/babybuddy/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||
#msg_ok "Get Release $RELEASE"
|
||||
#NODE_VERSION="24" NODE_MODULE="yarn" setup_nodejs
|
||||
# ==============================================================================
|
||||
# 4. CLICKHOUSE - Columnar Database
|
||||
# ==============================================================================
|
||||
echo -e "\n${YW}[4/20] Testing: ClickHouse${CL}"
|
||||
setup_clickhouse
|
||||
test_and_validate "ClickHouse" "clickhouse-server" "clickhouse-server --version"
|
||||
systemctl status clickhouse-server --no-pager | head -n5
|
||||
|
||||
#PG_VERSION="16" setup_postgresql
|
||||
# ==============================================================================
|
||||
# 5. POSTGRESQL - Relational Database (Version 17)
|
||||
# ==============================================================================
|
||||
echo -e "\n${YW}[5/20] Testing: PostgreSQL 17${CL}"
|
||||
PG_VERSION=17 setup_postgresql
|
||||
test_and_validate "PostgreSQL" "psql" "psql --version"
|
||||
sudo -u postgres psql -c "SELECT version();" | head -n3
|
||||
|
||||
# ==============================================================================
|
||||
# 6. MARIADB - MySQL Fork (Version 11.4)
|
||||
# ==============================================================================
|
||||
echo -e "\n${YW}[6/20] Testing: MariaDB 11.4${CL}"
|
||||
MARIADB_VERSION="11.4" setup_mariadb
|
||||
test_and_validate "MariaDB" "mariadb" "mariadb --version"
|
||||
mariadb -e "SELECT VERSION();"
|
||||
|
||||
# ==============================================================================
|
||||
# 7. MYSQL - Remove MariaDB first, then install MySQL 8.0
|
||||
# ==============================================================================
|
||||
echo -e "\n${YW}[7/20] Testing: MySQL 8.0 (removing MariaDB first)${CL}"
|
||||
msg_info "Removing MariaDB to avoid conflicts"
|
||||
$STD systemctl stop mariadb
|
||||
$STD apt-get purge -y mariadb-server mariadb-client mariadb-common
|
||||
$STD apt-get autoremove -y
|
||||
$STD rm -rf /etc/mysql /var/lib/mysql
|
||||
msg_ok "MariaDB removed"
|
||||
|
||||
MYSQL_VERSION="8.0" setup_mysql
|
||||
test_and_validate "MySQL" "mysql" "mysql --version"
|
||||
mysql -e "SELECT VERSION();"
|
||||
|
||||
# ==============================================================================
|
||||
# 8. MONGODB - NoSQL Database (Version 8.0 - requires AVX CPU)
|
||||
# ==============================================================================
|
||||
echo -e "\n${YW}[8/20] Testing: MongoDB 8.0${CL}"
|
||||
if grep -q avx /proc/cpuinfo; then
|
||||
MONGO_VERSION="8.0" setup_mongodb
|
||||
test_and_validate "MongoDB" "mongod" "mongod --version"
|
||||
systemctl status mongod --no-pager | head -n5
|
||||
else
|
||||
msg_info "Skipping MongoDB - CPU does not support AVX"
|
||||
fi
|
||||
|
||||
# ==============================================================================
|
||||
# 9. NODE.JS - JavaScript Runtime (Version 22 with modules)
|
||||
# ==============================================================================
|
||||
echo -e "\n${YW}[9/20] Testing: Node.js 22 with yarn, pnpm, pm2${CL}"
|
||||
NODE_VERSION="22" NODE_MODULE="yarn,pnpm@10.1.0,pm2" setup_nodejs
|
||||
test_and_validate "Node.js" "node" "node --version"
|
||||
test_and_validate "npm" "npm" "npm --version"
|
||||
test_and_validate "yarn" "yarn" "yarn --version"
|
||||
test_and_validate "pnpm" "pnpm" "pnpm --version"
|
||||
test_and_validate "pm2" "pm2" "pm2 --version"
|
||||
|
||||
# ==============================================================================
|
||||
# 10. PYTHON (via UV) - Version 3.12
|
||||
# ==============================================================================
|
||||
echo -e "\n${YW}[10/20] Testing: Python 3.12 via uv${CL}"
|
||||
PYTHON_VERSION="3.12" setup_uv
|
||||
test_and_validate "uv" "uv" "uv --version"
|
||||
if [ -d "/opt/venv" ]; then
|
||||
source /opt/venv/bin/activate
|
||||
test_and_validate "Python" "python" "python --version"
|
||||
deactivate
|
||||
fi
|
||||
|
||||
# ==============================================================================
|
||||
# 11. PHP - Version 8.3 with FPM and modules
|
||||
# ==============================================================================
|
||||
echo -e "\n${YW}[11/20] Testing: PHP 8.3 with FPM${CL}"
|
||||
PHP_VERSION="8.3" PHP_FPM="YES" PHP_MODULE="redis,imagick,apcu,zip,mbstring" setup_php
|
||||
test_and_validate "PHP" "php" "php --version"
|
||||
php -m | grep -E "redis|imagick|apcu|zip|mbstring"
|
||||
systemctl status php8.3-fpm --no-pager | head -n5
|
||||
|
||||
# ==============================================================================
|
||||
# 12. COMPOSER - PHP Dependency Manager
|
||||
# ==============================================================================
|
||||
echo -e "\n${YW}[12/20] Testing: Composer${CL}"
|
||||
setup_composer
|
||||
test_and_validate "Composer" "composer" "composer --version"
|
||||
|
||||
# ==============================================================================
|
||||
# 13. JAVA - Temurin JDK 21
|
||||
# ==============================================================================
|
||||
echo -e "\n${YW}[13/20] Testing: Java (Temurin 21)${CL}"
|
||||
JAVA_VERSION="21" setup_java
|
||||
test_and_validate "Java" "java" "java --version"
|
||||
echo -e "\nJava Home: $JAVA_HOME"
|
||||
|
||||
# ==============================================================================
|
||||
# 14. GO - Golang (latest)
|
||||
# ==============================================================================
|
||||
echo -e "\n${YW}[14/20] Testing: Go (latest)${CL}"
|
||||
GO_VERSION="latest" setup_go
|
||||
test_and_validate "Go" "go" "go version"
|
||||
|
||||
# ==============================================================================
|
||||
# 15. RUBY - Version 3.4.1 with Rails
|
||||
# ==============================================================================
|
||||
echo -e "\n${YW}[15/20] Testing: Ruby 3.4.1 with Rails${CL}"
|
||||
RUBY_VERSION="3.4.1" RUBY_INSTALL_RAILS="true" setup_ruby
|
||||
test_and_validate "Ruby" "ruby" "ruby --version"
|
||||
test_and_validate "Rails" "rails" "rails --version"
|
||||
|
||||
# ==============================================================================
|
||||
# 16. RUST - Stable toolchain with cargo-edit
|
||||
# ==============================================================================
|
||||
echo -e "\n${YW}[16/20] Testing: Rust (stable)${CL}"
|
||||
RUST_TOOLCHAIN="stable" RUST_CRATES="cargo-edit" setup_rust
|
||||
source "$HOME/.cargo/env"
|
||||
test_and_validate "Rust" "rustc" "rustc --version"
|
||||
test_and_validate "Cargo" "cargo" "cargo --version"
|
||||
|
||||
# ==============================================================================
|
||||
# 17. GHOSTSCRIPT - PDF/PostScript processor
|
||||
# ==============================================================================
|
||||
echo -e "\n${YW}[17/20] Testing: Ghostscript${CL}"
|
||||
setup_gs
|
||||
test_and_validate "Ghostscript" "gs" "gs --version"
|
||||
|
||||
# ==============================================================================
|
||||
# 18. IMAGEMAGICK - Image processing from source
|
||||
# ==============================================================================
|
||||
echo -e "\n${YW}[18/20] Testing: ImageMagick${CL}"
|
||||
setup_imagemagick
|
||||
test_and_validate "ImageMagick" "magick" "magick --version"
|
||||
|
||||
# ==============================================================================
|
||||
# 19. FFMPEG - Full build (n7.1.1)
|
||||
# ==============================================================================
|
||||
echo -e "\n${YW}[19/20] Testing: FFmpeg (full build)${CL}"
|
||||
FFMPEG_VERSION="n7.1.1" FFMPEG_TYPE="full" setup_ffmpeg
|
||||
test_and_validate "FFmpeg" "ffmpeg" "ffmpeg -version"
|
||||
ffmpeg -encoders 2>/dev/null | grep -E "libx264|libvpx|libmp3lame"
|
||||
|
||||
# ==============================================================================
|
||||
# 20. GITHUB RELEASE DEPLOYMENTS
|
||||
# ==============================================================================
|
||||
echo -e "\n${YW}[20/20] Testing: GitHub Release Deployments${CL}"
|
||||
|
||||
# Test 1: Tarball deployment
|
||||
msg_info "Testing: Tarball deployment (Hanko)"
|
||||
fetch_and_deploy_gh_release "hanko" "teamhanko/hanko" "tarball" "latest" "/opt/hanko-test"
|
||||
if [ -d "/opt/hanko-test" ]; then
|
||||
msg_ok "Hanko tarball deployed to /opt/hanko-test"
|
||||
ls -lah /opt/hanko-test | head -n10
|
||||
else
|
||||
msg_error "Hanko tarball deployment FAILED"
|
||||
fi
|
||||
|
||||
# Test 2: Single binary deployment
|
||||
msg_info "Testing: Single binary deployment (Argus)"
|
||||
fetch_and_deploy_gh_release "argus" "release-argus/Argus" "singlefile" "latest" "/opt/argus" "Argus-.*linux-amd64"
|
||||
if [ -f "/opt/argus/argus" ]; then
|
||||
msg_ok "Argus binary deployed"
|
||||
/opt/argus/argus version 2>&1 || echo "Binary exists at /opt/argus/argus"
|
||||
else
|
||||
msg_error "Argus binary deployment FAILED"
|
||||
fi
|
||||
|
||||
# ==============================================================================
|
||||
# FINAL SUMMARY
|
||||
# ==============================================================================
|
||||
echo -e "\n${GN}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${CL}"
|
||||
echo -e "${GN} TEST SUITE SUMMARY${CL}"
|
||||
echo -e "${GN}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${CL}\n"
|
||||
|
||||
msg_info "Generating installation report"
|
||||
{
|
||||
echo "=== tools.func Test Suite Report ==="
|
||||
echo "Date: $(date)"
|
||||
echo "Hostname: $(hostname)"
|
||||
echo ""
|
||||
echo "--- Installed Versions ---"
|
||||
command -v yq &>/dev/null && echo "yq: $(yq --version 2>&1)"
|
||||
command -v clickhouse-server &>/dev/null && echo "ClickHouse: $(clickhouse-server --version 2>&1 | head -n1)"
|
||||
command -v psql &>/dev/null && echo "PostgreSQL: $(psql --version)"
|
||||
command -v mysql &>/dev/null && echo "MySQL: $(mysql --version)"
|
||||
command -v mongod &>/dev/null && echo "MongoDB: $(mongod --version 2>&1 | head -n1)"
|
||||
command -v node &>/dev/null && echo "Node.js: $(node --version)"
|
||||
command -v npm &>/dev/null && echo "npm: $(npm --version)"
|
||||
command -v yarn &>/dev/null && echo "yarn: $(yarn --version)"
|
||||
command -v pnpm &>/dev/null && echo "pnpm: $(pnpm --version)"
|
||||
command -v uv &>/dev/null && echo "uv: $(uv --version)"
|
||||
command -v php &>/dev/null && echo "PHP: $(php --version | head -n1)"
|
||||
command -v composer &>/dev/null && echo "Composer: $(composer --version)"
|
||||
command -v java &>/dev/null && echo "Java: $(java --version 2>&1 | head -n1)"
|
||||
command -v go &>/dev/null && echo "Go: $(go version)"
|
||||
command -v ruby &>/dev/null && echo "Ruby: $(ruby --version)"
|
||||
command -v rustc &>/dev/null && echo "Rust: $(rustc --version)"
|
||||
command -v gs &>/dev/null && echo "Ghostscript: $(gs --version)"
|
||||
command -v magick &>/dev/null && echo "ImageMagick: $(magick --version | head -n1)"
|
||||
command -v ffmpeg &>/dev/null && echo "FFmpeg: $(ffmpeg -version 2>&1 | head -n1)"
|
||||
echo ""
|
||||
echo "--- Service Status ---"
|
||||
systemctl is-active clickhouse-server &>/dev/null && echo "ClickHouse: Active"
|
||||
systemctl is-active postgresql &>/dev/null && echo "PostgreSQL: Active"
|
||||
systemctl is-active mysql &>/dev/null && echo "MySQL: Active"
|
||||
systemctl is-active mongod &>/dev/null && echo "MongoDB: Active"
|
||||
systemctl is-active php8.3-fpm &>/dev/null && echo "PHP-FPM: Active"
|
||||
systemctl is-active local-ip-helper &>/dev/null && echo "Local IP Helper: Active"
|
||||
} > ~/tools-func-test-report.txt
|
||||
|
||||
cat ~/tools-func-test-report.txt
|
||||
msg_ok "Test report saved to ~/tools-func-test-report.txt"
|
||||
|
||||
motd_ssh
|
||||
customize
|
||||
|
Loading…
x
Reference in New Issue
Block a user