Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

test: fix nightly upgrade test #10306

Merged
merged 2 commits into from Mar 2, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
48 changes: 34 additions & 14 deletions Jenkinsfile.nightly
Expand Up @@ -34,7 +34,7 @@ pipeline {
environment {
PROJ_PATH = "src/github.com/cilium/cilium"
GOPATH = "${WORKSPACE}"
TESTDIR = "${WORKSPACE}/${PROJ_PATH}/test"
TESTDIR = "${GOPATH}/${PROJ_PATH}/test"
SERVER_BOX = "cilium/ubuntu"
NIGHTLY_TAG = "${new Date().format("yyyyMMdd")}-${BUILD_NUMBER}"
}
Expand All @@ -50,9 +50,9 @@ pipeline {
steps {
Status("PENDING", "$JOB_BASE_NAME")
sh 'env'
sh 'rm -rf src; mkdir -p src/github.com/cilium'
sh 'ln -s $WORKSPACE src/github.com/cilium/cilium'
checkout scm
sh 'mkdir -p ${PROJ_PATH}'
sh 'ls -A | grep -v src | xargs mv -t ${PROJ_PATH}'
sh '/usr/local/bin/cleanup || true'
}
}
Expand Down Expand Up @@ -84,33 +84,53 @@ pipeline {
}
}
}
stage('Make Cilium images') {
steps {
sh 'cd ${TESTDIR}; ./make-images-push-to-local-registry.sh $(./print-node-ip.sh) latest'
}
post {
unsuccessful {
script {
if (!currentBuild.displayName.contains('fail')) {
currentBuild.displayName = 'building or pushing Cilium images failed ' + currentBuild.displayName
}
}
}
}
}
stage('Nightly-Tests') {
environment {
K8S_NODES=4
K8S_VERSION=1.12
VM_MEMORY=4096
VM_CPUS=4
FAILFAST=setIfLabel("ci/fail-fast", "true", "false")
KUBECONFIG="vagrant-kubeconfig"
}

options {
timeout(time: 460, unit: 'MINUTES')
}

steps {
parallel(
"Nightly":{
sh 'cd ${TESTDIR}; ginkgo --focus="Nightly*" -v --failFast=${FAILFAST} -- -cilium.timeout=450m'
},
)
dir("${TESTDIR}"){
sh './vagrant-ci-start.sh'
sh 'ginkgo --focus="$(echo ${ghprbCommentBody} | sed -r "s/([^ ]* |^[^ ]*$)//" | sed "s/^$/Nightly*/")" -v --failFast=${FAILFAST} -- -cilium.timeout=450m -cilium.provision=false -cilium.kubeconfig=${TESTDIR}/vagrant-kubeconfig -cilium.passCLIEnvironment=true -cilium.registry=$(./print-node-ip.sh)'
}
}
post {
always {
sh 'cd test/; ./post_build_agent.sh || true'
sh 'cd test/; vagrant destroy -f || true'
sh 'cd test/; ./archive_test_results.sh || true'
archiveArtifacts artifacts: '*.zip'
junit testDataPublishers: [[$class: 'AttachmentPublisher']], testResults: 'test/*.xml'
dir("${TESTDIR}"){
sh './post_build_agent.sh || true'
sh 'vagrant destroy -f || true'
sh './archive_test_results_eks.sh || true'
}
dir("${TESTDIR}/.."){
archiveArtifacts artifacts: '*.zip'
}
dir("${TESTDIR}"){
junit testDataPublishers: [[$class: 'AttachmentPublisher']], testResults: '*.xml'
}
}
}
}
Expand All @@ -119,7 +139,7 @@ pipeline {
always {
sh "cd ${TESTDIR}; K8S_VERSION=1.12 vagrant destroy -f || true"
sh "cd ${TESTDIR}; vagrant destroy -f || true"
sh 'cd ${TEST_DIR}; ./post_build_agent.sh || true'
sh 'cd ${TESTDIR}; ./post_build_agent.sh || true'
cleanWs()
sh '/usr/local/bin/cleanup || true'
}
Expand Down
74 changes: 51 additions & 23 deletions test/k8sT/Nightly.go
Expand Up @@ -322,8 +322,7 @@ var _ = Describe("NightlyEpsMeasurement", func() {
var _ = Describe("NightlyExamples", func() {

var kubectl *helpers.Kubectl
var demoPath string
var l3Policy, l7Policy string
var l3Policy string
var ciliumFilename string

BeforeAll(func() {
Expand Down Expand Up @@ -358,45 +357,74 @@ var _ = Describe("NightlyExamples", func() {
})

Context("Upgrade test", func() {
var cleanupCallback = func() { return }
var (
kubectl *helpers.Kubectl

cleanupCallback = func() { return }
)

BeforeAll(func() {
kubectl = helpers.CreateKubectl(helpers.K8s1VMName(), logger)

demoPath = helpers.ManifestGet(kubectl.BasePath(), "demo.yaml")
l7Policy = helpers.ManifestGet(kubectl.BasePath(), "l7-policy.yaml")
migrateSVCClient = helpers.ManifestGet(kubectl.BasePath(), "migrate-svc-client.yaml")
migrateSVCServer = helpers.ManifestGet(kubectl.BasePath(), "migrate-svc-server.yaml")
_ = kubectl.Delete(helpers.DNSDeployment(kubectl.BasePath()))

kubectl.Delete(migrateSVCClient)
kubectl.Delete(migrateSVCServer)
kubectl.Delete(l7Policy)
kubectl.Delete(demoPath)

BeforeEach(func() {
// Delete kube-dns because if not will be a restore the old endpoints
// from master instead of create the new ones.
_ = kubectl.Delete(helpers.DNSDeployment(kubectl.BasePath()))
_ = kubectl.DeleteResource(
"deploy", fmt.Sprintf("-n %s kube-dns", helpers.KubeSystemNamespace))

_ = kubectl.DeleteResource(
"deploy", fmt.Sprintf("-n %s cilium-operator", helpers.CiliumNamespace))
// Sometimes PolicyGen has a lot of pods running around without delete
// it. Using this we are sure that we delete before this test start
kubectl.Exec(fmt.Sprintf(
"%s delete --all pods,svc,cnp -n %s", helpers.KubectlCmd, helpers.DefaultNamespace))

// Delete etcd operator because sometimes when install from
// clean-state the quorum is lost.
// ETCD operator maybe is not installed at all, so no assert here.
kubectl.DeleteETCDOperator()

ExpectAllPodsTerminated(kubectl)
})

AfterAll(func() {
kubectl.CloseSSHClient()
})

AfterEach(func() {
cleanupCallback()
AfterFailed(func() {
kubectl.CiliumReport(helpers.CiliumNamespace, "cilium endpoint list")
})

AfterAll(func() {
_ = kubectl.ApplyDefault(helpers.DNSDeployment(kubectl.BasePath()))
JustAfterEach(func() {
kubectl.ValidateNoErrorsInLogs(CurrentGinkgoTestDescription().Duration)
})

AfterEach(func() {
cleanupCallback()
ExpectAllPodsTerminated(kubectl)
})

for imageVersion, chartVersion := range helpers.NightlyStableUpgradesFrom {
func(imageVersion, chartVersion string) {
It(fmt.Sprintf("Update Cilium from %s to master", imageVersion), func() {
var assertUpgradeSuccessful func()
assertUpgradeSuccessful, cleanupCallback = InstallAndValidateCiliumUpgrades(
kubectl,
imageVersion,
chartVersion,
helpers.CiliumLatestHelmChartVersion,
helpers.CiliumLatestImageVersion,
)
assertUpgradeSuccessful()
})
SkipItIf(func() bool { return !helpers.RunsWithKubeProxy() },
fmt.Sprintf("Update Cilium from %s to master", imageVersion), func() {
var assertUpgradeSuccessful func()
assertUpgradeSuccessful, cleanupCallback = InstallAndValidateCiliumUpgrades(
kubectl,
chartVersion,
imageVersion,
helpers.CiliumLatestHelmChartVersion,
helpers.CiliumLatestImageVersion,
)
assertUpgradeSuccessful()
})
}(imageVersion, chartVersion)
}
})
Expand Down