Fixes issue #11555
Applied a workaround to check if since and until flags are valid or not.
Signed-off-by: André Martins <martins@noironetworks.com>
| ... | ... |
@@ -59,7 +59,7 @@ func (e *Events) Get(job *engine.Job) error {
|
| 59 | 59 |
} |
| 60 | 60 |
|
| 61 | 61 |
// If no until, disable timeout |
| 62 |
- if until == 0 {
|
|
| 62 |
+ if job.Getenv("until") == "" {
|
|
| 63 | 63 |
timeout.Stop() |
| 64 | 64 |
} |
| 65 | 65 |
|
| ... | ... |
@@ -70,7 +70,7 @@ func (e *Events) Get(job *engine.Job) error {
|
| 70 | 70 |
job.Stdout.Write(nil) |
| 71 | 71 |
|
| 72 | 72 |
// Resend every event in the [since, until] time interval. |
| 73 |
- if since != 0 {
|
|
| 73 |
+ if job.Getenv("since") != "" {
|
|
| 74 | 74 |
if err := e.writeCurrent(job, since, until, eventFilters); err != nil {
|
| 75 | 75 |
return err |
| 76 | 76 |
} |
| ... | ... |
@@ -112,6 +112,41 @@ func TestEventsContainerEvents(t *testing.T) {
|
| 112 | 112 |
logDone("events - container create, start, die, destroy is logged")
|
| 113 | 113 |
} |
| 114 | 114 |
|
| 115 |
+func TestEventsContainerEventsSinceUnixEpoch(t *testing.T) {
|
|
| 116 |
+ dockerCmd(t, "run", "--rm", "busybox", "true") |
|
| 117 |
+ timeBeginning := time.Unix(0, 0).Format(time.RFC3339Nano) |
|
| 118 |
+ timeBeginning = strings.Replace(timeBeginning, "Z", ".000000000Z", -1) |
|
| 119 |
+ eventsCmd := exec.Command(dockerBinary, "events", fmt.Sprintf("--since='%s'", timeBeginning),
|
|
| 120 |
+ fmt.Sprintf("--until=%d", daemonTime(t).Unix()))
|
|
| 121 |
+ out, exitCode, err := runCommandWithOutput(eventsCmd) |
|
| 122 |
+ if exitCode != 0 || err != nil {
|
|
| 123 |
+ t.Fatalf("Failed to get events with exit code %d: %s", exitCode, err)
|
|
| 124 |
+ } |
|
| 125 |
+ events := strings.Split(out, "\n") |
|
| 126 |
+ events = events[:len(events)-1] |
|
| 127 |
+ if len(events) < 4 {
|
|
| 128 |
+ t.Fatalf("Missing expected event")
|
|
| 129 |
+ } |
|
| 130 |
+ createEvent := strings.Fields(events[len(events)-4]) |
|
| 131 |
+ startEvent := strings.Fields(events[len(events)-3]) |
|
| 132 |
+ dieEvent := strings.Fields(events[len(events)-2]) |
|
| 133 |
+ destroyEvent := strings.Fields(events[len(events)-1]) |
|
| 134 |
+ if createEvent[len(createEvent)-1] != "create" {
|
|
| 135 |
+ t.Fatalf("event should be create, not %#v", createEvent)
|
|
| 136 |
+ } |
|
| 137 |
+ if startEvent[len(startEvent)-1] != "start" {
|
|
| 138 |
+ t.Fatalf("event should be start, not %#v", startEvent)
|
|
| 139 |
+ } |
|
| 140 |
+ if dieEvent[len(dieEvent)-1] != "die" {
|
|
| 141 |
+ t.Fatalf("event should be die, not %#v", dieEvent)
|
|
| 142 |
+ } |
|
| 143 |
+ if destroyEvent[len(destroyEvent)-1] != "destroy" {
|
|
| 144 |
+ t.Fatalf("event should be destroy, not %#v", destroyEvent)
|
|
| 145 |
+ } |
|
| 146 |
+ |
|
| 147 |
+ logDone("events - container create, start, die, destroy since Unix Epoch time")
|
|
| 148 |
+} |
|
| 149 |
+ |
|
| 115 | 150 |
func TestEventsImageUntagDelete(t *testing.T) {
|
| 116 | 151 |
name := "testimageevents" |
| 117 | 152 |
defer deleteImages(name) |