mirror of
https://github.com/edgelesssys/constellation.git
synced 2024-10-01 01:36:09 -04:00
61 lines
2.6 KiB
Go
61 lines
2.6 KiB
Go
//go:build e2e
|
|
|
|
/*
|
|
Copyright (c) Edgeless Systems GmbH
|
|
|
|
SPDX-License-Identifier: AGPL-3.0-only
|
|
*/
|
|
|
|
// End-to-end test that is used by the e2e Terraform provider test.
|
|
package main
|
|
|
|
import (
|
|
"flag"
|
|
"os"
|
|
"path/filepath"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/edgelesssys/constellation/v2/e2e/internal/kubectl"
|
|
"github.com/edgelesssys/constellation/v2/e2e/internal/upgrade"
|
|
"github.com/edgelesssys/constellation/v2/internal/constants"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
var (
|
|
targetImage = flag.String("target-image", "", "Image (shortversion) to upgrade to.")
|
|
targetKubernetes = flag.String("target-kubernetes", "", "Kubernetes version (MAJOR.MINOR.PATCH) to upgrade to. Defaults to default version of target CLI.")
|
|
targetMicroservices = flag.String("target-microservices", "", "Microservice version (MAJOR.MINOR.PATCH) to upgrade to. Defaults to default version of target CLI.")
|
|
// When executing the test as a bazel target the CLI path is supplied through an env variable that bazel sets.
|
|
// When executing via `go test` extra care should be taken that the supplied CLI is built on the same commit as this test.
|
|
// When executing the test as a bazel target the workspace path is supplied through an env variable that bazel sets.
|
|
workspace = flag.String("workspace", "", "Constellation workspace in which to run the tests.")
|
|
cliPath = flag.String("cli", "", "Constellation CLI to run the tests.")
|
|
wantWorker = flag.Int("want-worker", 0, "Number of wanted worker nodes.")
|
|
wantControl = flag.Int("want-control", 0, "Number of wanted control nodes.")
|
|
timeout = flag.Duration("timeout", 90*time.Minute, "Timeout after which the cluster should have converged to the target version.")
|
|
)
|
|
|
|
// TestUpgradeSuccessful tests that the upgrade to the target version is successful.
|
|
func TestUpgradeSuccessful(t *testing.T) {
|
|
require := require.New(t)
|
|
kubeconfigPath := os.Getenv("KUBECONFIG")
|
|
require.NotEmpty(kubeconfigPath, "KUBECONFIG environment variable must be set")
|
|
dir := filepath.Dir(kubeconfigPath)
|
|
configPath := filepath.Join(dir, constants.ConfigFilename)
|
|
|
|
// only done here to construct the version struct
|
|
require.NotEqual(*targetImage, "", "--target-image needs to be specified")
|
|
v := upgrade.WriteUpgradeConfig(require, *targetImage, *targetKubernetes, *targetMicroservices, configPath)
|
|
// ignore Kubernetes check if targetKubernetes is not set; Kubernetes is only explicitly upgraded
|
|
if *targetKubernetes == "" {
|
|
v.Kubernetes = ""
|
|
}
|
|
k, err := kubectl.New()
|
|
require.NoError(err)
|
|
|
|
err = upgrade.Setup(*workspace, *cliPath)
|
|
require.NoError(err)
|
|
upgrade.AssertUpgradeSuccessful(t, *cliPath, v, k, *wantControl, *wantWorker, *timeout)
|
|
}
|