Skip to content

Commit 589a8f2

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 4ffc8b3 commit 589a8f2

File tree

1 file changed

+223
-0
lines changed

1 file changed

+223
-0
lines changed

t/t2260-job-list.t

Lines changed: 223 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -363,6 +363,229 @@ test_expect_success 'flux module stats job-list is open to guests' '
363363
flux module stats job-list >/dev/null
364364
'
365365

366+
# do some more advanced constraint queries
367+
368+
test_expect_success 'flux job list hostname jobs' '
369+
id=$(id -u) &&
370+
constraint="{ and: [ {userid:[${id}]}, {name:[\"hostname\"]}] }" &&
371+
$jq -j -c -n "{max_entries:1000, attrs:[], constraint:${constraint}}" \
372+
| $RPC job-list.list | $jq .jobs | $jq -c '.[]' | $jq .id > list_constraint_hostname_jobs.out &&
373+
numlines=$(cat pending.ids completed.ids | wc -l) &&
374+
test $(cat list_constraint_hostname_jobs.out | wc -l) -eq ${numlines}
375+
'
376+
377+
test_expect_success 'flux job list active hostname jobs' '
378+
id=$(id -u) &&
379+
constraint="{ and: [ {userid:[${id}]}, {states:[\"active\"]}, {name:[\"hostname\"]}] }" &&
380+
$jq -j -c -n "{max_entries:1000, attrs:[], constraint:${constraint}}" \
381+
| $RPC job-list.list | $jq .jobs | $jq -c '.[]' | $jq .id > list_constraint_pending_hostname.out &&
382+
test_cmp list_constraint_pending_hostname.out pending.ids
383+
'
384+
385+
test_expect_success 'flux job list inactive hostname jobs' '
386+
id=$(id -u) &&
387+
constraint="{ and: [ {userid:[${id}]}, {states:[\"inactive\"]}, {name:[\"hostname\"]}] }" &&
388+
$jq -j -c -n "{max_entries:1000, attrs:[], constraint:${constraint}}" \
389+
| $RPC job-list.list | $jq .jobs | $jq -c '.[]' | $jq .id > list_constraint_inactive_hostname.out &&
390+
test_cmp list_constraint_inactive_hostname.out completed.ids
391+
'
392+
393+
test_expect_success 'flux job list invalid queue' '
394+
id=$(id -u) &&
395+
constraint="{ and: [ {userid:[${id}]}, {queue:[\"blarg\"]}] }" &&
396+
$jq -j -c -n "{max_entries:1000, attrs:[], constraint:${constraint}}" \
397+
| $RPC job-list.list | $jq .jobs | $jq -c '.[]' | $jq .id > list_constraint_invalid_queue.out &&
398+
test $(cat list_constraint_invalid_queue.out | wc -l) -eq 0
399+
'
400+
401+
test_expect_success 'flux job list active (1)' '
402+
state1=`${JOB_CONV} strtostate SCHED` &&
403+
state2=`${JOB_CONV} strtostate RUN` &&
404+
constraint="{ or: [ {states:[${state1}]}, {states:[${state2}]} ] }" &&
405+
$jq -j -c -n "{max_entries:1000, attrs:[], constraint:${constraint}}" \
406+
| $RPC job-list.list | $jq .jobs | $jq -c '.[]' | $jq .id > list_constraint_active1.out &&
407+
numlines=$(cat active.ids | wc -l) &&
408+
test $(cat list_constraint_active1.out | wc -l) -eq ${numlines}
409+
'
410+
411+
test_expect_success 'flux job list active (2)' '
412+
state1=`${JOB_CONV} strtostate INACTIVE` &&
413+
constraint="{ not: [ {states:[${state1}]} ] }" &&
414+
$jq -j -c -n "{max_entries:1000, attrs:[], constraint:${constraint}}" \
415+
| $RPC job-list.list | $jq .jobs | $jq -c '.[]' | $jq .id > list_constraint_active2.out &&
416+
numlines=$(cat active.ids | wc -l) &&
417+
test $(cat list_constraint_active2.out | wc -l) -eq ${numlines}
418+
'
419+
420+
test_expect_success 'flux job list pending jobs or inactive jobs (1)' '
421+
state1=`${JOB_CONV} strtostate SCHED` &&
422+
state2=`${JOB_CONV} strtostate INACTIVE` &&
423+
constraint="{ or: [ {states:[${state1}]}, {states:[${state2}]} ] }" &&
424+
$jq -j -c -n "{max_entries:1000, attrs:[], constraint:${constraint}}" \
425+
| $RPC job-list.list | $jq .jobs | $jq -c '.[]' | $jq .id > list_constraint_pending_inactive1.out &&
426+
numlines=$(cat pending.ids inactive.ids | wc -l) &&
427+
test $(cat list_constraint_pending_inactive1.out | wc -l) -eq ${numlines}
428+
'
429+
430+
test_expect_success 'flux job list pending jobs or inactive jobs (2)' '
431+
state1=`${JOB_CONV} strtostate SCHED` &&
432+
state2=`${JOB_CONV} strtostate INACTIVE` &&
433+
constraint="{ or: [ {states:[${state1}, ${state2}]} ] }" &&
434+
$jq -j -c -n "{max_entries:1000, attrs:[], constraint:${constraint}}" \
435+
| $RPC job-list.list | $jq .jobs | $jq -c '.[]' | $jq .id > list_constraint_pending_inactive2.out &&
436+
numlines=$(cat pending.ids inactive.ids | wc -l) &&
437+
test $(cat list_constraint_pending_inactive2.out | wc -l) -eq ${numlines}
438+
'
439+
440+
test_expect_success 'flux job list failed and canceled jobs (1)' '
441+
result1=`${JOB_CONV} strtoresult FAILED` &&
442+
result2=`${JOB_CONV} strtoresult CANCELED` &&
443+
constraint="{ or: [ {results:[${result1}]}, {results:[${result2}]} ] }" &&
444+
$jq -j -c -n "{max_entries:1000, attrs:[], constraint:${constraint}}" \
445+
| $RPC job-list.list | $jq .jobs | $jq -c '.[]' | $jq .id > list_constraint_failed_canceled1.out &&
446+
numlines=$(cat canceled.ids failed.ids | wc -l) &&
447+
test $(cat list_constraint_failed_canceled1.out | wc -l) -eq ${numlines}
448+
'
449+
450+
test_expect_success 'flux job list failed and canceled jobs (2)' '
451+
result1=`${JOB_CONV} strtoresult FAILED` &&
452+
result2=`${JOB_CONV} strtoresult CANCELED` &&
453+
constraint="{ and: [ {userid:[${id}]}, {results:[${result1}, ${result2}]}] }" &&
454+
$jq -j -c -n "{max_entries:1000, attrs:[], constraint:${constraint}}" \
455+
| $RPC job-list.list | $jq .jobs | $jq -c '.[]' | $jq .id > list_constraint_failed_canceled2.out &&
456+
numlines=$(cat canceled.ids failed.ids | wc -l) &&
457+
test $(cat list_constraint_failed_canceled2.out | wc -l) -eq ${numlines}
458+
'
459+
460+
test_expect_success 'flux job list pending jobs or failed jobs (1)' '
461+
state1=`${JOB_CONV} strtostate SCHED` &&
462+
state2=`${JOB_CONV} strtostate INACTIVE` &&
463+
result1=`${JOB_CONV} strtoresult FAILED` &&
464+
constraint="{ or: [ {states:[${state1}]}, {and: [ {states:[${state2}]}, {results:[${result1}]} ] } ] }" &&
465+
$jq -j -c -n "{max_entries:1000, attrs:[], constraint:${constraint}}" \
466+
| $RPC job-list.list | $jq .jobs | $jq -c '.[]' | $jq .id > list_constraint_pending_failed1.out &&
467+
numlines=$(cat pending.ids failed.ids | wc -l) &&
468+
test $(cat list_constraint_pending_failed1.out | wc -l) -eq ${numlines}
469+
'
470+
471+
test_expect_success 'flux job list pending jobs or failed jobs (2)' '
472+
state1=`${JOB_CONV} strtostate SCHED` &&
473+
result1=`${JOB_CONV} strtoresult FAILED` &&
474+
constraint="{ or: [ {states:[${state1}]}, {results:[${result1}]} ] }" &&
475+
$jq -j -c -n "{max_entries:1000, attrs:[], constraint:${constraint}}" \
476+
| $RPC job-list.list | $jq .jobs | $jq -c '.[]' | $jq .id > list_constraint_pending_failed2.out &&
477+
numlines=$(cat pending.ids failed.ids | wc -l) &&
478+
test $(cat list_constraint_pending_failed2.out | wc -l) -eq ${numlines}
479+
'
480+
481+
test_expect_success 'flux job list inactive (1)' '
482+
state1=`${JOB_CONV} strtostate INACTIVE` &&
483+
constraint="{ or: [ {states:[${state1}]} ] }" &&
484+
$jq -j -c -n "{max_entries:1000, attrs:[], constraint:${constraint}}" \
485+
| $RPC job-list.list | $jq .jobs | $jq -c '.[]' | $jq .id > list_constraint_inactive1.out &&
486+
numlines=$(cat inactive.ids | wc -l) &&
487+
test $(cat list_constraint_inactive1.out | wc -l) -eq ${numlines}
488+
'
489+
490+
test_expect_success 'flux job list inactive (2)' '
491+
state1=`${JOB_CONV} strtostate SCHED` &&
492+
state2=`${JOB_CONV} strtostate RUN` &&
493+
constraint="{ not: [ { or: [ {states:[${state1}]}, {states:[${state2}]} ] } ] }" &&
494+
$jq -j -c -n "{max_entries:1000, attrs:[], constraint:${constraint}}" \
495+
| $RPC job-list.list | $jq .jobs | $jq -c '.[]' | $jq .id > list_constraint_inactive2.out &&
496+
numlines=$(cat inactive.ids | wc -l) &&
497+
test $(cat list_constraint_inactive2.out | wc -l) -eq ${numlines}
498+
'
499+
500+
test_expect_success 'flux job list have run via t_run (1)' '
501+
constraint="{ or: [ {t_run:[\">=0\"]} ] }" &&
502+
$jq -j -c -n "{max_entries:1000, attrs:[], constraint:${constraint}}" \
503+
| $RPC job-list.list | $jq .jobs | $jq -c '.[]' | $jq .id > list_constraint_t_run1.out &&
504+
numlines=$(cat running.ids failed.ids timeout.ids completed.ids | wc -l) &&
505+
test $(cat list_constraint_t_run1.out | wc -l) -eq ${numlines}
506+
'
507+
508+
# use a floating point in this one
509+
test_expect_success 'flux job list have run via t_run (2)' '
510+
constraint="{ or: [ {t_run:[\">=1.0\"]} ] }" &&
511+
$jq -j -c -n "{max_entries:1000, attrs:[], constraint:${constraint}}" \
512+
| $RPC job-list.list | $jq .jobs | $jq -c '.[]' | $jq .id > list_constraint_t_run2.out &&
513+
numlines=$(cat running.ids failed.ids timeout.ids completed.ids | wc -l) &&
514+
test $(cat list_constraint_t_run2.out | wc -l) -eq ${numlines}
515+
'
516+
517+
test_expect_success 'flux job list have run via t_run (3)' '
518+
constraint="{ or: [ {t_run:[\">1.1\"]} ] }" &&
519+
$jq -j -c -n "{max_entries:1000, attrs:[], constraint:${constraint}}" \
520+
| $RPC job-list.list | $jq .jobs | $jq -c '.[]' | $jq .id > list_constraint_t_run3.out &&
521+
numlines=$(cat running.ids failed.ids timeout.ids completed.ids | wc -l) &&
522+
test $(cat list_constraint_t_run3.out | wc -l) -eq ${numlines}
523+
'
524+
525+
test_expect_success 'flux job list inactive via t_inactive (1)' '
526+
constraint="{ or: [ {t_inactive:[\">=0\"]} ] }" &&
527+
$jq -j -c -n "{max_entries:1000, attrs:[], constraint:${constraint}}" \
528+
| $RPC job-list.list | $jq .jobs | $jq -c '.[]' | $jq .id > list_constraint_t_inactive1.out &&
529+
numlines=$(cat inactive.ids | wc -l) &&
530+
test $(cat list_constraint_t_inactive1.out | wc -l) -eq ${numlines}
531+
'
532+
533+
# use a floating point in this one
534+
test_expect_success 'flux job list inactive via t_inactive (2)' '
535+
constraint="{ or: [ {t_inactive:[\">=1.0\"]} ] }" &&
536+
$jq -j -c -n "{max_entries:1000, attrs:[], constraint:${constraint}}" \
537+
| $RPC job-list.list | $jq .jobs | $jq -c '.[]' | $jq .id > list_constraint_t_inactive2.out &&
538+
numlines=$(cat inactive.ids | wc -l) &&
539+
test $(cat list_constraint_t_inactive2.out | wc -l) -eq ${numlines}
540+
'
541+
542+
test_expect_success 'flux job list inactive via t_inactive (3)' '
543+
constraint="{ or: [ {t_inactive:[\">1.1\"]} ] }" &&
544+
$jq -j -c -n "{max_entries:1000, attrs:[], constraint:${constraint}}" \
545+
| $RPC job-list.list | $jq .jobs | $jq -c '.[]' | $jq .id > list_constraint_t_inactive3.out &&
546+
numlines=$(cat inactive.ids | wc -l) &&
547+
test $(cat list_constraint_t_inactive3.out | wc -l) -eq ${numlines}
548+
'
549+
550+
test_expect_success 'flux job list none via t_inactive (1)' '
551+
constraint="{ or: [ {t_inactive:[\"<0\"]} ] }" &&
552+
$jq -j -c -n "{max_entries:1000, attrs:[], constraint:${constraint}}" \
553+
| $RPC job-list.list | $jq .jobs | $jq -c '.[]' | $jq .id > list_constraint_none1.out &&
554+
test $(cat list_constraint_none1.out | wc -l) -eq 0
555+
'
556+
557+
test_expect_success 'flux job list none via t_inactive (2)' '
558+
constraint="{ or: [ {t_inactive:[\"<=0\"]} ] }" &&
559+
$jq -j -c -n "{max_entries:1000, attrs:[], constraint:${constraint}}" \
560+
| $RPC job-list.list | $jq .jobs | $jq -c '.[]' | $jq .id > list_constraint_none1.out &&
561+
test $(cat list_constraint_none1.out | wc -l) -eq 0
562+
'
563+
564+
test_expect_success 'flux job list all via t_depend (1)' '
565+
constraint="{ or: [ {t_depend:[\">=0\"]} ] }" &&
566+
$jq -j -c -n "{max_entries:1000, attrs:[], constraint:${constraint}}" \
567+
| $RPC job-list.list | $jq .jobs | $jq -c '.[]' | $jq .id > list_constraint_all1.out &&
568+
numlines=$(cat all.ids | wc -l) &&
569+
test $(cat list_constraint_all1.out | wc -l) -eq ${numlines}
570+
'
571+
572+
# use a floating point in this one
573+
test_expect_success 'flux job list all via t_depend (2)' '
574+
constraint="{ or: [ {t_depend:[\">=1.0\"]} ] }" &&
575+
$jq -j -c -n "{max_entries:1000, attrs:[], constraint:${constraint}}" \
576+
| $RPC job-list.list | $jq .jobs | $jq -c '.[]' | $jq .id > list_constraint_all2.out &&
577+
numlines=$(cat all.ids | wc -l) &&
578+
test $(cat list_constraint_all2.out | wc -l) -eq ${numlines}
579+
'
580+
581+
test_expect_success 'flux job list all via t_depend (3)' '
582+
constraint="{ or: [ {t_depend:[\">1.1\"]} ] }" &&
583+
$jq -j -c -n "{max_entries:1000, attrs:[], constraint:${constraint}}" \
584+
| $RPC job-list.list | $jq .jobs | $jq -c '.[]' | $jq .id > list_constraint_all3.out &&
585+
numlines=$(cat all.ids | wc -l) &&
586+
test $(cat list_constraint_all3.out | wc -l) -eq ${numlines}
587+
'
588+
366589
# with single anonymous queue, queues arrays should be zero length
367590
test_expect_success 'job stats lists jobs in correct state (mix)' '
368591
flux job stats | jq -e ".job_states.depend == 0" &&

0 commit comments

Comments
 (0)