-
Notifications
You must be signed in to change notification settings - Fork 534
Can't make TCK IdentityProcessorVerification test 3.12 pass #115
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
Hi @danarmak, More information is needed. |
Hi @viktorklang, I added log statements everywhere and ISTM that this test is expecting my Processor to cancel its upstream subscription after the downstream one is canceled. Which my code doesn't do, as discussed in #114. However, that doesn't seem to have anything to do with rule 3.12 (publisher must eventually stop signalling after subscription is canceled), so I might be wrong. What is this test supposed to check and how? The log statements show this sequence of events:
At this point my code just sat and did nothing, and eventually the TCK timed out with the error I modified my code to cancel the upstream subscription after the downstream one was canceled, and the test passed. |
@danarmak I think you are right https://github.com/reactive-streams/reactive-streams/blob/9a6df52485ee18aacd1288ccf38ecbc35452ec88/tck/src/main/java/org/reactivestreams/tck/SubscriberWhiteboxVerification.java#L436 does not verify 3.12. 3.12 is about if the Subscriber has asked for X and signals cancel after X-Y elements, at some point the Publisher needs to acknowledge the cancellation by not sending more elements. |
Ping @ktoso |
Hi guys, sorry for the delay; I was on holiday, traveling a lot. |
This verification is now moved to PublisherVerification, as it's a publishers behavior (*it* must stop emiting, not the subscriber). Resolves reactive-streams#115
This verification is now moved to PublisherVerification, as it's a publishers behavior (*it* must stop emiting, not the subscriber). Resolves reactive-streams#115
Addressed this problem in PR #121, it's actually a Publisher behaviour, so I have moved it out there. Please have a look guys. |
This verification is now moved to PublisherVerification, as it's a publishers behavior (*it* must stop emiting, not the subscriber). Resolves reactive-streams#115
I'm going on a trip and I won't have time to test the PR until the 15th or so, so you don't have to wait for me if you want to merge this. |
I'm trying to make my implementation pass the 0.4.0 TCK (as published on Maven). Currently all PublisherVerification and SubscriberBlackboxVerification tests pass, and all IdentityProcessorVerification tests except for two, which fail for the same reason.
The simpler of the two failing tests is spec312_cancelMustRequestThePublisherToEventuallyStopSignaling. It fails with the error:
Did not receive expected cancelling of upstream subscription within 1000 ms
.Looking at the code, this times out waiting for
ManualPublisher.cancelled.close()
to be called. AFAICT this is only called by various TCK code implementing Subscription. I don't see how my implementation can influence when these TCK methods are called. Presumably the TCK is supposed to callSubscription.cancel
on both my own implementation of Subscription (which happens), and on the TCK's implementation here, which apparently doesn't.The other failing test is
exerciseWhiteboxHappyPath
, which does something similar tospec312
only more complex.I haven't read the TCK code closely enough to be sure what the problem is. I'm hoping you can help me with this.
The text was updated successfully, but these errors were encountered: