dataconnect(test): DataConnectGrpcClientUnitTest.kt: fix flaky tests for retry on UNAUTHENTICATED#8129
Conversation
Flakiness in the following two tests is fixed: * `executeQuery() should retry with fresh auth and app check tokens on UNAUTHENTICATED` * `executeMutation() should retry with fresh auth and app check tokens on UNAUTHENTICATED` The tests were flaky because if both `authTokenPairArb().next(rs)` and `appCheckTokenPairArb().next(rs)` produced the _same value_ for both of its elements then the test would erroneously fail because both the first and second invocation of `mockDataConnectGrpcRPCs.executeMutation()` or `mockDataConnectGrpcRPCs.executeQuery()`, respectively, would be the same and, therefore, both would throw UNAUTHENTICATED exception, when the second invocation should have returned a successful result.
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize the Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counterproductive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here. |
|
/gemini review |
📝 PRs merging into main branchOur main branch should always be in a releasable state. If you are working on a larger change, or if you don't want this change to see the light of the day just yet, consider using a feature branch first, and only merge into the main branch when the code complete and ready to be released. |
There was a problem hiding this comment.
Code Review
This pull request refactors unit tests in DataConnectGrpcClientUnitTest.kt to enhance the verification of retry mechanisms for queries and mutations. The changes replace multiple coEvery blocks with chained .throws().andThen() calls and adopt coVerifyOrder to strictly validate the sequence of calls and the specific tokens used in each attempt. I have no feedback to provide.
…UnitTestUnauthenticatedTestFlakeFix
…itTestUnauthenticatedTestFlakeFix
Fixes flaky tests in
DataConnectGrpcClientUnitTest.ktby ensuring predictable mock behavior and strict call order verification for gRPC retries onUNAUTHENTICATEDerrors.Highlights
coEverystubs with sequential.throws().andThen()chains to eliminate ambiguity in mock responses.coVerifywithcoVerifyOrderto ensure that tokens are refreshed and applied in the correct sequence during retry logic.executeQueryandexecuteMutationunit tests.Changelog
Details
UNAUTHENTICATEDstatus to use sequential stubs and ordered verification.