kubernetes / minikube

Run Kubernetes locally
https://minikube.sigs.k8s.io/
Apache License 2.0
29.27k stars 4.87k forks source link

Some TestMirrorCountry unit tests take a very long time to run #9581

Closed afbjorklund closed 3 years ago

afbjorklund commented 3 years ago

This suggests missing isolation, that it is actually doing something on the network ?

PASS: TestMirrorCountry (25.37s) PASS: TestMirrorCountry/image-repository_none,_image-mirror-country_none (0.02s) PASS: TestMirrorCountry/image-repository_none,_image-mirror-country_china (22.48s) PASS: TestMirrorCountry/image-repository_auto,_image-mirror-country_none (0.82s) PASS: TestMirrorCountry/image-repository_auto,_image-mirror-country_china (2.05s) PASS: TestMirrorCountry/image-repository_registry.test.com,_image-mirror-country_none (0.00s) PASS: TestMirrorCountry/image-repository_registry.test.com,_image-mirror-country_china (0.00s)

{"Time":"2020-10-29T07:51:52.587837804+01:00","Action":"run","Package":"k8s.io/minikube/cmd/minikube/cmd","Test":"TestMirrorCountry/image-repository_none,_image-mirror-country_china"}
{"Time":"2020-10-29T07:51:52.587925382+01:00","Action":"output","Package":"k8s.io/minikube/cmd/minikube/cmd","Test":"TestMirrorCountry/image-repository_none,_image-mirror-country_china","Output":"=== RUN   TestMirrorCountry/image-repository_none,_image-mirror-country_china\n"}
{"Time":"2020-10-29T07:52:15.884864994+01:00","Action":"run","Package":"k8s.io/minikube/cmd/minikube/cmd","Test":"TestMirrorCountry/image-repository_auto,_image-mirror-country_china"}
{"Time":"2020-10-29T07:52:15.884914175+01:00","Action":"output","Package":"k8s.io/minikube/cmd/minikube/cmd","Test":"TestMirrorCountry/image-repository_auto,_image-mirror-country_china","Output":"=== RUN   TestMirrorCountry/image-repository_auto,_image-mirror-country_china\n"}
{"Time":"2020-10-29T07:52:17.935821276+01:00","Action":"run","Package":"k8s.io/minikube/cmd/minikube/cmd","Test":"TestMirrorCountry/image-repository_registry.test.com,_image-mirror-country_china"}
{"Time":"2020-10-29T07:52:17.93586837+01:00","Action":"output","Package":"k8s.io/minikube/cmd/minikube/cmd","Test":"TestMirrorCountry/image-repository_registry.test.com,_image-mirror-country_china","Output":"=== RUN   TestMirrorCountry/image-repository_registry.test.com,_image-mirror-country_china\n"}
{"Time":"2020-10-29T07:52:17.936352549+01:00","Action":"output","Package":"k8s.io/minikube/cmd/minikube/cmd","Test":"TestMirrorCountry/image-repository_none,_image-mirror-country_china","Output":"    --- PASS: TestMirrorCountry/image-repository_none,_image-mirror-country_china (22.48s)\n"}
{"Time":"2020-10-29T07:52:17.936369397+01:00","Action":"pass","Package":"k8s.io/minikube/cmd/minikube/cmd","Test":"TestMirrorCountry/image-repository_none,_image-mirror-country_china","Elapsed":22.48}
{"Time":"2020-10-29T07:52:17.936427113+01:00","Action":"output","Package":"k8s.io/minikube/cmd/minikube/cmd","Test":"TestMirrorCountry/image-repository_auto,_image-mirror-country_china","Output":"    --- PASS: TestMirrorCountry/image-repository_auto,_image-mirror-country_china (2.05s)\n"}
{"Time":"2020-10-29T07:52:17.9364554+01:00","Action":"pass","Package":"k8s.io/minikube/cmd/minikube/cmd","Test":"TestMirrorCountry/image-repository_auto,_image-mirror-country_china","Elapsed":2.05}
{"Time":"2020-10-29T07:52:17.936559992+01:00","Action":"output","Package":"k8s.io/minikube/cmd/minikube/cmd","Test":"TestMirrorCountry/image-repository_registry.test.com,_image-mirror-country_china","Output":"    --- PASS: TestMirrorCountry/image-repository_registry.test.com,_image-mirror-country_china (0.00s)\n"}
{"Time":"2020-10-29T07:52:17.9365996+01:00","Action":"pass","Package":"k8s.io/minikube/cmd/minikube/cmd","Test":"TestMirrorCountry/image-repository_registry.test.com,_image-mirror-country_china","Elapsed":0}

It is supposed to run quickly, and not access the network. Testing generateClusterConfig

afbjorklund commented 3 years ago

Here is the code that needs mocking:

        checkRepository := func(repo string) error {
                pauseImage := images.Pause(v, repo)
                ref, err := name.ParseReference(pauseImage, name.WeakValidation)
                if err != nil {
                        return err
                }

                _, err = remote.Image(ref, remote.WithAuthFromKeychain(authn.DefaultKeychain))
                return err
        }

Takes a while: (added some debugging)

I1029 08:15:31.800354 1070557 start.go:731] selecting image repository for country cn ...
checkRepository("registry.cn-hangzhou.aliyuncs.com/google_containers") registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.2
I1029 08:15:36.105891 1070557 start_flags.go:646] Wait components to verify : map[apiserver:true system_pods:true]
I1029 08:15:36.106518 1070557 start.go:731] selecting image repository for country  ...
checkRepository("") k8s.gcr.io/pause:3.2
I1029 08:15:36.926306 1070557 start_flags.go:646] Wait components to verify : map[apiserver:true system_pods:true]
I1029 08:15:36.926945 1070557 start.go:731] selecting image repository for country cn ...
checkRepository("registry.cn-hangzhou.aliyuncs.com/google_containers") registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.2
I1029 08:15:38.154235 1070557 start_flags.go:646] Wait components to verify : map[apiserver:true system_pods:true]
fejta-bot commented 3 years ago

Issues go stale after 90d of inactivity. Mark the issue as fresh with /remove-lifecycle stale. Stale issues rot after an additional 30d of inactivity and eventually close.

If this issue is safe to close now please do so with /close.

Send feedback to sig-testing, kubernetes/test-infra and/or fejta. /lifecycle stale

sharifelgamal commented 3 years ago

Bumping up the priority of bad tests, we should fix this sooner rather than later.