From 0bcec6e7e555d7c0b69300594a39b0899294058f Mon Sep 17 00:00:00 2001 From: Manohar Reddy Date: Sat, 24 Apr 2021 17:54:03 +0000 Subject: [PATCH] add k8s external e2e tests --- Makefile | 6 +++- test/external-e2e/run.sh | 49 +++++++++++++++++++++++++++++++ test/external-e2e/testdriver.yaml | 13 ++++++++ 3 files changed, 67 insertions(+), 1 deletion(-) create mode 100755 test/external-e2e/run.sh create mode 100644 test/external-e2e/testdriver.yaml diff --git a/Makefile b/Makefile index e8bd56e2113..54ec0f4cfc5 100644 --- a/Makefile +++ b/Makefile @@ -85,7 +85,11 @@ deploy-kind: .PHONY: e2e-test e2e-test: - go test -v -timeout=0 ./test/e2e ${GINKGO_FLAGS} + if [ ! -z "$(EXTERNAL_E2E_TEST)" ]; then \ + bash ./test/external-e2e/run.sh;\ + else \ + go test -v -timeout=0 ./test/e2e ${GINKGO_FLAGS};\ + fi .PHONY: e2e-bootstrap e2e-bootstrap: install-helm diff --git a/test/external-e2e/run.sh b/test/external-e2e/run.sh new file mode 100755 index 00000000000..baa22d5f59f --- /dev/null +++ b/test/external-e2e/run.sh @@ -0,0 +1,49 @@ +#!/bin/bash + +# Copyright 2021 The Kubernetes Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +set -xe + +PROJECT_ROOT=$(git rev-parse --show-toplevel) + +install_ginkgo () { + apt update -y + apt install -y golang-ginkgo-dev +} + +setup_e2e_binaries() { + # download k8s external e2e binary for kubernetes v1.19 + curl -sL https://storage.googleapis.com/kubernetes-release/release/v1.19.0/kubernetes-test-linux-amd64.tar.gz --output e2e-tests.tar.gz + tar -xvf e2e-tests.tar.gz && rm e2e-tests.tar.gz + + # install the csi driver smb + mkdir -p /tmp/csi-smb && cp deploy/example/storageclass-smb.yaml /tmp/csi-smb/storageclass.yaml + make e2e-bootstrap + make install-smb-provisioner +} + +print_logs() { + echo "print out driver logs ..." + bash ./test/utils/smb_log.sh +} + +install_ginkgo +setup_e2e_binaries +trap print_logs EXIT + +ginkgo -p --progress --v -focus='External.Storage' \ + -skip='\[Disruptive\]' kubernetes/test/bin/e2e.test -- \ + -storage.testdriver=$PROJECT_ROOT/test/external-e2e/testdriver.yaml \ + --kubeconfig=$KUBECONFIG diff --git a/test/external-e2e/testdriver.yaml b/test/external-e2e/testdriver.yaml new file mode 100644 index 00000000000..d518a895011 --- /dev/null +++ b/test/external-e2e/testdriver.yaml @@ -0,0 +1,13 @@ +# Manifest for Kubernetes external tests. +# See https://github.com/kubernetes/kubernetes/tree/master/test/e2e/storage/external + +ShortName: smb +StorageClass: + FromFile: /tmp/csi-smb/storageclass.yaml +DriverInfo: + Name: smb.csi.k8s.io + Capabilities: + persistence: true + exec: true + multipods: true + RWX: true