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