d0a299c0 |
package main
import ( |
72f1881d |
"encoding/json"
"io" |
d0a299c0 |
"net/http" |
72f1881d |
"net/url"
"strconv"
"strings" |
d0a299c0 |
"time"
|
33968e6c |
"github.com/docker/docker/integration-cli/checker" |
d69d4799 |
"github.com/docker/docker/integration-cli/request" |
72f1881d |
"github.com/docker/docker/pkg/jsonmessage" |
d0a299c0 |
"github.com/go-check/check"
)
|
7fb7a477 |
func (s *DockerSuite) TestEventsAPIEmptyOutput(c *check.C) { |
d0a299c0 |
type apiResp struct {
resp *http.Response
err error
}
chResp := make(chan *apiResp)
go func() { |
b11ba123 |
resp, body, err := request.Get("/events") |
d0a299c0 |
body.Close()
chResp <- &apiResp{resp, err}
}()
select {
case r := <-chResp: |
176d8c5a |
c.Assert(r.err, checker.IsNil)
c.Assert(r.resp.StatusCode, checker.Equals, http.StatusOK) |
d0a299c0 |
case <-time.After(3 * time.Second):
c.Fatal("timeout waiting for events api to respond, should have responded immediately")
}
} |
72f1881d |
|
7fb7a477 |
func (s *DockerSuite) TestEventsAPIBackwardsCompatible(c *check.C) { |
72f1881d |
since := daemonTime(c).Unix()
ts := strconv.FormatInt(since, 10)
|
a899aa67 |
out := runSleepingContainer(c, "--name=foo", "-d") |
72f1881d |
containerID := strings.TrimSpace(out)
c.Assert(waitRun(containerID), checker.IsNil)
q := url.Values{}
q.Set("since", ts)
|
b11ba123 |
_, body, err := request.Get("/events?" + q.Encode()) |
72f1881d |
c.Assert(err, checker.IsNil)
defer body.Close()
dec := json.NewDecoder(body)
var containerCreateEvent *jsonmessage.JSONMessage
for {
var event jsonmessage.JSONMessage
if err := dec.Decode(&event); err != nil {
if err == io.EOF {
break
}
c.Fatal(err)
}
if event.Status == "create" && event.ID == containerID {
containerCreateEvent = &event
break
}
}
c.Assert(containerCreateEvent, checker.Not(checker.IsNil))
c.Assert(containerCreateEvent.Status, checker.Equals, "create")
c.Assert(containerCreateEvent.ID, checker.Equals, containerID)
c.Assert(containerCreateEvent.From, checker.Equals, "busybox")
} |