From 84913ae464945992608da755658d0227b065be9a Mon Sep 17 00:00:00 2001 From: Feng Min Date: Mon, 28 Aug 2017 16:36:31 -0700 Subject: [PATCH] Add unit test for UploadConfig in Kubeadm --- cmd/kubeadm/app/phases/uploadconfig/BUILD | 13 +++++ .../phases/uploadconfig/uploadconfig_test.go | 56 +++++++++++++++++++ 2 files changed, 69 insertions(+) create mode 100644 cmd/kubeadm/app/phases/uploadconfig/uploadconfig_test.go diff --git a/cmd/kubeadm/app/phases/uploadconfig/BUILD b/cmd/kubeadm/app/phases/uploadconfig/BUILD index 558d97232b0..06641bb8c1f 100644 --- a/cmd/kubeadm/app/phases/uploadconfig/BUILD +++ b/cmd/kubeadm/app/phases/uploadconfig/BUILD @@ -3,6 +3,7 @@ package(default_visibility = ["//visibility:public"]) load( "@io_bazel_rules_go//go:def.bzl", "go_library", + "go_test", ) go_library( @@ -33,3 +34,15 @@ filegroup( srcs = [":package-srcs"], tags = ["automanaged"], ) + +go_test( + name = "go_default_test", + srcs = ["uploadconfig_test.go"], + library = ":go_default_library", + deps = [ + "//cmd/kubeadm/app/apis/kubeadm:go_default_library", + "//cmd/kubeadm/app/constants:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/fake:go_default_library", + ], +) diff --git a/cmd/kubeadm/app/phases/uploadconfig/uploadconfig_test.go b/cmd/kubeadm/app/phases/uploadconfig/uploadconfig_test.go new file mode 100644 index 00000000000..b8e111f1ad5 --- /dev/null +++ b/cmd/kubeadm/app/phases/uploadconfig/uploadconfig_test.go @@ -0,0 +1,56 @@ +/* +Copyright 2017 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package uploadconfig + +import ( + "testing" + + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + clientsetfake "k8s.io/client-go/kubernetes/fake" + kubeadmapi "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm" + kubeadmconstants "k8s.io/kubernetes/cmd/kubeadm/app/constants" +) + +func TestUploadConfiguration(t *testing.T) { + tests := []struct { + name string + cfg *kubeadmapi.MasterConfiguration + wantErr bool + }{ + { + "basic validation with correct key", + &kubeadmapi.MasterConfiguration{ + KubernetesVersion: "1.7.3", + }, + false, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + client := clientsetfake.NewSimpleClientset() + if err := UploadConfiguration(tt.cfg, client); (err != nil) != tt.wantErr { + t.Errorf("UploadConfiguration() error = %v, wantErr %v", err, tt.wantErr) + } + masterCfg, err := client.CoreV1().ConfigMaps(metav1.NamespaceSystem).Get(kubeadmconstants.MasterConfigurationConfigMap, metav1.GetOptions{}) + if err != nil { + t.Errorf("Fail to query ConfigMap error = %v", err) + } else if masterCfg.Data[kubeadmconstants.MasterConfigurationConfigMapKey] == "" { + t.Errorf("Fail to find ConfigMap key = %v", err) + } + }) + } +}