Change:
What happened: Running fails consistently with timeout errors What you expected to happen: Unit tests should complete without any errors. If this was a configuration problem (e.g. unsupported go version), then I should see a meaningful error rather than just a timeout error. How to reproduce it (as minimally and precisely as possible): Run Anything else we need to know?: This issue has been present in my system for months. Environment: Kubernetes version (use ): master Cloud provider or hardware configuration: OS (e.g: ): Ubuntu 20.04 LTS (Focal Fossa) Kernel (e.g. ): Linux desktop 5.4.0-37-generic -Ubuntu SMP Wed Jun 3 18:57:02 UTC 2020 x8664 x8664 x86_64 GNU/Linux Install tools: Network plugin and version (if this is a network-related bug): Others: go version go1.13.12 linux/amd64 (snap)
/sig testing
/assign
Issues targeted at the specific problematic packages and responsible SIGs will be more effective in getting this addressed
/remove-sig testing Unless we expect some broad testing change (like reconfiguring go test) this isn't SIG testing. This is SIG storage, node, and cluster lifecycle
/sig node /sig cluster-lifecycle /sig storage tagged the right sigs, though per-package issues are far more likely to drive getting this fixed
fix for cmd/kubeadm/app/phases/uploadconfig:
I'm going to open two more issues for the other two packages and work on them
sounds good, in that case please close this one.
New issues for reconciler and csi packages: ,
Closing. This problem has come up in the past, the solution is to just increase the timeout. I missed this the first time I read the doc.

Discussion:
"//cmd/kubeadm/app/constants:go_default_library", "//cmd/kubeadm/app/util/config:go_default_library", "//staging/src/k8s.io/api/core/v1:go_default_library", <del> "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", </del> "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", "//staging/src/k8s.io/client-go/kubernetes/fake:go_default_library", <del> "//staging/src/k8s.io/client-go/testing:go_default_library", </del> ], )

"testing" v1 "k8s.io/api/core/v1" <del> apierrors "k8s.io/apimachinery/pkg/api/errors" </del> metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" clientsetfake "k8s.io/client-go/kubernetes/fake" <del> core "k8s.io/client-go/testing" </del> kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm" kubeadmscheme "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/scheme" kubeadmapiv1beta2 "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta2"

func TestUploadConfiguration(t *testing.T) { tests := []struct { name           string <del> errOnCreate    error errOnUpdate    error </del> updateExisting bool <del> errExpected    bool </del> verifyResult   bool }{ {

updateExisting: true, verifyResult:   true, }, <del> { name:        "unexpected errors for create should be returned", errOnCreate: apierrors.NewUnauthorized(""), errExpected: true, }, { name:           "update existing show report error if unexpected error for update is returned", errOnUpdate:    apierrors.NewUnauthorized(""), updateExisting: true, errExpected:    true, }, </del> } for _, tt := range tests { t.Run(tt.name, func(t2 *testing.T) {

} client := clientsetfake.NewSimpleClientset() <del> if tt.errOnCreate != nil { client.PrependReactor("create", "configmaps", func(action core.Action) (bool, runtime.Object, error) { return true, nil, tt.errOnCreate }) } </del> // For idempotent test, we check the result of the second call. <del> if err := UploadConfiguration(cfg, client); !tt.updateExisting && (err != nil) != tt.errExpected { t2.Fatalf("UploadConfiguration() error = %v, wantErr %v", err, tt.errExpected) </del> <ins> if err := UploadConfiguration(cfg, client); err != nil { t2.Fatalf("UploadConfiguration() error = %v", err) </ins> } if tt.updateExisting { <del> if tt.errOnUpdate != nil { client.PrependReactor("update", "configmaps", func(action core.Action) (bool, runtime.Object, error) { return true, nil, tt.errOnUpdate }) } if err := UploadConfiguration(cfg, client); (err != nil) != tt.errExpected { </del> <ins> if err := UploadConfiguration(cfg, client); err != nil { </ins> t2.Fatalf("UploadConfiguration() error = %v", err) } }