Browse code

Migrate TestGetEvents into a unit and a CLI test

Docker-DCO-1.1-Signed-off-by: Guilherme Salgado <gsalgado@gmail.com> (github: gsalgado)

Guilherme Salgado authored on 2014/06/05 19:32:19
Showing 3 changed files
... ...
@@ -153,6 +153,49 @@ func TestGetContainersByName(t *testing.T) {
153 153
 	}
154 154
 }
155 155
 
156
+func TestGetEvents(t *testing.T) {
157
+	eng := engine.New()
158
+	var called bool
159
+	eng.Register("events", func(job *engine.Job) engine.Status {
160
+		called = true
161
+		since := job.Getenv("since")
162
+		if since != "1" {
163
+			t.Fatalf("'since' should be 1, found %#v instead", since)
164
+		}
165
+		until := job.Getenv("until")
166
+		if until != "0" {
167
+			t.Fatalf("'until' should be 0, found %#v instead", until)
168
+		}
169
+		v := &engine.Env{}
170
+		v.Set("since", since)
171
+		v.Set("until", until)
172
+		if _, err := v.WriteTo(job.Stdout); err != nil {
173
+			return job.Error(err)
174
+		}
175
+		return engine.StatusOK
176
+	})
177
+	r := serveRequest("GET", "/events?since=1&until=0", nil, eng, t)
178
+	if !called {
179
+		t.Fatal("handler was not called")
180
+	}
181
+	if r.HeaderMap.Get("Content-Type") != "application/json" {
182
+		t.Fatalf("%#v\n", r)
183
+	}
184
+	var stdout_json struct {
185
+		Since int
186
+		Until int
187
+	}
188
+	if err := json.Unmarshal(r.Body.Bytes(), &stdout_json); err != nil {
189
+		t.Fatalf("%#v", err)
190
+	}
191
+	if stdout_json.Since != 1 {
192
+		t.Fatalf("since != 1: %#v", stdout_json.Since)
193
+	}
194
+	if stdout_json.Until != 0 {
195
+		t.Fatalf("until != 0: %#v", stdout_json.Until)
196
+	}
197
+}
198
+
156 199
 func TestLogs(t *testing.T) {
157 200
 	eng := engine.New()
158 201
 	var inspect bool
159 202
new file mode 100644
... ...
@@ -0,0 +1,29 @@
0
+package main
1
+
2
+import (
3
+	"os/exec"
4
+	"strings"
5
+	"testing"
6
+)
7
+
8
+func TestCLIGetEvents(t *testing.T) {
9
+	out, _, _ := cmd(t, "images", "-q")
10
+	image := strings.Split(out, "\n")[0]
11
+	cmd(t, "tag", image, "utest:tag1")
12
+	cmd(t, "tag", image, "utest:tag2")
13
+	cmd(t, "rmi", "utest:tag1")
14
+	cmd(t, "rmi", "utest:tag2")
15
+	eventsCmd := exec.Command("timeout", "0.2", dockerBinary, "events", "--since=1")
16
+	out, _, _ = runCommandWithOutput(eventsCmd)
17
+	events := strings.Split(out, "\n")
18
+	n_events := len(events)
19
+	// The last element after the split above will be an empty string, so we
20
+	// get the two elements before the last, which are the untags we're
21
+	// looking for.
22
+	for _, v := range events[n_events-3 : n_events-1] {
23
+		if !strings.Contains(v, "untag") {
24
+			t.Fatalf("event should be untag, not %#v", v)
25
+		}
26
+	}
27
+	logDone("events - untags are logged")
28
+}
... ...
@@ -19,56 +19,9 @@ import (
19 19
 	"github.com/dotcloud/docker/engine"
20 20
 	"github.com/dotcloud/docker/image"
21 21
 	"github.com/dotcloud/docker/runconfig"
22
-	"github.com/dotcloud/docker/utils"
23 22
 	"github.com/dotcloud/docker/vendor/src/code.google.com/p/go/src/pkg/archive/tar"
24 23
 )
25 24
 
26
-func TestGetEvents(t *testing.T) {
27
-	eng := NewTestEngine(t)
28
-	srv := mkServerFromEngine(eng, t)
29
-	// FIXME: we might not need daemon, why not simply nuke
30
-	// the engine?
31
-	daemon := mkDaemonFromEngine(eng, t)
32
-	defer nuke(daemon)
33
-
34
-	var events []*utils.JSONMessage
35
-	for _, parts := range [][3]string{
36
-		{"fakeaction", "fakeid", "fakeimage"},
37
-		{"fakeaction2", "fakeid", "fakeimage"},
38
-	} {
39
-		action, id, from := parts[0], parts[1], parts[2]
40
-		ev := srv.LogEvent(action, id, from)
41
-		events = append(events, ev)
42
-	}
43
-
44
-	req, err := http.NewRequest("GET", "/events?since=1", nil)
45
-	if err != nil {
46
-		t.Fatal(err)
47
-	}
48
-
49
-	r := httptest.NewRecorder()
50
-	setTimeout(t, "", 500*time.Millisecond, func() {
51
-		if err := server.ServeRequest(eng, api.APIVERSION, r, req); err != nil {
52
-			t.Fatal(err)
53
-		}
54
-		assertHttpNotError(r, t)
55
-	})
56
-
57
-	dec := json.NewDecoder(r.Body)
58
-	for i := 0; i < 2; i++ {
59
-		var jm utils.JSONMessage
60
-		if err := dec.Decode(&jm); err == io.EOF {
61
-			break
62
-		} else if err != nil {
63
-			t.Fatal(err)
64
-		}
65
-		if jm != *events[i] {
66
-			t.Fatalf("Event received it different than expected")
67
-		}
68
-	}
69
-
70
-}
71
-
72 25
 func TestGetImagesJSON(t *testing.T) {
73 26
 	eng := NewTestEngine(t)
74 27
 	defer mkDaemonFromEngine(eng, t).Nuke()