Skip to content

Commit c1bb5f0

Browse files
committed
testsuite: add more job-list constraint tests
Problem: Some additional job-list constraint tests would be useful. Add more tests in t2260-job-list.t.
1 parent 6e4bdbc commit c1bb5f0

File tree

1 file changed

+151
-0
lines changed

1 file changed

+151
-0
lines changed

t/t2260-job-list.t

Lines changed: 151 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -342,6 +342,157 @@ test_expect_success 'flux job list all jobs works' '
342342
test_cmp all.ids list_all_jobids.out
343343
'
344344

345+
# do some more advanced constraint queries
346+
347+
test_expect_success 'flux job list hostname jobs' '
348+
id=$(id -u) &&
349+
constraint="{ and: [ {userid:[${id}]}, {name:[\"hostname\"]}] }" &&
350+
$jq -j -c -n "{max_entries:1000, attrs:[], constraint:${constraint}}" \
351+
| $RPC job-list.list | $jq .jobs | $jq -c '.[]' | $jq .id > list_constraint_hostname_jobs.out &&
352+
numlines=$(cat pending.ids completed.ids | wc -l) &&
353+
test $(cat list_constraint_hostname_jobs.out | wc -l) -eq ${numlines}
354+
'
355+
356+
test_expect_success 'flux job list active hostname jobs' '
357+
id=$(id -u) &&
358+
constraint="{ and: [ {userid:[${id}]}, {states:[\"active\"]}, {name:[\"hostname\"]}] }" &&
359+
$jq -j -c -n "{max_entries:1000, attrs:[], constraint:${constraint}}" \
360+
| $RPC job-list.list | $jq .jobs | $jq -c '.[]' | $jq .id > list_constraint_pending_hostname.out &&
361+
test_cmp list_constraint_pending_hostname.out pending.ids
362+
'
363+
364+
test_expect_success 'flux job list inactive hostname jobs' '
365+
id=$(id -u) &&
366+
constraint="{ and: [ {userid:[${id}]}, {states:[\"inactive\"]}, {name:[\"hostname\"]}] }" &&
367+
$jq -j -c -n "{max_entries:1000, attrs:[], constraint:${constraint}}" \
368+
| $RPC job-list.list | $jq .jobs | $jq -c '.[]' | $jq .id > list_constraint_inactive_hostname.out &&
369+
test_cmp list_constraint_inactive_hostname.out completed.ids
370+
'
371+
372+
test_expect_success 'flux job list invalid queue' '
373+
id=$(id -u) &&
374+
constraint="{ and: [ {userid:[${id}]}, {queue:[\"blarg\"]}] }" &&
375+
$jq -j -c -n "{max_entries:1000, attrs:[], constraint:${constraint}}" \
376+
| $RPC job-list.list | $jq .jobs | $jq -c '.[]' | $jq .id > list_constraint_invalid_queue.out &&
377+
test $(cat list_constraint_invalid_queue.out | wc -l) -eq 0
378+
'
379+
380+
test_expect_success 'flux job list active (1)' '
381+
state1=`${JOB_CONV} strtostate SCHED` &&
382+
state2=`${JOB_CONV} strtostate RUN` &&
383+
constraint="{ or: [ {states:[${state1}]}, {states:[${state2}]} ] }" &&
384+
$jq -j -c -n "{max_entries:1000, attrs:[], constraint:${constraint}}" \
385+
| $RPC job-list.list | $jq .jobs | $jq -c '.[]' | $jq .id > list_constraint_active1.out &&
386+
numlines=$(cat active.ids | wc -l) &&
387+
test $(cat list_constraint_active1.out | wc -l) -eq ${numlines}
388+
'
389+
390+
test_expect_success 'flux job list active (2)' '
391+
state1=`${JOB_CONV} strtostate INACTIVE` &&
392+
constraint="{ not: [ {states:[${state1}]} ] }" &&
393+
$jq -j -c -n "{max_entries:1000, attrs:[], constraint:${constraint}}" \
394+
| $RPC job-list.list | $jq .jobs | $jq -c '.[]' | $jq .id > list_constraint_active2.out &&
395+
numlines=$(cat active.ids | wc -l) &&
396+
test $(cat list_constraint_active2.out | wc -l) -eq ${numlines}
397+
'
398+
399+
test_expect_success 'flux job list pending jobs or inactive jobs (1)' '
400+
state1=`${JOB_CONV} strtostate SCHED` &&
401+
state2=`${JOB_CONV} strtostate INACTIVE` &&
402+
constraint="{ or: [ {states:[${state1}]}, {states:[${state2}]} ] }" &&
403+
$jq -j -c -n "{max_entries:1000, attrs:[], constraint:${constraint}}" \
404+
| $RPC job-list.list | $jq .jobs | $jq -c '.[]' | $jq .id > list_constraint_pending_inactive1.out &&
405+
numlines=$(cat pending.ids inactive.ids | wc -l) &&
406+
test $(cat list_constraint_pending_inactive1.out | wc -l) -eq ${numlines}
407+
'
408+
409+
test_expect_success 'flux job list pending jobs or inactive jobs (2)' '
410+
state1=`${JOB_CONV} strtostate SCHED` &&
411+
state2=`${JOB_CONV} strtostate INACTIVE` &&
412+
constraint="{ or: [ {states:[${state1}, ${state2}]} ] }" &&
413+
$jq -j -c -n "{max_entries:1000, attrs:[], constraint:${constraint}}" \
414+
| $RPC job-list.list | $jq .jobs | $jq -c '.[]' | $jq .id > list_constraint_pending_inactive2.out &&
415+
numlines=$(cat pending.ids inactive.ids | wc -l) &&
416+
test $(cat list_constraint_pending_inactive2.out | wc -l) -eq ${numlines}
417+
'
418+
419+
test_expect_success 'flux job list failed and canceled jobs (1)' '
420+
result1=`${JOB_CONV} strtoresult FAILED` &&
421+
result2=`${JOB_CONV} strtoresult CANCELED` &&
422+
constraint="{ or: [ {results:[${result1}]}, {results:[${result2}]} ] }" &&
423+
$jq -j -c -n "{max_entries:1000, attrs:[], constraint:${constraint}}" \
424+
| $RPC job-list.list | $jq .jobs | $jq -c '.[]' | $jq .id > list_constraint_failed_canceled1.out &&
425+
numlines=$(cat canceled.ids failed.ids | wc -l) &&
426+
test $(cat list_constraint_failed_canceled1.out | wc -l) -eq ${numlines}
427+
'
428+
429+
test_expect_success 'flux job list failed and canceled jobs (2)' '
430+
result1=`${JOB_CONV} strtoresult FAILED` &&
431+
result2=`${JOB_CONV} strtoresult CANCELED` &&
432+
constraint="{ and: [ {userid:[${id}]}, {results:[${result1}, ${result2}]}] }" &&
433+
$jq -j -c -n "{max_entries:1000, attrs:[], constraint:${constraint}}" \
434+
| $RPC job-list.list | $jq .jobs | $jq -c '.[]' | $jq .id > list_constraint_failed_canceled2.out &&
435+
numlines=$(cat canceled.ids failed.ids | wc -l) &&
436+
test $(cat list_constraint_failed_canceled2.out | wc -l) -eq ${numlines}
437+
'
438+
439+
test_expect_success 'flux job list pending jobs or failed jobs (1)' '
440+
state1=`${JOB_CONV} strtostate SCHED` &&
441+
state2=`${JOB_CONV} strtostate INACTIVE` &&
442+
result1=`${JOB_CONV} strtoresult FAILED` &&
443+
constraint="{ or: [ {states:[${state1}]}, {and: [ {states:[${state2}]}, {results:[${result1}]} ] } ] }" &&
444+
$jq -j -c -n "{max_entries:1000, attrs:[], constraint:${constraint}}" \
445+
| $RPC job-list.list | $jq .jobs | $jq -c '.[]' | $jq .id > list_constraint_pending_failed1.out &&
446+
numlines=$(cat pending.ids failed.ids | wc -l) &&
447+
test $(cat list_constraint_pending_failed1.out | wc -l) -eq ${numlines}
448+
'
449+
450+
test_expect_success 'flux job list pending jobs or failed jobs (2)' '
451+
state1=`${JOB_CONV} strtostate SCHED` &&
452+
result1=`${JOB_CONV} strtoresult FAILED` &&
453+
constraint="{ or: [ {states:[${state1}]}, {results:[${result1}]} ] }" &&
454+
$jq -j -c -n "{max_entries:1000, attrs:[], constraint:${constraint}}" \
455+
| $RPC job-list.list | $jq .jobs | $jq -c '.[]' | $jq .id > list_constraint_pending_failed2.out &&
456+
numlines=$(cat pending.ids failed.ids | wc -l) &&
457+
test $(cat list_constraint_pending_failed2.out | wc -l) -eq ${numlines}
458+
'
459+
460+
test_expect_success 'flux job list inactive (1)' '
461+
state1=`${JOB_CONV} strtostate INACTIVE` &&
462+
constraint="{ or: [ {states:[${state1}]} ] }" &&
463+
$jq -j -c -n "{max_entries:1000, attrs:[], constraint:${constraint}}" \
464+
| $RPC job-list.list | $jq .jobs | $jq -c '.[]' | $jq .id > list_constraint_inactive1.out &&
465+
numlines=$(cat inactive.ids | wc -l) &&
466+
test $(cat list_constraint_inactive1.out | wc -l) -eq ${numlines}
467+
'
468+
469+
test_expect_success 'flux job list inactive (2)' '
470+
state1=`${JOB_CONV} strtostate SCHED` &&
471+
state2=`${JOB_CONV} strtostate RUN` &&
472+
constraint="{ not: [ { or: [ {states:[${state1}]}, {states:[${state2}]} ] } ] }" &&
473+
$jq -j -c -n "{max_entries:1000, attrs:[], constraint:${constraint}}" \
474+
| $RPC job-list.list | $jq .jobs | $jq -c '.[]' | $jq .id > list_constraint_inactive2.out &&
475+
numlines=$(cat inactive.ids | wc -l) &&
476+
test $(cat list_constraint_inactive2.out | wc -l) -eq ${numlines}
477+
'
478+
479+
test_expect_success 'flux job list all via since (1)' '
480+
constraint="{ or: [ {since:[0]} ] }" &&
481+
$jq -j -c -n "{max_entries:1000, attrs:[], constraint:${constraint}}" \
482+
| $RPC job-list.list | $jq .jobs | $jq -c '.[]' | $jq .id > list_constraint_all1.out &&
483+
numlines=$(cat all.ids | wc -l) &&
484+
test $(cat list_constraint_all1.out | wc -l) -eq ${numlines}
485+
'
486+
487+
# use a floating point in this one
488+
test_expect_success 'flux job list all via since (2)' '
489+
constraint="{ or: [ {since:[1.1]} ] }" &&
490+
$jq -j -c -n "{max_entries:1000, attrs:[], constraint:${constraint}}" \
491+
| $RPC job-list.list | $jq .jobs | $jq -c '.[]' | $jq .id > list_constraint_all2.out &&
492+
numlines=$(cat all.ids | wc -l) &&
493+
test $(cat list_constraint_all2.out | wc -l) -eq ${numlines}
494+
'
495+
345496
# with single anonymous queue, queues arrays should be zero length
346497
test_expect_success 'job stats lists jobs in correct state (mix)' '
347498
flux job stats | jq -e ".job_states.depend == 0" &&

0 commit comments

Comments
 (0)