From a9f681d40a29bd9a6491db7d392ebc4a1a045c79 Mon Sep 17 00:00:00 2001 From: "Lubomir I. Ivanov" Date: Fri, 16 Aug 2024 17:37:23 +0300 Subject: [PATCH] kubeadm: sort the results of MergeKubeadmEnvVars MergeKubeadmEnvVars use a map which results in non deterministic output in the end slice EnvVar objects. Before returning the slice, sort it by the Name field. Update the unit test to capture the sorting aspect. --- cmd/kubeadm/app/util/env.go | 4 ++++ cmd/kubeadm/app/util/env_test.go | 8 +++----- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/cmd/kubeadm/app/util/env.go b/cmd/kubeadm/app/util/env.go index e0f984798fe..d34a9a4ce2a 100644 --- a/cmd/kubeadm/app/util/env.go +++ b/cmd/kubeadm/app/util/env.go @@ -18,6 +18,7 @@ package util import ( "os" + "sort" "strings" v1 "k8s.io/api/core/v1" @@ -63,5 +64,8 @@ func MergeKubeadmEnvVars(envList ...[]kubeadmapi.EnvVar) []v1.EnvVar { for _, v := range m { merged = append(merged, v) } + sort.Slice(merged, func(i, j int) bool { + return merged[i].Name < merged[j].Name + }) return merged } diff --git a/cmd/kubeadm/app/util/env_test.go b/cmd/kubeadm/app/util/env_test.go index 0f788528ac3..7442edec49e 100644 --- a/cmd/kubeadm/app/util/env_test.go +++ b/cmd/kubeadm/app/util/env_test.go @@ -20,8 +20,6 @@ import ( "reflect" "testing" - "github.com/stretchr/testify/assert" - v1 "k8s.io/api/core/v1" kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm" @@ -41,10 +39,10 @@ func TestMergeKubeadmEnvVars(t *testing.T) { name: "normal case without duplicated env", proxyEnv: []kubeadmapi.EnvVar{ { - EnvVar: v1.EnvVar{Name: "Foo1", Value: "Bar1"}, + EnvVar: v1.EnvVar{Name: "Foo2", Value: "Bar2"}, }, { - EnvVar: v1.EnvVar{Name: "Foo2", Value: "Bar2"}, + EnvVar: v1.EnvVar{Name: "Foo1", Value: "Bar1"}, }, }, extraEnv: []kubeadmapi.EnvVar{ @@ -83,7 +81,7 @@ func TestMergeKubeadmEnvVars(t *testing.T) { for _, test := range tests { t.Run(test.name, func(t *testing.T) { envs := MergeKubeadmEnvVars(test.proxyEnv, test.extraEnv) - if !assert.ElementsMatch(t, envs, test.mergedEnv) { + if !reflect.DeepEqual(envs, test.mergedEnv) { t.Errorf("expected env: %v, got: %v", test.mergedEnv, envs) } })