Repository navigation
test(ariadne): the room relay tests count what happened, not what fit in N seconds - #867
Merged
Merged
Conversation
… in N seconds Five RoomRelayLoopbackTest cases fail on a loaded runner in package-linux / libcvc-debug-grpc: OuterPeerGetsPushesNotLiveFrames, MiddleGetsThumbnailsAndAudio, LateJoinerBootstrapIsFiltered, ChurnSmoke and AViewersVideoRungShapesWhatItGets. run_room runs a fixed stretch of wall time, and a starved loop skips ahead instead of catching up, so a slow runner gets fewer loop passes: fewer room steps, client frames and camera and mic sends (one a pass at most). The checks counted those per wall second. In the failing jobs the loop managed 4 to 17 passes a second where 30 is due: C sent 8 of 10 camera frames, 21 of 31, 7 of 10 tier generations, 5 to 8 frames a second. Each window now keeps its minimum and runs on until what its checks count has happened: - OuterPeer: until C has sent 10 camera frames. The push bounds stay 1.5 to 12 a second, now over the window's measured wall time (3 to 24 at two seconds, as before). - Middle: until C has sent 31. The thumbnail bounds stay 2 +/- 1 a second plus the first frame, over the window's wall time (2 to 7 at two seconds, as before). - ChurnSmoke: C and D swap every two room steps, not every 100 ms of wall time, until the tiers have flipped ten times. Back together, each publisher sends more than ten frames, and each receiver must get every frame sent since; that replaces "more than ten in a second". - AViewersVideoRung: off and full run until A has sent more than 40 frames of the stream they count, and B must get every one of them. - LateJoiner: the wall-clock bound (under 1.5 s) is dropped. It stood in for "the filter, not the timeout, released it", which held == 1 and timeouts == 0 check exactly. On loaded runners the bootstrap took 1.8 to 3.3 s, past the 2 s hold, with no timeout. The time and the room steps are printed.
transfix
added a commit
that referenced
this pull request
Oct 29, 2026
The project version and the cvcpkg recipe family move to 3.7.4. Every recipe is at cvc_revision 1 already, so none restarts. 3.7.4 carries the whole plant ledger on every plant (#876): plant_sample's vehicle contact and what each plant measures, the dynamic plants' building and vehicle contacts and attitude, nav_stats' vehicle_hits, cvc/nav/plant_ledger.h, and publish_nav_stats writing every item, n/a where a plant does not measure it. demo3's Ledger screen (CVC-DBG/cvcdbg#256) reads it. It also carries SDL3 owning cvcGL's onscreen window (#829), state_exec's state-incr, state-cas and state-swap (#860), and Ariadne's window fitting (#828) and room relay test counting (#867).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Five
RoomRelayLoopbackTestcases fail on loaded runners inpackage-linux / libcvc-debug-grpcand turn PRs' lanes red:OuterPeerGetsPushesNotLiveFrames,MiddleGetsThumbnailsAndAudio,LateJoinerBootstrapIsFiltered,ChurnSmokeandAViewersVideoRungShapesWhatItGets.Root cause
run_roomruns a fixed stretch of wall time, and a starved loop skips ahead instead of catching up. A slow runner gets fewer loop passes, so fewer room steps, client frames and camera and mic sends (a client sends one of each a pass at most). The checks counted those per wall second.The failing jobs' numbers:
GeometryTest.QualityImproveTetrahedralMeshtimeout: very slow runners. AViewersVideoRung: 34 to 40 camera frames and 36 to 37 mic chunks of the 41 checked. LateJoiner up to 3.25 sThe same lane passes when the runner keeps up: master 6744512 and 45dab15, #847's a4179b5, #861's 70ae2be.
Fix
Each window keeps its minimum length and then runs on until what its checks count has happened:
on.seconds < 1.5) is removed, not loosened. Its comment says it only bounds the bootstrap "well inside the 2 s hold", standing in for "the filter, not the timeout, released it".held == 1andtimeouts == 0check that exactly. On loaded runners the bootstrap took 1.8 to 3.3 s, past the hold, and the timeout count stayed 0 every time. The rest of that time is the join's trip to the relay and the bootstrap's trip back. The test now prints the time and the room steps it took.Two checks are stricter than before: ChurnSmoke's and AViewersVideoRung's "full" now require every frame sent, not a count. That is what "full rate" means here;
DefaultRoomUnchangedUnderConferencePresetalready asserts inner media is lossless.Tested
CVC_ENABLE_WS=ON, no warnings), and clang-format 18.1.8 leaves it unchanged.protobuf.libandgrpc.libwere built with a newer MSVC than its 14.44.35207: the link ofcvc.dllwith either transport fails on__std_rotateand__std_find_first_not_of_trivial_pos_1. CI runs it inpackage-linux / libcvc-debug-grpcand the other gRPC lanes.