@@ -797,28 +797,75 @@ test_expect_success HAVE_JQ 'flux job list lists nnodes for pending jobs correct
797797 flux queue start
798798'
799799
800+ test_expect_success ' reload the job-list module' '
801+ flux module reload job-list
802+ '
803+
804+ test_expect_success HAVE_JQ ' verify nnodes/ranks/nodelist preserved across restart' '
805+ jobid1=`cat nodecount1.id` &&
806+ jobid2=`cat nodecount2.id` &&
807+ jobid3=`cat nodecount3.id` &&
808+ jobid4=`cat nodecount4.id` &&
809+ obj=$(flux job list -s inactive | grep ${jobid1}) &&
810+ echo $obj | jq -e ".nnodes == 1" &&
811+ echo $obj | jq -e ".ranks == \"0\"" &&
812+ nodes=`flux job info ${jobid1} R | flux R decode --nodelist` &&
813+ echo $obj | jq -e ".nodelist == \"${nodes}\"" &&
814+ obj=$(flux job list -s inactive | grep ${jobid2}) &&
815+ echo $obj | jq -e ".nnodes == 1" &&
816+ echo $obj | jq -e ".ranks == \"0\"" &&
817+ nodes=`flux job info ${jobid2} R | flux R decode --nodelist` &&
818+ echo $obj | jq -e ".nodelist == \"${nodes}\"" &&
819+ obj=$(flux job list -s inactive | grep ${jobid3}) &&
820+ echo $obj | jq -e ".nnodes == 2" &&
821+ echo $obj | jq -e ".ranks == \"[0-1]\"" &&
822+ nodes=`flux job info ${jobid3} R | flux R decode --nodelist` &&
823+ echo $obj | jq -e ".nodelist == \"${nodes}\"" &&
824+ obj=$(flux job list -s inactive | grep ${jobid4}) &&
825+ echo $obj | jq -e ".nnodes == 3" &&
826+ echo $obj | jq -e ".ranks == \"[0-2]\"" &&
827+ nodes=`flux job info ${jobid4} R | flux R decode --nodelist` &&
828+ echo $obj | jq -e ".nodelist == \"${nodes}\""
829+ '
830+
800831#
801832# job success
802833#
803834
804835test_expect_success HAVE_JQ ' flux job list outputs success correctly (true)' '
805836 jobid=`flux mini submit --wait hostname | flux job id` &&
837+ echo $jobid > success1.id &&
806838 wait_jobid_state $jobid inactive &&
807839 obj=$(flux job list -s inactive | grep $jobid) &&
808840 echo $obj | jq -e ".success == true"
809841'
810842
811843test_expect_success HAVE_JQ ' flux job list outputs success correctly (false)' '
812844 jobid=`flux mini submit --wait nosuchcommand | flux job id` &&
845+ echo $jobid > success2.id &&
813846 wait_jobid_state $jobid inactive &&
814847 obj=$(flux job list -s inactive | grep $jobid) &&
815848 echo $obj | jq -e ".success == false"
816849'
817850
851+ test_expect_success ' reload the job-list module' '
852+ flux module reload job-list
853+ '
854+
855+ test_expect_success HAVE_JQ ' verify task count preserved across restart' '
856+ jobid1=`cat success1.id` &&
857+ jobid2=`cat success2.id` &&
858+ obj=$(flux job list -s inactive | grep ${jobid1}) &&
859+ echo $obj | jq -e ".success == true" &&
860+ obj=$(flux job list -s inactive | grep ${jobid2}) &&
861+ echo $obj | jq -e ".success == false"
862+ '
863+
818864# job exceptions
819865
820866test_expect_success HAVE_JQ ' flux job list outputs exceptions correctly (no exception)' '
821867 jobid=`flux mini submit --wait hostname | flux job id` &&
868+ echo $jobid > exceptions1.id &&
822869 wait_jobid_state $jobid inactive &&
823870 obj=$(flux job list -s inactive | grep $jobid) &&
824871 echo $obj | jq -e ".exception_occurred == false" &&
@@ -829,6 +876,7 @@ test_expect_success HAVE_JQ 'flux job list outputs exceptions correctly (no exce
829876
830877test_expect_success HAVE_JQ ' flux job list outputs exceptions correctly (exception)' '
831878 jobid=`flux mini submit --wait nosuchcommand | flux job id` &&
879+ echo $jobid > exceptions2.id &&
832880 wait_jobid_state $jobid inactive &&
833881 obj=$(flux job list -s inactive | grep $jobid) &&
834882 echo $obj | jq -e ".exception_occurred == true" &&
@@ -837,10 +885,31 @@ test_expect_success HAVE_JQ 'flux job list outputs exceptions correctly (excepti
837885 echo $obj | jq .exception_note | grep "No such file or directory"
838886'
839887
888+ test_expect_success ' reload the job-list module' '
889+ flux module reload job-list
890+ '
891+
892+ test_expect_success HAVE_JQ ' verify task count preserved across restart' '
893+ jobid1=`cat exceptions1.id` &&
894+ jobid2=`cat exceptions2.id` &&
895+ obj=$(flux job list -s inactive | grep ${jobid1}) &&
896+ echo $obj | jq -e ".success == true" &&
897+ echo $obj | jq -e ".exception_occurred == false" &&
898+ echo $obj | jq -e ".exception_severity == null" &&
899+ echo $obj | jq -e ".exception_type == null" &&
900+ echo $obj | jq -e ".exception_note == null" &&
901+ obj=$(flux job list -s inactive | grep ${jobid2}) &&
902+ echo $obj | jq -e ".exception_occurred == true" &&
903+ echo $obj | jq -e ".exception_severity == 0" &&
904+ echo $obj | jq -e ".exception_type == \"exec\"" &&
905+ echo $obj | jq .exception_note | grep "No such file or directory"
906+ '
907+
840908# expiration time
841909
842910test_expect_success HAVE_JQ ' flux job list outputs expiration time when set' '
843- jobid=$(flux mini submit -t 30s sleep 1000 | flux job id) &&
911+ jobid=$(flux mini submit -t 500s sleep 1000 | flux job id) &&
912+ echo $jobid > expiration.id &&
844913 fj_wait_event $jobid start &&
845914 flux job list | grep $jobid > expiration.json &&
846915 test_debug "cat expiration.json" &&
@@ -852,31 +921,32 @@ test_expect_success 'reload the job-list module' '
852921 flux module reload job-list
853922'
854923
855- test_expect_success HAVE_JQ ' verify nnodes/ranks/nodelist preserved across restart' '
856- jobid1=`cat nodecount1.id` &&
857- jobid2=`cat nodecount2.id` &&
858- jobid3=`cat nodecount3.id` &&
859- jobid4=`cat nodecount4.id` &&
860- obj=$(flux job list -s inactive | grep ${jobid1}) &&
861- echo $obj | jq -e ".nnodes == 1" &&
862- echo $obj | jq -e ".ranks == \"0\"" &&
863- nodes=`flux job info ${jobid1} R | flux R decode --nodelist` &&
864- echo $obj | jq -e ".nodelist == \"${nodes}\"" &&
865- obj=$(flux job list -s inactive | grep ${jobid2}) &&
866- echo $obj | jq -e ".nnodes == 1" &&
867- echo $obj | jq -e ".ranks == \"0\"" &&
868- nodes=`flux job info ${jobid2} R | flux R decode --nodelist` &&
869- echo $obj | jq -e ".nodelist == \"${nodes}\"" &&
870- obj=$(flux job list -s inactive | grep ${jobid3}) &&
871- echo $obj | jq -e ".nnodes == 2" &&
872- echo $obj | jq -e ".ranks == \"[0-1]\"" &&
873- nodes=`flux job info ${jobid3} R | flux R decode --nodelist` &&
874- echo $obj | jq -e ".nodelist == \"${nodes}\"" &&
875- obj=$(flux job list -s inactive | grep ${jobid4}) &&
876- echo $obj | jq -e ".nnodes == 3" &&
877- echo $obj | jq -e ".ranks == \"[0-2]\"" &&
878- nodes=`flux job info ${jobid4} R | flux R decode --nodelist` &&
879- echo $obj | jq -e ".nodelist == \"${nodes}\""
924+ test_expect_success HAVE_JQ ' verify task count preserved across restart' '
925+ jobid=`cat expiration.id` &&
926+ flux job list -s inactive | grep ${jobid} > expiration2.json &&
927+ jq -e ".expiration > now" < expiration2.json
928+ '
929+
930+ # duration time
931+
932+ test_expect_success HAVE_JQ ' flux job list outputs duration time when set' '
933+ jobid=$(flux mini submit -t 60m sleep 1000 | flux job id) &&
934+ echo $jobid > duration.id &&
935+ fj_wait_event $jobid start &&
936+ flux job list | grep $jobid > duration.json &&
937+ test_debug "cat duration.json" &&
938+ jq -e ".duration == 3600.0" < duration.json &&
939+ flux job cancel $jobid
940+ '
941+
942+ test_expect_success ' reload the job-list module' '
943+ flux module reload job-list
944+ '
945+
946+ test_expect_success HAVE_JQ ' verify task count preserved across restart' '
947+ jobid=`cat duration.id` &&
948+ flux job list -s inactive | grep ${jobid} > duration2.json &&
949+ jq -e ".duration == 3600.0" < duration2.json
880950'
881951
882952# all job attributes
@@ -1004,6 +1074,7 @@ t_inactive \
10041074state \
10051075name \
10061076ntasks \
1077+ duration \
10071078nnodes \
10081079ranks \
10091080nodelist \
0 commit comments