Skip to content

Commit fc6aa3f

Browse files
committed
uncomment assertions related to proper metadata propagation
Signed-off-by: Oleh Dokuka <[email protected]>
1 parent 5c7bdea commit fc6aa3f

File tree

1 file changed

+104
-112
lines changed

1 file changed

+104
-112
lines changed

rsocket-core/src/test/java/io/rsocket/core/RSocketTest.java

Lines changed: 104 additions & 112 deletions
Original file line numberDiff line numberDiff line change
@@ -183,231 +183,223 @@ public Flux<Payload> requestChannel(Publisher<Payload> payloads) {
183183

184184
@Test
185185
public void requestChannelCase_StreamIsTerminatedAfterBothSidesSentCompletion1() {
186-
TestPublisher<Payload> outerPublisher = TestPublisher.create();
187-
AssertSubscriber<Payload> outerAssertSubscriber = new AssertSubscriber<>(0);
186+
TestPublisher<Payload> requesterPublisher = TestPublisher.create();
187+
AssertSubscriber<Payload> requesterSubscriber = new AssertSubscriber<>(0);
188188

189-
AssertSubscriber<Payload> innerAssertSubscriber = new AssertSubscriber<>(0);
190-
TestPublisher<Payload> innerPublisher = TestPublisher.create();
189+
AssertSubscriber<Payload> responderSubscriber = new AssertSubscriber<>(0);
190+
TestPublisher<Payload> responderPublisher = TestPublisher.create();
191191

192192
initRequestChannelCase(
193-
outerPublisher, outerAssertSubscriber, innerPublisher, innerAssertSubscriber);
193+
requesterPublisher, requesterSubscriber, responderPublisher, responderSubscriber);
194194

195-
nextFromOuterPublisher(outerPublisher, innerAssertSubscriber);
195+
nextFromrequesterPublisher(requesterPublisher, responderSubscriber);
196196

197-
completeFromOuterPublisher(outerPublisher, innerAssertSubscriber);
197+
completeFromrequesterPublisher(requesterPublisher, responderSubscriber);
198198

199-
nextFromInnerPublisher(innerPublisher, outerAssertSubscriber);
199+
nextFromresponderPublisher(responderPublisher, requesterSubscriber);
200200

201-
completeFromInnerPublisher(innerPublisher, outerAssertSubscriber);
201+
completeFromresponderPublisher(responderPublisher, requesterSubscriber);
202202
}
203203

204204
@Test
205205
public void requestChannelCase_StreamIsTerminatedAfterBothSidesSentCompletion2() {
206-
TestPublisher<Payload> outerPublisher = TestPublisher.create();
207-
AssertSubscriber<Payload> outerAssertSubscriber = new AssertSubscriber<>(0);
206+
TestPublisher<Payload> requesterPublisher = TestPublisher.create();
207+
AssertSubscriber<Payload> requesterSubscriber = new AssertSubscriber<>(0);
208208

209-
AssertSubscriber<Payload> innerAssertSubscriber = new AssertSubscriber<>(0);
210-
TestPublisher<Payload> innerPublisher = TestPublisher.create();
209+
AssertSubscriber<Payload> responderSubscriber = new AssertSubscriber<>(0);
210+
TestPublisher<Payload> responderPublisher = TestPublisher.create();
211211

212212
initRequestChannelCase(
213-
outerPublisher, outerAssertSubscriber, innerPublisher, innerAssertSubscriber);
213+
requesterPublisher, requesterSubscriber, responderPublisher, responderSubscriber);
214214

215-
nextFromInnerPublisher(innerPublisher, outerAssertSubscriber);
215+
nextFromresponderPublisher(responderPublisher, requesterSubscriber);
216216

217-
completeFromInnerPublisher(innerPublisher, outerAssertSubscriber);
217+
completeFromresponderPublisher(responderPublisher, requesterSubscriber);
218218

219-
nextFromOuterPublisher(outerPublisher, innerAssertSubscriber);
219+
nextFromrequesterPublisher(requesterPublisher, responderSubscriber);
220220

221-
completeFromOuterPublisher(outerPublisher, innerAssertSubscriber);
221+
completeFromrequesterPublisher(requesterPublisher, responderSubscriber);
222222
}
223223

224224
@Test
225225
public void
226226
requestChannelCase_CancellationFromResponderShouldLeaveStreamInHalfClosedStateWithNextCompletionPossibleFromRequester() {
227-
TestPublisher<Payload> outerPublisher = TestPublisher.create();
228-
AssertSubscriber<Payload> outerAssertSubscriber = new AssertSubscriber<>(0);
227+
TestPublisher<Payload> requesterPublisher = TestPublisher.create();
228+
AssertSubscriber<Payload> requesterSubscriber = new AssertSubscriber<>(0);
229229

230-
AssertSubscriber<Payload> innerAssertSubscriber = new AssertSubscriber<>(0);
231-
TestPublisher<Payload> innerPublisher = TestPublisher.create();
230+
AssertSubscriber<Payload> responderSubscriber = new AssertSubscriber<>(0);
231+
TestPublisher<Payload> responderPublisher = TestPublisher.create();
232232

233233
initRequestChannelCase(
234-
outerPublisher, outerAssertSubscriber, innerPublisher, innerAssertSubscriber);
234+
requesterPublisher, requesterSubscriber, responderPublisher, responderSubscriber);
235235

236-
nextFromOuterPublisher(outerPublisher, innerAssertSubscriber);
236+
nextFromrequesterPublisher(requesterPublisher, responderSubscriber);
237237

238-
cancelFromInnerSubscriber(outerPublisher, innerAssertSubscriber);
238+
cancelFromInnerSubscriber(requesterPublisher, responderSubscriber);
239239

240-
nextFromInnerPublisher(innerPublisher, outerAssertSubscriber);
240+
nextFromresponderPublisher(responderPublisher, requesterSubscriber);
241241

242-
completeFromInnerPublisher(innerPublisher, outerAssertSubscriber);
242+
completeFromresponderPublisher(responderPublisher, requesterSubscriber);
243243
}
244244

245245
@Test
246246
public void
247247
requestChannelCase_CompletionFromRequesterShouldLeaveStreamInHalfClosedStateWithNextCancellationPossibleFromResponder() {
248-
TestPublisher<Payload> outerPublisher = TestPublisher.create();
249-
AssertSubscriber<Payload> outerAssertSubscriber = new AssertSubscriber<>(0);
248+
TestPublisher<Payload> requesterPublisher = TestPublisher.create();
249+
AssertSubscriber<Payload> requesterSubscriber = new AssertSubscriber<>(0);
250250

251-
AssertSubscriber<Payload> innerAssertSubscriber = new AssertSubscriber<>(0);
252-
TestPublisher<Payload> innerPublisher = TestPublisher.create();
251+
AssertSubscriber<Payload> responderSubscriber = new AssertSubscriber<>(0);
252+
TestPublisher<Payload> responderPublisher = TestPublisher.create();
253253

254254
initRequestChannelCase(
255-
outerPublisher, outerAssertSubscriber, innerPublisher, innerAssertSubscriber);
255+
requesterPublisher, requesterSubscriber, responderPublisher, responderSubscriber);
256256

257-
nextFromInnerPublisher(innerPublisher, outerAssertSubscriber);
257+
nextFromresponderPublisher(responderPublisher, requesterSubscriber);
258258

259-
completeFromInnerPublisher(innerPublisher, outerAssertSubscriber);
259+
completeFromresponderPublisher(responderPublisher, requesterSubscriber);
260260

261-
nextFromOuterPublisher(outerPublisher, innerAssertSubscriber);
261+
nextFromrequesterPublisher(requesterPublisher, responderSubscriber);
262262

263-
cancelFromInnerSubscriber(outerPublisher, innerAssertSubscriber);
263+
cancelFromInnerSubscriber(requesterPublisher, responderSubscriber);
264264
}
265265

266266
@Test
267267
public void
268268
requestChannelCase_ensureThatRequesterSubscriberCancellationTerminatesStreamsOnBothSides() {
269-
TestPublisher<Payload> outerPublisher = TestPublisher.create();
270-
AssertSubscriber<Payload> outerAssertSubscriber = new AssertSubscriber<>(0);
269+
TestPublisher<Payload> requesterPublisher = TestPublisher.create();
270+
AssertSubscriber<Payload> requesterSubscriber = new AssertSubscriber<>(0);
271271

272-
AssertSubscriber<Payload> innerAssertSubscriber = new AssertSubscriber<>(0);
273-
TestPublisher<Payload> innerPublisher = TestPublisher.create();
272+
AssertSubscriber<Payload> responderSubscriber = new AssertSubscriber<>(0);
273+
TestPublisher<Payload> responderPublisher = TestPublisher.create();
274274

275275
initRequestChannelCase(
276-
outerPublisher, outerAssertSubscriber, innerPublisher, innerAssertSubscriber);
276+
requesterPublisher, requesterSubscriber, responderPublisher, responderSubscriber);
277277

278-
nextFromInnerPublisher(innerPublisher, outerAssertSubscriber);
278+
nextFromresponderPublisher(responderPublisher, requesterSubscriber);
279279

280-
nextFromOuterPublisher(outerPublisher, innerAssertSubscriber);
280+
nextFromrequesterPublisher(requesterPublisher, responderSubscriber);
281281

282282
// ensures both sides are terminated
283283
cancelFromOuterSubscriber(
284-
outerPublisher, outerAssertSubscriber, innerPublisher, innerAssertSubscriber);
284+
requesterPublisher, requesterSubscriber, responderPublisher, responderSubscriber);
285285
}
286286

287287
void initRequestChannelCase(
288-
TestPublisher<Payload> outerPublisher,
289-
AssertSubscriber<Payload> outerAssertSubscriber,
290-
TestPublisher<Payload> innerPublisher,
291-
AssertSubscriber<Payload> innerAssertSubscriber) {
288+
TestPublisher<Payload> requesterPublisher,
289+
AssertSubscriber<Payload> requesterSubscriber,
290+
TestPublisher<Payload> responderPublisher,
291+
AssertSubscriber<Payload> responderSubscriber) {
292292
rule.setRequestAcceptor(
293293
new AbstractRSocket() {
294294
@Override
295295
public Flux<Payload> requestChannel(Publisher<Payload> payloads) {
296-
payloads.subscribe(innerAssertSubscriber);
297-
return innerPublisher.flux();
296+
payloads.subscribe(responderSubscriber);
297+
return responderPublisher.flux();
298298
}
299299
});
300300

301-
rule.crs.requestChannel(outerPublisher).subscribe(outerAssertSubscriber);
301+
rule.crs.requestChannel(requesterPublisher).subscribe(requesterSubscriber);
302302

303-
outerPublisher.assertWasSubscribed();
304-
outerAssertSubscriber.assertSubscribed();
303+
requesterPublisher.assertWasSubscribed();
304+
requesterSubscriber.assertSubscribed();
305305

306-
innerAssertSubscriber.assertNotSubscribed();
307-
innerPublisher.assertWasNotSubscribed();
306+
responderSubscriber.assertNotSubscribed();
307+
responderPublisher.assertWasNotSubscribed();
308308

309309
// firstRequest
310-
outerAssertSubscriber.request(1);
311-
outerPublisher.assertMaxRequested(1);
312-
outerPublisher.next(DefaultPayload.create("initialData", "initialMetadata"));
310+
requesterSubscriber.request(1);
311+
requesterPublisher.assertMaxRequested(1);
312+
requesterPublisher.next(DefaultPayload.create("initialData", "initialMetadata"));
313313

314-
innerAssertSubscriber.assertSubscribed();
315-
innerPublisher.assertWasSubscribed();
314+
responderSubscriber.assertSubscribed();
315+
responderPublisher.assertWasSubscribed();
316316
}
317317

318-
void nextFromOuterPublisher(
319-
TestPublisher<Payload> outerPublisher, AssertSubscriber<Payload> innerAssertSubscriber) {
318+
void nextFromrequesterPublisher(
319+
TestPublisher<Payload> requesterPublisher, AssertSubscriber<Payload> responderSubscriber) {
320320
// ensures that outerUpstream and innerSubscriber is not terminated so the requestChannel
321-
outerPublisher.assertSubscribers(1);
322-
innerAssertSubscriber.assertNotTerminated();
321+
requesterPublisher.assertSubscribers(1);
322+
responderSubscriber.assertNotTerminated();
323323

324-
innerAssertSubscriber.request(6);
325-
outerPublisher.next(
324+
responderSubscriber.request(6);
325+
requesterPublisher.next(
326326
DefaultPayload.create("d1", "m1"),
327327
DefaultPayload.create("d2"),
328328
DefaultPayload.create("d3", "m3"),
329329
DefaultPayload.create("d4"),
330330
DefaultPayload.create("d5", "m5"));
331331

332-
List<Payload> innerPayloads = innerAssertSubscriber.awaitAndAssertNextValueCount(6).values();
332+
List<Payload> innerPayloads = responderSubscriber.awaitAndAssertNextValueCount(6).values();
333333
Assertions.assertThat(innerPayloads.stream().map(Payload::getDataUtf8))
334334
.containsExactly("initialData", "d1", "d2", "d3", "d4", "d5");
335-
// fixme: incorrect behaviour of metadata encoding
336-
// Assertions
337-
// .assertThat(innerPayloads
338-
// .stream()
339-
// .map(Payload::hasMetadata)
340-
// )
341-
// .containsExactly(true, true, false, true, false, true);
335+
Assertions.assertThat(innerPayloads.stream().map(Payload::hasMetadata))
336+
.containsExactly(true, true, false, true, false, true);
342337
Assertions.assertThat(innerPayloads.stream().map(Payload::getMetadataUtf8))
343338
.containsExactly("initialMetadata", "m1", "", "m3", "", "m5");
344339
}
345340

346-
void completeFromOuterPublisher(
347-
TestPublisher<Payload> outerPublisher, AssertSubscriber<Payload> innerAssertSubscriber) {
341+
void completeFromrequesterPublisher(
342+
TestPublisher<Payload> requesterPublisher, AssertSubscriber<Payload> responderSubscriber) {
348343
// ensures that after sending complete upstream part is closed
349-
outerPublisher.complete();
350-
innerAssertSubscriber.assertTerminated();
351-
outerPublisher.assertNoSubscribers();
344+
requesterPublisher.complete();
345+
responderSubscriber.assertTerminated();
346+
requesterPublisher.assertNoSubscribers();
352347
}
353348

354349
void cancelFromInnerSubscriber(
355-
TestPublisher<Payload> outerPublisher, AssertSubscriber<Payload> innerAssertSubscriber) {
350+
TestPublisher<Payload> requesterPublisher, AssertSubscriber<Payload> responderSubscriber) {
356351
// ensures that after sending complete upstream part is closed
357-
innerAssertSubscriber.cancel();
358-
outerPublisher.assertWasCancelled();
359-
outerPublisher.assertNoSubscribers();
352+
responderSubscriber.cancel();
353+
requesterPublisher.assertWasCancelled();
354+
requesterPublisher.assertNoSubscribers();
360355
}
361356

362-
void nextFromInnerPublisher(
363-
TestPublisher<Payload> innerPublisher, AssertSubscriber<Payload> outerAssertSubscriber) {
357+
void nextFromresponderPublisher(
358+
TestPublisher<Payload> responderPublisher, AssertSubscriber<Payload> requesterSubscriber) {
364359
// ensures that downstream is not terminated so the requestChannel state is half-closed
365-
innerPublisher.assertSubscribers(1);
366-
outerAssertSubscriber.assertNotTerminated();
360+
responderPublisher.assertSubscribers(1);
361+
requesterSubscriber.assertNotTerminated();
367362

368-
// ensures innerPublisher can send messages and outerSubscriber can receive them
369-
outerAssertSubscriber.request(5);
370-
innerPublisher.next(
363+
// ensures responderPublisher can send messages and outerSubscriber can receive them
364+
requesterSubscriber.request(5);
365+
responderPublisher.next(
371366
DefaultPayload.create("rd1", "rm1"),
372367
DefaultPayload.create("rd2"),
373368
DefaultPayload.create("rd3", "rm3"),
374369
DefaultPayload.create("rd4"),
375370
DefaultPayload.create("rd5", "rm5"));
376371

377-
List<Payload> outerPayloads = outerAssertSubscriber.awaitAndAssertNextValueCount(5).values();
372+
List<Payload> outerPayloads = requesterSubscriber.awaitAndAssertNextValueCount(5).values();
378373
Assertions.assertThat(outerPayloads.stream().map(Payload::getDataUtf8))
379374
.containsExactly("rd1", "rd2", "rd3", "rd4", "rd5");
380-
// fixme: incorrect behaviour of metadata encoding
381-
// Assertions
382-
// .assertThat(outerPayloads
383-
// .stream()
384-
// .map(Payload::hasMetadata)
385-
// )
386-
// .containsExactly(true, false, true, false, true);
375+
Assertions.assertThat(outerPayloads.stream().map(Payload::hasMetadata))
376+
.containsExactly(true, false, true, false, true);
387377
Assertions.assertThat(outerPayloads.stream().map(Payload::getMetadataUtf8))
388378
.containsExactly("rm1", "", "rm3", "", "rm5");
389379
}
390380

391-
void completeFromInnerPublisher(
392-
TestPublisher<Payload> innerPublisher, AssertSubscriber<Payload> outerAssertSubscriber) {
381+
void completeFromresponderPublisher(
382+
TestPublisher<Payload> responderPublisher, AssertSubscriber<Payload> requesterSubscriber) {
393383
// ensures that after sending complete inner upstream is closed
394-
innerPublisher.complete();
395-
outerAssertSubscriber.assertTerminated();
396-
innerPublisher.assertNoSubscribers();
384+
responderPublisher.complete();
385+
requesterSubscriber.assertTerminated();
386+
responderPublisher.assertNoSubscribers();
397387
}
398388

399389
void cancelFromOuterSubscriber(
400-
TestPublisher<Payload> outerPublisher,
401-
AssertSubscriber<Payload> outerAssertSubscriber,
402-
TestPublisher<Payload> innerPublisher,
403-
AssertSubscriber<Payload> innerAssertSubscriber) {
390+
TestPublisher<Payload> requesterPublisher,
391+
AssertSubscriber<Payload> requesterSubscriber,
392+
TestPublisher<Payload> responderPublisher,
393+
AssertSubscriber<Payload> responderSubscriber) {
404394
// ensures that after sending cancel the whole requestChannel is terminated
405-
outerAssertSubscriber.cancel();
406-
innerPublisher.assertWasCancelled();
407-
innerPublisher.assertNoSubscribers();
395+
requesterSubscriber.cancel();
396+
// error should be propagated
397+
responderSubscriber.assertTerminated();
398+
responderPublisher.assertWasCancelled();
399+
responderPublisher.assertNoSubscribers();
408400
// ensures that cancellation is propagated to the actual upstream
409-
outerPublisher.assertWasCancelled();
410-
outerPublisher.assertNoSubscribers();
401+
requesterPublisher.assertWasCancelled();
402+
requesterPublisher.assertNoSubscribers();
411403
}
412404

413405
public static class SocketRule extends ExternalResource {

0 commit comments

Comments
 (0)