Skip to content

Commit 098604f

Browse files
committed
Add a mode to run e2e test using kubetest2.
Engprod plans to end kubetest support. This diff adds a --use-kubetest2 flag to the integration test driver. Next step: 1. Add kubetest2 installation to test scripts. 2. Add a canary test config to validate kubetest2.
1 parent 03d603b commit 098604f

File tree

2 files changed

+56
-6
lines changed

2 files changed

+56
-6
lines changed

test/k8s-integration/cluster.go

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -260,14 +260,16 @@ func downloadKubernetesSource(pkgDir, k8sIoDir, kubeVersion string) error {
260260
return nil
261261
}
262262

263-
func getGKEKubeTestArgs(gceZone, gceRegion, imageType string) ([]string, error) {
264-
var locationArg, locationVal string
263+
func getGKEKubeTestArgs(gceZone, gceRegion, imageType string, useKubetest2 bool) ([]string, error) {
264+
var locationArg, locationVal, locationArgK2 string
265265
switch {
266266
case len(gceZone) > 0:
267267
locationArg = "--gcp-zone"
268+
locationArgK2 = "--zone"
268269
locationVal = gceZone
269270
case len(gceRegion) > 0:
270271
locationArg = "--gcp-region"
272+
locationArgK2 = "--region"
271273
locationVal = gceRegion
272274
}
273275

@@ -291,6 +293,7 @@ func getGKEKubeTestArgs(gceZone, gceRegion, imageType string) ([]string, error)
291293
return nil, fmt.Errorf("failed to get current project: %v", err)
292294
}
293295

296+
// kubetest arguments
294297
args := []string{
295298
"--up=false",
296299
"--down=false",
@@ -306,7 +309,21 @@ func getGKEKubeTestArgs(gceZone, gceRegion, imageType string) ([]string, error)
306309
fmt.Sprintf("--gcp-project=%s", project[:len(project)-1]),
307310
}
308311

309-
return args, nil
312+
// kubetest2 arguments
313+
argsK2 := []string{
314+
"--up=false",
315+
"--down=false",
316+
fmt.Sprintf("--cluster-name=%s", *gkeTestClusterName),
317+
fmt.Sprintf("--environment=%s", gkeEnv),
318+
fmt.Sprintf("%s=%s", locationArgK2, locationVal),
319+
fmt.Sprintf("--project=%s", project[:len(project)-1]),
320+
}
321+
322+
if useKubetest2 {
323+
return argsK2, nil
324+
} else {
325+
return args, nil
326+
}
310327
}
311328

312329
func getNormalizedVersion(kubeVersion, gkeVersion string) (string, error) {

test/k8s-integration/main.go

Lines changed: 36 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,8 @@ var (
6767
// Test flags
6868
migrationTest = flag.Bool("migration-test", false, "sets the flag on the e2e binary signalling migration")
6969
testFocus = flag.String("test-focus", "", "test focus for Kubernetes e2e")
70+
71+
useKubeTest2 = flag.Bool("use-kubetest2", false, "use kubetest2 to run e2e tests")
7072
)
7173

7274
const (
@@ -89,6 +91,7 @@ type testParameters struct {
8991
testSkip string
9092
snapshotClassFile string
9193
cloudProviderArgs []string
94+
cloudProviderArgsK2 []string
9295
deploymentStrategy string
9396
outputDir string
9497
allowedNotReadyNodes int
@@ -436,10 +439,20 @@ func handle() error {
436439

437440
switch testParams.deploymentStrategy {
438441
case "gke":
439-
testParams.cloudProviderArgs, err = getGKEKubeTestArgs(*gceZone, *gceRegion, testParams.imageType)
440-
if err != nil {
442+
// Build params for both kubetest and kubetest2 for debugging.
443+
testParams.cloudProviderArgs, err = getGKEKubeTestArgs(*gceZone, *gceRegion, testParams.imageType, false /* useKubeTest2 */)
444+
if err != nil && !*useKubeTest2 {
441445
return fmt.Errorf("failed to build GKE kubetest args: %v", err)
442446
}
447+
testParams.cloudProviderArgsK2, err = getGKEKubeTestArgs(*gceZone, *gceRegion, testParams.imageType, true /* useKubeTest2 */)
448+
if err != nil && *useKubeTest2 {
449+
return fmt.Errorf("failed to build GKE kubetest2 args: %v", err)
450+
}
451+
case "gce":
452+
testParams.cloudProviderArgsK2 = []string{
453+
"--legacy-mode",
454+
fmt.Sprintf("--repo-root=%s", *localK8sDir),
455+
}
443456
}
444457

445458
// Kubernetes version of GKE deployments are expected to be of the pattern x.y.z-gke.k,
@@ -634,12 +647,32 @@ func runTestsWithConfig(testParams *testParameters, testConfigArg, reportPrefix
634647
"--check-version-skew=false",
635648
fmt.Sprintf("--test_args=%s", testArgs),
636649
}
650+
651+
kubeTest2Args := []string{
652+
*deploymentStrat,
653+
"--test=ginkgo",
654+
}
655+
kubeTest2Args = append(kubeTest2Args, testParams.cloudProviderArgsK2...)
656+
if kubetestDumpDir != "" {
657+
kubeTest2Args = append(kubeTest2Args, fmt.Sprintf("--log_dir=%s", kubetestDumpDir))
658+
}
659+
kubeTest2Args = append(kubeTest2Args, "--")
660+
kubeTest2Args = append(kubeTest2Args, fmt.Sprintf("--focus-regex=%s", testParams.testFocus))
661+
kubeTest2Args = append(kubeTest2Args, fmt.Sprintf("--skip-regex=%s", testParams.testSkip))
662+
// kubetest uses 25 as default value for ginkgo parallelism (--nodes).
663+
kubeTest2Args = append(kubeTest2Args, "--parallel=25")
664+
kubeTest2Args = append(kubeTest2Args, fmt.Sprintf("--test-args=%s %s", testConfigArg, reportArg))
665+
637666
if kubetestDumpDir != "" {
638667
kubeTestArgs = append(kubeTestArgs, fmt.Sprintf("--dump=%s", kubetestDumpDir))
639668
}
640669
kubeTestArgs = append(kubeTestArgs, testParams.cloudProviderArgs...)
641670

642-
err = runCommand("Running Tests", exec.Command("kubetest", kubeTestArgs...))
671+
if *useKubeTest2 {
672+
err = runCommand("Running Tests", exec.Command("kubetest2", kubeTest2Args...))
673+
} else {
674+
err = runCommand("Running Tests", exec.Command("kubetest", kubeTestArgs...))
675+
}
643676
if err != nil {
644677
return fmt.Errorf("failed to run tests on e2e cluster: %v", err)
645678
}

0 commit comments

Comments
 (0)