Fix kubeadm upgrade unit test failure.

This commit is contained in:
xiangpengzhao 2017-12-25 10:53:33 +08:00
parent 205cbf470e
commit 8b2da625fe
2 changed files with 161 additions and 160 deletions

View File

@ -236,6 +236,7 @@ var (
8: "3.0.17", 8: "3.0.17",
9: "3.1.10", 9: "3.1.10",
10: "3.1.10", 10: "3.1.10",
11: "3.1.10",
} }
) )

View File

@ -47,7 +47,7 @@ func (f *fakeVersionGetter) VersionFromCILabel(ciVersionLabel, _ string) (string
if ciVersionLabel == "latest" { if ciVersionLabel == "latest" {
return f.latestVersion, versionutil.MustParseSemantic(f.latestVersion), nil return f.latestVersion, versionutil.MustParseSemantic(f.latestVersion), nil
} }
if ciVersionLabel == "latest-1.9" { if ciVersionLabel == "latest-1.10" {
return f.latestDevBranchVersion, versionutil.MustParseSemantic(f.latestDevBranchVersion), nil return f.latestDevBranchVersion, versionutil.MustParseSemantic(f.latestDevBranchVersion), nil
} }
return f.stablePatchVersion, versionutil.MustParseSemantic(f.stablePatchVersion), nil return f.stablePatchVersion, versionutil.MustParseSemantic(f.stablePatchVersion), nil
@ -64,7 +64,7 @@ type fakeEtcdCluster struct{}
func (f fakeEtcdCluster) GetEtcdClusterStatus() (*clientv3.StatusResponse, error) { func (f fakeEtcdCluster) GetEtcdClusterStatus() (*clientv3.StatusResponse, error) {
client := &clientv3.StatusResponse{} client := &clientv3.StatusResponse{}
client.Version = "3.0.14" client.Version = "3.1.10"
return client, nil return client, nil
} }
@ -78,12 +78,12 @@ func TestGetAvailableUpgrades(t *testing.T) {
}{ }{
{ // no action needed, already up-to-date { // no action needed, already up-to-date
vg: &fakeVersionGetter{ vg: &fakeVersionGetter{
clusterVersion: "v1.8.3", clusterVersion: "v1.9.3",
kubeletVersion: "v1.8.3", kubeletVersion: "v1.9.3",
kubeadmVersion: "v1.8.3", kubeadmVersion: "v1.9.3",
stablePatchVersion: "v1.8.3", stablePatchVersion: "v1.9.3",
stableVersion: "v1.8.3", stableVersion: "v1.9.3",
}, },
expectedUpgrades: []Upgrade{}, expectedUpgrades: []Upgrade{},
allowExperimental: false, allowExperimental: false,
@ -91,30 +91,30 @@ func TestGetAvailableUpgrades(t *testing.T) {
}, },
{ // simple patch version upgrade { // simple patch version upgrade
vg: &fakeVersionGetter{ vg: &fakeVersionGetter{
clusterVersion: "v1.8.1", clusterVersion: "v1.9.1",
kubeletVersion: "v1.8.1", // the kubelet are on the same version as the control plane kubeletVersion: "v1.9.1", // the kubelet are on the same version as the control plane
kubeadmVersion: "v1.8.2", kubeadmVersion: "v1.9.2",
stablePatchVersion: "v1.8.3", stablePatchVersion: "v1.9.3",
stableVersion: "v1.8.3", stableVersion: "v1.9.3",
}, },
expectedUpgrades: []Upgrade{ expectedUpgrades: []Upgrade{
{ {
Description: "version in the v1.8 series", Description: "version in the v1.9 series",
Before: ClusterState{ Before: ClusterState{
KubeVersion: "v1.8.1", KubeVersion: "v1.9.1",
KubeletVersions: map[string]uint16{ KubeletVersions: map[string]uint16{
"v1.8.1": 1, "v1.9.1": 1,
}, },
KubeadmVersion: "v1.8.2", KubeadmVersion: "v1.9.2",
DNSVersion: "1.14.5", DNSVersion: "1.14.7",
EtcdVersion: "3.0.14", EtcdVersion: "3.1.10",
}, },
After: ClusterState{ After: ClusterState{
KubeVersion: "v1.8.3", KubeVersion: "v1.9.3",
KubeadmVersion: "v1.8.3", KubeadmVersion: "v1.9.3",
DNSVersion: "1.14.5", DNSVersion: "1.14.7",
EtcdVersion: "3.0.17", EtcdVersion: "3.1.10",
}, },
}, },
}, },
@ -123,28 +123,28 @@ func TestGetAvailableUpgrades(t *testing.T) {
}, },
{ // minor version upgrade only { // minor version upgrade only
vg: &fakeVersionGetter{ vg: &fakeVersionGetter{
clusterVersion: "v1.8.1", clusterVersion: "v1.9.1",
kubeletVersion: "v1.8.1", // the kubelet are on the same version as the control plane kubeletVersion: "v1.9.1", // the kubelet are on the same version as the control plane
kubeadmVersion: "v1.9.0", kubeadmVersion: "v1.10.0",
stablePatchVersion: "v1.8.1", stablePatchVersion: "v1.9.1",
stableVersion: "v1.9.0", stableVersion: "v1.10.0",
}, },
expectedUpgrades: []Upgrade{ expectedUpgrades: []Upgrade{
{ {
Description: "stable version", Description: "stable version",
Before: ClusterState{ Before: ClusterState{
KubeVersion: "v1.8.1", KubeVersion: "v1.9.1",
KubeletVersions: map[string]uint16{ KubeletVersions: map[string]uint16{
"v1.8.1": 1, "v1.9.1": 1,
}, },
KubeadmVersion: "v1.9.0", KubeadmVersion: "v1.10.0",
DNSVersion: "1.14.5", DNSVersion: "1.14.7",
EtcdVersion: "3.0.14", EtcdVersion: "3.1.10",
}, },
After: ClusterState{ After: ClusterState{
KubeVersion: "v1.9.0", KubeVersion: "v1.10.0",
KubeadmVersion: "v1.9.0", KubeadmVersion: "v1.10.0",
DNSVersion: "1.14.7", DNSVersion: "1.14.7",
EtcdVersion: "3.1.10", EtcdVersion: "3.1.10",
}, },
@ -155,46 +155,46 @@ func TestGetAvailableUpgrades(t *testing.T) {
}, },
{ // both minor version upgrade and patch version upgrade available { // both minor version upgrade and patch version upgrade available
vg: &fakeVersionGetter{ vg: &fakeVersionGetter{
clusterVersion: "v1.8.3", clusterVersion: "v1.9.3",
kubeletVersion: "v1.8.3", // the kubelet are on the same version as the control plane kubeletVersion: "v1.9.3", // the kubelet are on the same version as the control plane
kubeadmVersion: "v1.8.5", kubeadmVersion: "v1.9.5",
stablePatchVersion: "v1.8.5", stablePatchVersion: "v1.9.5",
stableVersion: "v1.9.1", stableVersion: "v1.10.1",
}, },
expectedUpgrades: []Upgrade{ expectedUpgrades: []Upgrade{
{ {
Description: "version in the v1.8 series", Description: "version in the v1.9 series",
Before: ClusterState{ Before: ClusterState{
KubeVersion: "v1.8.3", KubeVersion: "v1.9.3",
KubeletVersions: map[string]uint16{ KubeletVersions: map[string]uint16{
"v1.8.3": 1, "v1.9.3": 1,
}, },
KubeadmVersion: "v1.8.5", KubeadmVersion: "v1.9.5",
DNSVersion: "1.14.5", DNSVersion: "1.14.7",
EtcdVersion: "3.0.14", EtcdVersion: "3.1.10",
}, },
After: ClusterState{ After: ClusterState{
KubeVersion: "v1.8.5", KubeVersion: "v1.9.5",
KubeadmVersion: "v1.8.5", // Note: The kubeadm version mustn't be "downgraded" here KubeadmVersion: "v1.9.5", // Note: The kubeadm version mustn't be "downgraded" here
DNSVersion: "1.14.5", DNSVersion: "1.14.7",
EtcdVersion: "3.0.17", EtcdVersion: "3.1.10",
}, },
}, },
{ {
Description: "stable version", Description: "stable version",
Before: ClusterState{ Before: ClusterState{
KubeVersion: "v1.8.3", KubeVersion: "v1.9.3",
KubeletVersions: map[string]uint16{ KubeletVersions: map[string]uint16{
"v1.8.3": 1, "v1.9.3": 1,
}, },
KubeadmVersion: "v1.8.5", KubeadmVersion: "v1.9.5",
DNSVersion: "1.14.5", DNSVersion: "1.14.7",
EtcdVersion: "3.0.14", EtcdVersion: "3.1.10",
}, },
After: ClusterState{ After: ClusterState{
KubeVersion: "v1.9.1", KubeVersion: "v1.10.1",
KubeadmVersion: "v1.9.1", KubeadmVersion: "v1.10.1",
DNSVersion: "1.14.7", DNSVersion: "1.14.7",
EtcdVersion: "3.1.10", EtcdVersion: "3.1.10",
}, },
@ -205,13 +205,13 @@ func TestGetAvailableUpgrades(t *testing.T) {
}, },
{ // allow experimental upgrades, but no upgrade available { // allow experimental upgrades, but no upgrade available
vg: &fakeVersionGetter{ vg: &fakeVersionGetter{
clusterVersion: "v1.9.0-alpha.2", clusterVersion: "v1.10.0-alpha.2",
kubeletVersion: "v1.8.5", kubeletVersion: "v1.9.5",
kubeadmVersion: "v1.8.5", kubeadmVersion: "v1.9.5",
stablePatchVersion: "v1.8.5", stablePatchVersion: "v1.9.5",
stableVersion: "v1.8.5", stableVersion: "v1.9.5",
latestVersion: "v1.9.0-alpha.2", latestVersion: "v1.10.0-alpha.2",
}, },
expectedUpgrades: []Upgrade{}, expectedUpgrades: []Upgrade{},
allowExperimental: true, allowExperimental: true,
@ -219,29 +219,29 @@ func TestGetAvailableUpgrades(t *testing.T) {
}, },
{ // upgrade to an unstable version should be supported { // upgrade to an unstable version should be supported
vg: &fakeVersionGetter{ vg: &fakeVersionGetter{
clusterVersion: "v1.8.5", clusterVersion: "v1.9.5",
kubeletVersion: "v1.8.5", kubeletVersion: "v1.9.5",
kubeadmVersion: "v1.8.5", kubeadmVersion: "v1.9.5",
stablePatchVersion: "v1.8.5", stablePatchVersion: "v1.9.5",
stableVersion: "v1.8.5", stableVersion: "v1.9.5",
latestVersion: "v1.9.0-alpha.2", latestVersion: "v1.10.0-alpha.2",
}, },
expectedUpgrades: []Upgrade{ expectedUpgrades: []Upgrade{
{ {
Description: "experimental version", Description: "experimental version",
Before: ClusterState{ Before: ClusterState{
KubeVersion: "v1.8.5", KubeVersion: "v1.9.5",
KubeletVersions: map[string]uint16{ KubeletVersions: map[string]uint16{
"v1.8.5": 1, "v1.9.5": 1,
}, },
KubeadmVersion: "v1.8.5", KubeadmVersion: "v1.9.5",
DNSVersion: "1.14.5", DNSVersion: "1.14.7",
EtcdVersion: "3.0.14", EtcdVersion: "3.1.10",
}, },
After: ClusterState{ After: ClusterState{
KubeVersion: "v1.9.0-alpha.2", KubeVersion: "v1.10.0-alpha.2",
KubeadmVersion: "v1.9.0-alpha.2", KubeadmVersion: "v1.10.0-alpha.2",
DNSVersion: "1.14.7", DNSVersion: "1.14.7",
EtcdVersion: "3.1.10", EtcdVersion: "3.1.10",
}, },
@ -252,29 +252,29 @@ func TestGetAvailableUpgrades(t *testing.T) {
}, },
{ // upgrade from an unstable version to an unstable version should be supported { // upgrade from an unstable version to an unstable version should be supported
vg: &fakeVersionGetter{ vg: &fakeVersionGetter{
clusterVersion: "v1.9.0-alpha.1", clusterVersion: "v1.10.0-alpha.1",
kubeletVersion: "v1.8.5", kubeletVersion: "v1.9.5",
kubeadmVersion: "v1.8.5", kubeadmVersion: "v1.9.5",
stablePatchVersion: "v1.8.5", stablePatchVersion: "v1.9.5",
stableVersion: "v1.8.5", stableVersion: "v1.9.5",
latestVersion: "v1.9.0-alpha.2", latestVersion: "v1.10.0-alpha.2",
}, },
expectedUpgrades: []Upgrade{ expectedUpgrades: []Upgrade{
{ {
Description: "experimental version", Description: "experimental version",
Before: ClusterState{ Before: ClusterState{
KubeVersion: "v1.9.0-alpha.1", KubeVersion: "v1.10.0-alpha.1",
KubeletVersions: map[string]uint16{ KubeletVersions: map[string]uint16{
"v1.8.5": 1, "v1.9.5": 1,
}, },
KubeadmVersion: "v1.8.5", KubeadmVersion: "v1.9.5",
DNSVersion: "1.14.7", DNSVersion: "1.14.7",
EtcdVersion: "3.0.14", EtcdVersion: "3.1.10",
}, },
After: ClusterState{ After: ClusterState{
KubeVersion: "v1.9.0-alpha.2", KubeVersion: "v1.10.0-alpha.2",
KubeadmVersion: "v1.9.0-alpha.2", KubeadmVersion: "v1.10.0-alpha.2",
DNSVersion: "1.14.7", DNSVersion: "1.14.7",
EtcdVersion: "3.1.10", EtcdVersion: "3.1.10",
}, },
@ -285,30 +285,30 @@ func TestGetAvailableUpgrades(t *testing.T) {
}, },
{ // v1.X.0-alpha.0 should be ignored { // v1.X.0-alpha.0 should be ignored
vg: &fakeVersionGetter{ vg: &fakeVersionGetter{
clusterVersion: "v1.8.5", clusterVersion: "v1.9.5",
kubeletVersion: "v1.8.5", kubeletVersion: "v1.9.5",
kubeadmVersion: "v1.8.5", kubeadmVersion: "v1.9.5",
stablePatchVersion: "v1.8.5", stablePatchVersion: "v1.9.5",
stableVersion: "v1.8.5", stableVersion: "v1.9.5",
latestDevBranchVersion: "v1.9.0-beta.1", latestDevBranchVersion: "v1.10.0-beta.1",
latestVersion: "v1.10.0-alpha.0", latestVersion: "v1.11.0-alpha.0",
}, },
expectedUpgrades: []Upgrade{ expectedUpgrades: []Upgrade{
{ {
Description: "experimental version", Description: "experimental version",
Before: ClusterState{ Before: ClusterState{
KubeVersion: "v1.8.5", KubeVersion: "v1.9.5",
KubeletVersions: map[string]uint16{ KubeletVersions: map[string]uint16{
"v1.8.5": 1, "v1.9.5": 1,
}, },
KubeadmVersion: "v1.8.5", KubeadmVersion: "v1.9.5",
DNSVersion: "1.14.5", DNSVersion: "1.14.7",
EtcdVersion: "3.0.14", EtcdVersion: "3.1.10",
}, },
After: ClusterState{ After: ClusterState{
KubeVersion: "v1.9.0-beta.1", KubeVersion: "v1.10.0-beta.1",
KubeadmVersion: "v1.9.0-beta.1", KubeadmVersion: "v1.10.0-beta.1",
DNSVersion: "1.14.7", DNSVersion: "1.14.7",
EtcdVersion: "3.1.10", EtcdVersion: "3.1.10",
}, },
@ -319,30 +319,30 @@ func TestGetAvailableUpgrades(t *testing.T) {
}, },
{ // upgrade to an RC version should be supported { // upgrade to an RC version should be supported
vg: &fakeVersionGetter{ vg: &fakeVersionGetter{
clusterVersion: "v1.8.5", clusterVersion: "v1.9.5",
kubeletVersion: "v1.8.5", kubeletVersion: "v1.9.5",
kubeadmVersion: "v1.8.5", kubeadmVersion: "v1.9.5",
stablePatchVersion: "v1.8.5", stablePatchVersion: "v1.9.5",
stableVersion: "v1.8.5", stableVersion: "v1.9.5",
latestDevBranchVersion: "v1.9.0-rc.1", latestDevBranchVersion: "v1.10.0-rc.1",
latestVersion: "v1.10.0-alpha.1", latestVersion: "v1.11.0-alpha.1",
}, },
expectedUpgrades: []Upgrade{ expectedUpgrades: []Upgrade{
{ {
Description: "release candidate version", Description: "release candidate version",
Before: ClusterState{ Before: ClusterState{
KubeVersion: "v1.8.5", KubeVersion: "v1.9.5",
KubeletVersions: map[string]uint16{ KubeletVersions: map[string]uint16{
"v1.8.5": 1, "v1.9.5": 1,
}, },
KubeadmVersion: "v1.8.5", KubeadmVersion: "v1.9.5",
DNSVersion: "1.14.5", DNSVersion: "1.14.7",
EtcdVersion: "3.0.14", EtcdVersion: "3.1.10",
}, },
After: ClusterState{ After: ClusterState{
KubeVersion: "v1.9.0-rc.1", KubeVersion: "v1.10.0-rc.1",
KubeadmVersion: "v1.9.0-rc.1", KubeadmVersion: "v1.10.0-rc.1",
DNSVersion: "1.14.7", DNSVersion: "1.14.7",
EtcdVersion: "3.1.10", EtcdVersion: "3.1.10",
}, },
@ -353,30 +353,30 @@ func TestGetAvailableUpgrades(t *testing.T) {
}, },
{ // it is possible (but very uncommon) that the latest version from the previous branch is an rc and the current latest version is alpha.0. In that case, show the RC { // it is possible (but very uncommon) that the latest version from the previous branch is an rc and the current latest version is alpha.0. In that case, show the RC
vg: &fakeVersionGetter{ vg: &fakeVersionGetter{
clusterVersion: "v1.8.5", clusterVersion: "v1.9.5",
kubeletVersion: "v1.8.5", kubeletVersion: "v1.9.5",
kubeadmVersion: "v1.8.5", kubeadmVersion: "v1.9.5",
stablePatchVersion: "v1.8.5", stablePatchVersion: "v1.9.5",
stableVersion: "v1.8.5", stableVersion: "v1.9.5",
latestDevBranchVersion: "v1.9.6-rc.1", latestDevBranchVersion: "v1.10.6-rc.1",
latestVersion: "v1.10.1-alpha.0", latestVersion: "v1.11.1-alpha.0",
}, },
expectedUpgrades: []Upgrade{ expectedUpgrades: []Upgrade{
{ {
Description: "experimental version", // Note that this is considered an experimental version in this uncommon scenario Description: "experimental version", // Note that this is considered an experimental version in this uncommon scenario
Before: ClusterState{ Before: ClusterState{
KubeVersion: "v1.8.5", KubeVersion: "v1.9.5",
KubeletVersions: map[string]uint16{ KubeletVersions: map[string]uint16{
"v1.8.5": 1, "v1.9.5": 1,
}, },
KubeadmVersion: "v1.8.5", KubeadmVersion: "v1.9.5",
DNSVersion: "1.14.5", DNSVersion: "1.14.7",
EtcdVersion: "3.0.14", EtcdVersion: "3.1.10",
}, },
After: ClusterState{ After: ClusterState{
KubeVersion: "v1.9.6-rc.1", KubeVersion: "v1.10.6-rc.1",
KubeadmVersion: "v1.9.6-rc.1", KubeadmVersion: "v1.10.6-rc.1",
DNSVersion: "1.14.7", DNSVersion: "1.14.7",
EtcdVersion: "3.1.10", EtcdVersion: "3.1.10",
}, },
@ -387,30 +387,30 @@ func TestGetAvailableUpgrades(t *testing.T) {
}, },
{ // upgrade to an RC version should be supported. There may also be an even newer unstable version. { // upgrade to an RC version should be supported. There may also be an even newer unstable version.
vg: &fakeVersionGetter{ vg: &fakeVersionGetter{
clusterVersion: "v1.8.5", clusterVersion: "v1.9.5",
kubeletVersion: "v1.8.5", kubeletVersion: "v1.9.5",
kubeadmVersion: "v1.8.5", kubeadmVersion: "v1.9.5",
stablePatchVersion: "v1.8.5", stablePatchVersion: "v1.9.5",
stableVersion: "v1.8.5", stableVersion: "v1.9.5",
latestDevBranchVersion: "v1.9.0-rc.1", latestDevBranchVersion: "v1.10.0-rc.1",
latestVersion: "v1.10.0-alpha.2", latestVersion: "v1.11.0-alpha.2",
}, },
expectedUpgrades: []Upgrade{ expectedUpgrades: []Upgrade{
{ {
Description: "release candidate version", Description: "release candidate version",
Before: ClusterState{ Before: ClusterState{
KubeVersion: "v1.8.5", KubeVersion: "v1.9.5",
KubeletVersions: map[string]uint16{ KubeletVersions: map[string]uint16{
"v1.8.5": 1, "v1.9.5": 1,
}, },
KubeadmVersion: "v1.8.5", KubeadmVersion: "v1.9.5",
DNSVersion: "1.14.5", DNSVersion: "1.14.7",
EtcdVersion: "3.0.14", EtcdVersion: "3.1.10",
}, },
After: ClusterState{ After: ClusterState{
KubeVersion: "v1.9.0-rc.1", KubeVersion: "v1.10.0-rc.1",
KubeadmVersion: "v1.9.0-rc.1", KubeadmVersion: "v1.10.0-rc.1",
DNSVersion: "1.14.7", DNSVersion: "1.14.7",
EtcdVersion: "3.1.10", EtcdVersion: "3.1.10",
}, },
@ -418,17 +418,17 @@ func TestGetAvailableUpgrades(t *testing.T) {
{ {
Description: "experimental version", Description: "experimental version",
Before: ClusterState{ Before: ClusterState{
KubeVersion: "v1.8.5", KubeVersion: "v1.9.5",
KubeletVersions: map[string]uint16{ KubeletVersions: map[string]uint16{
"v1.8.5": 1, "v1.9.5": 1,
}, },
KubeadmVersion: "v1.8.5", KubeadmVersion: "v1.9.5",
DNSVersion: "1.14.5", DNSVersion: "1.14.7",
EtcdVersion: "3.0.14", EtcdVersion: "3.1.10",
}, },
After: ClusterState{ After: ClusterState{
KubeVersion: "v1.10.0-alpha.2", KubeVersion: "v1.11.0-alpha.2",
KubeadmVersion: "v1.10.0-alpha.2", KubeadmVersion: "v1.11.0-alpha.2",
DNSVersion: "1.14.7", DNSVersion: "1.14.7",
EtcdVersion: "3.1.10", EtcdVersion: "3.1.10",
}, },
@ -463,36 +463,36 @@ func TestKubeletUpgrade(t *testing.T) {
}{ }{
{ // upgrade available { // upgrade available
before: map[string]uint16{ before: map[string]uint16{
"v1.7.1": 1, "v1.9.1": 1,
}, },
after: "v1.7.3", after: "v1.9.3",
expected: true, expected: true,
}, },
{ // upgrade available { // upgrade available
before: map[string]uint16{ before: map[string]uint16{
"v1.7.1": 1, "v1.9.1": 1,
"v1.7.3": 100, "v1.9.3": 100,
}, },
after: "v1.7.3", after: "v1.9.3",
expected: true, expected: true,
}, },
{ // upgrade not available { // upgrade not available
before: map[string]uint16{ before: map[string]uint16{
"v1.7.3": 1, "v1.9.3": 1,
}, },
after: "v1.7.3", after: "v1.9.3",
expected: false, expected: false,
}, },
{ // upgrade not available { // upgrade not available
before: map[string]uint16{ before: map[string]uint16{
"v1.7.3": 100, "v1.9.3": 100,
}, },
after: "v1.7.3", after: "v1.9.3",
expected: false, expected: false,
}, },
{ // upgrade not available if we don't know anything about the earlier state { // upgrade not available if we don't know anything about the earlier state
before: map[string]uint16{}, before: map[string]uint16{},
after: "v1.7.3", after: "v1.9.3",
expected: false, expected: false,
}, },
} }