Now scheduler makes order of events pretty random, so I added little
sleeps to make order intact. Also I renamed to test so name better
describes its nature.
Signed-off-by: Alexander Morozov <lk4d4@docker.com>
| ... | ... |
@@ -1,7 +1,6 @@ |
| 1 | 1 |
package events |
| 2 | 2 |
|
| 3 | 3 |
import ( |
| 4 |
- "fmt" |
|
| 5 | 4 |
"testing" |
| 6 | 5 |
"time" |
| 7 | 6 |
|
| ... | ... |
@@ -81,55 +80,39 @@ func TestEventsLogTimeout(t *testing.T) {
|
| 81 | 81 |
} |
| 82 | 82 |
} |
| 83 | 83 |
|
| 84 |
-func TestLogEvents(t *testing.T) {
|
|
| 84 |
+func TestEventsCap(t *testing.T) {
|
|
| 85 | 85 |
e := New() |
| 86 |
- |
|
| 87 |
- for i := 0; i < eventsLimit+16; i++ {
|
|
| 88 |
- action := fmt.Sprintf("action_%d", i)
|
|
| 89 |
- id := fmt.Sprintf("cont_%d", i)
|
|
| 90 |
- from := fmt.Sprintf("image_%d", i)
|
|
| 91 |
- e.Log(action, id, from) |
|
| 86 |
+ for i := 0; i < eventsLimit+1; i++ {
|
|
| 87 |
+ e.Log("action", "id", "from")
|
|
| 92 | 88 |
} |
| 93 |
- time.Sleep(50 * time.Millisecond) |
|
| 89 |
+ // let all events go through |
|
| 90 |
+ time.Sleep(1 * time.Second) |
|
| 91 |
+ |
|
| 94 | 92 |
current, l := e.Subscribe() |
| 95 |
- for i := 0; i < 10; i++ {
|
|
| 96 |
- num := i + eventsLimit + 16 |
|
| 97 |
- action := fmt.Sprintf("action_%d", num)
|
|
| 98 |
- id := fmt.Sprintf("cont_%d", num)
|
|
| 99 |
- from := fmt.Sprintf("image_%d", num)
|
|
| 100 |
- e.Log(action, id, from) |
|
| 93 |
+ if len(current) != eventsLimit {
|
|
| 94 |
+ t.Fatalf("Must be %d events, got %d", eventsLimit, len(current))
|
|
| 101 | 95 |
} |
| 102 | 96 |
if len(e.events) != eventsLimit {
|
| 103 | 97 |
t.Fatalf("Must be %d events, got %d", eventsLimit, len(e.events))
|
| 104 | 98 |
} |
| 105 | 99 |
|
| 100 |
+ for i := 0; i < 10; i++ {
|
|
| 101 |
+ e.Log("action", "id", "from")
|
|
| 102 |
+ } |
|
| 103 |
+ // let all events go through |
|
| 104 |
+ time.Sleep(1 * time.Second) |
|
| 105 |
+ |
|
| 106 | 106 |
var msgs []*jsonmessage.JSONMessage |
| 107 | 107 |
for len(msgs) < 10 {
|
| 108 |
- m := <-l |
|
| 109 |
- jm, ok := (m).(*jsonmessage.JSONMessage) |
|
| 110 |
- if !ok {
|
|
| 111 |
- t.Fatalf("Unexpected type %T", m)
|
|
| 108 |
+ select {
|
|
| 109 |
+ case m := <-l: |
|
| 110 |
+ jm, ok := (m).(*jsonmessage.JSONMessage) |
|
| 111 |
+ if !ok {
|
|
| 112 |
+ t.Fatalf("Unexpected type %T", m)
|
|
| 113 |
+ } |
|
| 114 |
+ msgs = append(msgs, jm) |
|
| 115 |
+ default: |
|
| 116 |
+ t.Fatalf("There is no enough events in channel")
|
|
| 112 | 117 |
} |
| 113 |
- msgs = append(msgs, jm) |
|
| 114 |
- } |
|
| 115 |
- if len(current) != eventsLimit {
|
|
| 116 |
- t.Fatalf("Must be %d events, got %d", eventsLimit, len(current))
|
|
| 117 |
- } |
|
| 118 |
- first := current[0] |
|
| 119 |
- if first.Status != "action_16" {
|
|
| 120 |
- t.Fatalf("First action is %s, must be action_16", first.Status)
|
|
| 121 |
- } |
|
| 122 |
- last := current[len(current)-1] |
|
| 123 |
- if last.Status != "action_79" {
|
|
| 124 |
- t.Fatalf("Last action is %s, must be action_79", last.Status)
|
|
| 125 |
- } |
|
| 126 |
- |
|
| 127 |
- firstC := msgs[0] |
|
| 128 |
- if firstC.Status != "action_80" {
|
|
| 129 |
- t.Fatalf("First action is %s, must be action_80", firstC.Status)
|
|
| 130 |
- } |
|
| 131 |
- lastC := msgs[len(msgs)-1] |
|
| 132 |
- if lastC.Status != "action_89" {
|
|
| 133 |
- t.Fatalf("Last action is %s, must be action_89", lastC.Status)
|
|
| 134 | 118 |
} |
| 135 | 119 |
} |