mirror of https://github.com/docker/docs.git
119 lines
2.1 KiB
Go
119 lines
2.1 KiB
Go
package main
|
|
|
|
import (
|
|
"io/ioutil"
|
|
"os/exec"
|
|
"testing"
|
|
|
|
drivers "github.com/docker/machine/drivers"
|
|
"github.com/docker/machine/state"
|
|
)
|
|
|
|
type FakeDriver struct {
|
|
MockState state.State
|
|
}
|
|
|
|
func (d *FakeDriver) DriverName() string {
|
|
return "fakedriver"
|
|
}
|
|
|
|
func (d *FakeDriver) SetConfigFromFlags(flags drivers.DriverOptions) error {
|
|
return nil
|
|
}
|
|
|
|
func (d *FakeDriver) GetURL() (string, error) {
|
|
return "", nil
|
|
}
|
|
|
|
func (d *FakeDriver) GetIP() (string, error) {
|
|
return "", nil
|
|
}
|
|
|
|
func (d *FakeDriver) GetState() (state.State, error) {
|
|
return d.MockState, nil
|
|
}
|
|
|
|
func (d *FakeDriver) Create() error {
|
|
return nil
|
|
}
|
|
|
|
func (d *FakeDriver) Remove() error {
|
|
return nil
|
|
}
|
|
|
|
func (d *FakeDriver) Start() error {
|
|
return nil
|
|
}
|
|
|
|
func (d *FakeDriver) Stop() error {
|
|
return nil
|
|
}
|
|
|
|
func (d *FakeDriver) Restart() error {
|
|
return nil
|
|
}
|
|
|
|
func (d *FakeDriver) Kill() error {
|
|
return nil
|
|
}
|
|
|
|
func (d *FakeDriver) Upgrade() error {
|
|
return nil
|
|
}
|
|
|
|
func (d *FakeDriver) GetSSHCommand(args ...string) (*exec.Cmd, error) {
|
|
return &exec.Cmd{}, nil
|
|
}
|
|
|
|
func TestGetHostState(t *testing.T) {
|
|
storePath, err := ioutil.TempDir("", ".docker")
|
|
if err != nil {
|
|
t.Fatal("Error creating tmp dir:", err)
|
|
}
|
|
hostListItems := make(chan hostListItem)
|
|
store := NewStore(storePath)
|
|
hosts := []Host{
|
|
{
|
|
Name: "foo",
|
|
DriverName: "fakedriver",
|
|
Driver: &FakeDriver{
|
|
MockState: state.Running,
|
|
},
|
|
storePath: storePath,
|
|
},
|
|
{
|
|
Name: "bar",
|
|
DriverName: "fakedriver",
|
|
Driver: &FakeDriver{
|
|
MockState: state.Stopped,
|
|
},
|
|
storePath: storePath,
|
|
},
|
|
{
|
|
Name: "baz",
|
|
DriverName: "fakedriver",
|
|
Driver: &FakeDriver{
|
|
MockState: state.Running,
|
|
},
|
|
storePath: storePath,
|
|
},
|
|
}
|
|
expected := map[string]state.State{
|
|
"foo": state.Running,
|
|
"bar": state.Stopped,
|
|
"baz": state.Running,
|
|
}
|
|
items := []hostListItem{}
|
|
for _, host := range hosts {
|
|
go getHostState(host, *store, hostListItems)
|
|
}
|
|
for i := 0; i < len(hosts); i++ {
|
|
items = append(items, <-hostListItems)
|
|
}
|
|
for _, item := range items {
|
|
if expected[item.Name] != item.State {
|
|
t.Fatal("Expected state did not match for item", item)
|
|
}
|
|
}
|
|
}
|