mirror of https://github.com/k3s-io/k3s
commit
b266aa1577
|
@ -37,7 +37,9 @@ var freePortRegexp = regexp.MustCompile(".+:([0-9]+)")
|
||||||
type TearDown func()
|
type TearDown func()
|
||||||
|
|
||||||
type GCloudClient interface {
|
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 {
|
type gCloudClientImpl struct {
|
||||||
|
@ -99,7 +101,9 @@ func (gc *gCloudClientImpl) CopyToHost(from string, to string) ([]byte, error) {
|
||||||
return exec.Command("gcloud", args...).CombinedOutput()
|
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 := &CmdHandle{}
|
||||||
h.Output = make(chan RunResult)
|
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
|
// Define where we will copy the temp binary
|
||||||
tDir := fmt.Sprintf("/tmp/gcloud-e2e-%d", rand.Int31())
|
tDir := fmt.Sprintf("/tmp/gcloud-e2e-%d", rand.Int31())
|
||||||
_, f := filepath.Split(bin)
|
_, f := filepath.Split(bin)
|
||||||
cmd := filepath.Join(tDir, f)
|
cmd := f
|
||||||
|
if copyBin {
|
||||||
|
cmd = filepath.Join(tDir, f)
|
||||||
|
}
|
||||||
h.LPort = getLocalPort()
|
h.LPort = getLocalPort()
|
||||||
|
|
||||||
h.TearDown = func() {
|
h.TearDown = func() {
|
||||||
|
@ -133,12 +140,14 @@ func (gc *gCloudClientImpl) CopyAndRun(sudo bool, remotePort string, bin string,
|
||||||
}
|
}
|
||||||
|
|
||||||
// Copy the binary
|
// Copy the binary
|
||||||
|
if copyBin {
|
||||||
out, err = gc.CopyToHost(bin, tDir)
|
out, err = gc.CopyToHost(bin, tDir)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
glog.Errorf("copy-files failed %v", err)
|
glog.Errorf("copy-files failed %v", err)
|
||||||
h.Output <- RunResult{out, err, fmt.Sprintf("copy-files %s %s", bin, tDir)}
|
h.Output <- RunResult{out, err, fmt.Sprintf("copy-files %s %s", bin, tDir)}
|
||||||
return h
|
return h
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Do the setup
|
// Do the setup
|
||||||
go func() {
|
go func() {
|
||||||
|
@ -154,9 +163,9 @@ func (gc *gCloudClientImpl) CopyAndRun(sudo bool, remotePort string, bin string,
|
||||||
}
|
}
|
||||||
|
|
||||||
func (gc *gCloudClientImpl) CopyAndWaitTillHealthy(
|
func (gc *gCloudClientImpl) CopyAndWaitTillHealthy(
|
||||||
sudo bool,
|
sudo bool, copyBin bool,
|
||||||
remotePort string, timeout time.Duration, healthUrl string, bin string, args ...string) (*CmdHandle, error) {
|
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)
|
eTime := time.Now().Add(timeout)
|
||||||
done := false
|
done := false
|
||||||
for eTime.After(time.Now()) && !done {
|
for eTime.After(time.Now()) && !done {
|
||||||
|
|
|
@ -14,6 +14,8 @@ See the License for the specific language governing permissions and
|
||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
// To run the e2e tests against one or more hosts on gce: $ go run run_e2e.go --hosts <comma separated hosts>
|
||||||
|
// Requires gcloud compute ssh access to the hosts
|
||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
@ -114,8 +116,8 @@ func WaitForUser() {
|
||||||
func runTests(host string) ([]byte, error) {
|
func runTests(host string) ([]byte, error) {
|
||||||
c := gcloud.NewGCloudClient(host, *zone)
|
c := gcloud.NewGCloudClient(host, *zone)
|
||||||
// TODO(pwittrock): Come up with something better for bootstrapping the environment.
|
// TODO(pwittrock): Come up with something better for bootstrapping the environment.
|
||||||
etcdBin := filepath.Join(kubeRoot, "third_party/etcd/etcd")
|
eh, err := c.CopyAndWaitTillHealthy(
|
||||||
eh, err := c.CopyAndWaitTillHealthy(false, "4001", healthyTimeoutDuration, "v2/keys/", etcdBin)
|
false, false, "4001", healthyTimeoutDuration, "v2/keys/", "etcd", "--data-dir", "./")
|
||||||
defer func() { eh.TearDown() }()
|
defer func() { eh.TearDown() }()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("Host %s failed to run command %v", host, err)
|
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")
|
apiBin := filepath.Join(kubeRoot, *kubeOutputRelPath, "kube-apiserver")
|
||||||
ah, err := c.CopyAndWaitTillHealthy(
|
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",
|
"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")
|
"--cluster-name", "kubernetes", "--v", "2", "--kubelet-port", "10250")
|
||||||
defer func() { ah.TearDown() }()
|
defer func() { ah.TearDown() }()
|
||||||
|
@ -133,7 +135,7 @@ func runTests(host string) ([]byte, error) {
|
||||||
|
|
||||||
kubeletBin := filepath.Join(kubeRoot, *kubeOutputRelPath, "kubelet")
|
kubeletBin := filepath.Join(kubeRoot, *kubeOutputRelPath, "kubelet")
|
||||||
kh, err := c.CopyAndWaitTillHealthy(
|
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")
|
"--logtostderr", "--address", "0.0.0.0", "--port", "10250")
|
||||||
defer func() { kh.TearDown() }()
|
defer func() { kh.TearDown() }()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
Loading…
Reference in New Issue