From 6b9be1bfc37d18a5f028a6ca8275a272c6696138 Mon Sep 17 00:00:00 2001 From: Derek McGowan Date: Fri, 1 Jun 2018 16:04:22 -0700 Subject: [PATCH] Fix creation of DirectIO overwriting fifo config Creating a direct IO should not overwrite the fifo configuration. The fifo configuration can be updated before creating the direct io if needed. This fixes an expected change in behavior for clients who were calling NewDirectIO previously with terminal configured on the fifo. Signed-off-by: Derek McGowan --- cio/io_unix.go | 10 ---------- container_checkpoint_test.go | 4 ++-- container_linux_test.go | 28 ++++++++-------------------- 3 files changed, 10 insertions(+), 32 deletions(-) diff --git a/cio/io_unix.go b/cio/io_unix.go index 8715c65c8..3ab2a30b0 100644 --- a/cio/io_unix.go +++ b/cio/io_unix.go @@ -141,18 +141,8 @@ func openFifos(ctx context.Context, fifos *FIFOSet) (pipes, error) { // NewDirectIO returns an IO implementation that exposes the IO streams as io.ReadCloser // and io.WriteCloser. func NewDirectIO(ctx context.Context, fifos *FIFOSet) (*DirectIO, error) { - return newDirectIO(ctx, fifos, false) -} - -// NewDirectIOWithTerminal returns an IO implementation that exposes the streams with terminal enabled -func NewDirectIOWithTerminal(ctx context.Context, fifos *FIFOSet) (*DirectIO, error) { - return newDirectIO(ctx, fifos, true) -} - -func newDirectIO(ctx context.Context, fifos *FIFOSet, terminal bool) (*DirectIO, error) { ctx, cancel := context.WithCancel(ctx) pipes, err := openFifos(ctx, fifos) - fifos.Config.Terminal = terminal return &DirectIO{ pipes: pipes, cio: cio{ diff --git a/container_checkpoint_test.go b/container_checkpoint_test.go index 6b1858afa..02672f3c5 100644 --- a/container_checkpoint_test.go +++ b/container_checkpoint_test.go @@ -60,7 +60,7 @@ func TestCheckpointRestorePTY(t *testing.T) { } defer container.Delete(ctx, WithSnapshotCleanup) - direct, err := newDirectIOWithTerminal(ctx) + direct, err := newDirectIO(ctx, true) if err != nil { t.Fatal(err) } @@ -92,7 +92,7 @@ func TestCheckpointRestorePTY(t *testing.T) { t.Fatal(err) } direct.Delete() - direct, err = newDirectIOWithTerminal(ctx) + direct, err = newDirectIO(ctx, true) if err != nil { t.Fatal(err) } diff --git a/container_linux_test.go b/container_linux_test.go index bcec0a90e..a2e7426cc 100644 --- a/container_linux_test.go +++ b/container_linux_test.go @@ -281,7 +281,7 @@ func TestContainerPTY(t *testing.T) { } defer container.Delete(ctx, WithSnapshotCleanup) - direct, err := newDirectIOWithTerminal(ctx) + direct, err := newDirectIO(ctx, true) if err != nil { t.Fatal(err) } @@ -360,7 +360,7 @@ func TestContainerAttach(t *testing.T) { expected := "hello" + newLine - direct, err := newDirectIOStandard(ctx) + direct, err := newDirectIO(ctx, false) if err != nil { t.Fatal(err) } @@ -429,24 +429,12 @@ func TestContainerAttach(t *testing.T) { } } -func newDirectIOStandard(ctx context.Context) (*directIO, error) { - return newDirectIO(ctx, false) -} - -func newDirectIOWithTerminal(ctx context.Context) (*directIO, error) { - return newDirectIO(ctx, true) -} - func newDirectIO(ctx context.Context, terminal bool) (*directIO, error) { - fifos, err := cio.NewFIFOSetInDir("", "", false) + fifos, err := cio.NewFIFOSetInDir("", "", terminal) if err != nil { return nil, err } - f := cio.NewDirectIO - if terminal { - f = cio.NewDirectIOWithTerminal - } - dio, err := f(ctx, fifos) + dio, err := cio.NewDirectIO(ctx, fifos) if err != nil { return nil, err } @@ -508,7 +496,7 @@ func TestContainerUsername(t *testing.T) { if err != nil { t.Fatal(err) } - direct, err := newDirectIOStandard(ctx) + direct, err := newDirectIO(ctx, false) if err != nil { t.Fatal(err) } @@ -583,7 +571,7 @@ func testContainerUser(t *testing.T, userstr, expectedOutput string) { if err != nil { t.Fatal(err) } - direct, err := newDirectIOStandard(ctx) + direct, err := newDirectIO(ctx, false) if err != nil { t.Fatal(err) } @@ -668,7 +656,7 @@ func TestContainerAttachProcess(t *testing.T) { expected := "hello" + newLine // creating IO early for easy resource cleanup - direct, err := newDirectIOStandard(ctx) + direct, err := newDirectIO(ctx, false) if err != nil { t.Fatal(err) } @@ -775,7 +763,7 @@ func TestContainerUserID(t *testing.T) { if err != nil { t.Fatal(err) } - direct, err := newDirectIOStandard(ctx) + direct, err := newDirectIO(ctx, false) if err != nil { t.Fatal(err) }