Skip to content

Commit

Permalink
test: Add basic qmanager test cases
Browse files Browse the repository at this point in the history
Also Add qmanager support into the sched sharness script
  • Loading branch information
dongahn committed Jul 10, 2019
1 parent 843b271 commit a906913
Show file tree
Hide file tree
Showing 3 changed files with 99 additions and 5 deletions.
1 change: 1 addition & 0 deletions t/Makefile.am
Expand Up @@ -30,6 +30,7 @@ TESTS_ENVIRONMENT = \
TESTS = \
t0000-sharness.t \
t0003-basic-install.t \
t1001-qmanager-basic.t \
t3000-jobspec.t \
t3001-resource-basic.t \
t3002-resource-prefix.t \
Expand Down
9 changes: 4 additions & 5 deletions t/sharness.d/sched-sharness.sh
Expand Up @@ -2,20 +2,20 @@
#
# project-local sharness code for flux-sched
#
FLUX_SCHED_RC_NOOP=1
FLUX_RESOURCE_RC_NOOP=1
FLUX_QMANAGER_RC_NOOP=1
if test -n "$FLUX_SCHED_TEST_INSTALLED"; then
# Test against installed flux-sched, installed under same prefix as
# flux-core.
# (Assume sched modules installed under PREFIX/lib/flux/modeuls/sched)
# (Assume sched modules installed under PREFIX/lib/flux/modules)
# (We also support testing this when sched is installed
# another location, but only via make check)
FLUX_MODULE_PATH_PREPEND=$(which flux | sed -s 's|/bin/flux|/lib/flux/modules/resource|'):${FLUX_MODULE_PATH_PREPEND}
FLUX_EXEC_PATH_PREPEND=${SHARNESS_TEST_SRCDIR}/scripts:${FLUX_EXEC_PATH_PREPEND}
else
# Set up environment so that we find flux-sched modules,
# commands, and Lua libs from the build directories:
FLUX_MODULE_PATH_PREPEND="${SHARNESS_BUILD_DIRECTORY}/resource/modules/.libs"
FLUX_MODULE_PATH_PREPEND="${SHARNESS_BUILD_DIRECTORY}/qmanager/modules/.libs":${FLUX_MODULE_PATH_PREPEND}
FLUX_EXEC_PATH_PREPEND=":${SHARNESS_TEST_SRCDIR}/scripts"
fi

Expand All @@ -34,9 +34,8 @@ sched_src_path () {
}

export FLUX_EXEC_PATH_PREPEND
export FLUX_SCHED_RC_NOOP
export FLUX_SCHED_RC_PATH
export FLUX_RESOURCE_RC_NOOP
export FLUX_QMANAGER_RC_NOOP
export FLUX_RESOURCE_RC_PATH
export FLUX_SCHED_CO_INST
export FLUX_MODULE_PATH_PREPEND
Expand Down
94 changes: 94 additions & 0 deletions t/t1001-qmanager-basic.t
@@ -0,0 +1,94 @@
#!/bin/sh

test_description='Test qmanager service in simulated mode'

. `dirname $0`/sharness.sh

hwloc_basepath=`readlink -e ${SHARNESS_TEST_SRCDIR}/data/hwloc-data`
# 4 brokers, each (exclusively) have: 1 node, 2 sockets, 16 cores (8 per socket)
excl_4N4B="${hwloc_basepath}/004N/exclusive/04-brokers"

test_under_flux 1

# Set path to jq(1)
#
jq=$(which jq 2>/dev/null)
if test -z "$jq"; then
skip_all='jq not found. Skipping all tests'
test_done
fi

job_kvsdir() { flux job id --to=kvs $1; }
exec_eventlog() { flux kvs get -r $(job_kvsdir $1).guest.exec.eventlog; }
exec_test() { ${jq} '.attributes.system.exec.test = {}'; }
exec_testattr() {
${jq} --arg key "$1" --arg value $2 \
'.attributes.system.exec.test[$key] = $value'
}

test_expect_success 'qmanager: generate jobspec for a simple test job' '
flux jobspec srun -n1 -t 0:1 hostname | exec_test > basic.json
'

test_expect_success 'qmanager: hwloc reload works' '
flux hwloc reload ${excl_4N4B}
'

test_expect_success 'qmanager: loading resource and qmanager modules works' '
flux module remove sched-simple &&
flux module load resource prune-filters=ALL:core \
subsystems=containment policy=low &&
flux module load qmanager
'

test_expect_success 'qmanager: basic job runs in simulated mode' '
jobid=$(flux job submit basic.json) &&
flux job wait-event -t 2 ${jobid} start &&
flux job wait-event -t 2 ${jobid} finish &&
flux job wait-event -t 2 ${jobid} release &&
flux job wait-event -t 2 ${jobid} clean
'

test_expect_success 'qmanager: canceling job during execution works' '
jobid=$(flux jobspec srun -t 1 hostname | \
exec_test | flux job submit) &&
flux job wait-event -vt 2.5 ${jobid} start &&
flux job cancel ${jobid} &&
flux job wait-event -t 2.5 ${jobid} exception &&
flux job wait-event -t 2.5 ${jobid} finish | grep status=9 &&
flux job wait-event -t 2.5 ${jobid} release &&
flux job wait-event -t 2.5 ${jobid} clean &&
exec_eventlog $jobid | grep "complete" | grep "\"status\":9"
'

test_expect_success 'qmanager: exception during initialization is supported' '
flux jobspec srun hostname | \
exec_testattr mock_exception init > ex1.json &&
jobid=$(flux job submit ex1.json) &&
flux job wait-event -t 2.5 ${jobid} exception > exception.1.out &&
test_debug "flux job eventlog ${jobid}" &&
grep "type=\"exec\"" exception.1.out &&
grep "mock initialization exception generated" exception.1.out &&
flux job wait-event -qt 2.5 ${jobid} clean &&
flux job eventlog ${jobid} > eventlog.${jobid}.out &&
test_must_fail grep "finish" eventlog.${jobid}.out
'

test_expect_success 'qmanager: exception during run is supported' '
flux jobspec srun hostname | \
exec_testattr mock_exception run > ex2.json &&
jobid=$(flux job submit ex2.json) &&
flux job wait-event -t 2.5 ${jobid} exception > exception.2.out &&
grep "type=\"exec\"" exception.2.out &&
grep "mock run exception generated" exception.2.out &&
flux job wait-event -qt 2.5 ${jobid} clean &&
flux job eventlog ${jobid} > eventlog.${jobid}.out &&
grep "finish status=9" eventlog.${jobid}.out
'

test_expect_success 'removing resource and qmanager modules' '
flux module remove -r 0 qmanager &&
flux module remove -r 0 resource
'

test_done

0 comments on commit a906913

Please sign in to comment.