@@ -9,7 +9,7 @@ import pl.allegro.tech.servicemesh.envoycontrol.config.envoy.EnvoyExtension
9
9
import pl.allegro.tech.servicemesh.envoycontrol.config.envoycontrol.EnvoyControlExtension
10
10
import pl.allegro.tech.servicemesh.envoycontrol.config.service.EchoServiceExtension
11
11
12
- open class ServiceTagsTest {
12
+ open class ImplServiceTagsTest : ServiceTagsTest {
13
13
14
14
companion object {
15
15
private val properties = mapOf (
@@ -55,22 +55,35 @@ open class ServiceTagsTest {
55
55
val envoy = EnvoyExtension (envoyControl, regularService)
56
56
}
57
57
58
- protected fun registerServices () {
59
- consul.server.operations.registerService(name = " echo" , extension = regularService, tags = emptyList())
60
- consul.server.operations.registerService(
58
+ override fun envoy () = envoy
59
+
60
+ override fun envoyControl () = envoyControl
61
+
62
+ override fun consul () = consul
63
+ override fun regularService () = regularService
64
+ override fun loremService () = loremService
65
+ override fun loremIpsumService () = loremIpsumService
66
+ override fun genericService () = genericService
67
+ }
68
+
69
+ interface ServiceTagsTest {
70
+
71
+ fun registerServices () {
72
+ consul().server.operations.registerService(name = " echo" , extension = regularService(), tags = emptyList())
73
+ consul().server.operations.registerService(
61
74
name = " echo" ,
62
- extension = loremService,
75
+ extension = loremService() ,
63
76
tags = listOf (" lorem" , " blacklisted" )
64
77
)
65
- consul.server.operations.registerService(
78
+ consul() .server.operations.registerService(
66
79
name = " echo" ,
67
- extension = loremIpsumService,
80
+ extension = loremIpsumService() ,
68
81
tags = listOf (" lorem" , " ipsum" )
69
82
)
70
83
}
71
84
72
85
@Test
73
- open fun `should route requests to instance with tag ipsum` () {
86
+ fun `should route requests to instance with tag ipsum` () {
74
87
// given
75
88
registerServices()
76
89
envoy().waitForReadyServices(" echo" )
@@ -80,13 +93,13 @@ open class ServiceTagsTest {
80
93
81
94
// then
82
95
assertThat(stats.totalHits).isEqualTo(10 )
83
- assertThat(stats.hits(regularService)).isEqualTo(0 )
84
- assertThat(stats.hits(loremService)).isEqualTo(0 )
85
- assertThat(stats.hits(loremIpsumService)).isEqualTo(10 )
96
+ assertThat(stats.hits(regularService() )).isEqualTo(0 )
97
+ assertThat(stats.hits(loremService() )).isEqualTo(0 )
98
+ assertThat(stats.hits(loremIpsumService() )).isEqualTo(10 )
86
99
}
87
100
88
101
@Test
89
- open fun `should route requests to instances with tag lorem` () {
102
+ fun `should route requests to instances with tag lorem` () {
90
103
// given
91
104
registerServices()
92
105
envoy().waitForReadyServices(" echo" )
@@ -96,14 +109,14 @@ open class ServiceTagsTest {
96
109
97
110
// then
98
111
assertThat(stats.totalHits).isEqualTo(20 )
99
- assertThat(stats.hits(regularService)).isEqualTo(0 )
100
- assertThat(stats.hits(loremService)).isGreaterThan(2 )
101
- assertThat(stats.hits(loremIpsumService)).isGreaterThan(2 )
102
- assertThat(stats.hits(loremService) + stats.hits(loremIpsumService)).isEqualTo(20 )
112
+ assertThat(stats.hits(regularService() )).isEqualTo(0 )
113
+ assertThat(stats.hits(loremService() )).isGreaterThan(2 )
114
+ assertThat(stats.hits(loremIpsumService() )).isGreaterThan(2 )
115
+ assertThat(stats.hits(loremService()) + stats.hits(loremIpsumService() )).isEqualTo(20 )
103
116
}
104
117
105
118
@Test
106
- open fun `should route requests to all instances` () {
119
+ fun `should route requests to all instances` () {
107
120
// given
108
121
registerServices()
109
122
envoy().waitForReadyServices(" echo" )
@@ -113,20 +126,20 @@ open class ServiceTagsTest {
113
126
114
127
// then
115
128
assertThat(stats.totalHits).isEqualTo(20 )
116
- assertThat(stats.hits(regularService)).isGreaterThan(1 )
117
- assertThat(stats.hits(loremService)).isGreaterThan(1 )
118
- assertThat(stats.hits(loremIpsumService)).isGreaterThan(1 )
129
+ assertThat(stats.hits(regularService() )).isGreaterThan(1 )
130
+ assertThat(stats.hits(loremService() )).isGreaterThan(1 )
131
+ assertThat(stats.hits(loremIpsumService() )).isGreaterThan(1 )
119
132
assertThat(
120
- stats.hits(regularService) + stats.hits(loremService) + stats.hits(
121
- loremIpsumService
133
+ stats.hits(regularService()) + stats.hits(loremService() ) + stats.hits(
134
+ loremIpsumService()
122
135
)
123
136
).isEqualTo(
124
137
20
125
138
)
126
139
}
127
140
128
141
@Test
129
- open fun `should return 503 if instance with requested tag is not found` () {
142
+ fun `should return 503 if instance with requested tag is not found` () {
130
143
// given
131
144
registerServices()
132
145
envoy().waitForReadyServices(" echo" )
@@ -137,13 +150,13 @@ open class ServiceTagsTest {
137
150
// then
138
151
assertThat(stats.totalHits).isEqualTo(10 )
139
152
assertThat(stats.failedHits).isEqualTo(10 )
140
- assertThat(stats.hits(regularService)).isEqualTo(0 )
141
- assertThat(stats.hits(loremService)).isEqualTo(0 )
142
- assertThat(stats.hits(loremIpsumService)).isEqualTo(0 )
153
+ assertThat(stats.hits(regularService() )).isEqualTo(0 )
154
+ assertThat(stats.hits(loremService() )).isEqualTo(0 )
155
+ assertThat(stats.hits(loremIpsumService() )).isEqualTo(0 )
143
156
}
144
157
145
158
@Test
146
- open fun `should return 503 if requested tag is blacklisted` () {
159
+ fun `should return 503 if requested tag is blacklisted` () {
147
160
// given
148
161
registerServices()
149
162
envoy().waitForReadyServices(" echo" )
@@ -154,22 +167,22 @@ open class ServiceTagsTest {
154
167
// then
155
168
assertThat(stats.totalHits).isEqualTo(10 )
156
169
assertThat(stats.failedHits).isEqualTo(10 )
157
- assertThat(stats.hits(regularService)).isEqualTo(0 )
158
- assertThat(stats.hits(loremService)).isEqualTo(0 )
159
- assertThat(stats.hits(loremIpsumService)).isEqualTo(0 )
170
+ assertThat(stats.hits(regularService() )).isEqualTo(0 )
171
+ assertThat(stats.hits(loremService() )).isEqualTo(0 )
172
+ assertThat(stats.hits(loremIpsumService() )).isEqualTo(0 )
160
173
}
161
174
162
175
@Test
163
- open fun `should route request with three tags if combination is valid` () {
176
+ fun `should route request with three tags if combination is valid` () {
164
177
// given
165
- val matching = loremService
166
- val notMatching = loremIpsumService
178
+ val matching = loremService()
179
+ val notMatching = loremIpsumService()
167
180
168
- consul.server.operations.registerService(
181
+ consul() .server.operations.registerService(
169
182
name = " service-1" , extension = matching,
170
183
tags = listOf (" version:v1.5" , " hardware:c32" , " role:master" )
171
184
)
172
- consul.server.operations.registerService(
185
+ consul() .server.operations.registerService(
173
186
name = " service-1" , extension = notMatching,
174
187
tags = listOf (" version:v1.5" , " hardware:c64" , " role:master" )
175
188
)
@@ -188,11 +201,11 @@ open class ServiceTagsTest {
188
201
}
189
202
190
203
@Test
191
- open fun `should not route request with multiple tags if service is not whitelisted` () {
204
+ fun `should not route request with multiple tags if service is not whitelisted` () {
192
205
// given
193
- val matching = loremService
206
+ val matching = loremService()
194
207
195
- consul.server.operations.registerService(
208
+ consul() .server.operations.registerService(
196
209
name = " service-3" , extension = matching,
197
210
tags = listOf (" version:v1.5" , " hardware:c32" , " role:master" )
198
211
)
@@ -225,16 +238,16 @@ open class ServiceTagsTest {
225
238
}
226
239
227
240
@Test
228
- open fun `should not route request with three tags if combination is not allowed` () {
241
+ fun `should not route request with three tags if combination is not allowed` () {
229
242
// given
230
- val service1Matching = loremService
231
- val service2Matching = loremIpsumService
243
+ val service1Matching = loremService()
244
+ val service2Matching = loremIpsumService()
232
245
233
- consul.server.operations.registerService(
246
+ consul() .server.operations.registerService(
234
247
name = " service-1" , extension = service1Matching,
235
248
tags = listOf (" version:v1.5" , " hardware:c32" , " ram:512" )
236
249
)
237
- consul.server.operations.registerService(
250
+ consul() .server.operations.registerService(
238
251
name = " service-2" , extension = service2Matching,
239
252
tags = listOf (" version:v1.5" , " hardware:c32" , " role:master" )
240
253
)
@@ -260,26 +273,26 @@ open class ServiceTagsTest {
260
273
}
261
274
262
275
@Test
263
- open fun `should route request with two tags if combination is valid` () {
276
+ fun `should route request with two tags if combination is valid` () {
264
277
// given
265
- val service1Matching = loremService
266
- val service1NotMatching = regularService
267
- val service2Master = loremIpsumService
268
- val service2Secondary = genericService
278
+ val service1Matching = loremService()
279
+ val service1NotMatching = regularService()
280
+ val service2Master = loremIpsumService()
281
+ val service2Secondary = genericService()
269
282
270
- consul.server.operations.registerService(
283
+ consul() .server.operations.registerService(
271
284
name = " service-1" , extension = service1Matching,
272
285
tags = listOf (" version:v2.0" , " hardware:c32" , " role:master" )
273
286
)
274
- consul.server.operations.registerService(
287
+ consul() .server.operations.registerService(
275
288
name = " service-1" , extension = service1NotMatching,
276
289
tags = listOf (" version:v1.5" , " hardware:c32" , " role:master" )
277
290
)
278
- consul.server.operations.registerService(
291
+ consul() .server.operations.registerService(
279
292
name = " service-2" , extension = service2Master,
280
293
tags = listOf (" version:v1.5" , " hardware:c32" , " role:master" )
281
294
)
282
- consul.server.operations.registerService(
295
+ consul() .server.operations.registerService(
283
296
name = " service-2" , extension = service2Secondary,
284
297
tags = listOf (" version:v2.0" , " hardware:c32" , " role:secondary" )
285
298
)
@@ -309,11 +322,11 @@ open class ServiceTagsTest {
309
322
}
310
323
311
324
@Test
312
- open fun `should not route request with two tags if combination is not allowed` () {
325
+ fun `should not route request with two tags if combination is not allowed` () {
313
326
// given
314
- val matching = loremService
327
+ val matching = loremService()
315
328
316
- consul.server.operations.registerService(
329
+ consul() .server.operations.registerService(
317
330
name = " service-2" , extension = matching,
318
331
tags = listOf (" version:v1.5" , " hardware:c32" , " role:master" )
319
332
)
@@ -331,7 +344,7 @@ open class ServiceTagsTest {
331
344
assertThat(stats.hits(matching)).isEqualTo(0 )
332
345
}
333
346
334
- protected fun callEchoServiceRepeatedly (
347
+ fun callEchoServiceRepeatedly (
335
348
repeat : Int ,
336
349
tag : String? = null,
337
350
assertNoErrors : Boolean = true
@@ -344,9 +357,9 @@ open class ServiceTagsTest {
344
357
)
345
358
}
346
359
347
- protected open fun callStats () = CallStats (listOf (regularService, loremService, loremIpsumService, genericService))
360
+ fun callStats () = CallStats (listOf (regularService() , loremService() , loremIpsumService() , genericService() ))
348
361
349
- protected open fun callServiceRepeatedly (
362
+ fun callServiceRepeatedly (
350
363
service : String ,
351
364
repeat : Int ,
352
365
tag : String? = null,
@@ -364,7 +377,11 @@ open class ServiceTagsTest {
364
377
return stats
365
378
}
366
379
367
- open fun envoy () = envoy
368
-
369
- open fun envoyControl () = envoyControl
380
+ fun consul (): ConsulExtension
381
+ fun envoyControl (): EnvoyControlExtension
382
+ fun regularService (): EchoServiceExtension
383
+ fun loremService (): EchoServiceExtension
384
+ fun loremIpsumService (): EchoServiceExtension
385
+ fun genericService (): EchoServiceExtension
386
+ fun envoy (): EnvoyExtension
370
387
}
0 commit comments