Skip to content

Commit 3ffc460

Browse files
author
yngrtc
committed
add test_peer_connection_close_is_send
1 parent ecd999c commit 3ffc460

File tree

2 files changed

+47
-1
lines changed

2 files changed

+47
-1
lines changed

webrtc/src/peer_connection/peer_connection_test.rs

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,22 @@
11
use super::*;
22

3+
use crate::api::interceptor_registry::register_default_interceptors;
4+
use crate::api::media_engine::MediaEngine;
35
use crate::api::media_engine::MIME_TYPE_VP8;
46
use crate::api::APIBuilder;
57
use crate::ice_transport::ice_candidate_pair::RTCIceCandidatePair;
8+
use crate::ice_transport::ice_server::RTCIceServer;
9+
use crate::peer_connection::configuration::RTCConfiguration;
610
use crate::rtp_transceiver::rtp_codec::RTCRtpCodecCapability;
711
use crate::stats::StatsReportType;
812
use crate::track::track_local::track_local_static_sample::TrackLocalStaticSample;
13+
use crate::Error;
14+
use interceptor::registry::Registry;
15+
916
use bytes::Bytes;
1017
use media::Sample;
1118
use std::sync::atomic::AtomicU32;
19+
use std::sync::Arc;
1220
use tokio::time::Duration;
1321
use util::vnet::net::{Net, NetConfig};
1422
use util::vnet::router::{Router, RouterConfig};
@@ -374,3 +382,41 @@ async fn test_get_stats() -> Result<()> {
374382

375383
Ok(())
376384
}
385+
386+
#[tokio::test]
387+
async fn test_peer_connection_close_is_send() -> Result<()> {
388+
let handle = tokio::spawn(async move { peer().await });
389+
tokio::join!(handle).0.unwrap()
390+
}
391+
392+
async fn peer() -> Result<()> {
393+
let mut m = MediaEngine::default();
394+
m.register_default_codecs()?;
395+
let mut registry = Registry::new();
396+
registry = register_default_interceptors(registry, &mut m)?;
397+
let api = APIBuilder::new()
398+
.with_media_engine(m)
399+
.with_interceptor_registry(registry)
400+
.build();
401+
402+
let config = RTCConfiguration {
403+
ice_servers: vec![RTCIceServer {
404+
urls: vec!["stun:stun.l.google.com:19302".to_owned()],
405+
..Default::default()
406+
}],
407+
..Default::default()
408+
};
409+
410+
let peer_connection = Arc::new(api.new_peer_connection(config).await?);
411+
412+
let offer = peer_connection.create_offer(None).await?;
413+
let mut gather_complete = peer_connection.gathering_complete_promise().await;
414+
peer_connection.set_local_description(offer).await?;
415+
let _ = gather_complete.recv().await;
416+
417+
if let Some(_) = peer_connection.local_description().await {}
418+
419+
peer_connection.close().await?;
420+
421+
Ok(())
422+
}

webrtc/src/rtp_transceiver/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,7 @@ pub type TriggerNegotiationNeededFnOption =
175175

176176
/// RTPTransceiver represents a combination of an RTPSender and an RTPReceiver that share a common mid.
177177
pub struct RTCRtpTransceiver {
178-
mid: OnceCell<SmallStr>, //atomic.Value
178+
mid: OnceCell<SmallStr>, //atomic.Value
179179
sender: Mutex<Arc<RTCRtpSender>>, //atomic.Value
180180
receiver: Mutex<Arc<RTCRtpReceiver>>, //atomic.Value
181181

0 commit comments

Comments
 (0)