docs/libmachine/drivers/serial_test.go

297 lines
7.8 KiB
Go

package drivers
import (
"testing"
"github.com/docker/machine/libmachine/mcnflag"
"github.com/docker/machine/libmachine/state"
"github.com/stretchr/testify/assert"
)
type CallRecorder struct {
calls []string
}
func (c *CallRecorder) record(call string) {
c.calls = append(c.calls, call)
}
type MockLocker struct {
calls *CallRecorder
}
func (l *MockLocker) Lock() {
l.calls.record("Lock")
}
func (l *MockLocker) Unlock() {
l.calls.record("Unlock")
}
type MockDriver struct {
calls *CallRecorder
driverName string
flags []mcnflag.Flag
ip string
machineName string
sshHostname string
sshKeyPath string
sshPort int
sshUsername string
url string
state state.State
}
func (d *MockDriver) Create() error {
d.calls.record("Create")
return nil
}
func (d *MockDriver) DriverName() string {
d.calls.record("DriverName")
return d.driverName
}
func (d *MockDriver) GetCreateFlags() []mcnflag.Flag {
d.calls.record("GetCreateFlags")
return d.flags
}
func (d *MockDriver) GetIP() (string, error) {
d.calls.record("GetIP")
return d.ip, nil
}
func (d *MockDriver) GetMachineName() string {
d.calls.record("GetMachineName")
return d.machineName
}
func (d *MockDriver) GetSSHHostname() (string, error) {
d.calls.record("GetSSHHostname")
return d.sshHostname, nil
}
func (d *MockDriver) GetSSHKeyPath() string {
d.calls.record("GetSSHKeyPath")
return d.sshKeyPath
}
func (d *MockDriver) GetSSHPort() (int, error) {
d.calls.record("GetSSHPort")
return d.sshPort, nil
}
func (d *MockDriver) GetSSHUsername() string {
d.calls.record("GetSSHUsername")
return d.sshUsername
}
func (d *MockDriver) GetURL() (string, error) {
d.calls.record("GetURL")
return d.url, nil
}
func (d *MockDriver) GetState() (state.State, error) {
d.calls.record("GetState")
return d.state, nil
}
func (d *MockDriver) Kill() error {
d.calls.record("Kill")
return nil
}
func (d *MockDriver) PreCreateCheck() error {
d.calls.record("PreCreateCheck")
return nil
}
func (d *MockDriver) Remove() error {
d.calls.record("Remove")
return nil
}
func (d *MockDriver) Restart() error {
d.calls.record("Restart")
return nil
}
func (d *MockDriver) SetConfigFromFlags(opts DriverOptions) error {
d.calls.record("SetConfigFromFlags")
return nil
}
func (d *MockDriver) Start() error {
d.calls.record("Start")
return nil
}
func (d *MockDriver) Stop() error {
d.calls.record("Stop")
return nil
}
func TestSerialDriverCreate(t *testing.T) {
callRecorder := &CallRecorder{}
driver := newSerialDriverWithLock(&MockDriver{calls: callRecorder}, &MockLocker{calls: callRecorder})
err := driver.Create()
assert.NoError(t, err)
assert.Equal(t, []string{"Lock", "Create", "Unlock"}, callRecorder.calls)
}
func TestSerialDriverDriverName(t *testing.T) {
callRecorder := &CallRecorder{}
driver := newSerialDriverWithLock(&MockDriver{driverName: "DRIVER", calls: callRecorder}, &MockLocker{calls: callRecorder})
driverName := driver.DriverName()
assert.Equal(t, "DRIVER", driverName)
assert.Equal(t, []string{"Lock", "DriverName", "Unlock"}, callRecorder.calls)
}
func TestSerialDriverGetIP(t *testing.T) {
callRecorder := &CallRecorder{}
driver := newSerialDriverWithLock(&MockDriver{ip: "IP", calls: callRecorder}, &MockLocker{calls: callRecorder})
ip, _ := driver.GetIP()
assert.Equal(t, "IP", ip)
assert.Equal(t, []string{"Lock", "GetIP", "Unlock"}, callRecorder.calls)
}
func TestSerialDriverGetMachineName(t *testing.T) {
callRecorder := &CallRecorder{}
driver := newSerialDriverWithLock(&MockDriver{machineName: "MACHINE_NAME", calls: callRecorder}, &MockLocker{calls: callRecorder})
machineName := driver.GetMachineName()
assert.Equal(t, "MACHINE_NAME", machineName)
assert.Equal(t, []string{"Lock", "GetMachineName", "Unlock"}, callRecorder.calls)
}
func TestSerialDriverGetSSHHostname(t *testing.T) {
callRecorder := &CallRecorder{}
driver := newSerialDriverWithLock(&MockDriver{sshHostname: "SSH_HOSTNAME", calls: callRecorder}, &MockLocker{calls: callRecorder})
sshHostname, _ := driver.GetSSHHostname()
assert.Equal(t, "SSH_HOSTNAME", sshHostname)
assert.Equal(t, []string{"Lock", "GetSSHHostname", "Unlock"}, callRecorder.calls)
}
func TestSerialDriverGetSSHKeyPath(t *testing.T) {
callRecorder := &CallRecorder{}
driver := newSerialDriverWithLock(&MockDriver{sshKeyPath: "PATH", calls: callRecorder}, &MockLocker{calls: callRecorder})
path := driver.GetSSHKeyPath()
assert.Equal(t, "PATH", path)
assert.Equal(t, []string{"Lock", "GetSSHKeyPath", "Unlock"}, callRecorder.calls)
}
func TestSerialDriverGetSSHPort(t *testing.T) {
callRecorder := &CallRecorder{}
driver := newSerialDriverWithLock(&MockDriver{sshPort: 42, calls: callRecorder}, &MockLocker{calls: callRecorder})
sshPort, _ := driver.GetSSHPort()
assert.Equal(t, 42, sshPort)
assert.Equal(t, []string{"Lock", "GetSSHPort", "Unlock"}, callRecorder.calls)
}
func TestSerialDriverGetSSHUsername(t *testing.T) {
callRecorder := &CallRecorder{}
driver := newSerialDriverWithLock(&MockDriver{sshUsername: "SSH_USER", calls: callRecorder}, &MockLocker{calls: callRecorder})
sshUsername := driver.GetSSHUsername()
assert.Equal(t, "SSH_USER", sshUsername)
assert.Equal(t, []string{"Lock", "GetSSHUsername", "Unlock"}, callRecorder.calls)
}
func TestSerialDriverGetURL(t *testing.T) {
callRecorder := &CallRecorder{}
driver := newSerialDriverWithLock(&MockDriver{url: "URL", calls: callRecorder}, &MockLocker{calls: callRecorder})
url, _ := driver.GetURL()
assert.Equal(t, "URL", url)
assert.Equal(t, []string{"Lock", "GetURL", "Unlock"}, callRecorder.calls)
}
func TestSerialDriverGetState(t *testing.T) {
callRecorder := &CallRecorder{}
driver := newSerialDriverWithLock(&MockDriver{state: state.Running, calls: callRecorder}, &MockLocker{calls: callRecorder})
machineState, _ := driver.GetState()
assert.Equal(t, state.Running, machineState)
assert.Equal(t, []string{"Lock", "GetState", "Unlock"}, callRecorder.calls)
}
func TestSerialDriverKill(t *testing.T) {
callRecorder := &CallRecorder{}
driver := newSerialDriverWithLock(&MockDriver{calls: callRecorder}, &MockLocker{calls: callRecorder})
driver.Kill()
assert.Equal(t, []string{"Lock", "Kill", "Unlock"}, callRecorder.calls)
}
func TestSerialDriverPreCreateCheck(t *testing.T) {
callRecorder := &CallRecorder{}
driver := newSerialDriverWithLock(&MockDriver{calls: callRecorder}, &MockLocker{calls: callRecorder})
driver.PreCreateCheck()
assert.Equal(t, []string{"Lock", "PreCreateCheck", "Unlock"}, callRecorder.calls)
}
func TestSerialDriverRemove(t *testing.T) {
callRecorder := &CallRecorder{}
driver := newSerialDriverWithLock(&MockDriver{calls: callRecorder}, &MockLocker{calls: callRecorder})
driver.Remove()
assert.Equal(t, []string{"Lock", "Remove", "Unlock"}, callRecorder.calls)
}
func TestSerialDriverRestart(t *testing.T) {
callRecorder := &CallRecorder{}
driver := newSerialDriverWithLock(&MockDriver{calls: callRecorder}, &MockLocker{calls: callRecorder})
driver.Restart()
assert.Equal(t, []string{"Lock", "Restart", "Unlock"}, callRecorder.calls)
}
func TestSerialDriverSetConfigFromFlags(t *testing.T) {
callRecorder := &CallRecorder{}
driver := newSerialDriverWithLock(&MockDriver{calls: callRecorder}, &MockLocker{calls: callRecorder})
driver.SetConfigFromFlags(nil)
assert.Equal(t, []string{"Lock", "SetConfigFromFlags", "Unlock"}, callRecorder.calls)
}
func TestSerialDriverStart(t *testing.T) {
callRecorder := &CallRecorder{}
driver := newSerialDriverWithLock(&MockDriver{calls: callRecorder}, &MockLocker{calls: callRecorder})
driver.Start()
assert.Equal(t, []string{"Lock", "Start", "Unlock"}, callRecorder.calls)
}
func TestSerialDriverStop(t *testing.T) {
callRecorder := &CallRecorder{}
driver := newSerialDriverWithLock(&MockDriver{calls: callRecorder}, &MockLocker{calls: callRecorder})
driver.Stop()
assert.Equal(t, []string{"Lock", "Stop", "Unlock"}, callRecorder.calls)
}