@@ -271,14 +271,9 @@ class PublishedTrackGuard {
271271 std::vector<std::shared_ptr<LocalDataTrack>> data_tracks_;
272272};
273273
274- bool hasExpectedMediaCallbacks (const LateJoinPublicationState& state,
275- const std::vector<ExpectedPublication>& expected_media) {
274+ bool hasExpectedMediaSubscriptions (const LateJoinPublicationState& state,
275+ const std::vector<ExpectedPublication>& expected_media) {
276276 for (const auto & expected : expected_media) {
277- const auto published_it = state.published_media_tracks .find (expected.name );
278- if (published_it == state.published_media_tracks .end () || published_it->second != expected.kind ) {
279- return false ;
280- }
281-
282277 const auto subscribed_it = state.subscribed_media_tracks .find (expected.name );
283278 if (subscribed_it == state.subscribed_media_tracks .end () || subscribed_it->second != expected.kind ) {
284279 return false ;
@@ -401,38 +396,28 @@ TEST_P(LateJoinTrackPublicationIntegrationTest, ConsumerReceivesAlreadyPublished
401396
402397 {
403398 std::unique_lock<std::mutex> lock (state.mutex );
399+ // Pre-existing media publications are delivered in the Connect snapshot, not as
400+ // TrackPublished room events. The late-joiner should still receive TrackSubscribed
401+ // callbacks once auto-subscribe attaches to those snapshot publications.
404402 const bool got_expected =
405- state.cv .wait_for (lock, kWaitTimeout , [&]() { return hasExpectedMediaCallbacks (state, expected_media); });
406- EXPECT_TRUE (got_expected) << " Timed out waiting for late-join audio publication/ subscription events\n "
403+ state.cv .wait_for (lock, kWaitTimeout , [&]() { return hasExpectedMediaSubscriptions (state, expected_media); });
404+ EXPECT_TRUE (got_expected) << " Timed out waiting for late-join audio subscription events\n "
407405 << " Published media events: " << describeMediaTracks (state.published_media_tracks ) << " \n "
408406 << " Subscribed media events: " << describeMediaTracks (state.subscribed_media_tracks );
409407 }
410408
411- std::map<std::string, TrackKind> published_media_snapshot;
412409 std::map<std::string, TrackKind> subscribed_media_snapshot;
413- std::map<std::string, int > published_media_counts;
414410 std::map<std::string, int > subscribed_media_counts;
415411 std::vector<std::string> invariant_failures;
416412 {
417413 std::lock_guard<std::mutex> lock (state.mutex );
418- published_media_snapshot = state.published_media_tracks ;
419414 subscribed_media_snapshot = state.subscribed_media_tracks ;
420- published_media_counts = state.published_media_counts ;
421415 subscribed_media_counts = state.subscribed_media_counts ;
422416 invariant_failures = state.invariant_failures ;
423417 }
424418 EXPECT_TRUE (invariant_failures.empty ()) << describeInvariantFailures (invariant_failures);
425419
426420 for (const auto & expected : expected_media) {
427- const auto published_it = published_media_snapshot.find (expected.name );
428- EXPECT_NE (published_it, published_media_snapshot.end ())
429- << " Missing onTrackPublished event for " << expected.name
430- << " ; received: " << describeMediaTracks (published_media_snapshot);
431- if (published_it != published_media_snapshot.end ()) {
432- EXPECT_EQ (published_it->second , expected.kind ) << " Published track kind mismatch for " << expected.name ;
433- }
434- EXPECT_EQ (published_media_counts[expected.name ], 1 ) << " Unexpected onTrackPublished count for " << expected.name ;
435-
436421 const auto subscribed_it = subscribed_media_snapshot.find (expected.name );
437422 EXPECT_NE (subscribed_it, subscribed_media_snapshot.end ())
438423 << " Missing onTrackSubscribed event for " << expected.name
@@ -516,38 +501,28 @@ TEST_P(LateJoinTrackPublicationIntegrationTest, ConsumerReceivesAlreadyPublished
516501
517502 {
518503 std::unique_lock<std::mutex> lock (state.mutex );
504+ // Pre-existing media publications are delivered in the Connect snapshot, not as
505+ // TrackPublished room events. The late-joiner should still receive TrackSubscribed
506+ // callbacks once auto-subscribe attaches to those snapshot publications.
519507 const bool got_expected =
520- state.cv .wait_for (lock, kWaitTimeout , [&]() { return hasExpectedMediaCallbacks (state, expected_media); });
521- EXPECT_TRUE (got_expected) << " Timed out waiting for late-join video publication/ subscription events\n "
508+ state.cv .wait_for (lock, kWaitTimeout , [&]() { return hasExpectedMediaSubscriptions (state, expected_media); });
509+ EXPECT_TRUE (got_expected) << " Timed out waiting for late-join video subscription events\n "
522510 << " Published media events: " << describeMediaTracks (state.published_media_tracks ) << " \n "
523511 << " Subscribed media events: " << describeMediaTracks (state.subscribed_media_tracks );
524512 }
525513
526- std::map<std::string, TrackKind> published_media_snapshot;
527514 std::map<std::string, TrackKind> subscribed_media_snapshot;
528- std::map<std::string, int > published_media_counts;
529515 std::map<std::string, int > subscribed_media_counts;
530516 std::vector<std::string> invariant_failures;
531517 {
532518 std::lock_guard<std::mutex> lock (state.mutex );
533- published_media_snapshot = state.published_media_tracks ;
534519 subscribed_media_snapshot = state.subscribed_media_tracks ;
535- published_media_counts = state.published_media_counts ;
536520 subscribed_media_counts = state.subscribed_media_counts ;
537521 invariant_failures = state.invariant_failures ;
538522 }
539523 EXPECT_TRUE (invariant_failures.empty ()) << describeInvariantFailures (invariant_failures);
540524
541525 for (const auto & expected : expected_media) {
542- const auto published_it = published_media_snapshot.find (expected.name );
543- EXPECT_NE (published_it, published_media_snapshot.end ())
544- << " Missing onTrackPublished event for " << expected.name
545- << " ; received: " << describeMediaTracks (published_media_snapshot);
546- if (published_it != published_media_snapshot.end ()) {
547- EXPECT_EQ (published_it->second , expected.kind ) << " Published track kind mismatch for " << expected.name ;
548- }
549- EXPECT_EQ (published_media_counts[expected.name ], 1 ) << " Unexpected onTrackPublished count for " << expected.name ;
550-
551526 const auto subscribed_it = subscribed_media_snapshot.find (expected.name );
552527 EXPECT_NE (subscribed_it, subscribed_media_snapshot.end ())
553528 << " Missing onTrackSubscribed event for " << expected.name
0 commit comments