k8s.io/kubernetes@v1.29.3/test/e2e/cloud/gcp/cluster_upgrade.go (about)

     1  /*
     2  Copyright 2016 The Kubernetes Authors.
     3  
     4  Licensed under the Apache License, Version 2.0 (the "License");
     5  you may not use this file except in compliance with the License.
     6  You may obtain a copy of the License at
     7  
     8      http://www.apache.org/licenses/LICENSE-2.0
     9  
    10  Unless required by applicable law or agreed to in writing, software
    11  distributed under the License is distributed on an "AS IS" BASIS,
    12  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    13  See the License for the specific language governing permissions and
    14  limitations under the License.
    15  */
    16  
    17  package gcp
    18  
    19  import (
    20  	"context"
    21  
    22  	"k8s.io/kubernetes/test/e2e/cloud/gcp/common"
    23  	"k8s.io/kubernetes/test/e2e/feature"
    24  	"k8s.io/kubernetes/test/e2e/framework"
    25  	"k8s.io/kubernetes/test/e2e/upgrades"
    26  	"k8s.io/kubernetes/test/e2e/upgrades/apps"
    27  	"k8s.io/kubernetes/test/e2e/upgrades/autoscaling"
    28  	"k8s.io/kubernetes/test/e2e/upgrades/network"
    29  	"k8s.io/kubernetes/test/e2e/upgrades/node"
    30  	"k8s.io/kubernetes/test/e2e/upgrades/storage"
    31  	"k8s.io/kubernetes/test/utils/junit"
    32  	admissionapi "k8s.io/pod-security-admission/api"
    33  
    34  	"github.com/onsi/ginkgo/v2"
    35  )
    36  
    37  // TODO: Those tests should be split by SIG and moved to SIG-owned directories,
    38  //
    39  //	however that involves also splitting the actual upgrade jobs too.
    40  //	Figure out the eventual solution for it.
    41  var upgradeTests = []upgrades.Test{
    42  	&apps.DaemonSetUpgradeTest{},
    43  	&apps.DeploymentUpgradeTest{},
    44  	&apps.JobUpgradeTest{},
    45  	&apps.ReplicaSetUpgradeTest{},
    46  	&apps.StatefulSetUpgradeTest{},
    47  	&autoscaling.HPAUpgradeTest{},
    48  	&network.ServiceUpgradeTest{},
    49  	&node.AppArmorUpgradeTest{},
    50  	&node.ConfigMapUpgradeTest{},
    51  	&node.SecretUpgradeTest{},
    52  	&storage.PersistentVolumeUpgradeTest{},
    53  	&storage.VolumeModeDowngradeTest{},
    54  }
    55  
    56  var _ = SIGDescribe("Upgrade", feature.Upgrade, func() {
    57  	f := framework.NewDefaultFramework("cluster-upgrade")
    58  	f.NamespacePodSecurityLevel = admissionapi.LevelPrivileged
    59  	testFrameworks := upgrades.CreateUpgradeFrameworks(upgradeTests)
    60  
    61  	// Create the frameworks here because we can only create them
    62  	// in a "Describe".
    63  	ginkgo.Describe("master upgrade", func() {
    64  		f.It("should maintain a functioning cluster", feature.MasterUpgrade, func(ctx context.Context) {
    65  			upgCtx, err := common.GetUpgradeContext(f.ClientSet.Discovery())
    66  			framework.ExpectNoError(err)
    67  
    68  			testSuite := &junit.TestSuite{Name: "Master upgrade"}
    69  			masterUpgradeTest := &junit.TestCase{
    70  				Name:      "[sig-cloud-provider-gcp] master-upgrade",
    71  				Classname: "upgrade_tests",
    72  			}
    73  			testSuite.TestCases = append(testSuite.TestCases, masterUpgradeTest)
    74  
    75  			upgradeFunc := common.ControlPlaneUpgradeFunc(f, upgCtx, masterUpgradeTest, nil)
    76  			upgrades.RunUpgradeSuite(ctx, upgCtx, upgradeTests, testFrameworks, testSuite, upgrades.MasterUpgrade, upgradeFunc)
    77  		})
    78  	})
    79  
    80  	ginkgo.Describe("cluster upgrade", func() {
    81  		f.It("should maintain a functioning cluster", feature.ClusterUpgrade, func(ctx context.Context) {
    82  			upgCtx, err := common.GetUpgradeContext(f.ClientSet.Discovery())
    83  			framework.ExpectNoError(err)
    84  
    85  			testSuite := &junit.TestSuite{Name: "Cluster upgrade"}
    86  			clusterUpgradeTest := &junit.TestCase{Name: "[sig-cloud-provider-gcp] cluster-upgrade", Classname: "upgrade_tests"}
    87  			testSuite.TestCases = append(testSuite.TestCases, clusterUpgradeTest)
    88  
    89  			upgradeFunc := common.ClusterUpgradeFunc(f, upgCtx, clusterUpgradeTest, nil, nil)
    90  			upgrades.RunUpgradeSuite(ctx, upgCtx, upgradeTests, testFrameworks, testSuite, upgrades.ClusterUpgrade, upgradeFunc)
    91  		})
    92  	})
    93  })
    94  
    95  var _ = SIGDescribe("Downgrade", feature.Downgrade, func() {
    96  	f := framework.NewDefaultFramework("cluster-downgrade")
    97  	f.NamespacePodSecurityLevel = admissionapi.LevelPrivileged
    98  	testFrameworks := upgrades.CreateUpgradeFrameworks(upgradeTests)
    99  
   100  	ginkgo.Describe("cluster downgrade", func() {
   101  		f.It("should maintain a functioning cluster", feature.ClusterDowngrade, func(ctx context.Context) {
   102  			upgCtx, err := common.GetUpgradeContext(f.ClientSet.Discovery())
   103  			framework.ExpectNoError(err)
   104  
   105  			testSuite := &junit.TestSuite{Name: "Cluster downgrade"}
   106  			clusterDowngradeTest := &junit.TestCase{Name: "[sig-cloud-provider-gcp] cluster-downgrade", Classname: "upgrade_tests"}
   107  			testSuite.TestCases = append(testSuite.TestCases, clusterDowngradeTest)
   108  
   109  			upgradeFunc := common.ClusterDowngradeFunc(f, upgCtx, clusterDowngradeTest, nil, nil)
   110  			upgrades.RunUpgradeSuite(ctx, upgCtx, upgradeTests, testFrameworks, testSuite, upgrades.ClusterUpgrade, upgradeFunc)
   111  		})
   112  	})
   113  })