-
Notifications
You must be signed in to change notification settings - Fork 2
/
handler_test.go
62 lines (54 loc) · 1.47 KB
/
handler_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
package main
import (
"bytes"
"encoding/json"
"net/http"
"net/http/httptest"
"testing"
k8sSchedulerApi "k8s.io/kubernetes/plugin/pkg/scheduler/api"
k8sApi "k8s.io/kubernetes/pkg/api"
)
// TestHandler tests the handler function.
func TestHandler(t *testing.T) {
// New test server
srv := httptest.NewServer(http.HandlerFunc(handler))
defer srv.Close()
// Input to send for test and expected value
expected := "node1"
args := &k8sSchedulerApi.ExtenderArgs{
Pod: k8sApi.Pod{},
Nodes: newNodeList(
newNode("node1", "50.5"),
newNode("node2", "70.5"),
newNode("node3", "80.5"),
),
}
// convert to json
b, err := json.Marshal(args)
if err != nil {
t.Errorf("Error when trying to convert args to bytes: %v", err)
return
}
// send request to fake server
res, err := http.Post(srv.URL, "application/json", bytes.NewBuffer(b))
if err != nil {
t.Errorf("Error when making post request: %v", err)
return
}
// decode result from fake server
dec := json.NewDecoder(res.Body)
received := &k8sSchedulerApi.ExtenderFilterResult{}
err = dec.Decode(received)
if err != nil {
t.Errorf("Error when trying to convert result to ExtenderFilterResult: %v", err)
return
}
// handle result
if len(received.Nodes.Items) != 1 {
t.Errorf("Expected one node but received %v", len(received.Nodes.Items))
return
}
if received.Nodes.Items[0].Name != expected {
t.Errorf("Expected node %v to be scheduled but %v was chosen", expected, received.Nodes.Items[0].Name)
}
}