1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- package main
- import (
- "os/exec"
- "strings"
- "sync"
- "testing"
- "time"
- )
- func TestMultipleAttachRestart(t *testing.T) {
- cmd := exec.Command(dockerBinary, "run", "--name", "attacher", "-d", "busybox",
- "/bin/sh", "-c", "sleep 2 && echo hello")
- group := sync.WaitGroup{}
- group.Add(4)
- defer func() {
- cmd = exec.Command(dockerBinary, "kill", "attacher")
- if _, err := runCommand(cmd); err != nil {
- t.Fatal(err)
- }
- deleteAllContainers()
- }()
- go func() {
- defer group.Done()
- out, _, err := runCommandWithOutput(cmd)
- if err != nil {
- t.Fatal(err, out)
- }
- }()
- time.Sleep(500 * time.Millisecond)
- for i := 0; i < 3; i++ {
- go func() {
- defer group.Done()
- c := exec.Command(dockerBinary, "attach", "attacher")
- out, _, err := runCommandWithOutput(c)
- if err != nil {
- t.Fatal(err, out)
- }
- if actual := strings.Trim(out, "\r\n"); actual != "hello" {
- t.Fatalf("unexpected output %s expected hello", actual)
- }
- }()
- }
- group.Wait()
- logDone("attach - multiple attach")
- }
|