From c38637a08b02c37ebbbb5a206ae8313a4f6fe022 Mon Sep 17 00:00:00 2001 From: jornshen Date: Tue, 1 Dec 2020 16:31:58 +0800 Subject: [PATCH] [flaky test] fix race in TestVersion in pkg/kubelet/cri/remote --- pkg/kubelet/cri/remote/BUILD | 1 + pkg/kubelet/cri/remote/fake/BUILD | 46 ++++++++++++++++++- pkg/kubelet/cri/remote/fake/endpoint.go | 10 +++- pkg/kubelet/cri/remote/remote_runtime_test.go | 12 ++++- 4 files changed, 65 insertions(+), 4 deletions(-) diff --git a/pkg/kubelet/cri/remote/BUILD b/pkg/kubelet/cri/remote/BUILD index d6cd6b7cf5b..31bfffb0997 100644 --- a/pkg/kubelet/cri/remote/BUILD +++ b/pkg/kubelet/cri/remote/BUILD @@ -52,6 +52,7 @@ go_test( embed = [":go_default_library"], deps = [ "//pkg/kubelet/cri/remote/fake:go_default_library", + "//pkg/kubelet/cri/remote/util:go_default_library", "//staging/src/k8s.io/cri-api/pkg/apis:go_default_library", "//staging/src/k8s.io/cri-api/pkg/apis/testing:go_default_library", "//vendor/github.com/stretchr/testify/assert:go_default_library", diff --git a/pkg/kubelet/cri/remote/fake/BUILD b/pkg/kubelet/cri/remote/fake/BUILD index 8d139ccce4a..89e35448d65 100644 --- a/pkg/kubelet/cri/remote/fake/BUILD +++ b/pkg/kubelet/cri/remote/fake/BUILD @@ -23,7 +23,51 @@ go_library( "//staging/src/k8s.io/cri-api/pkg/apis/testing:go_default_library", "//vendor/google.golang.org/grpc:go_default_library", "//vendor/k8s.io/utils/exec:go_default_library", - ], + ] + select({ + "@io_bazel_rules_go//go/platform:aix": [ + "//staging/src/k8s.io/apimachinery/pkg/util/rand:go_default_library", + ], + "@io_bazel_rules_go//go/platform:android": [ + "//staging/src/k8s.io/apimachinery/pkg/util/rand:go_default_library", + ], + "@io_bazel_rules_go//go/platform:darwin": [ + "//staging/src/k8s.io/apimachinery/pkg/util/rand:go_default_library", + ], + "@io_bazel_rules_go//go/platform:dragonfly": [ + "//staging/src/k8s.io/apimachinery/pkg/util/rand:go_default_library", + ], + "@io_bazel_rules_go//go/platform:freebsd": [ + "//staging/src/k8s.io/apimachinery/pkg/util/rand:go_default_library", + ], + "@io_bazel_rules_go//go/platform:illumos": [ + "//staging/src/k8s.io/apimachinery/pkg/util/rand:go_default_library", + ], + "@io_bazel_rules_go//go/platform:ios": [ + "//staging/src/k8s.io/apimachinery/pkg/util/rand:go_default_library", + ], + "@io_bazel_rules_go//go/platform:js": [ + "//staging/src/k8s.io/apimachinery/pkg/util/rand:go_default_library", + ], + "@io_bazel_rules_go//go/platform:linux": [ + "//staging/src/k8s.io/apimachinery/pkg/util/rand:go_default_library", + ], + "@io_bazel_rules_go//go/platform:nacl": [ + "//staging/src/k8s.io/apimachinery/pkg/util/rand:go_default_library", + ], + "@io_bazel_rules_go//go/platform:netbsd": [ + "//staging/src/k8s.io/apimachinery/pkg/util/rand:go_default_library", + ], + "@io_bazel_rules_go//go/platform:openbsd": [ + "//staging/src/k8s.io/apimachinery/pkg/util/rand:go_default_library", + ], + "@io_bazel_rules_go//go/platform:plan9": [ + "//staging/src/k8s.io/apimachinery/pkg/util/rand:go_default_library", + ], + "@io_bazel_rules_go//go/platform:solaris": [ + "//staging/src/k8s.io/apimachinery/pkg/util/rand:go_default_library", + ], + "//conditions:default": [], + }), ) filegroup( diff --git a/pkg/kubelet/cri/remote/fake/endpoint.go b/pkg/kubelet/cri/remote/fake/endpoint.go index 12e4bda2559..52ef573bf5e 100644 --- a/pkg/kubelet/cri/remote/fake/endpoint.go +++ b/pkg/kubelet/cri/remote/fake/endpoint.go @@ -18,11 +18,17 @@ limitations under the License. package fake +import ( + "fmt" + "k8s.io/apimachinery/pkg/util/rand" +) + const ( - defaultUnixEndpoint = "unix:///tmp/kubelet_remote.sock" + defaultUnixEndpoint = "unix:///tmp/kubelet_remote_%v.sock" ) // GenerateEndpoint generates a new unix socket server of grpc server. func GenerateEndpoint() (string, error) { - return defaultUnixEndpoint, nil + // use random int be a part fo file name + return fmt.Sprintf(defaultUnixEndpoint, rand.Int()), nil } diff --git a/pkg/kubelet/cri/remote/remote_runtime_test.go b/pkg/kubelet/cri/remote/remote_runtime_test.go index 8bf8e6f4847..44ef6aa11ce 100644 --- a/pkg/kubelet/cri/remote/remote_runtime_test.go +++ b/pkg/kubelet/cri/remote/remote_runtime_test.go @@ -17,6 +17,7 @@ limitations under the License. package remote import ( + "os" "testing" "time" @@ -25,6 +26,7 @@ import ( internalapi "k8s.io/cri-api/pkg/apis" apitest "k8s.io/cri-api/pkg/apis/testing" fakeremote "k8s.io/kubernetes/pkg/kubelet/cri/remote/fake" + "k8s.io/kubernetes/pkg/kubelet/cri/remote/util" ) const ( @@ -53,7 +55,15 @@ func createRemoteRuntimeService(endpoint string, t *testing.T) internalapi.Runti func TestVersion(t *testing.T) { fakeRuntime, endpoint := createAndStartFakeRemoteRuntime(t) - defer fakeRuntime.Stop() + defer func() { + fakeRuntime.Stop() + // clear endpoint file + if addr, _, err := util.GetAddressAndDialer(endpoint); err == nil { + if _, err := os.Stat(addr); err == nil { + os.Remove(addr) + } + } + }() r := createRemoteRuntimeService(endpoint, t) version, err := r.Version(apitest.FakeVersion)