diff --git a/xCAT-test/bats/post_xcat_download_policy.bats b/xCAT-test/bats/post_xcat_download_policy.bats
index ec643410c..41810bb97 100644
--- a/xCAT-test/bats/post_xcat_download_policy.bats
+++ b/xCAT-test/bats/post_xcat_download_policy.bats
@@ -28,25 +28,37 @@ capture_install_scriptlib_wget()
capture_xcatdsklspost_wget()
{
local wget_log="$1"
+ local host_init_log="${BATS_TEST_TMPDIR}/host-init.log"
+ local download_log="${BATS_TEST_TMPDIR}/xcatdsklspost-wget-errors.log"
+
+ cat() { printf 'cat %s\n' "$*" >>"$host_init_log"; return 1; }
+ grep()
+ {
+ printf 'grep %s\n' "$*" >>"$host_init_log"
+ command grep "$@"
+ }
+ dirname() { printf 'dirname %s\n' "$*" >>"$host_init_log"; return 1; }
+
+ XCATDSKLSPOST_SOURCE_ONLY=1
+ XCAT_WGET_LOG="$download_log"
+ source "$XCATDSKLSPOST"
+ [ ! -e "$host_init_log" ] || return 1
+ [ "$XCAT_WGET_LOG" = "$download_log" ] || return 1
+ unset -f cat grep dirname
xcatpost="${BATS_TEST_TMPDIR}/xcatpost"
INSTALLDIR=/install
-
echolog() { :; }
sleep() { :; }
- grep()
- {
- [ "${*: -1}" = "/tmp/wget.log" ] && return 1
- command grep "$@"
- }
wget()
{
printf '%s\n' "$*" >"$wget_log"
+ printf '%s\n' 'mock wget stderr' >&2
return 0
}
- XCATDSKLSPOST_SOURCE_ONLY=1 source "$XCATDSKLSPOST"
download_postscripts 192.0.2.10:80
+ [ "$(read_file_or_empty "$download_log")" = "mock wget stderr" ]
}
assert_download_policy()
diff --git a/xCAT-test/bats/remoteshell_restart.bats b/xCAT-test/bats/remoteshell_restart.bats
index 1ddce6cfc..b4727d7fc 100644
--- a/xCAT-test/bats/remoteshell_restart.bats
+++ b/xCAT-test/bats/remoteshell_restart.bats
@@ -1,5 +1,7 @@
#!/usr/bin/env bats
+bats_require_minimum_version 1.5.0
+
load 'helpers/shell_source'
setup()
@@ -11,6 +13,8 @@ setup()
run_restart_fallback()
{
+ local poll_count=0
+
ps()
{
cat <<'EOF'
@@ -19,14 +23,23 @@ EOF
}
kill()
{
- printf '%s\n' "$*" >>"$KILL_LOG"
- [ "$1" = "-0" ] && return 1
- return 0
+ if [ "$1" = "-9" ]; then
+ printf 'kill %s\n' "$*" >>"$EVENT_LOG"
+ return 0
+ fi
+
+ poll_count=$((poll_count + 1))
+ if [ "$poll_count" -eq 1 ]; then
+ printf 'poll %s alive\n' "$2" >>"$EVENT_LOG"
+ return 0
+ fi
+ printf 'poll %s gone\n' "$2" >>"$EVENT_LOG"
+ return 1
}
sleep() { :; }
sshd()
{
- printf '%s\n' start >>"$SSHD_LOG"
+ printf '%s\n' start >>"$EVENT_LOG"
}
source "$XCATLIB"
@@ -44,16 +57,14 @@ run_wait_for_processes()
return 0
}
-@test "remoteshell restart fallback sends an uncatchable signal before starting sshd" {
- KILL_LOG="${BATS_TEST_TMPDIR}/kill.log"
- SSHD_LOG="${BATS_TEST_TMPDIR}/sshd.log"
- export KILL_LOG SSHD_LOG
+@test "remoteshell restart fallback kills, waits, then starts sshd" {
+ EVENT_LOG="${BATS_TEST_TMPDIR}/events.log"
+ export EVENT_LOG
run run_restart_fallback
[ "$status" -eq 0 ]
- grep -Fxq -- '-9 4321' "$KILL_LOG"
- ! grep -Eq '^9( |$)' "$KILL_LOG"
- [ "$(read_file_or_empty "$SSHD_LOG")" = "start" ]
+ [ "$(read_file_or_empty "$EVENT_LOG")" = $'kill -9 4321\npoll 4321 alive\npoll 4321 gone\nstart' ]
+ run -1 grep -Eq '^kill 9( |$)' "$EVENT_LOG"
}
@test "remoteshell wait loop reports a still-running process and gives up" {
diff --git a/xCAT-test/bats/sles_pre_script.bats b/xCAT-test/bats/sles_pre_script.bats
index f35153200..bd8387ab0 100644
--- a/xCAT-test/bats/sles_pre_script.bats
+++ b/xCAT-test/bats/sles_pre_script.bats
@@ -1,5 +1,7 @@
#!/usr/bin/env bats
+bats_require_minimum_version 1.5.0
+
load 'helpers/shell_source'
setup()
@@ -26,9 +28,9 @@ EOF
run set_sles11_uefi_bootloader "$cmdline" "$profile"
[ "$status" -eq 0 ]
grep -Fxq 'elilo' "$profile"
- ! grep -q 'mbr' "$profile"
- ! grep -q 'mbr' "$profile"
+ run -1 grep -q '> /tmp/wget.log
+ wget -N --waitretry=10 --random-wait -T 60 http://$server$TFTPDIR/mypostscripts/mypostscript.$node -P /$xcatpost 2>> "$XCAT_WGET_LOG"
rc=$?
# if no error and the file was downloaded
if [ $rc -eq 0 ] && [ -f /$xcatpost/mypostscript.$node ]; then
@@ -155,16 +158,16 @@ download_postscripts()
# These dispatcher scripts are not needed by the legacy netboot post
# path. Newer wget parses HTML-looking regex strings inside downloaded
# scripts and fails the whole recursive download on bogus URLs.
- export LANG=C; wget -l inf -nH -N -r --waitretry=10 --random-wait -e robots=off -T 60 -nH --cut-dirs=2 --reject "index.html*,post.xcat.ng,post.xcat.rhels10" --no-parent http://$server$INSTALLDIR/postscripts/ -P /$xcatpost 2> /tmp/wget.log
+ export LANG=C; wget -l inf -nH -N -r --waitretry=10 --random-wait -e robots=off -T 60 -nH --cut-dirs=2 --reject "index.html*,post.xcat.ng,post.xcat.rhels10" --no-parent http://$server$INSTALLDIR/postscripts/ -P /$xcatpost 2> "$XCAT_WGET_LOG"
rc=$?
if [ $rc -eq 0 ]; then
# return from wget was 0 but some OS do not return errors, so we
# have additional checks for
# failed: Connection httpd not running
# 404: Not Found - if directory does not exist
- grep -i -E "... failed: Connection refused.$" /tmp/wget.log
+ grep -i -E "... failed: Connection refused.$" "$XCAT_WGET_LOG"
rc1=$?
- grep -i -E "ERROR 404: Not Found.$" /tmp/wget.log
+ grep -i -E "ERROR 404: Not Found.$" "$XCAT_WGET_LOG"
rc2=$?
# check to see no errors at all, grep returns 1
if [ $rc1 -eq 1 ] && [ $rc2 -eq 1 ]; then