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

Function TestTaskManager

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

Source from the content-addressed store, hash-verified

25func (m *mockLogger) Error(format string, args ...interface{}) {}
26
27func TestTaskManager(t *testing.T) {
28 // Setup Mock Server
29 state := mockpve.NewMockState()
30 r := mux.NewRouter()
31
32 // Register relevant handlers
33 r.HandleFunc("/api2/json/nodes/{node}/tasks/{upid}/status", mockpve.HandleTaskStatus(state)).Methods("GET")
34 r.HandleFunc("/api2/json/nodes/{node}/tasks/{upid}", mockpve.HandleStopTask(state)).Methods("DELETE")
35
36 // Mock auth endpoint to avoid 401
37 r.HandleFunc("/api2/json/access/ticket", func(w http.ResponseWriter, r *http.Request) {
38 w.Header().Set("Content-Type", "application/json")
39 _, _ = fmt.Fprint(w, `{"data": {"ticket": "dummy", "CSRFPreventionToken": "dummy"}}`)
40 })
41
42 server := httptest.NewServer(r)
43 defer server.Close()
44
45 // Setup Client
46 config := &mockConfig{addr: server.URL}
47 opts := api.ClientOption(func(c *api.ClientOptions) {
48 c.Logger = &mockLogger{}
49 c.Cache = &interfaces.NoOpCache{}
50 })
51
52 client, err := api.NewClient(config, opts)
53 require.NoError(t, err)
54
55 // Setup TaskManager
56 var updated atomic.Bool
57 notify := func() {
58 updated.Store(true)
59 }
60 resolver := func(nodeName string) (*api.Client, error) {
61 return client, nil
62 }
63 tm := NewTaskManager(resolver, notify)
64 defer tm.Stop()
65
66 // Create a dummy task that is already "running" on the server side
67 // We use the state helper to create a task in the mock state
68 upid := state.CreateTask("pve", "qmstart", "100", "root@pam")
69
70 // Enqueue a task
71 task := &Task{
72 TargetVMID: 100,
73 TargetNode: "pve",
74 Type: "Start",
75 Operation: func() (string, error) {
76 return upid, nil
77 },
78 }
79
80 tm.Enqueue(task)
81
82 // Wait for task to be picked up
83 assert.Eventually(t, func() bool {
84 t := tm.GetActiveTaskForVM("pve", 100)

Callers

nothing calls this directly

Calls 14

StopMethod · 0.95
CreateTaskMethod · 0.95
EnqueueMethod · 0.95
GetActiveTaskForVMMethod · 0.95
CompleteTaskMethod · 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