Skip to content

Commit 4f1e222

Browse files
committed
Add unit tests for the kubernetes layer of the MCP server
Signed-off-by: arkadeepsen <arsen@redhat.com>
1 parent cbc10c8 commit 4f1e222

File tree

4 files changed

+494
-0
lines changed

4 files changed

+494
-0
lines changed
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
package client
2+
3+
import (
4+
"k8s.io/apimachinery/pkg/api/meta"
5+
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
6+
"k8s.io/apimachinery/pkg/runtime"
7+
"k8s.io/apimachinery/pkg/runtime/schema"
8+
"k8s.io/client-go/discovery/cached/memory"
9+
fakediscovery "k8s.io/client-go/discovery/fake"
10+
fakedynamic "k8s.io/client-go/dynamic/fake"
11+
fakeclient "k8s.io/client-go/kubernetes/fake"
12+
"k8s.io/client-go/kubernetes/scheme"
13+
"k8s.io/client-go/rest"
14+
"k8s.io/client-go/restmapper"
15+
)
16+
17+
func NewFakeClient(objects ...runtime.Object) *OVNKMCPServerClientSet {
18+
clientSet := fakeclient.NewClientset(objects...)
19+
fakeDiscovery := clientSet.Discovery().(*fakediscovery.FakeDiscovery)
20+
fakeDiscovery.Resources = getAPIResources()
21+
dynamicClient := fakedynamic.NewSimpleDynamicClient(scheme.Scheme, objects...)
22+
memoryClient := memory.NewMemCacheClient(fakeDiscovery)
23+
deferredDiscoveryRESTMapper := restmapper.NewDeferredDiscoveryRESTMapper(memoryClient)
24+
25+
return &OVNKMCPServerClientSet{
26+
ClientSet: clientSet,
27+
DynamicClient: dynamicClient,
28+
DeferredDiscoveryRESTMapper: deferredDiscoveryRESTMapper,
29+
Config: &rest.Config{},
30+
}
31+
}
32+
33+
func getAPIResources() []*metav1.APIResourceList {
34+
apiResourceList := []*metav1.APIResourceList{}
35+
allKnownTypes := scheme.Scheme.AllKnownTypes()
36+
gvResources := make(map[schema.GroupVersion]*metav1.APIResourceList)
37+
for gvk := range allKnownTypes {
38+
list, exists := gvResources[gvk.GroupVersion()]
39+
if !exists {
40+
list = &metav1.APIResourceList{
41+
GroupVersion: gvk.GroupVersion().String(),
42+
APIResources: []metav1.APIResource{},
43+
}
44+
gvResources[gvk.GroupVersion()] = list
45+
apiResourceList = append(apiResourceList, list)
46+
}
47+
gvr, _ := meta.UnsafeGuessKindToResource(gvk)
48+
list.APIResources = append(list.APIResources, metav1.APIResource{
49+
Name: gvr.Resource,
50+
Kind: gvk.Kind,
51+
Group: gvk.Group,
52+
Version: gvk.Version,
53+
})
54+
}
55+
return apiResourceList
56+
}

pkg/kubernetes/client/pods_test.go

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package client
2+
3+
import (
4+
"context"
5+
"testing"
6+
)
7+
8+
func TestGetPodLogs(t *testing.T) {
9+
fakeclient := NewFakeClient()
10+
logs, err := fakeclient.GetPodLogs(context.Background(), "test", "default", "")
11+
if err != nil {
12+
t.Fatalf("Failed to get pod logs: %v", err)
13+
}
14+
if len(logs) != 1 {
15+
t.Fatalf("Failed to get pod logs: %v", logs)
16+
}
17+
if logs[0] != "fake logs" {
18+
t.Fatalf("Failed to get pod logs: %v", logs)
19+
}
20+
}

0 commit comments

Comments
 (0)