func TestPipes(t *testing.T) { oldNewPipe := controls.NewPipe defer func() { controls.NewPipe = oldNewPipe }() controls.NewPipe = func(_ controls.PipeClient, _ string) (string, xfer.Pipe, error) { return "pipeid", mockPipe{}, nil } mdc := newMockClient() setupStubs(mdc, func() { registry, _ := docker.NewRegistry(10*time.Second, nil) defer registry.Stop() test.Poll(t, 100*time.Millisecond, true, func() interface{} { _, ok := registry.GetContainer("ping") return ok }) for _, tc := range []string{ docker.AttachContainer, docker.ExecContainer, } { result := controls.HandleControlRequest(xfer.Request{ Control: tc, NodeID: report.MakeContainerNodeID("ping"), }) want := xfer.Response{ Pipe: "pipeid", RawTTY: true, } if !reflect.DeepEqual(result, want) { t.Errorf("diff: %s", test.Diff(want, result)) } } }) }
func TestControls(t *testing.T) { mdc := newMockClient() setupStubs(mdc, func() { registry, _ := docker.NewRegistry(10*time.Second, nil) defer registry.Stop() for _, tc := range []struct{ command, result string }{ {docker.StopContainer, "stopped"}, {docker.StartContainer, "started"}, {docker.RestartContainer, "restarted"}, {docker.PauseContainer, "paused"}, {docker.UnpauseContainer, "unpaused"}, } { result := controls.HandleControlRequest(xfer.Request{ Control: tc.command, NodeID: report.MakeContainerNodeID("a1b2c3d4e5"), }) if !reflect.DeepEqual(result, xfer.Response{ Error: tc.result, }) { t.Error(result) } } }) }
func TestControlsNotFound(t *testing.T) { want := xfer.Response{ Error: "Control \"baz\" not recognised", } have := controls.HandleControlRequest(xfer.Request{ Control: "baz", }) if !reflect.DeepEqual(want, have) { t.Fatal(test.Diff(want, have)) } }
func TestControls(t *testing.T) { controls.Register("foo", func(req xfer.Request) xfer.Response { return xfer.Response{ Value: "bar", } }) defer controls.Rm("foo") want := xfer.Response{ Value: "bar", } have := controls.HandleControlRequest(xfer.Request{ Control: "foo", }) if !reflect.DeepEqual(want, have) { t.Fatal(test.Diff(want, have)) } }