github.com/fabiokung/docker@v0.11.2-0.20170222101415-4534dcd49497/integration-cli/docker_api_events_test.go (about) 1 package main 2 3 import ( 4 "encoding/json" 5 "io" 6 "net/http" 7 "net/url" 8 "strconv" 9 "strings" 10 "time" 11 12 "github.com/docker/docker/integration-cli/checker" 13 "github.com/docker/docker/integration-cli/request" 14 "github.com/docker/docker/pkg/jsonmessage" 15 "github.com/go-check/check" 16 ) 17 18 func (s *DockerSuite) TestEventsAPIEmptyOutput(c *check.C) { 19 type apiResp struct { 20 resp *http.Response 21 err error 22 } 23 chResp := make(chan *apiResp) 24 go func() { 25 resp, body, err := request.SockRequestRaw("GET", "/events", nil, "", daemonHost()) 26 body.Close() 27 chResp <- &apiResp{resp, err} 28 }() 29 30 select { 31 case r := <-chResp: 32 c.Assert(r.err, checker.IsNil) 33 c.Assert(r.resp.StatusCode, checker.Equals, http.StatusOK) 34 case <-time.After(3 * time.Second): 35 c.Fatal("timeout waiting for events api to respond, should have responded immediately") 36 } 37 } 38 39 func (s *DockerSuite) TestEventsAPIBackwardsCompatible(c *check.C) { 40 since := daemonTime(c).Unix() 41 ts := strconv.FormatInt(since, 10) 42 43 out, _ := runSleepingContainer(c, "--name=foo", "-d") 44 containerID := strings.TrimSpace(out) 45 c.Assert(waitRun(containerID), checker.IsNil) 46 47 q := url.Values{} 48 q.Set("since", ts) 49 50 _, body, err := request.SockRequestRaw("GET", "/events?"+q.Encode(), nil, "", daemonHost()) 51 c.Assert(err, checker.IsNil) 52 defer body.Close() 53 54 dec := json.NewDecoder(body) 55 var containerCreateEvent *jsonmessage.JSONMessage 56 for { 57 var event jsonmessage.JSONMessage 58 if err := dec.Decode(&event); err != nil { 59 if err == io.EOF { 60 break 61 } 62 c.Fatal(err) 63 } 64 if event.Status == "create" && event.ID == containerID { 65 containerCreateEvent = &event 66 break 67 } 68 } 69 70 c.Assert(containerCreateEvent, checker.Not(checker.IsNil)) 71 c.Assert(containerCreateEvent.Status, checker.Equals, "create") 72 c.Assert(containerCreateEvent.ID, checker.Equals, containerID) 73 c.Assert(containerCreateEvent.From, checker.Equals, "busybox") 74 }