@@ -31,8 +31,9 @@ import kotlin.time.Duration.Companion.minutes
31
31
import kotlin.time.Duration.Companion.seconds
32
32
33
33
// TODO: need to somehow rework those tests, as now they are super flaky
34
+ // there is some issue in K/N tcp...
34
35
abstract class TransportTest : SuspendTest , TestWithLeakCheck {
35
- override val testTimeout: Duration = 3 .minutes
36
+ override val testTimeout: Duration = 5 .minutes
36
37
37
38
private val testJob = SupervisorJob ()
38
39
protected val testContext = testJob + TestExceptionHandler
@@ -60,25 +61,25 @@ abstract class TransportTest : SuspendTest, TestWithLeakCheck {
60
61
@Test
61
62
fun fireAndForget10 () = test {
62
63
(1 .. 10 ).map { async { client.fireAndForget(payload(it)) } }.awaitAll()
63
- delay(1000 ) // TODO: leak check
64
+ delay(100 ) // TODO: leak check
64
65
}
65
66
66
67
@Test
67
68
open fun largePayloadFireAndForget10 () = test {
68
69
(1 .. 10 ).map { async { client.fireAndForget(requesterLargePayload) } }.awaitAll()
69
- delay(1000 ) // TODO: leak check
70
+ delay(100 ) // TODO: leak check
70
71
}
71
72
72
73
@Test
73
74
fun metadataPush10 () = test {
74
75
(1 .. 10 ).map { async { client.metadataPush(packet(requesterData)) } }.awaitAll()
75
- delay(1000 ) // TODO: leak check
76
+ delay(100 ) // TODO: leak check
76
77
}
77
78
78
79
@Test
79
80
open fun largePayloadMetadataPush10 () = test {
80
81
(1 .. 10 ).map { async { client.metadataPush(packet(requesterLargeData)) } }.awaitAll()
81
- delay(1000 ) // TODO: leak check
82
+ delay(100 ) // TODO: leak check
82
83
}
83
84
84
85
@Test
@@ -89,44 +90,50 @@ abstract class TransportTest : SuspendTest, TestWithLeakCheck {
89
90
90
91
@Test
91
92
fun requestChannel1 () = test(10 .seconds) {
92
- val list = client.requestChannel(payload(0 ), flowOf(payload(0 ))).onEach { it.close() }.toList()
93
- assertEquals(1 , list.size)
93
+ val count =
94
+ client.requestChannel(payload(0 ), flowOf(payload(0 )))
95
+ .onEach { it.close() }
96
+ .count()
97
+ assertEquals(1 , count)
94
98
}
95
99
96
100
@Test
97
101
fun requestChannel3 () = test {
98
102
val request = flow {
99
103
repeat(3 ) { emit(payload(it)) }
100
104
}
101
- val list =
102
- client.requestChannel(payload(0 ), request).flowOn(PrefetchStrategy (3 , 0 )).onEach { it.close() }.toList()
103
- assertEquals(3 , list.size)
105
+ val count =
106
+ client.requestChannel(payload(0 ), request)
107
+ .flowOn(PrefetchStrategy (3 , 0 ))
108
+ .onEach { it.close() }
109
+ .count()
110
+ assertEquals(3 , count)
104
111
}
105
112
106
113
@Test
107
114
open fun largePayloadRequestChannel200 () = test {
108
115
val request = flow {
109
116
repeat(200 ) { emit(requesterLargePayload) }
110
117
}
111
- val list =
118
+ val count =
112
119
client.requestChannel(requesterLargePayload, request)
113
120
.flowOn(PrefetchStrategy (Int .MAX_VALUE , 0 ))
114
121
.onEach { it.close() }
115
- .toList ()
116
- assertEquals(200 , list.size )
122
+ .count ()
123
+ assertEquals(200 , count )
117
124
}
118
125
119
126
@Test
120
- @Ignore // flaky, ignore for now
127
+ @IgnoreNative // flaky, ignore for now
121
128
fun requestChannel20000 () = test {
122
129
val request = flow {
123
130
repeat(20_000 ) { emit(payload(7 )) }
124
131
}
125
- val list = client.requestChannel(payload(7 ), request).flowOn(PrefetchStrategy (Int .MAX_VALUE , 0 )).onEach {
132
+ val count = client.requestChannel(payload(7 ), request).flowOn(PrefetchStrategy (Int .MAX_VALUE , 0 )).onEach {
126
133
assertEquals(requesterData, it.data.readText())
127
134
assertEquals(requesterMetadata, it.metadata?.readText())
128
- }.toList ()
129
- assertEquals(20_000 , list.size )
135
+ }.count ()
136
+ assertEquals(20_000 , count )
130
137
}
131
138
132
139
@Test
@@ -135,23 +142,26 @@ abstract class TransportTest : SuspendTest, TestWithLeakCheck {
135
142
val request = flow {
136
143
repeat(200_000 ) { emit(payload(it)) }
137
144
}
138
- val list =
139
- client.requestChannel(payload(0 ), request).flowOn(PrefetchStrategy (10000 , 0 )).onEach { it.close() }.toList()
140
- assertEquals(200_000 , list.size)
145
+ val count =
146
+ client.requestChannel(payload(0 ), request)
147
+ .flowOn(PrefetchStrategy (10000 , 0 ))
148
+ .onEach { it.close() }
149
+ .count()
150
+ assertEquals(200_000 , count)
141
151
}
142
152
143
153
@Test
144
- @Ignore // flaky, ignore for now
154
+ @IgnoreNative // flaky, ignore for now
145
155
fun requestChannel16x256 () = test {
146
156
val request = flow {
147
157
repeat(256 ) {
148
158
emit(payload(it))
149
159
}
150
160
}
151
161
(0 .. 16 ).map {
152
- async( Dispatchers . Default ) {
153
- val list = client.requestChannel(payload(0 ), request).onEach { it.close() }.toList ()
154
- assertEquals(256 , list.size )
162
+ async {
163
+ val count = client.requestChannel(payload(0 ), request).onEach { it.close() }.count ()
164
+ assertEquals(256 , count )
155
165
}
156
166
}.awaitAll()
157
167
}
@@ -165,30 +175,30 @@ abstract class TransportTest : SuspendTest, TestWithLeakCheck {
165
175
}
166
176
}
167
177
(0 .. 256 ).map {
168
- async( Dispatchers . Default ) {
169
- val list = client.requestChannel(payload(0 ), request).onEach { it.close() }.toList ()
170
- assertEquals(512 , list.size )
178
+ async {
179
+ val count = client.requestChannel(payload(0 ), request).onEach { it.close() }.count ()
180
+ assertEquals(512 , count )
171
181
}
172
182
}.awaitAll()
173
183
}
174
184
175
185
@Test
176
- @Ignore // flaky, ignore for now
186
+ @IgnoreNative // flaky, ignore for now
177
187
fun requestChannel500NoLeak () = test {
178
188
val request = flow {
179
189
repeat(10_000 ) { emitOrClose(payload(3 )) }
180
190
}
181
- val list =
191
+ val count =
182
192
client
183
193
.requestChannel(payload(3 ), request)
184
194
.flowOn(PrefetchStrategy (Int .MAX_VALUE , 0 ))
185
195
.take(500 )
186
196
.onEach {
187
197
assertEquals(requesterData, it.data.readText())
188
198
assertEquals(requesterMetadata, it.metadata?.readText())
189
- }.toList()
190
- assertEquals( 500 , list.size )
191
- delay( 1000 ) // TODO: leak check
199
+ }
200
+ .count( )
201
+ assertEquals( 500 , count)
192
202
}
193
203
194
204
@Test
@@ -202,6 +212,7 @@ abstract class TransportTest : SuspendTest, TestWithLeakCheck {
202
212
}
203
213
204
214
@Test
215
+ @IgnoreNative
205
216
fun requestResponse100 () = test {
206
217
(1 .. 100 ).map { async { client.requestResponse(payload(it)).let (Companion ::checkPayload) } }.awaitAll()
207
218
}
@@ -212,7 +223,7 @@ abstract class TransportTest : SuspendTest, TestWithLeakCheck {
212
223
}
213
224
214
225
@Test
215
- @Ignore // flaky, ignore for now
226
+ @IgnoreNative // flaky, ignore for now
216
227
fun requestResponse10000 () = test {
217
228
(1 .. 10000 ).map { async { client.requestResponse(payload(3 )).let (Companion ::checkPayload) } }.awaitAll()
218
229
}
@@ -225,29 +236,29 @@ abstract class TransportTest : SuspendTest, TestWithLeakCheck {
225
236
226
237
@Test
227
238
fun requestStream5 () = test {
228
- val list =
229
- client.requestStream(payload(3 )).flowOn(PrefetchStrategy (5 , 0 )).take(5 ).onEach { checkPayload(it) }.toList ()
230
- assertEquals(5 , list.size )
239
+ val count =
240
+ client.requestStream(payload(3 )).flowOn(PrefetchStrategy (5 , 0 )).take(5 ).onEach { checkPayload(it) }.count ()
241
+ assertEquals(5 , count )
231
242
}
232
243
233
244
@Test
245
+ @IgnoreNative
234
246
fun requestStream10000 () = test {
235
- val list = client.requestStream(payload(3 )).onEach { checkPayload(it) }.toList ()
236
- assertEquals(10000 , list.size )
247
+ val count = client.requestStream(payload(3 )).onEach { checkPayload(it) }.count ()
248
+ assertEquals(10000 , count )
237
249
}
238
250
239
251
@Test
240
- @Ignore // flaky, ignore for now
252
+ @IgnoreNative
241
253
fun requestStream500NoLeak () = test {
242
- val list =
254
+ val count =
243
255
client
244
256
.requestStream(payload(3 ))
245
257
.flowOn(PrefetchStrategy (Int .MAX_VALUE , 0 ))
246
258
.take(500 )
247
259
.onEach { checkPayload(it) }
248
- .toList()
249
- assertEquals(500 , list.size)
250
- delay(1000 ) // TODO: leak check
260
+ .count()
261
+ assertEquals(500 , count)
251
262
}
252
263
253
264
companion object {
0 commit comments