Skip to content

Commit d381bf3

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 fc2aece commit d381bf3

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
@@ -616,6 +616,113 @@ test_expect_success 'flux job list all via t_depend (3)' '
616616
test $(cat list_constraint_all3.out | wc -l) -eq ${numlines}
617617
'
618618

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

0 commit comments

Comments
 (0)