Skip to content

Commit 06269c9

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 949442a commit 06269c9

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
@@ -358,6 +358,229 @@ test_expect_success 'flux job list all jobs works' '
358358
test_cmp all.ids list_all_jobids.out
359359
'
360360

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

0 commit comments

Comments
 (0)