@@ -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}
3844EOF
39-
40- # For local tests,
41- # "path": "/home/gwangmu/Projects/sarus/sarus-hooks/build/src/pmix/pmix_hook"
4245}
4346
4447teardown () {
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