1
1
package event
2
2
3
3
import (
4
+ "context"
4
5
"testing"
5
6
"time"
6
7
7
8
"github.com/stretchr/testify/assert"
8
9
)
9
10
10
11
func TestDefaultEventProcessor_ProcessImpression (t * testing.T ) {
11
- processor := NewEventProcessor (100 , 100 )
12
+ ctx := context .Background ()
13
+
14
+ processor := NewEventProcessor (ctx , 100 , 100 )
12
15
13
16
impression := BuildTestImpressionEvent ()
14
17
@@ -21,7 +24,6 @@ func TestDefaultEventProcessor_ProcessImpression(t *testing.T) {
21
24
assert .NotNil (t , processor .Ticker )
22
25
23
26
assert .Equal (t , 0 , processor .EventsCount ())
24
-
25
27
}
26
28
27
29
type MockDispatcher struct {
@@ -34,9 +36,14 @@ func (f *MockDispatcher) DispatchEvent(event LogEvent, callback func(success boo
34
36
}
35
37
36
38
func TestDefaultEventProcessor_ProcessBatch (t * testing.T ) {
37
- processor := & QueueingEventProcessor {MaxQueueSize : 100 , FlushInterval : 100 , Q : NewInMemoryQueue (100 ), EventDispatcher : & MockDispatcher {}}
39
+ processor := & QueueingEventProcessor {
40
+ MaxQueueSize : 100 ,
41
+ FlushInterval : 100 ,
42
+ Q : NewInMemoryQueue (100 ),
43
+ EventDispatcher : & MockDispatcher {},
44
+ }
38
45
processor .BatchSize = 10
39
- processor .StartTicker ()
46
+ processor .StartTicker (context . TODO () )
40
47
41
48
impression := BuildTestImpressionEvent ()
42
49
conversion := BuildTestConversionEvent ()
@@ -63,10 +70,46 @@ func TestDefaultEventProcessor_ProcessBatch(t *testing.T) {
63
70
}
64
71
}
65
72
73
+ func TestBatchEventProcessor_FlushesOnClose (t * testing.T ) {
74
+ ctx , cancelFn := context .WithCancel (context .Background ())
75
+ processor := & QueueingEventProcessor {
76
+ MaxQueueSize : 100 ,
77
+ FlushInterval : 30 * time .Second ,
78
+ Q : NewInMemoryQueue (100 ),
79
+ EventDispatcher : & MockDispatcher {},
80
+ }
81
+ processor .BatchSize = 10
82
+ processor .StartTicker (ctx )
83
+
84
+ impression := BuildTestImpressionEvent ()
85
+ conversion := BuildTestConversionEvent ()
86
+
87
+ processor .ProcessEvent (impression )
88
+ processor .ProcessEvent (impression )
89
+ processor .ProcessEvent (conversion )
90
+ processor .ProcessEvent (conversion )
91
+
92
+ assert .Equal (t , 4 , processor .EventsCount ())
93
+
94
+ time .Sleep (500 * time .Millisecond )
95
+
96
+ // Triggers the flush in the processor
97
+ cancelFn ()
98
+
99
+ time .Sleep (500 * time .Millisecond )
100
+
101
+ assert .Equal (t , 0 , processor .EventsCount ())
102
+ }
103
+
66
104
func TestDefaultEventProcessor_ProcessBatchRevisionMismatch (t * testing.T ) {
67
- processor := & QueueingEventProcessor {MaxQueueSize : 100 , FlushInterval : 100 , Q : NewInMemoryQueue (100 ), EventDispatcher : & MockDispatcher {}}
105
+ processor := & QueueingEventProcessor {
106
+ MaxQueueSize : 100 ,
107
+ FlushInterval : 100 ,
108
+ Q : NewInMemoryQueue (100 ),
109
+ EventDispatcher : & MockDispatcher {},
110
+ }
68
111
processor .BatchSize = 10
69
- processor .StartTicker ()
112
+ processor .StartTicker (context . TODO () )
70
113
71
114
impression := BuildTestImpressionEvent ()
72
115
conversion := BuildTestConversionEvent ()
@@ -95,9 +138,14 @@ func TestDefaultEventProcessor_ProcessBatchRevisionMismatch(t *testing.T) {
95
138
}
96
139
97
140
func TestDefaultEventProcessor_ProcessBatchProjectMismatch (t * testing.T ) {
98
- processor := & QueueingEventProcessor {MaxQueueSize : 100 , FlushInterval : 100 , Q : NewInMemoryQueue (100 ), EventDispatcher : & MockDispatcher {}}
141
+ processor := & QueueingEventProcessor {
142
+ MaxQueueSize : 100 ,
143
+ FlushInterval : 100 ,
144
+ Q : NewInMemoryQueue (100 ),
145
+ EventDispatcher : & MockDispatcher {},
146
+ }
99
147
processor .BatchSize = 10
100
- processor .StartTicker ()
148
+ processor .StartTicker (context . TODO () )
101
149
102
150
impression := BuildTestImpressionEvent ()
103
151
conversion := BuildTestConversionEvent ()
0 commit comments