Skip to content

Fix Flaky .Net and server tests#3431

Open
Cole-Greer wants to merge 2 commits into
masterfrom
fixFlakyTests
Open

Fix Flaky .Net and server tests#3431
Cole-Greer wants to merge 2 commits into
masterfrom
fixFlakyTests

Conversation

@Cole-Greer
Copy link
Copy Markdown
Contributor

shouldTrackTransactionCountAccurately was racing because commitTx()
and rollbackTx() returned without consuming the HTTP response. With
chunked transfer encoding, the client can receive response headers
before the server completes transactionManager.destroy(). Wrapping
in try-with-resources ensures the full response is read, guaranteeing
server-side processing is complete before asserting the count.

shouldTimeoutIdleTransactionWithNoOperations used a 1ms timeout,
which could expire during the beginTx() HTTP round-trip itself,
causing getFirstHeader(TRANSACTION_ID) to return null and NPE.
Increased to 500ms — still well below the 1000ms sleep that
validates timeout behavior.

PropertyDeserializationTests and GraphTraversalTests were running
concurrently with @GraphComputerOnly Gherkin scenarios. During OLAP
computation, TinkerGraphComputer sets a graphComputerView on the
shared TinkerGraph instance. Any concurrent read through TinkerVertex
sees compute properties (like haltedTraversers) merged with real
properties, causing spurious assertion failures and NPEs.

Place all tests that hit the shared server into a single non-parallel
xUnit collection (GremlinServerTests) so they never overlap with an
active GraphComputer view.

VOTE +1

shouldTrackTransactionCountAccurately was racing because commitTx()
and rollbackTx() returned without consuming the HTTP response. With
chunked transfer encoding, the client can receive response headers
before the server completes transactionManager.destroy(). Wrapping
in try-with-resources ensures the full response is read, guaranteeing
server-side processing is complete before asserting the count.

shouldTimeoutIdleTransactionWithNoOperations used a 1ms timeout,
which could expire during the beginTx() HTTP round-trip itself,
causing getFirstHeader(TRANSACTION_ID) to return null and NPE.
Increased to 500ms — still well below the 1000ms sleep that
validates timeout behavior.
PropertyDeserializationTests and GraphTraversalTests were running
concurrently with @GraphComputerOnly Gherkin scenarios. During OLAP
computation, TinkerGraphComputer sets a graphComputerView on the
shared TinkerGraph instance. Any concurrent read through TinkerVertex
sees compute properties (like haltedTraversers) merged with real
properties, causing spurious assertion failures and NPEs.

Place all tests that hit the shared server into a single non-parallel
xUnit collection (GremlinServerTests) so they never overlap with an
active GraphComputer view.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant