mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-29 06:27:05 +00:00
Merge pull request #4551 from a-robinson/e2e
Migrate the certs.sh e2e test to ginkgo
This commit is contained in:
commit
597dedf762
@ -29,11 +29,14 @@ import (
|
|||||||
var (
|
var (
|
||||||
authConfig = flag.String("auth_config", os.Getenv("HOME")+"/.kubernetes_auth", "Path to the auth info file.")
|
authConfig = flag.String("auth_config", os.Getenv("HOME")+"/.kubernetes_auth", "Path to the auth info file.")
|
||||||
certDir = flag.String("cert_dir", "", "Path to the directory containing the certs. Default is empty, which doesn't use certs.")
|
certDir = flag.String("cert_dir", "", "Path to the directory containing the certs. Default is empty, which doesn't use certs.")
|
||||||
reportDir = flag.String("report_dir", "", "Path to the directory where the JUnit XML reports should be saved. Default is empty, which doesn't generate these reports.")
|
gceProject = flag.String("gce_project", "", "The GCE project being used, if applicable")
|
||||||
|
gceZone = flag.String("gce_zone", "", "GCE zone being used, if applicable")
|
||||||
host = flag.String("host", "", "The host to connect to")
|
host = flag.String("host", "", "The host to connect to")
|
||||||
repoRoot = flag.String("repo_root", "./", "Root directory of kubernetes repository, for finding test files. Default assumes working directory is repository root")
|
masterName = flag.String("kube_master", "", "Name of the kubernetes master. Only required if provider is gce or gke")
|
||||||
provider = flag.String("provider", "", "The name of the Kubernetes provider")
|
provider = flag.String("provider", "", "The name of the Kubernetes provider")
|
||||||
orderseed = flag.Int64("orderseed", 0, "If non-zero, seed of random test shuffle order. (Otherwise random.)")
|
orderseed = flag.Int64("orderseed", 0, "If non-zero, seed of random test shuffle order. (Otherwise random.)")
|
||||||
|
repoRoot = flag.String("repo_root", "./", "Root directory of kubernetes repository, for finding test files. Default assumes working directory is repository root")
|
||||||
|
reportDir = flag.String("report_dir", "", "Path to the directory where the JUnit XML reports should be saved. Default is empty, which doesn't generate these reports.")
|
||||||
times = flag.Int("times", 1, "Number of times each test is eligible to be run. Individual order is determined by shuffling --times instances of each test using --orderseed (like a multi-deck shoe of cards).")
|
times = flag.Int("times", 1, "Number of times each test is eligible to be run. Individual order is determined by shuffling --times instances of each test using --orderseed (like a multi-deck shoe of cards).")
|
||||||
testList util.StringList
|
testList util.StringList
|
||||||
)
|
)
|
||||||
@ -53,5 +56,10 @@ func main() {
|
|||||||
glog.Error("Invalid --times (negative or no testing requested)!")
|
glog.Error("Invalid --times (negative or no testing requested)!")
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
e2e.RunE2ETests(*authConfig, *certDir, *host, *repoRoot, *provider, *orderseed, *times, *reportDir, testList)
|
gceConfig := &e2e.GCEConfig{
|
||||||
|
ProjectID: *gceProject,
|
||||||
|
Zone: *gceZone,
|
||||||
|
MasterName: *masterName,
|
||||||
|
}
|
||||||
|
e2e.RunE2ETests(*authConfig, *certDir, *host, *repoRoot, *provider, gceConfig, *orderseed, *times, *reportDir, testList)
|
||||||
}
|
}
|
||||||
|
@ -1,51 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# Copyright 2014 Google Inc. All rights reserved.
|
|
||||||
#
|
|
||||||
# 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.
|
|
||||||
|
|
||||||
# Launches a container and verifies it can be reached. Assumes that
|
|
||||||
# we're being called by hack/e2e-test.sh (we use some env vars it sets up).
|
|
||||||
|
|
||||||
set -o errexit
|
|
||||||
set -o nounset
|
|
||||||
set -o pipefail
|
|
||||||
|
|
||||||
KUBE_ROOT=$(dirname "${BASH_SOURCE}")/../..
|
|
||||||
|
|
||||||
: ${KUBE_VERSION_ROOT:=${KUBE_ROOT}}
|
|
||||||
: ${KUBECTL:="${KUBE_VERSION_ROOT}/cluster/kubectl.sh"}
|
|
||||||
: ${KUBE_CONFIG_FILE:="config-test.sh"}
|
|
||||||
|
|
||||||
export KUBECTL KUBE_CONFIG_FILE
|
|
||||||
|
|
||||||
source "${KUBE_ROOT}/cluster/kube-env.sh"
|
|
||||||
source "${KUBE_VERSION_ROOT}/cluster/${KUBERNETES_PROVIDER}/util.sh"
|
|
||||||
|
|
||||||
prepare-e2e
|
|
||||||
|
|
||||||
if [[ "${KUBERNETES_PROVIDER}" != "gce" ]] && [[ "${KUBERNETES_PROVIDER}" != "gke" ]]; then
|
|
||||||
echo "WARNING: Skipping certs.sh for cloud provider: ${KUBERNETES_PROVIDER}."
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Set KUBE_MASTER
|
|
||||||
detect-master
|
|
||||||
|
|
||||||
# IMPORTANT: there are upstream things that rely on these files.
|
|
||||||
# Do *not* fix this test by changing this path, unless you _really_ know
|
|
||||||
# what you are doing.
|
|
||||||
for file in kubecfg.key kubecfg.crt ca.crt; do
|
|
||||||
echo "Checking for ${file}"
|
|
||||||
"${GCLOUD}" compute ssh --zone="${ZONE}" "${KUBE_MASTER}" --command "ls /srv/kubernetes/${file}"
|
|
||||||
done
|
|
@ -77,6 +77,9 @@ locations=(
|
|||||||
)
|
)
|
||||||
e2e=$( (ls -t "${locations[@]}" 2>/dev/null || true) | head -1 )
|
e2e=$( (ls -t "${locations[@]}" 2>/dev/null || true) | head -1 )
|
||||||
|
|
||||||
|
PROJECT=""
|
||||||
|
ZONE=""
|
||||||
|
KUBE_MASTER=""
|
||||||
if [[ "$KUBERNETES_PROVIDER" == "vagrant" ]]; then
|
if [[ "$KUBERNETES_PROVIDER" == "vagrant" ]]; then
|
||||||
# When we are using vagrant it has hard coded auth. We repeat that here so that
|
# When we are using vagrant it has hard coded auth. We repeat that here so that
|
||||||
# we don't clobber auth that might be used for a publicly facing cluster.
|
# we don't clobber auth that might be used for a publicly facing cluster.
|
||||||
@ -106,5 +109,8 @@ fi
|
|||||||
"${e2e}" "${auth_config[@]:+${auth_config[@]}}" \
|
"${e2e}" "${auth_config[@]:+${auth_config[@]}}" \
|
||||||
--host="https://${KUBE_MASTER_IP-}" \
|
--host="https://${KUBE_MASTER_IP-}" \
|
||||||
--provider="${KUBERNETES_PROVIDER}" \
|
--provider="${KUBERNETES_PROVIDER}" \
|
||||||
|
--gce_project="${PROJECT}" \
|
||||||
|
--gce_zone="${ZONE}" \
|
||||||
|
--kube_master="${KUBE_MASTER}" \
|
||||||
${E2E_REPORT_DIR+"--report_dir=${E2E_REPORT_DIR}"} \
|
${E2E_REPORT_DIR+"--report_dir=${E2E_REPORT_DIR}"} \
|
||||||
"${@:-}"
|
"${@:-}"
|
||||||
|
53
test/e2e/certs.go
Normal file
53
test/e2e/certs.go
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2015 Google Inc. All rights reserved.
|
||||||
|
|
||||||
|
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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package e2e
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"os/exec"
|
||||||
|
|
||||||
|
"github.com/GoogleCloudPlatform/kubernetes/pkg/client"
|
||||||
|
|
||||||
|
. "github.com/onsi/ginkgo"
|
||||||
|
. "github.com/onsi/gomega"
|
||||||
|
)
|
||||||
|
|
||||||
|
var _ = Describe("MasterCerts", func() {
|
||||||
|
var c *client.Client
|
||||||
|
|
||||||
|
BeforeEach(func() {
|
||||||
|
var err error
|
||||||
|
c, err = loadClient()
|
||||||
|
Expect(err).NotTo(HaveOccurred())
|
||||||
|
})
|
||||||
|
|
||||||
|
It("should have all expected certs on the master", func() {
|
||||||
|
if testContext.provider != "gce" && testContext.provider != "gke" {
|
||||||
|
By(fmt.Sprintf("Skipping MasterCerts test for cloud provider %s (only supported for gce and gke)", testContext.provider))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, certFile := range []string{"kubecfg.key", "kubecfg.crt", "ca.crt"} {
|
||||||
|
cmd := exec.Command("gcloud", "compute", "ssh", "--project", testContext.gceConfig.ProjectID,
|
||||||
|
"--zone", testContext.gceConfig.Zone, testContext.gceConfig.MasterName,
|
||||||
|
"--command", fmt.Sprintf("ls /srv/kubernetes/%s", certFile))
|
||||||
|
if _, err := cmd.CombinedOutput(); err != nil {
|
||||||
|
Fail(fmt.Sprintf("Error checking for cert file %s on master: %v", certFile, err))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
@ -32,6 +32,12 @@ import (
|
|||||||
|
|
||||||
type testResult bool
|
type testResult bool
|
||||||
|
|
||||||
|
type GCEConfig struct {
|
||||||
|
ProjectID string
|
||||||
|
Zone string
|
||||||
|
MasterName string
|
||||||
|
}
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
// Turn on verbose by default to get spec names
|
// Turn on verbose by default to get spec names
|
||||||
config.DefaultReporterConfig.Verbose = true
|
config.DefaultReporterConfig.Verbose = true
|
||||||
@ -47,8 +53,8 @@ func (t *testResult) Fail() { *t = false }
|
|||||||
|
|
||||||
// Run each Go end-to-end-test. This function assumes the
|
// Run each Go end-to-end-test. This function assumes the
|
||||||
// creation of a test cluster.
|
// creation of a test cluster.
|
||||||
func RunE2ETests(authConfig, certDir, host, repoRoot, provider string, orderseed int64, times int, reportDir string, testList []string) {
|
func RunE2ETests(authConfig, certDir, host, repoRoot, provider string, gceConfig *GCEConfig, orderseed int64, times int, reportDir string, testList []string) {
|
||||||
testContext = testContextType{authConfig, certDir, host, repoRoot, provider}
|
testContext = testContextType{authConfig, certDir, host, repoRoot, provider, *gceConfig}
|
||||||
util.ReallyCrash = true
|
util.ReallyCrash = true
|
||||||
util.InitLogs()
|
util.InitLogs()
|
||||||
defer util.FlushLogs()
|
defer util.FlushLogs()
|
||||||
|
@ -37,6 +37,7 @@ type testContextType struct {
|
|||||||
host string
|
host string
|
||||||
repoRoot string
|
repoRoot string
|
||||||
provider string
|
provider string
|
||||||
|
gceConfig GCEConfig
|
||||||
}
|
}
|
||||||
|
|
||||||
var testContext testContextType
|
var testContext testContextType
|
||||||
|
Loading…
Reference in New Issue
Block a user