Skip to content

Commit c90ec2f

Browse files
committed
Polish PMIx test
1 parent 8260d61 commit c90ec2f

File tree

2 files changed

+40
-33
lines changed

2 files changed

+40
-33
lines changed

tests/test_pmix_hook.bats

Lines changed: 40 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,25 @@ setup() {
22
# Create temporary directories
33
TMP_HOOKS_DIR=$(mktemp -d)
44
TMP_HOOK_LOG_DIR="$(mktemp -d)"
5+
6+
# Print hook stdout/stderr
57
HOOK_OUT="${TMP_HOOK_LOG_DIR}/out.log"
68
HOOK_ERR="${TMP_HOOK_LOG_DIR}/err.log"
79

10+
touch "${HOOK_OUT}" "${HOOK_ERR}"
11+
tail -fn +1 "${HOOK_OUT}" &
12+
HOOK_OUT_PID=$!
13+
tail -fn +1 "${HOOK_ERR}" &
14+
HOOK_ERR_PID=$!
15+
816
# Prepare mock 'scontrol'
917
TMP_BIN_DIR=$(mktemp -d)
10-
cp ${BATS_TEST_DIRNAME}/test_helper/scontrol-mock ${TMP_BIN_DIR}/scontrol
18+
cp ${BATS_TEST_DIRNAME}/assets/scontrol-mock ${TMP_BIN_DIR}/scontrol
1119

12-
# Prepare mock PMIx directories.
20+
# Prepare mock PMIx directories
1321
SLURM_JOB_UID=0
1422
SLURM_JOB_ID=1
1523
SLURM_STEP_ID=2
16-
SPMIX_APPDIR_UID_DIR=/tmp/spmix_appdir_${SLURM_JOB_UID}_${SLURM_JOB_ID}.${SLURM_STEP_ID}
17-
SPMIX_APPDIR_NO_UID_DIR=/tmp/spmix_appdir_${SLURM_JOB_ID}.${SLURM_STEP_ID}
1824
PMIX_DIR=/tmp/spool/slurmd/pmix.${SLURM_JOB_ID}.${SLURM_STEP_ID}
1925
mkdir -p ${PMIX_DIR}
2026

@@ -36,53 +42,54 @@ setup() {
3642
"stages": ["createContainer"]
3743
}
3844
EOF
39-
40-
# For local tests,
41-
#"path": "/home/gwangmu/Projects/sarus/sarus-hooks/build/src/pmix/pmix_hook"
4245
}
4346

4447
teardown() {
48+
kill "${HOOK_OUT_PID}" "${HOOK_ERR_PID}"
4549
rm -rf "${TMP_HOOKS_DIR}" "${TMP_HOOK_LOG_DIR}" "${TMP_BIN_DIR}" "${PMIX_DIR}"
4650
}
4751

52+
@test "pmix_hook binds directory (nofail spmix_appdir)" {
53+
SPMIX_APPDIR_UID_DIR=/tmp/spmix_appdir_${SLURM_JOB_UID}_${SLURM_JOB_ID}.${SLURM_STEP_ID}
54+
rm -rf ${SPMIX_APPDIR_UID_DIR} || true
55+
export SLURM_JOB_UID=${SLURM_JOB_UID}
56+
57+
podman --runtime=crun \
58+
--hooks-dir "${TMP_HOOKS_DIR}" \
59+
run --rm \
60+
--annotation run.oci.hooks.stdout="${HOOK_OUT}" \
61+
--annotation run.oci.hooks.stderr="${HOOK_ERR}" \
62+
alpine sh -c "[ -d ${PMIX_DIR} ] || ! echo \"error: no pmix dir\""
63+
}
64+
4865
@test "pmix_hook binds directory (with SLURM_JOB_UID)" {
66+
SPMIX_APPDIR_UID_DIR=/tmp/spmix_appdir_${SLURM_JOB_UID}_${SLURM_JOB_ID}.${SLURM_STEP_ID}
4967
mkdir -p ${SPMIX_APPDIR_UID_DIR}
5068
export SLURM_JOB_UID=${SLURM_JOB_UID}
5169

52-
podman --hooks-dir "${TMP_HOOKS_DIR}" run --rm \
53-
alpine sh -c "[ -d ${SPMIX_APPDIR_DIR} ] && [ -d ${PMIX_DIR} ]"
54-
55-
# For hook logs
56-
# podman --runtime=crun \
57-
# --hooks-dir "${TMP_HOOKS_DIR}" \
58-
# run --rm \
59-
# --annotation com.hooks.logging.level=0 \
60-
# --annotation run.oci.hooks.stdout="${HOOK_OUT}" \
61-
# --annotation run.oci.hooks.stderr="${HOOK_ERR}" \
62-
# alpine sh -c "[ -d ${SPMIX_APPDIR_DIR} ] && [ -d ${PMIX_DIR} ]" || true
63-
# cat ${HOOK_OUT}
64-
# cat ${HOOK_ERR}
70+
podman --runtime=crun \
71+
--hooks-dir "${TMP_HOOKS_DIR}" \
72+
run --rm \
73+
--annotation run.oci.hooks.stdout="${HOOK_OUT}" \
74+
--annotation run.oci.hooks.stderr="${HOOK_ERR}" \
75+
alpine sh -c "([ -d ${SPMIX_APPDIR_UID_DIR} ] || ! echo \"error: no spmix_appdir\") && \
76+
([ -d ${PMIX_DIR} ] || ! echo \"error: no pmix dir\")"
6577

6678
rm -rf ${SPMIX_APPDIR_UID_DIR}
6779
}
6880

6981
@test "pmix_hook binds directory (no SLURM_JOB_UID)" {
82+
SPMIX_APPDIR_NO_UID_DIR=/tmp/spmix_appdir_${SLURM_JOB_ID}.${SLURM_STEP_ID}
7083
mkdir -p ${SPMIX_APPDIR_NO_UID_DIR}
7184
unset SLURM_JOB_UID
7285

73-
podman --hooks-dir "${TMP_HOOKS_DIR}" run --rm \
74-
alpine sh -c "[ -d ${SPMIX_APPDIR_DIR} ] && [ -d ${PMIX_DIR} ]"
75-
76-
# For hook logs
77-
# podman --runtime=crun \
78-
# --hooks-dir "${TMP_HOOKS_DIR}" \
79-
# run --rm \
80-
# --annotation com.hooks.logging.level=0 \
81-
# --annotation run.oci.hooks.stdout="${HOOK_OUT}" \
82-
# --annotation run.oci.hooks.stderr="${HOOK_ERR}" \
83-
# alpine sh -c "[ -d ${SPMIX_APPDIR_DIR} ] && [ -d ${PMIX_DIR} ]" || true
84-
# cat ${HOOK_OUT}
85-
# cat ${HOOK_ERR}
86+
podman --runtime=crun \
87+
--hooks-dir "${TMP_HOOKS_DIR}" \
88+
run --rm \
89+
--annotation run.oci.hooks.stdout="${HOOK_OUT}" \
90+
--annotation run.oci.hooks.stderr="${HOOK_ERR}" \
91+
alpine sh -c "([ -d ${SPMIX_APPDIR_NO_UID_DIR} ] || ! echo \"error: no spmix_appdir\") && \
92+
([ -d ${PMIX_DIR} ] || ! echo \"error: no pmix dir\")"
8693

8794
rm -rf ${SPMIX_APPDIR_NO_UID_DIR}
8895
}

0 commit comments

Comments
 (0)