Skip to content
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
26 changes: 21 additions & 5 deletions scripts/dappnode_test_install.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,11 @@

HOME=${HOME:-/home/dappnode}
DAPPNODE_DIR="/usr/src/dappnode"
LOG_FILE="${DAPPNODE_DIR}/logs/dappnode_test_install.log"

# This runs on its own console, so also keep a log for support and the E2E tests.
mkdir -p "$(dirname "${LOG_FILE}")"
exec > >(tee -a "${LOG_FILE}") 2>&1

error_exit() {
echo -e "\e[31m Error on installation!!! \n \e[0m"
Expand Down Expand Up @@ -51,16 +56,27 @@ for comp in "${components[@]}"; do
fi
done

# Use explicit formats: the default `docker images` columns differ between
# Docker versions, and newer ones put the image size where the ID used to be.
echo -e "\e[32m docker image versions:\e[0m"
docker images | grep dappnode | awk '{print $1, $2}'
docker images --format '{{.Repository}}:{{.Tag}} {{.ID}}' | grep dappnode

echo -e "\e[32m doing docker image integrity test...\e[0m"
imgs=$(docker images | grep dappnode | awk '{print $3}')
imgs=$(docker images --format '{{.Repository}}:{{.Tag}}' | grep dappnode)

corrupted_imgs=()
for img in $imgs; do
# shellcheck disable=SC2028
docker save "$img" >/dev/null && echo -ne "\e[32mImage $img OK\n\e[0m" || echo "\e[31mImage $img Corrupted!\n\e[0m"
if docker save "$img" >/dev/null; then
echo -e "\e[32mImage $img OK\e[0m"
else
echo -e "\e[31mImage $img Corrupted!\e[0m"
corrupted_imgs+=("$img")
fi
done

rm -f /usr/src/dappnode/.firstboot
read -r -p "Test completed successfully. Press enter to continue"
if [ "${#corrupted_imgs[@]}" -gt 0 ]; then
read -r -p "Test completed with corrupted images: ${corrupted_imgs[*]}. Press enter to continue"
else
read -r -p "Test completed successfully. Press enter to continue"
fi
21 changes: 20 additions & 1 deletion test/e2e_iso_install.sh
Original file line number Diff line number Diff line change
Expand Up @@ -485,7 +485,26 @@ test -x /usr/src/dappnode/scripts/dappnode_install.sh
test -s /usr/src/dappnode/logs/iso_install.log
test -s /usr/src/dappnode/logs/dappnode_install.log
test ! -e /usr/src/dappnode/.firstboot
! grep -Fq '/usr/src/dappnode/scripts/dappnode_install.sh' /etc/rc.local
# `! cmd` never trips `set -e`, so negative checks need an explicit exit.
if grep -Fq '/usr/src/dappnode/scripts/dappnode_install.sh' /etc/rc.local; then
echo "[ERROR] rc.local still runs the DAppNode installer"
exit 1
fi

# The first-boot self-test runs on its own console; its log is the only record.
first_boot_test_log=/usr/src/dappnode/logs/dappnode_test_install.log
test -s "${first_boot_test_log}"
if grep -Fq 'Corrupted' "${first_boot_test_log}"; then
echo "[ERROR] The first-boot test reported corrupted images:"
grep -F 'Image ' "${first_boot_test_log}"
exit 1
fi
if ! grep -Fq 'Test completed successfully' "${first_boot_test_log}"; then
echo "[ERROR] The first-boot test did not report success:"
tail -n 30 "${first_boot_test_log}"
exit 1
fi
grep -F 'Image ' "${first_boot_test_log}"
docker --version
docker compose version
docker info >/dev/null
Expand Down
Loading