// Test fleet running through an etcd2 proxy. func Proxy(c platform.TestCluster) error { masterconf.CoreOS.Etcd2.Discovery, _ = c.GetDiscoveryURL(1) master, err := c.NewMachine(masterconf.String()) if err != nil { return fmt.Errorf("Cluster.NewMachine: %s", err) } defer master.Destroy() proxyconf.CoreOS.Etcd2.Discovery = masterconf.CoreOS.Etcd2.Discovery proxy, err := c.NewMachine(proxyconf.String()) if err != nil { return fmt.Errorf("Cluster.NewMachine: %s", err) } defer proxy.Destroy() err = platform.InstallFile(strings.NewReader(fleetunit), proxy, "/home/core/hello.service") if err != nil { return fmt.Errorf("InstallFile: %s", err) } // settling... fleetStart := func() error { _, err = proxy.SSH("fleetctl start /home/core/hello.service") if err != nil { return fmt.Errorf("fleetctl start: %s", err) } return nil } if err := util.Retry(5, 5*time.Second, fleetStart); err != nil { return fmt.Errorf("fleetctl start failed: %v", err) } var status []byte fleetList := func() error { status, err = proxy.SSH("fleetctl list-units -l -fields active -no-legend") if err != nil { return fmt.Errorf("fleetctl list-units: %s", err) } if !bytes.Equal(status, []byte("active")) { return fmt.Errorf("unit not active") } return nil } if err := util.Retry(5, 1*time.Second, fleetList); err != nil { return fmt.Errorf("fleetctl list-units failed: %v", err) } return nil }