End to End tests framework

This commit is contained in:
Phani Teja Marupaka
2020-01-12 16:04:29 -08:00
parent 4e7446540c
commit 1d3c3995ed
3 changed files with 55 additions and 2 deletions

View File

@@ -17,6 +17,9 @@ verify-kustomize: \
test-examples-kustomize-against-HEAD \
test-examples-kustomize-against-latest
.PHONY: verify-kustomize-e2e
verify-kustomize-e2e: test-examples-e2e-kustomize-against-HEAD
# Other builds in this repo might want a different linter version.
# Without one Makefile to rule them all, the different makes
# cannot assume that golanci-lint is at the version they want
@@ -48,6 +51,11 @@ $(MYGOBIN)/goimports:
cd api; \
go install golang.org/x/tools/cmd/goimports
# Install resource from whatever is checked out.
$(MYGOBIN)/resource:
cd cmd/resource; \
go install .
# To pin pluginator, use this recipe instead:
# cd api;
# go install sigs.k8s.io/kustomize/pluginator/v2
@@ -193,6 +201,10 @@ test-unit-kustomize-all: \
test-examples-kustomize-against-HEAD: $(MYGOBIN)/kustomize $(MYGOBIN)/mdrip
./hack/testExamplesAgainstKustomize.sh HEAD
.PHONY:
test-examples-e2e-kustomize-against-HEAD: $(MYGOBIN)/kustomize $(MYGOBIN)/mdrip $(MYGOBIN)/resource
./hack/testExamplesE2EAgainstKustomize.sh HEAD
.PHONY:
test-examples-kustomize-against-latest: $(MYGOBIN)/mdrip
( \

View File

@@ -22,7 +22,7 @@ Steps:
First define a place to work:
<!-- @makeWorkplace @testAgainstLatestRelease -->
<!-- @makeWorkplace @testAgainstLatestRelease @testE2EAgainstLatestRelease-->
```
DEMO_HOME=$(mktemp -d)
```
@@ -44,7 +44,7 @@ To keep this document shorter, the base resources are
off in a supplemental data directory rather than
declared here as HERE documents. Download them:
<!-- @downloadBase @testAgainstLatestRelease -->
<!-- @downloadBase @testAgainstLatestRelease @testE2EAgainstLatestRelease-->
```
BASE=$DEMO_HOME/base
mkdir -p $BASE
@@ -309,3 +309,31 @@ To deploy, pipe the above commands to kubectl apply:
> kustomize build $OVERLAYS/production |\
> kubectl apply -f -
> ```
[Alpha] To do end to end tests using kustomize, use the following commands on any folder. You should have GOPATH set up and "kind" installed(https://github.com/kubernetes-sigs/kind).
<!-- @e2eTest @testE2EAgainstLatestRelease -->
```
MYGOBIN=$GOPATH/bin
kind delete cluster;
kind create cluster;
$MYGOBIN/kustomize build $BASE | kubectl apply -f -;
status=$(mktemp);
$MYGOBIN/resource status events $BASE #Waits for all transient events to finish
$MYGOBIN/resource status fetch $BASE > $status
test 1 == \
$(grep "apps/v1/Deployment" $status | grep "Deployment is available. Replicas: 3" | wc -l); \
echo $?
test 1 == \
$(grep "v1/ConfigMap" $status | grep "Resource is always ready" | wc -l); \
echo $?
test 1 == \
$(grep "v1/Service" $status | grep "Service is ready" | wc -l); \
echo $?
$MYGOBIN/kustomize build $BASE | kubectl delete -f -;
kind delete cluster;
```

View File

@@ -0,0 +1,13 @@
#!/usr/bin/env bash
#
# Copyright 2019 The Kubernetes Authors.
# SPDX-License-Identifier: Apache-2.0
set -o nounset
set -o errexit
set -o pipefail
mdrip --blockTimeOut 60m0s --mode test \
--label testE2EAgainstLatestRelease examples
echo "Example e2e tests passed against ${version}."