MCPcopy Create free account
hub / github.com/devnullvoid/pvetui / TestTaskManager_Cancel

Function TestTaskManager_Cancel

internal/taskmanager/manager_test.go:100–153  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

98}
99
100func TestTaskManager_Cancel(t *testing.T) {
101 // Setup Mock Server
102 state := mockpve.NewMockState()
103 r := mux.NewRouter()
104 r.HandleFunc("/api2/json/nodes/{node}/tasks/{upid}/status", mockpve.HandleTaskStatus(state)).Methods("GET")
105 r.HandleFunc("/api2/json/nodes/{node}/tasks/{upid}", mockpve.HandleStopTask(state)).Methods("DELETE")
106 r.HandleFunc("/api2/json/access/ticket", func(w http.ResponseWriter, r *http.Request) {
107 w.Header().Set("Content-Type", "application/json")
108 _, _ = fmt.Fprint(w, `{"data": {"ticket": "dummy", "CSRFPreventionToken": "dummy"}}`)
109 })
110 server := httptest.NewServer(r)
111 defer server.Close()
112
113 config := &mockConfig{addr: server.URL}
114 opts := api.ClientOption(func(c *api.ClientOptions) {
115 c.Logger = &mockLogger{}
116 c.Cache = &interfaces.NoOpCache{}
117 })
118 client, _ := api.NewClient(config, opts)
119
120 resolver := func(nodeName string) (*api.Client, error) {
121 return client, nil
122 }
123 tm := NewTaskManager(resolver, nil)
124 defer tm.Stop()
125
126 upid := state.CreateTask("pve", "qmstart", "101", "root@pam")
127 task := &Task{
128 TargetVMID: 101,
129 TargetNode: "pve",
130 Type: "Start",
131 Operation: func() (string, error) {
132 return upid, nil
133 },
134 }
135 tm.Enqueue(task)
136
137 // Wait for running
138 assert.Eventually(t, func() bool {
139 running := tm.GetActiveTaskForVM("pve", 101)
140 return running != nil && running.Status == StatusRunning
141 }, 1*time.Second, 10*time.Millisecond)
142
143 // Cancel
144 err := tm.CancelTask(task.ID)
145 assert.NoError(t, err)
146
147 // Wait for status to become failed/completed (since StopTask in mock just errors it out or stops it)
148 // Mock HandleStopTask calls CompleteTask(..., "ERROR")
149
150 assert.Eventually(t, func() bool {
151 return tm.GetActiveTaskForVM("pve", 101) == nil
152 }, 6*time.Second, 100*time.Millisecond)
153}
154
155func TestTaskManager_AllowsSameVMIDOnDifferentNodes(t *testing.T) {
156 state := mockpve.NewMockState()

Callers

nothing calls this directly

Calls 14

StopMethod · 0.95
CreateTaskMethod · 0.95
EnqueueMethod · 0.95
GetActiveTaskForVMMethod · 0.95
CancelTaskMethod · 0.95
NewMockStateFunction · 0.92
HandleTaskStatusFunction · 0.92
HandleStopTaskFunction · 0.92
ClientOptionFuncType · 0.92
NewClientFunction · 0.92
NewTaskManagerFunction · 0.85
HeaderMethod · 0.80

Tested by

no test coverage detected