Skip to content

Commit

Permalink
Fake out the kubernetes version in phase testing in order to avoid re…
Browse files Browse the repository at this point in the history
…solving things manually (which can lead to flakes)
  • Loading branch information
luxas committed Sep 22, 2017
1 parent 9dc2e50 commit 4360911
Show file tree
Hide file tree
Showing 8 changed files with 55 additions and 20 deletions.
12 changes: 10 additions & 2 deletions cmd/kubeadm/app/cmd/phases/certs.go
Original file line number Diff line number Diff line change
Expand Up @@ -38,14 +38,22 @@ func NewCmdCerts() *cobra.Command {
RunE: cmdutil.SubCmdRunE("certs"),
}

cmd.AddCommand(getCertsSubCommands()...)
cmd.AddCommand(getCertsSubCommands("")...)
return cmd
}

// getCertsSubCommands returns sub commands for certs phase
func getCertsSubCommands() []*cobra.Command {
func getCertsSubCommands(defaultKubernetesVersion string) []*cobra.Command {

cfg := &kubeadmapiext.MasterConfiguration{}

// This is used for unit testing only...
// If we wouldn't set this to something, the code would dynamically look up the version from the internet
// By setting this explicitely for tests workarounds that
if defaultKubernetesVersion != "" {
cfg.KubernetesVersion = defaultKubernetesVersion
}

// Default values for the cobra help text
api.Scheme.Default(cfg)

Expand Down
11 changes: 7 additions & 4 deletions cmd/kubeadm/app/cmd/phases/certs_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,9 +33,12 @@ import (
cmdtestutil "k8s.io/kubernetes/cmd/kubeadm/test/cmd"
)

// phaseTestK8sVersion is a fake kubernetes version to use when testing
const phaseTestK8sVersion = "v1.8.0"

func TestCertsSubCommandsHasFlags(t *testing.T) {

subCmds := getCertsSubCommands()
subCmds := getCertsSubCommands(phaseTestK8sVersion)

commonFlags := []string{
"cert-dir",
Expand Down Expand Up @@ -89,7 +92,7 @@ func TestCertsSubCommandsHasFlags(t *testing.T) {

func TestSubCmdCertsCreateFilesWithFlags(t *testing.T) {

subCmds := getCertsSubCommands()
subCmds := getCertsSubCommands(phaseTestK8sVersion)

var tests = []struct {
subCmds []string
Expand Down Expand Up @@ -138,7 +141,7 @@ func TestSubCmdCertsCreateFilesWithFlags(t *testing.T) {

func TestSubCmdCertsApiServerForwardsFlags(t *testing.T) {

subCmds := getCertsSubCommands()
subCmds := getCertsSubCommands(phaseTestK8sVersion)

// Create temp folder for the test case
tmpdir := testutil.SetupTempDir(t)
Expand Down Expand Up @@ -180,7 +183,7 @@ func TestSubCmdCertsApiServerForwardsFlags(t *testing.T) {

func TestSubCmdCertsCreateFilesWithConfigFile(t *testing.T) {

subCmds := getCertsSubCommands()
subCmds := getCertsSubCommands(phaseTestK8sVersion)

var tests = []struct {
subCmds []string
Expand Down
12 changes: 10 additions & 2 deletions cmd/kubeadm/app/cmd/phases/controlplane.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,14 +36,22 @@ func NewCmdControlplane() *cobra.Command {
}

manifestPath := kubeadmconstants.GetStaticPodDirectory()
cmd.AddCommand(getControlPlaneSubCommands(manifestPath)...)
cmd.AddCommand(getControlPlaneSubCommands(manifestPath, "")...)
return cmd
}

// getControlPlaneSubCommands returns sub commands for Controlplane phase
func getControlPlaneSubCommands(outDir string) []*cobra.Command {
func getControlPlaneSubCommands(outDir, defaultKubernetesVersion string) []*cobra.Command {

cfg := &kubeadmapiext.MasterConfiguration{}

// This is used for unit testing only...
// If we wouldn't set this to something, the code would dynamically look up the version from the internet
// By setting this explicitely for tests workarounds that
if defaultKubernetesVersion != "" {
cfg.KubernetesVersion = defaultKubernetesVersion
}

// Default values for the cobra help text
api.Scheme.Default(cfg)

Expand Down
4 changes: 2 additions & 2 deletions cmd/kubeadm/app/cmd/phases/controlplane_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ import (

func TestControlPlaneSubCommandsHasFlags(t *testing.T) {

subCmds := getControlPlaneSubCommands("")
subCmds := getControlPlaneSubCommands("", phaseTestK8sVersion)

commonFlags := []string{
"cert-dir",
Expand Down Expand Up @@ -137,7 +137,7 @@ func TestControlPlaneCreateFilesWithFlags(t *testing.T) {
defer os.RemoveAll(tmpdir)

// Get subcommands working in the temporary directory
subCmds := getControlPlaneSubCommands(tmpdir)
subCmds := getControlPlaneSubCommands(tmpdir, phaseTestK8sVersion)

// Execute the subcommand
certDirFlag := fmt.Sprintf("--cert-dir=%s", tmpdir)
Expand Down
12 changes: 10 additions & 2 deletions cmd/kubeadm/app/cmd/phases/etcd.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,14 +36,22 @@ func NewCmdEtcd() *cobra.Command {
}

manifestPath := kubeadmconstants.GetStaticPodDirectory()
cmd.AddCommand(getEtcdSubCommands(manifestPath)...)
cmd.AddCommand(getEtcdSubCommands(manifestPath, "")...)
return cmd
}

// getEtcdSubCommands returns sub commands for etcd phase
func getEtcdSubCommands(outDir string) []*cobra.Command {
func getEtcdSubCommands(outDir, defaultKubernetesVersion string) []*cobra.Command {

cfg := &kubeadmapiext.MasterConfiguration{}

// This is used for unit testing only...
// If we wouldn't set this to something, the code would dynamically look up the version from the internet
// By setting this explicitely for tests workarounds that
if defaultKubernetesVersion != "" {
cfg.KubernetesVersion = defaultKubernetesVersion
}

// Default values for the cobra help text
api.Scheme.Default(cfg)

Expand Down
4 changes: 2 additions & 2 deletions cmd/kubeadm/app/cmd/phases/etcd_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ import (

func TestEtcdSubCommandsHasFlags(t *testing.T) {

subCmds := getEtcdSubCommands("")
subCmds := getEtcdSubCommands("", phaseTestK8sVersion)

commonFlags := []string{
"cert-dir",
Expand Down Expand Up @@ -73,7 +73,7 @@ func TestEtcdCreateFilesWithFlags(t *testing.T) {
defer os.RemoveAll(tmpdir)

// Get subcommands working in the temporary directory
subCmds := getEtcdSubCommands(tmpdir)
subCmds := getEtcdSubCommands(tmpdir, phaseTestK8sVersion)

// Execute the subcommand
certDirFlag := fmt.Sprintf("--cert-dir=%s", tmpdir)
Expand Down
12 changes: 10 additions & 2 deletions cmd/kubeadm/app/cmd/phases/kubeconfig.go
Original file line number Diff line number Diff line change
Expand Up @@ -38,14 +38,22 @@ func NewCmdKubeConfig(out io.Writer) *cobra.Command {
RunE: cmdutil.SubCmdRunE("kubeconfig"),
}

cmd.AddCommand(getKubeConfigSubCommands(out, kubeadmconstants.KubernetesDir)...)
cmd.AddCommand(getKubeConfigSubCommands(out, kubeadmconstants.KubernetesDir, "")...)
return cmd
}

// getKubeConfigSubCommands returns sub commands for kubeconfig phase
func getKubeConfigSubCommands(out io.Writer, outDir string) []*cobra.Command {
func getKubeConfigSubCommands(out io.Writer, outDir, defaultKubernetesVersion string) []*cobra.Command {

cfg := &kubeadmapiext.MasterConfiguration{}

// This is used for unit testing only...
// If we wouldn't set this to something, the code would dynamically look up the version from the internet
// By setting this explicitely for tests workarounds that
if defaultKubernetesVersion != "" {
cfg.KubernetesVersion = defaultKubernetesVersion
}

// Default values for the cobra help text
api.Scheme.Default(cfg)

Expand Down
8 changes: 4 additions & 4 deletions cmd/kubeadm/app/cmd/phases/kubeconfig_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ import (

func TestKubeConfigCSubCommandsHasFlags(t *testing.T) {

subCmds := getKubeConfigSubCommands(nil, "")
subCmds := getKubeConfigSubCommands(nil, "", phaseTestK8sVersion)

commonFlags := []string{
"cert-dir",
Expand Down Expand Up @@ -174,7 +174,7 @@ func TestKubeConfigSubCommandsThatCreateFilesWithFlags(t *testing.T) {
}

// Get subcommands working in the temporary directory
subCmds := getKubeConfigSubCommands(nil, tmpdir)
subCmds := getKubeConfigSubCommands(nil, tmpdir, phaseTestK8sVersion)

// Execute the subcommand
certDirFlag := fmt.Sprintf("--cert-dir=%s", pkidir)
Expand Down Expand Up @@ -282,7 +282,7 @@ func TestKubeConfigSubCommandsThatCreateFilesWithConfigFile(t *testing.T) {
cfgPath := testutil.SetupMasterConfigurationFile(t, tmpdir, cfg)

// Get subcommands working in the temporary directory
subCmds := getKubeConfigSubCommands(nil, tmpdir)
subCmds := getKubeConfigSubCommands(nil, tmpdir, phaseTestK8sVersion)

// Execute the subcommand
configFlag := fmt.Sprintf("--config=%s", cfgPath)
Expand Down Expand Up @@ -354,7 +354,7 @@ func TestKubeConfigSubCommandsThatWritesToOut(t *testing.T) {
buf := new(bytes.Buffer)

// Get subcommands working in the temporary directory
subCmds := getKubeConfigSubCommands(buf, tmpdir)
subCmds := getKubeConfigSubCommands(buf, tmpdir, phaseTestK8sVersion)

// Execute the subcommand
allFlags := append(commonFlags, test.additionalFlags...)
Expand Down

0 comments on commit 4360911

Please sign in to comment.