kubernetes-operator/test/e2e/jenkins_restore_backup_test.go

63 lines
1.9 KiB
Go

package e2e
import (
"github.com/jenkinsci/kubernetes-operator/api/v1alpha2"
. "github.com/onsi/ginkgo"
corev1 "k8s.io/api/core/v1"
// +kubebuilder:scaffold:imports
)
var _ = Describe("Jenkins controller backup and restore", func() {
const (
jenkinsCRName = e2e
jobID = "e2e-jenkins-operator"
)
var (
namespace *corev1.Namespace
jenkins *v1alpha2.Jenkins
)
BeforeEach(func() {
namespace = CreateNamespace()
createPVC(namespace.Name)
jenkins = createJenkinsWithBackupAndRestoreConfigured(jenkinsCRName, namespace.Name)
})
AfterEach(func() {
ShowLogsIfTestHasFailed(CurrentGinkgoTestDescription().Failed, namespace.Name)
DestroyNamespace(namespace)
})
Context("when deploying CR with backup enabled to cluster", func() {
It("performs backups before pod deletion and restores them even Jenkins status is restarted", func() {
WaitForJenkinsUserConfigurationToComplete(jenkins)
jenkinsClient, cleanUpFunc := verifyJenkinsAPIConnection(jenkins, namespace.Name)
defer cleanUpFunc()
waitForJobCreation(jenkinsClient, jobID)
verifyJobCanBeRun(jenkinsClient, jobID)
jenkins = getJenkins(jenkins.Namespace, jenkins.Name)
restartJenkinsMasterPod(jenkins)
waitForRecreateJenkinsMasterPod(jenkins)
WaitForJenkinsUserConfigurationToComplete(jenkins)
jenkinsClient2, cleanUpFunc2 := verifyJenkinsAPIConnection(jenkins, namespace.Name)
defer cleanUpFunc2()
waitForJobCreation(jenkinsClient2, jobID)
verifyJobBuildsAfterRestoreBackup(jenkinsClient2, jobID)
resetJenkinsStatus(jenkins)
jenkins = getJenkins(jenkins.Namespace, jenkins.Name)
checkBaseConfigurationCompleteTimeIsNotSet(jenkins)
WaitForJenkinsUserConfigurationToComplete(jenkins)
jenkinsClient3, cleanUpFunc3 := verifyJenkinsAPIConnection(jenkins, namespace.Name)
defer cleanUpFunc3()
waitForJobCreation(jenkinsClient3, jobID)
verifyJobBuildsAfterRestoreBackup(jenkinsClient3, jobID)
})
})
})