feat: P2.5-7a map JOB_STAT_TRANSIENT (0x400) to TRANSIENT in job status API
This commit is contained in:
parent
2e8ed8cb4e
commit
b94ff9eb01
2 changed files with 40 additions and 25 deletions
|
|
@ -61,18 +61,19 @@ var JobSignalMapTable = map[string]int{
|
||||||
}
|
}
|
||||||
|
|
||||||
var JOBSTAT = map[string]int{
|
var JOBSTAT = map[string]int{
|
||||||
"PEND": 0x01,
|
"PEND": 0x01,
|
||||||
"RUN": 0x02,
|
"RUN": 0x02,
|
||||||
"EXIT": 0x04,
|
"EXIT": 0x04,
|
||||||
"DONE": 0x08,
|
"DONE": 0x08,
|
||||||
"PSUSP": 0x10,
|
"PSUSP": 0x10,
|
||||||
"USUSP": 0x20,
|
"USUSP": 0x20,
|
||||||
"SSUSP": 0x40,
|
"SSUSP": 0x40,
|
||||||
"PDONE": 0x80,
|
"PDONE": 0x80,
|
||||||
"PERR": 0x100,
|
"PERR": 0x100,
|
||||||
"WAIT": 0x200,
|
"WAIT": 0x200,
|
||||||
"RUNKWN": 0x8000,
|
"TRANSIENT": 0x400, // C JOB_STAT_TRANSIENT: job state uncertain after failover
|
||||||
"UNKNOWN": 0x10000, // C JOB_STAT_UNKWN: worker lost contact with controller
|
"RUNKWN": 0x8000,
|
||||||
|
"UNKNOWN": 0x10000, // C JOB_STAT_UNKWN: worker lost contact with controller
|
||||||
}
|
}
|
||||||
|
|
||||||
var LAUNCHTYPE = map[string]int{
|
var LAUNCHTYPE = map[string]int{
|
||||||
|
|
@ -81,7 +82,10 @@ var LAUNCHTYPE = map[string]int{
|
||||||
}
|
}
|
||||||
|
|
||||||
func JobStateStr(state int) string {
|
func JobStateStr(state int) string {
|
||||||
if (state & JOBSTAT["PEND"]) != 0 {
|
// Check TRANSIENT first — it takes priority after failover
|
||||||
|
if (state & JOBSTAT["TRANSIENT"]) != 0 {
|
||||||
|
return "TRANSIENT"
|
||||||
|
} else if (state & JOBSTAT["PEND"]) != 0 {
|
||||||
if (state & JOBSTAT["PSUSP"]) != 0 {
|
if (state & JOBSTAT["PSUSP"]) != 0 {
|
||||||
return "PSUSP"
|
return "PSUSP"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -58,6 +58,16 @@ func TestJobStateStr(t *testing.T) {
|
||||||
state: 0,
|
state: 0,
|
||||||
want: "ERR",
|
want: "ERR",
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: "TRANSIENT (0x400 — job uncertain after failover)",
|
||||||
|
state: 0x400,
|
||||||
|
want: "TRANSIENT",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "TRANSIENT with other bits set",
|
||||||
|
state: 0x400 | 0x01, // TRANSIENT + PEND
|
||||||
|
want: "TRANSIENT",
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, tt := range tests {
|
for _, tt := range tests {
|
||||||
|
|
@ -73,18 +83,19 @@ func TestJobStateStr(t *testing.T) {
|
||||||
func TestJobStatMapValues(t *testing.T) {
|
func TestJobStatMapValues(t *testing.T) {
|
||||||
// Verify bitmask values match C JOB_STAT_* defines in src/include/xce/types.h.
|
// Verify bitmask values match C JOB_STAT_* defines in src/include/xce/types.h.
|
||||||
expected := map[string]int{
|
expected := map[string]int{
|
||||||
"PEND": 0x01,
|
"PEND": 0x01,
|
||||||
"RUN": 0x02,
|
"RUN": 0x02,
|
||||||
"EXIT": 0x04,
|
"EXIT": 0x04,
|
||||||
"DONE": 0x08,
|
"DONE": 0x08,
|
||||||
"PSUSP": 0x10,
|
"PSUSP": 0x10,
|
||||||
"USUSP": 0x20,
|
"USUSP": 0x20,
|
||||||
"SSUSP": 0x40,
|
"SSUSP": 0x40,
|
||||||
"PDONE": 0x80,
|
"PDONE": 0x80,
|
||||||
"PERR": 0x100,
|
"PERR": 0x100,
|
||||||
"WAIT": 0x200,
|
"WAIT": 0x200,
|
||||||
"RUNKWN": 0x8000,
|
"TRANSIENT": 0x400,
|
||||||
"UNKNOWN": 0x10000,
|
"RUNKWN": 0x8000,
|
||||||
|
"UNKNOWN": 0x10000,
|
||||||
}
|
}
|
||||||
for key, want := range expected {
|
for key, want := range expected {
|
||||||
got, ok := JOBSTAT[key]
|
got, ok := JOBSTAT[key]
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue