@@ -20,6 +20,7 @@ import (
20
20
"os"
21
21
"os/exec"
22
22
"path/filepath"
23
+ "runtime"
23
24
"strings"
24
25
"syscall"
25
26
@@ -662,13 +663,7 @@ func runTestsWithConfig(testParams *testParameters, testConfigArg, reportPrefix
662
663
663
664
testArgs := fmt .Sprintf ("%s %s" , ginkgoArgs , testConfigArg )
664
665
665
- kubeTestArgs := []string {
666
- "--test" ,
667
- "--ginkgo-parallel" ,
668
- "--check-version-skew=false" ,
669
- fmt .Sprintf ("--test_args=%s" , testArgs ),
670
- }
671
-
666
+ // kubetest2 flags
672
667
kubeTest2Args := []string {
673
668
* deploymentStrat ,
674
669
"--test=ginkgo" ,
@@ -678,14 +673,33 @@ func runTestsWithConfig(testParams *testParameters, testConfigArg, reportPrefix
678
673
kubeTest2Args = append (kubeTest2Args , fmt .Sprintf ("--artifacts=%s" , kubetestDumpDir ))
679
674
}
680
675
kubeTest2Args = append (kubeTest2Args , "--" )
681
- if len (* testVersion ) != 0 && * testVersion != "master" {
682
- kubeTest2Args = append (kubeTest2Args , fmt .Sprintf ("--test-package-marker=latest-%s.txt" , * testVersion ))
676
+ if len (* testVersion ) != 0 {
677
+ if * testVersion == "master" {
678
+ // the kubernetes binaries should've already been built above
679
+ // or by the user if --localK8sDir was set, these binaries should be copied to the
680
+ // path sent to kubetest2 through its --artifacts path
681
+ klog .Infof ("Copying kubernetes binaries to path=%s to run the tests" , kubetestDumpDir )
682
+ err := copyKubernetesTestBinaries (testParams .k8sSourceDir , kubetestDumpDir )
683
+ if err != nil {
684
+ return fmt .Errorf ("Failed to copy the kubernetes test binaries, err=%v" , err )
685
+ }
686
+ kubeTest2Args = append (kubeTest2Args , "--use-built-binaries" )
687
+ } else {
688
+ kubeTest2Args = append (kubeTest2Args , fmt .Sprintf ("--test-package-marker=latest-%s.txt" , * testVersion ))
689
+ }
683
690
}
684
691
kubeTest2Args = append (kubeTest2Args , fmt .Sprintf ("--focus-regex=%s" , testParams .testFocus ))
685
692
kubeTest2Args = append (kubeTest2Args , fmt .Sprintf ("--skip-regex=%s" , testParams .testSkip ))
686
693
kubeTest2Args = append (kubeTest2Args , fmt .Sprintf ("--parallel=%d" , testParams .parallel ))
687
694
kubeTest2Args = append (kubeTest2Args , fmt .Sprintf ("--test-args=%s %s" , testConfigArg , windowsArgs ))
688
695
696
+ // kubetest flags
697
+ kubeTestArgs := []string {
698
+ "--test" ,
699
+ "--ginkgo-parallel" ,
700
+ "--check-version-skew=false" ,
701
+ fmt .Sprintf ("--test_args=%s" , testArgs ),
702
+ }
689
703
if kubetestDumpDir != "" {
690
704
kubeTestArgs = append (kubeTestArgs , fmt .Sprintf ("--dump=%s" , kubetestDumpDir ))
691
705
}
@@ -702,3 +716,30 @@ func runTestsWithConfig(testParams *testParameters, testConfigArg, reportPrefix
702
716
703
717
return nil
704
718
}
719
+
720
+ var (
721
+ kubernetesTestBinaries = []string {
722
+ "kubectl" ,
723
+ "e2e.test" ,
724
+ "ginkgo" ,
725
+ }
726
+ )
727
+
728
+ // copyKubernetesBinariesForTest copies the common test binaries to the output directory
729
+ func copyKubernetesTestBinaries (kuberoot string , outroot string ) error {
730
+ const dockerizedOutput = "_output/dockerized"
731
+ root := filepath .Join (kuberoot , dockerizedOutput , "bin" , runtime .GOOS , runtime .GOARCH )
732
+ for _ , binary := range kubernetesTestBinaries {
733
+ source := filepath .Join (root , binary )
734
+ dest := filepath .Join (outroot , binary )
735
+ if _ , err := os .Stat (source ); err == nil {
736
+ klog .Infof ("copying %s to %s" , source , dest )
737
+ if err := CopyFile (source , dest ); err != nil {
738
+ return fmt .Errorf ("failed to copy %s to %s: %v" , source , dest , err )
739
+ }
740
+ } else {
741
+ return fmt .Errorf ("could not find %s: %v" , source , err )
742
+ }
743
+ }
744
+ return nil
745
+ }
0 commit comments