功能:完善云管助手与GPU故障恢复核对

This commit is contained in:
songyiming committed 2026-11-13 19:08:40 +08:00
1 parent b6026f9759
commit 9f7b01e4db
42 files changed
+3576 -120

No files matched your search

+23 -8
View File
@@ -17,11 +17,12 @@ import (
)
type exclusiveTestPVE struct {
mu sync.Mutex
power map[int]string
actions []string
mode string
confirmed bool
mu sync.Mutex
power map[int]string
actions []string
mode string
confirmed bool
readFailures int
}
func exclusiveFixture(t *testing.T, mode string) (*fixture, *exclusiveTestPVE) {
@@ -49,7 +50,10 @@ func exclusiveFixture(t *testing.T, mode string) (*fixture, *exclusiveTestPVE) {
var id int
switch {
case strings.Contains(path, "/tasks/"):
if p.mode == "poll-failure" {
if p.mode == "poll-failure" || p.readFailures > 0 {
if p.readFailures > 0 {
p.readFailures--
}
w.WriteHeader(503)
return
}
@@ -62,7 +66,11 @@ func exclusiveFixture(t *testing.T, mode string) (*fixture, *exclusiveTestPVE) {
p.power[102] = "running"
}
}
data = map[string]string{"status": "stopped", "exitstatus": "OK"}
exitStatus := "OK"
if p.mode == "failed-task" {
exitStatus = "ERROR"
}
data = map[string]string{"status": "stopped", "exitstatus": exitStatus}
case strings.HasSuffix(path, "/status/current"):
fmt.Sscanf(path, "/nodes/gpu-node/qemu/%d/status/current", &id)
data = map[string]string{"status": p.power[id]}
@@ -202,7 +210,14 @@ func TestExclusiveGPUUnknownSubmissionNeverReplayed(t *testing.T) {
t.Fatal("replayed uncertain power action", p.actions)
}
code, out := f.request("POST", "/terminal/desktop-prepare", "gpu-device", map[string]any{"desktopId": "desk_demo_ubuntu"}, "")
expect(t, 409, code, out)
if mode == "poll-failure" {
expect(t, 202, code, out)
if out["taskId"] != task.ID || out["status"] != "running" {
t.Fatal("recovering task was not reused", out)
}
} else {
expect(t, 409, code, out)
}
code, out = f.request("POST", "/tasks/"+task.ID+"/gpu-reconcile", f.login("admin"), nil, "")
if mode == "ambiguous" {
expect(t, 409, code, out)