From 2b1c073f584927b898a9321ca5c02f02dd4bb409 Mon Sep 17 00:00:00 2001 From: Lukasz Szaszkiewicz Date: Fri, 7 Feb 2025 14:39:15 +0100 Subject: [PATCH] fake/clientset: improve TestNewSimpleClientset Kubernetes-commit: d195ea8756d7a0babae1e052d17ad891cd3312d2 --- kubernetes/fake/clientset_generated_test.go | 72 +++++++++------------ 1 file changed, 31 insertions(+), 41 deletions(-) diff --git a/kubernetes/fake/clientset_generated_test.go b/kubernetes/fake/clientset_generated_test.go index 54c1b265..4187cf0a 100644 --- a/kubernetes/fake/clientset_generated_test.go +++ b/kubernetes/fake/clientset_generated_test.go @@ -18,9 +18,11 @@ package fake import ( "context" - "github.com/stretchr/testify/assert" "testing" + "github.com/google/go-cmp/cmp" + "github.com/stretchr/testify/require" + v1 "k8s.io/api/core/v1" policy "k8s.io/api/policy/v1" meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -29,35 +31,36 @@ import ( func TestNewSimpleClientset(t *testing.T) { client := NewSimpleClientset() - client.CoreV1().Pods("default").Create(context.Background(), &v1.Pod{ + expectedPods := []*v1.Pod{} + + pod, err := client.CoreV1().Pods("default").Create(context.Background(), &v1.Pod{ ObjectMeta: meta_v1.ObjectMeta{ Name: "pod-1", Namespace: "default", }, }, meta_v1.CreateOptions{}) - client.CoreV1().Pods("default").Create(context.Background(), &v1.Pod{ + require.NoError(t, err) + expectedPods = append(expectedPods, pod) + + pod, err = client.CoreV1().Pods("default").Create(context.Background(), &v1.Pod{ ObjectMeta: meta_v1.ObjectMeta{ Name: "pod-2", Namespace: "default", }, }, meta_v1.CreateOptions{}) - err := client.CoreV1().Pods("default").EvictV1(context.Background(), &policy.Eviction{ + require.NoError(t, err) + expectedPods = append(expectedPods, pod) + + err = client.CoreV1().Pods("default").EvictV1(context.Background(), &policy.Eviction{ ObjectMeta: meta_v1.ObjectMeta{ Name: "pod-2", }, }) - - if err != nil { - t.Errorf("TestNewSimpleClientset() res = %v", err.Error()) - } + require.NoError(t, err) pods, err := client.CoreV1().Pods("default").List(context.Background(), meta_v1.ListOptions{}) - // err: item[0]: can't assign or convert v1beta1.Eviction into v1.Pod - if err != nil { - t.Errorf("TestNewSimpleClientset() res = %v", err.Error()) - } else { - t.Logf("TestNewSimpleClientset() res = %v", pods) - } + require.NoError(t, err) + cmp.Equal(expectedPods, pods.Items) } func TestManagedFieldClientset(t *testing.T) { @@ -69,58 +72,47 @@ func TestManagedFieldClientset(t *testing.T) { ObjectMeta: meta_v1.ObjectMeta{Name: name, Namespace: namespace}, Data: map[string]string{"k0": "v0"}, }, meta_v1.CreateOptions{FieldManager: "test-manager-0"}) - if err != nil { - t.Errorf("Failed to create pod: %v", err) - } - assert.Equal(t, map[string]string{"k0": "v0"}, cm.Data) + require.NoError(t, err) + require.Equal(t, map[string]string{"k0": "v0"}, cm.Data) // Apply with test-manager-1 // Expect data to be shared with initial create cm, err = client.CoreV1().ConfigMaps("default").Apply(context.Background(), v1ac.ConfigMap(name, namespace).WithData(map[string]string{"k1": "v1"}), meta_v1.ApplyOptions{FieldManager: "test-manager-1"}) - if err != nil { - t.Errorf("Failed to create pod: %v", err) - } - assert.Equal(t, map[string]string{"k0": "v0", "k1": "v1"}, cm.Data) + require.NoError(t, err) + require.Equal(t, map[string]string{"k0": "v0", "k1": "v1"}, cm.Data) // Apply conflicting with test-manager-2, expect apply to fail _, err = client.CoreV1().ConfigMaps("default").Apply(context.Background(), v1ac.ConfigMap(name, namespace).WithData(map[string]string{"k1": "xyz"}), meta_v1.ApplyOptions{FieldManager: "test-manager-2"}) - if assert.Error(t, err) { - assert.Equal(t, "Apply failed with 1 conflict: conflict with \"test-manager-1\": .data.k1", err.Error()) - } + require.Error(t, err) + require.Equal(t, "Apply failed with 1 conflict: conflict with \"test-manager-1\": .data.k1", err.Error()) // Apply with test-manager-2 // Expect data to be shared with initial create and test-manager-1 cm, err = client.CoreV1().ConfigMaps("default").Apply(context.Background(), v1ac.ConfigMap(name, namespace).WithData(map[string]string{"k2": "v2"}), meta_v1.ApplyOptions{FieldManager: "test-manager-2"}) - if err != nil { - t.Errorf("Failed to create pod: %v", err) - } - assert.Equal(t, map[string]string{"k0": "v0", "k1": "v1", "k2": "v2"}, cm.Data) + require.NoError(t, err) + require.Equal(t, map[string]string{"k0": "v0", "k1": "v1", "k2": "v2"}, cm.Data) // Apply with test-manager-1 // Expect owned data to be updated cm, err = client.CoreV1().ConfigMaps("default").Apply(context.Background(), v1ac.ConfigMap(name, namespace).WithData(map[string]string{"k1": "v101"}), meta_v1.ApplyOptions{FieldManager: "test-manager-1"}) - if err != nil { - t.Errorf("Failed to create pod: %v", err) - } - assert.Equal(t, map[string]string{"k0": "v0", "k1": "v101", "k2": "v2"}, cm.Data) + require.NoError(t, err) + require.Equal(t, map[string]string{"k0": "v0", "k1": "v101", "k2": "v2"}, cm.Data) // Force apply with test-manager-2 // Expect data owned by test-manager-1 to be updated, expect data already owned but not in apply configuration to be removed cm, err = client.CoreV1().ConfigMaps("default").Apply(context.Background(), v1ac.ConfigMap(name, namespace).WithData(map[string]string{"k1": "v202"}), meta_v1.ApplyOptions{FieldManager: "test-manager-2", Force: true}) - if err != nil { - t.Errorf("Failed to create pod: %v", err) - } - assert.Equal(t, map[string]string{"k0": "v0", "k1": "v202"}, cm.Data) + require.NoError(t, err) + require.Equal(t, map[string]string{"k0": "v0", "k1": "v202"}, cm.Data) // Update with test-manager-1 to perform a force update of the entire resource cm, err = client.CoreV1().ConfigMaps("default").Update(context.Background(), @@ -137,8 +129,6 @@ func TestManagedFieldClientset(t *testing.T) { "k99": "v99", }, }, meta_v1.UpdateOptions{FieldManager: "test-manager-0"}) - if err != nil { - t.Errorf("Failed to update pod: %v", err) - } - assert.Equal(t, map[string]string{"k99": "v99"}, cm.Data) + require.NoError(t, err) + require.Equal(t, map[string]string{"k99": "v99"}, cm.Data) }