diff --git a/test/e2e_node/gcloud/gcloud.go b/test/e2e_node/gcloud/gcloud.go index d073bc981a..dbf3ec35c3 100644 --- a/test/e2e_node/gcloud/gcloud.go +++ b/test/e2e_node/gcloud/gcloud.go @@ -37,7 +37,9 @@ var freePortRegexp = regexp.MustCompile(".+:([0-9]+)") type TearDown func() type GCloudClient interface { - CopyAndWaitTillHealthy(sudo bool, remotePort string, timeout time.Duration, healthUrl string, bin string, args ...string) (*CmdHandle, error) + CopyAndWaitTillHealthy( + sudo bool, copyBin bool, remotePort string, + timeout time.Duration, healthUrl string, bin string, args ...string) (*CmdHandle, error) } type gCloudClientImpl struct { @@ -99,7 +101,9 @@ func (gc *gCloudClientImpl) CopyToHost(from string, to string) ([]byte, error) { return exec.Command("gcloud", args...).CombinedOutput() } -func (gc *gCloudClientImpl) CopyAndRun(sudo bool, remotePort string, bin string, args ...string) *CmdHandle { +func (gc *gCloudClientImpl) CopyAndRun( + sudo bool, copyBin bool, remotePort string, bin string, args ...string) *CmdHandle { + h := &CmdHandle{} h.Output = make(chan RunResult) @@ -108,7 +112,10 @@ func (gc *gCloudClientImpl) CopyAndRun(sudo bool, remotePort string, bin string, // Define where we will copy the temp binary tDir := fmt.Sprintf("/tmp/gcloud-e2e-%d", rand.Int31()) _, f := filepath.Split(bin) - cmd := filepath.Join(tDir, f) + cmd := f + if copyBin { + cmd = filepath.Join(tDir, f) + } h.LPort = getLocalPort() h.TearDown = func() { @@ -133,11 +140,13 @@ func (gc *gCloudClientImpl) CopyAndRun(sudo bool, remotePort string, bin string, } // Copy the binary - out, err = gc.CopyToHost(bin, tDir) - if err != nil { - glog.Errorf("copy-files failed %v", err) - h.Output <- RunResult{out, err, fmt.Sprintf("copy-files %s %s", bin, tDir)} - return h + if copyBin { + out, err = gc.CopyToHost(bin, tDir) + if err != nil { + glog.Errorf("copy-files failed %v", err) + h.Output <- RunResult{out, err, fmt.Sprintf("copy-files %s %s", bin, tDir)} + return h + } } // Do the setup @@ -154,9 +163,9 @@ func (gc *gCloudClientImpl) CopyAndRun(sudo bool, remotePort string, bin string, } func (gc *gCloudClientImpl) CopyAndWaitTillHealthy( - sudo bool, + sudo bool, copyBin bool, remotePort string, timeout time.Duration, healthUrl string, bin string, args ...string) (*CmdHandle, error) { - h := gc.CopyAndRun(sudo, remotePort, bin, args...) + h := gc.CopyAndRun(sudo, copyBin, remotePort, bin, args...) eTime := time.Now().Add(timeout) done := false for eTime.After(time.Now()) && !done { diff --git a/test/e2e_node/runner/run_e2e.go b/test/e2e_node/runner/run_e2e.go index b4f4fc2519..c74216d157 100644 --- a/test/e2e_node/runner/run_e2e.go +++ b/test/e2e_node/runner/run_e2e.go @@ -14,6 +14,8 @@ See the License for the specific language governing permissions and limitations under the License. */ +// To run the e2e tests against one or more hosts on gce: $ go run run_e2e.go --hosts +// Requires gcloud compute ssh access to the hosts package main import ( @@ -114,8 +116,8 @@ func WaitForUser() { func runTests(host string) ([]byte, error) { c := gcloud.NewGCloudClient(host, *zone) // TODO(pwittrock): Come up with something better for bootstrapping the environment. - etcdBin := filepath.Join(kubeRoot, "third_party/etcd/etcd") - eh, err := c.CopyAndWaitTillHealthy(false, "4001", healthyTimeoutDuration, "v2/keys/", etcdBin) + eh, err := c.CopyAndWaitTillHealthy( + false, false, "4001", healthyTimeoutDuration, "v2/keys/", "etcd", "--data-dir", "./") defer func() { eh.TearDown() }() if err != nil { return nil, fmt.Errorf("Host %s failed to run command %v", host, err) @@ -123,7 +125,7 @@ func runTests(host string) ([]byte, error) { apiBin := filepath.Join(kubeRoot, *kubeOutputRelPath, "kube-apiserver") ah, err := c.CopyAndWaitTillHealthy( - true, "8080", healthyTimeoutDuration, "healthz", apiBin, "--service-cluster-ip-range", + true, true, "8080", healthyTimeoutDuration, "healthz", apiBin, "--service-cluster-ip-range", "10.0.0.1/24", "--insecure-bind-address", "0.0.0.0", "--etcd-servers", "http://localhost:4001", "--cluster-name", "kubernetes", "--v", "2", "--kubelet-port", "10250") defer func() { ah.TearDown() }() @@ -133,7 +135,7 @@ func runTests(host string) ([]byte, error) { kubeletBin := filepath.Join(kubeRoot, *kubeOutputRelPath, "kubelet") kh, err := c.CopyAndWaitTillHealthy( - true, "4194", healthyTimeoutDuration, "healthz", kubeletBin, "--api-servers", "http://localhost:8080", + true, true, "10255", healthyTimeoutDuration, "healthz", kubeletBin, "--api-servers", "http://localhost:8080", "--logtostderr", "--address", "0.0.0.0", "--port", "10250") defer func() { kh.TearDown() }() if err != nil {