github.com/zhouyu0/docker-note@v0.0.0-20190722021225-b8d3825084db/client/container_wait_test.go (about) 1 package client // import "github.com/docker/docker/client" 2 3 import ( 4 "bytes" 5 "context" 6 "encoding/json" 7 "fmt" 8 "io/ioutil" 9 "log" 10 "net/http" 11 "strings" 12 "testing" 13 "time" 14 15 "github.com/docker/docker/api/types/container" 16 ) 17 18 func TestContainerWaitError(t *testing.T) { 19 client := &Client{ 20 client: newMockClient(errorMock(http.StatusInternalServerError, "Server error")), 21 } 22 resultC, errC := client.ContainerWait(context.Background(), "nothing", "") 23 select { 24 case result := <-resultC: 25 t.Fatalf("expected to not get a wait result, got %d", result.StatusCode) 26 case err := <-errC: 27 if err.Error() != "Error response from daemon: Server error" { 28 t.Fatalf("expected a Server Error, got %v", err) 29 } 30 } 31 } 32 33 func TestContainerWait(t *testing.T) { 34 expectedURL := "/containers/container_id/wait" 35 client := &Client{ 36 client: newMockClient(func(req *http.Request) (*http.Response, error) { 37 if !strings.HasPrefix(req.URL.Path, expectedURL) { 38 return nil, fmt.Errorf("Expected URL '%s', got '%s'", expectedURL, req.URL) 39 } 40 b, err := json.Marshal(container.ContainerWaitOKBody{ 41 StatusCode: 15, 42 }) 43 if err != nil { 44 return nil, err 45 } 46 return &http.Response{ 47 StatusCode: http.StatusOK, 48 Body: ioutil.NopCloser(bytes.NewReader(b)), 49 }, nil 50 }), 51 } 52 53 resultC, errC := client.ContainerWait(context.Background(), "container_id", "") 54 select { 55 case err := <-errC: 56 t.Fatal(err) 57 case result := <-resultC: 58 if result.StatusCode != 15 { 59 t.Fatalf("expected a status code equal to '15', got %d", result.StatusCode) 60 } 61 } 62 } 63 64 func ExampleClient_ContainerWait_withTimeout() { 65 ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) 66 defer cancel() 67 68 client, _ := NewClientWithOpts(FromEnv) 69 _, errC := client.ContainerWait(ctx, "container_id", "") 70 if err := <-errC; err != nil { 71 log.Fatal(err) 72 } 73 }