Skip to content

Commit 8596055

Browse files
committed
testsuite: add hostlist constraint coverage
Problem: There is no testing / coverage for the new hostlist constraint in the job-list module. Add some tests to t2260-job-list.t.
1 parent 059bea4 commit 8596055

File tree

1 file changed

+107
-0
lines changed

1 file changed

+107
-0
lines changed

t/t2260-job-list.t

Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -615,6 +615,113 @@ test_expect_success 'flux job list all via t_depend (3)' '
615615
test $(cat list_constraint_all3.out | wc -l) -eq ${numlines}
616616
'
617617

618+
#
619+
# nodelist / hostlist constraint filtering
620+
#
621+
622+
# N.B. all failed and timeout jobs we explicitly ran on node0, so
623+
# tests below don't test against node0 to make things easier.
624+
625+
# N.B. failed.ids are jobs that failed after running, thus will have
626+
# had a node assigned. timeout.ids obviously ran on a node, but timed
627+
# out.
628+
test_expect_success 'flux job list all jobs that ran on any node (1)' '
629+
constraint="{ and: [ {hostlist:[\"node[0-3]\"]} ] }" &&
630+
$jq -j -c -n "{max_entries:1000, attrs:[], constraint:${constraint}}" \
631+
| $RPC job-list.list | $jq .jobs | $jq -c '.[]' | $jq .id > constraint_hostlist1.out &&
632+
numlines=$(cat completed.ids running.ids failed.ids timeout.ids | wc -l) &&
633+
test $(cat constraint_hostlist1.out | wc -l) -eq ${numlines}
634+
'
635+
636+
test_expect_success 'flux job list all jobs that ran on any node (2)' '
637+
constraint="{ and: [ {hostlist:[\"node[2-3]\", \"node1\", \"node0\"]} ] }" &&
638+
$jq -j -c -n "{max_entries:1000, attrs:[], constraint:${constraint}}" \
639+
| $RPC job-list.list | $jq .jobs | $jq -c '.[]' | $jq .id > constraint_hostlist2.out &&
640+
numlines=$(cat completed.ids running.ids failed.ids timeout.ids | wc -l) &&
641+
test $(cat constraint_hostlist2.out | wc -l) -eq ${numlines}
642+
'
643+
644+
# We evenly distributed non-bad jobs on nodes, so should be half of the jobs
645+
test_expect_success 'flux job list all jobs that ran on nodes[1-2] (1)' '
646+
constraint="{ and: [ {hostlist:[\"node[1-2]\"]} ] }" &&
647+
$jq -j -c -n "{max_entries:1000, attrs:[], constraint:${constraint}}" \
648+
| $RPC job-list.list | $jq .jobs | $jq -c '.[]' | $jq .id > constraint_hostlist3.out &&
649+
numlines=$(expr $(cat completed.ids running.ids | wc -l) / 2) &&
650+
test $(cat constraint_hostlist3.out | wc -l) -eq ${numlines}
651+
'
652+
653+
# We evenly distributed non-bad jobs on nodes, so should be half of the jobs
654+
test_expect_success 'flux job list all jobs that ran on nodes[1-2] (2)' '
655+
constraint="{ and: [ {hostlist:[\"node1\", \"node2\"]} ] }" &&
656+
$jq -j -c -n "{max_entries:1000, attrs:[], constraint:${constraint}}" \
657+
| $RPC job-list.list | $jq .jobs | $jq -c '.[]' | $jq .id > constraint_hostlist4.out &&
658+
numlines=$(expr $(cat completed.ids running.ids | wc -l) / 2) &&
659+
test $(cat constraint_hostlist4.out | wc -l) -eq ${numlines}
660+
'
661+
662+
# We evenly distributed non-bad jobs on nodes, so should be quarter of the jobs
663+
test_expect_success 'flux job list all jobs that ran on node3' '
664+
constraint="{ and: [ {hostlist:[\"node3\"]} ] }" &&
665+
$jq -j -c -n "{max_entries:1000, attrs:[], constraint:${constraint}}" \
666+
| $RPC job-list.list | $jq .jobs | $jq -c '.[]' | $jq .id > constraint_hostlist5.out &&
667+
numlines=$(expr $(cat completed.ids running.ids | wc -l) / 4) &&
668+
test $(cat constraint_hostlist5.out | wc -l) -eq ${numlines}
669+
'
670+
671+
# We evenly distributed completed jobs on nodes, so should be quarter of the jobs
672+
test_expect_success 'flux job list completed jobs that ran on node3' '
673+
state=`${JOB_CONV} strtostate INACTIVE` &&
674+
constraint="{ and: [ {hostlist:[\"node3\"]}, {states:[${state}]} ] }" &&
675+
$jq -j -c -n "{max_entries:1000, attrs:[], constraint:${constraint}}" \
676+
| $RPC job-list.list | $jq .jobs | $jq -c '.[]' | $jq .id > constraint_hostlist6.out &&
677+
numlines=$(expr $(cat completed.ids | wc -l) / 4) &&
678+
test $(cat constraint_hostlist6.out | wc -l) -eq ${numlines}
679+
'
680+
681+
# We evenly distributed running jobs on nodes, so should be quarter of the jobs
682+
test_expect_success 'flux job list running jobs that ran on node3' '
683+
state=`${JOB_CONV} strtostate RUNNING` &&
684+
constraint="{ and: [ {hostlist:[\"node3\"]}, {states:[${state}]} ] }" &&
685+
$jq -j -c -n "{max_entries:1000, attrs:[], constraint:${constraint}}" \
686+
| $RPC job-list.list | $jq .jobs | $jq -c '.[]' | $jq .id > constraint_hostlist7.out &&
687+
numlines=$(expr $(cat running.ids | wc -l) / 4) &&
688+
test $(cat constraint_hostlist7.out | wc -l) -eq ${numlines}
689+
'
690+
691+
# We evenly distributed running jobs on nodes, so should be half of the jobs
692+
# For this test, get start time of first running job
693+
test_expect_success 'flux job list of running jobs that ran on node[1-2] after certain time (1)' '
694+
id=`tail -n1 running.ids` &&
695+
t_submit=`flux job list-ids ${id} | $jq .t_submit` &&
696+
constraint="{ and: [ {hostlist:[\"node[1-2]\"]}, {t_submit:[\">=${t_submit}\"]} ] }" &&
697+
$jq -j -c -n "{max_entries:1000, attrs:[], constraint:${constraint}}" \
698+
| $RPC job-list.list | $jq .jobs | $jq -c '.[]' | $jq .id > constraint_hostlist8.out &&
699+
numlines=$(expr $(cat running.ids | wc -l) / 2) &&
700+
test $(cat constraint_hostlist8.out | wc -l) -eq ${numlines}
701+
'
702+
703+
# We evenly distributed running jobs on nodes, so should be half of the jobs
704+
# For this test, get last inactive time of completed jobs
705+
test_expect_success 'flux job list of running jobs that ran on node[1-2] after certain time (2)' '
706+
id=`head -n1 completed.ids` &&
707+
t_inactive=`flux job list-ids ${id} | $jq .t_inactive` &&
708+
constraint="{ and: [ {hostlist:[\"node[1-2]\"]}, {t_submit:[\">${t_inactive}\"]} ] }" &&
709+
$jq -j -c -n "{max_entries:1000, attrs:[], constraint:${constraint}}" \
710+
| $RPC job-list.list | $jq .jobs | $jq -c '.[]' | $jq .id > constraint_hostlist9.out &&
711+
numlines=$(expr $(cat running.ids | wc -l) / 2) &&
712+
test $(cat constraint_hostlist9.out | wc -l) -eq ${numlines}
713+
'
714+
715+
# We evenly distributed completed & running jobs on nodes, so should be half of the jobs
716+
test_expect_success 'flux job list of all jobs that ran on node[1-2] after certain time' '
717+
id=`head -n1 completed.ids` &&
718+
constraint="{ and: [ {hostlist:[\"node[1-2]\"]}, {t_submit:[\">5\"]} ] }" &&
719+
$jq -j -c -n "{max_entries:1000, attrs:[], constraint:${constraint}}" \
720+
| $RPC job-list.list | $jq .jobs | $jq -c '.[]' | $jq .id > constraint_hostlist9.out &&
721+
numlines=$(expr $(cat completed.ids running.ids | wc -l) / 2) &&
722+
test $(cat constraint_hostlist9.out | wc -l) -eq ${numlines}
723+
'
724+
618725
#
619726
# legacy RPC tests
620727
#

0 commit comments

Comments
 (0)