github.com/etecs-ru/gnomock@v0.13.2/preset/k3s/readme.md (about) 1 # Gnomock Lightweight Kubernetes (k3s) 2 3 Gnomock Lightweight Kubernetes (k3s) is a 4 [Gnomock](https://github.com/orlangure/gnomock) preset for running tests against a real lightweight kubernetes cluster ( 5 k3s), without mocks. 6 7 ```go 8 package k3s_test 9 10 import ( 11 "context" 12 "testing" 13 14 "github.com/orlangure/gnomock" 15 "github.com/orlangure/gnomock/preset/k3s" 16 "github.com/stretchr/testify/require" 17 v1 "k8s.io/api/core/v1" 18 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" 19 "k8s.io/client-go/kubernetes" 20 ) 21 22 func TestPreset(t *testing.T) { 23 t.Parallel() 24 25 p := k3s.Preset() 26 c, err := gnomock.Start( 27 p, 28 gnomock.WithContainerName("k3s"), 29 gnomock.WithDebugMode(), 30 ) 31 require.NoError(t, err) 32 33 defer func() { 34 require.NoError(t, gnomock.Stop(c)) 35 }() 36 37 kubeconfig, err := k3s.Config(c) 38 require.NoError(t, err) 39 40 client, err := kubernetes.NewForConfig(kubeconfig) 41 require.NoError(t, err) 42 43 ctx := context.Background() 44 45 pods, err := client.CoreV1().Pods(metav1.NamespaceDefault).List(ctx, metav1.ListOptions{}) 46 require.NoError(t, err) 47 require.Empty(t, pods.Items) 48 49 pod := &v1.Pod{ 50 ObjectMeta: metav1.ObjectMeta{ 51 Name: "gnomock", 52 Namespace: metav1.NamespaceDefault, 53 }, 54 Spec: v1.PodSpec{ 55 Containers: []v1.Container{ 56 { 57 Name: "gnomock", 58 Image: "docker.io/orlangure/gnomock-test-image", 59 }, 60 }, 61 RestartPolicy: v1.RestartPolicyNever, 62 }, 63 } 64 65 _, err = client.CoreV1().Pods(metav1.NamespaceDefault).Create(ctx, pod, metav1.CreateOptions{}) 66 require.NoError(t, err) 67 68 pods, err = client.CoreV1().Pods(metav1.NamespaceDefault).List(ctx, metav1.ListOptions{}) 69 require.NoError(t, err) 70 require.Len(t, pods.Items, 1) 71 require.Equal(t, "gnomock", pods.Items[0].Name) 72 } 73 ``` 74