Skip to content

Commit

Permalink
Fix flaky acceptance test (#229)
Browse files Browse the repository at this point in the history
  • Loading branch information
int128 committed Feb 7, 2020
1 parent c53d415 commit 9fe6a09
Showing 1 changed file with 20 additions and 18 deletions.
38 changes: 20 additions & 18 deletions acceptance_test/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,14 @@ KUBECONFIG := $(OUTPUT_DIR)/kubeconfig.yaml
export KUBECONFIG

.PHONY: test
test: build dex cluster mutate
test: build cluster add-dex-ca-cert-for-chrome
PATH=$(PATH):$(OUTPUT_DIR)/bin acceptance_test -test.v

.PHONY: add-dex-ca-cert-for-chrome
add-dex-ca-cert-for-chrome: $(OUTPUT_DIR)/ca.crt
mkdir -p ~/.pki/nssdb
cd ~/.pki/nssdb && certutil -A -d sql:. -n dex -i $(OUTPUT_DIR)/ca.crt -t "TC,,"

# build binaries
.PHONY: build
build: $(OUTPUT_DIR)/bin/kubectl-oidc_login $(OUTPUT_DIR)/bin/acceptance_test
Expand All @@ -16,14 +21,7 @@ $(OUTPUT_DIR)/bin/kubectl-oidc_login:
$(OUTPUT_DIR)/bin/acceptance_test: acceptance_test.go
go test -c -o $@ .

# create a Kubernetes cluster
.PHONY: cluster
cluster: $(OUTPUT_DIR)/ca.crt
cp $(OUTPUT_DIR)/ca.crt /tmp/kubelogin-acceptance-test-dex-ca.crt
kind create cluster --name $(CLUSTER_NAME) --config cluster.yaml
kubectl apply -f role.yaml

# create a Dex container
# create a Dex server
.PHONY: dex
dex: $(OUTPUT_DIR)/server.crt $(OUTPUT_DIR)/server.key
docker create --name dex-server -p 10443:10443 quay.io/dexidp/dex:v2.21.0 serve /dex.yaml
Expand All @@ -48,17 +46,21 @@ $(OUTPUT_DIR)/server.csr: openssl.cnf $(OUTPUT_DIR)/server.key
$(OUTPUT_DIR)/server.crt: openssl.cnf $(OUTPUT_DIR)/server.csr $(OUTPUT_DIR)/ca.crt $(OUTPUT_DIR)/ca.key
openssl x509 -req -in $(OUTPUT_DIR)/server.csr -CA $(OUTPUT_DIR)/ca.crt -CAkey $(OUTPUT_DIR)/ca.key -CAcreateserial -out $@ -sha256 -days 10 -extensions v3_req -extfile openssl.cnf

# mutate environment for the test
.PHONY: mutate
mutate: mutate-nssdb mutate-apiserver-hosts
.PHONY: mutate-nssdb
mutate-nssdb: $(OUTPUT_DIR)/ca.crt
mkdir -p ~/.pki/nssdb
cd ~/.pki/nssdb && certutil -A -d sql:. -n dex -i $(OUTPUT_DIR)/ca.crt -t "TC,,"
.PHONY: mutate-apiserver-hosts
mutate-apiserver-hosts: dex cluster
# create a Kubernetes cluster
.PHONY: cluster
cluster: dex create-cluster
# add the Dex container IP to /etc/hosts of kube-apiserver
docker inspect -f '{{.NetworkSettings.IPAddress}}' dex-server | sed -e 's,$$, dex-server,' | \
kubectl -n kube-system exec -i kube-apiserver-$(CLUSTER_NAME)-control-plane -- tee -a /etc/hosts
# wait for kube-apiserver oidc initialization
# (oidc authenticator will retry oidc discovery every 10s)
sleep 10

.PHONY: create-cluster
create-cluster: $(OUTPUT_DIR)/ca.crt
cp $(OUTPUT_DIR)/ca.crt /tmp/kubelogin-acceptance-test-dex-ca.crt
kind create cluster --name $(CLUSTER_NAME) --config cluster.yaml
kubectl apply -f role.yaml

# clean up the resources
.PHONY: clean
Expand Down

0 comments on commit 9fe6a09

Please sign in to comment.