Skip to content

Commit 8dc7160

Browse files
committed
test: don't use fake clientset
1 parent 61289cf commit 8dc7160

File tree

2 files changed

+27
-18
lines changed

2 files changed

+27
-18
lines changed

pkg/kubernetes/mock_server_test.go

+12-9
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import (
1010
"k8s.io/apimachinery/pkg/runtime/serializer"
1111
"k8s.io/apimachinery/pkg/util/httpstream"
1212
"k8s.io/apimachinery/pkg/util/httpstream/spdy"
13-
"k8s.io/client-go/kubernetes/fake"
13+
"k8s.io/client-go/kubernetes"
1414
"k8s.io/client-go/rest"
1515
"net/http"
1616
"net/http/httptest"
@@ -21,14 +21,12 @@ type MockServer struct {
2121
config *rest.Config
2222
restClient *rest.RESTClient
2323
restHandlers []http.HandlerFunc
24-
clientSet *fake.Clientset
24+
clientSet kubernetes.Interface
2525
parameterCodec runtime.ParameterCodec
2626
}
2727

2828
func NewMockServer() *MockServer {
29-
ms := &MockServer{
30-
clientSet: fake.NewClientset(),
31-
}
29+
ms := &MockServer{}
3230
scheme := runtime.NewScheme()
3331
codecs := serializer.NewCodecFactory(scheme)
3432
ms.parameterCodec = runtime.NewParameterCodec(scheme)
@@ -48,17 +46,14 @@ func NewMockServer() *MockServer {
4846
}
4947
ms.restClient, _ = rest.RESTClientFor(ms.config)
5048
ms.restHandlers = make([]http.HandlerFunc, 0)
49+
ms.clientSet = kubernetes.NewForConfigOrDie(ms.config)
5150
return ms
5251
}
5352

5453
func (m *MockServer) Close() {
5554
m.server.Close()
5655
}
5756

58-
func (m *MockServer) ClientSet() *fake.Clientset {
59-
return m.clientSet
60-
}
61-
6257
func (m *MockServer) Handle(handler http.Handler) {
6358
m.restHandlers = append(m.restHandlers, handler.ServeHTTP)
6459
}
@@ -72,6 +67,14 @@ func (m *MockServer) NewKubernetes() *Kubernetes {
7267
}
7368
}
7469

70+
func writeObject(w http.ResponseWriter, obj runtime.Object) {
71+
w.Header().Set("Content-Type", runtime.ContentTypeJSON)
72+
if err := json.NewEncoder(w).Encode(obj); err != nil {
73+
http.Error(w, err.Error(), http.StatusInternalServerError)
74+
}
75+
w.WriteHeader(http.StatusOK)
76+
}
77+
7578
type streamAndReply struct {
7679
httpstream.Stream
7780
replySent <-chan struct{}

pkg/kubernetes/pods_test.go

+15-9
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,10 @@ import (
1313
func TestPodsExec(t *testing.T) {
1414
mockServer := NewMockServer()
1515
defer mockServer.Close()
16-
_ = mockServer.ClientSet().Tracker().Add(&v1.Pod{
17-
ObjectMeta: metav1.ObjectMeta{
18-
Namespace: "default",
19-
Name: "pod-to-exec",
20-
},
21-
Spec: v1.PodSpec{Containers: []v1.Container{{Name: "container-to-exec"}}},
22-
})
2316
mockServer.Handle(http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) {
17+
if req.URL.Path != "/api/v1/namespaces/default/pods/pod-to-exec/exec" {
18+
return
19+
}
2420
var stdin, stdout bytes.Buffer
2521
ctx, err := createHTTPStreams(w, req, &StreamOptions{
2622
Stdin: &stdin,
@@ -32,9 +28,19 @@ func TestPodsExec(t *testing.T) {
3228
return
3329
}
3430
defer ctx.conn.Close()
35-
if req.URL.Path == "/api/v1/namespaces/default/pods/pod-to-exec/exec" {
36-
_, _ = io.WriteString(ctx.stdoutStream, "total 0\n")
31+
_, _ = io.WriteString(ctx.stdoutStream, "total 0\n")
32+
}))
33+
mockServer.Handle(http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) {
34+
if req.URL.Path != "/api/v1/namespaces/default/pods/pod-to-exec" {
35+
return
3736
}
37+
writeObject(w, &v1.Pod{
38+
ObjectMeta: metav1.ObjectMeta{
39+
Namespace: "default",
40+
Name: "pod-to-exec",
41+
},
42+
Spec: v1.PodSpec{Containers: []v1.Container{{Name: "container-to-exec"}}},
43+
})
3844
}))
3945
k8s := mockServer.NewKubernetes()
4046
out, err := k8s.PodsExec(context.Background(), "default", "pod-to-exec", "", []string{"ls", "-l"})

0 commit comments

Comments
 (0)