public async void ChecklistProcessingToFailStateUnitTest() { logger.LogDebug("--> " + System.Reflection.MethodBase.GetCurrentMethod().Name); logger.BeginScope(System.Reflection.MethodBase.GetCurrentMethod().Name); RTPChannel rtpChannel = new RTPChannel(false, null); var iceSession = new IceSession(rtpChannel, RTCIceComponent.rtp, null); iceSession.StartGathering(); Assert.NotNull(iceSession); Assert.NotEmpty(iceSession.Candidates); foreach (var hostCandidate in iceSession.Candidates) { logger.LogDebug($"host candidate: {hostCandidate}"); } var remoteCandidate = RTCIceCandidate.Parse("candidate:408132416 1 udp 2113937151 192.168.11.50 51268 typ host generation 0 ufrag CI7o network-cost 999"); await iceSession.AddRemoteCandidate(remoteCandidate); iceSession.SetRemoteCredentials("CI7o", "xxxxxxxxxxxx"); iceSession.StartGathering(); logger.LogDebug($"ICE session retry interval {iceSession.RTO}ms."); // The defaults are 5 STUN requests and for a checklist with one entry they will be 500ms apart. await Task.Delay(4000); Assert.Equal(IceSession.ChecklistEntryState.Failed, iceSession._checklist.Single().State); Assert.Equal(IceSession.ChecklistState.Failed, iceSession._checklistState); Assert.Equal(RTCIceConnectionState.failed, iceSession.ConnectionState); }
public async void ChecklistProcessingUnitTest() { logger.LogDebug("--> " + System.Reflection.MethodBase.GetCurrentMethod().Name); logger.BeginScope(System.Reflection.MethodBase.GetCurrentMethod().Name); RTPChannel rtpChannel = new RTPChannel(false, null); var iceSession = new IceSession(rtpChannel, RTCIceComponent.rtp, null); iceSession.StartGathering(); Assert.NotNull(iceSession); Assert.NotEmpty(iceSession.Candidates); foreach (var hostCandidate in iceSession.Candidates) { logger.LogDebug($"host candidate: {hostCandidate}"); } var remoteCandidate = RTCIceCandidate.Parse("candidate:408132416 1 udp 2113937151 192.168.11.50 51268 typ host generation 0 ufrag CI7o network-cost 999"); await iceSession.AddRemoteCandidate(remoteCandidate); iceSession.SetRemoteCredentials("CI7o", "xxxxxxxxxxxx"); iceSession.StartGathering(); await Task.Delay(2000); var checklistEntry = iceSession._checklist.Single(); logger.LogDebug($"Checklist entry state {checklistEntry.State}, last check sent at {checklistEntry.LastCheckSentAt}."); Assert.Equal(IceSession.ChecklistEntryState.InProgress, checklistEntry.State); }
public void GetHostCandidatesForRTPBindUnitTest() { logger.LogDebug("--> " + System.Reflection.MethodBase.GetCurrentMethod().Name); logger.BeginScope(System.Reflection.MethodBase.GetCurrentMethod().Name); var localAddress = NetServices.InternetDefaultAddress; RTPSession rtpSession = new RTPSession(true, true, true, localAddress); // Add a track to the session in order to initialise the RTPChannel. MediaStreamTrack dummyTrack = new MediaStreamTrack(null, SDPMediaTypesEnum.audio, false, new List <SDPMediaFormat> { new SDPMediaFormat(SDPMediaFormatsEnum.PCMU) }); rtpSession.addTrack(dummyTrack); RTPChannel rtpChannel = rtpSession.GetRtpChannel(SDPMediaTypesEnum.audio); logger.LogDebug($"RTP channel RTP socket local end point {rtpChannel.RTPLocalEndPoint}."); var iceSession = new IceSession(rtpChannel, RTCIceComponent.rtp, null); iceSession.StartGathering(); Assert.NotNull(iceSession); Assert.NotEmpty(iceSession.Candidates); Assert.True(localAddress.Equals(IPAddress.Parse(iceSession.Candidates.Single().address))); foreach (var hostCandidate in iceSession.Candidates) { logger.LogDebug(hostCandidate.ToString()); } }
public async void ChecklistConstructionUnitTest() { logger.LogDebug("--> " + System.Reflection.MethodBase.GetCurrentMethod().Name); logger.BeginScope(System.Reflection.MethodBase.GetCurrentMethod().Name); RTPChannel rtpChannel = new RTPChannel(false, null); var iceSession = new IceSession(rtpChannel, RTCIceComponent.rtp, null); iceSession.StartGathering(); Assert.NotNull(iceSession); Assert.NotEmpty(iceSession.Candidates); foreach (var hostCandidate in iceSession.Candidates) { logger.LogDebug($"host candidate: {hostCandidate}"); } var remoteCandidate = RTCIceCandidate.Parse("candidate:408132416 1 udp 2113937151 192.168.11.50 51268 typ host generation 0 ufrag CI7o network-cost 999"); await iceSession.AddRemoteCandidate(remoteCandidate); var remoteCandidate2 = RTCIceCandidate.Parse("candidate:408132417 1 udp 2113937150 192.168.11.50 51268 typ host generation 0 ufrag CI7o network-cost 999"); await iceSession.AddRemoteCandidate(remoteCandidate2); foreach (var entry in iceSession._checklist) { logger.LogDebug($"checklist entry: {entry.LocalCandidate} -> {entry.RemoteCandidate}"); } Assert.Single(iceSession._checklist); }
public async void SortChecklistUnitTest() { logger.LogDebug("--> " + System.Reflection.MethodBase.GetCurrentMethod().Name); logger.BeginScope(System.Reflection.MethodBase.GetCurrentMethod().Name); RTPSession rtpSession = new RTPSession(true, true, true); MediaStreamTrack dummyTrack = new MediaStreamTrack(null, SDPMediaTypesEnum.audio, false, new List <SDPMediaFormat> { new SDPMediaFormat(SDPMediaFormatsEnum.PCMU) }); rtpSession.addTrack(dummyTrack); var iceSession = new IceSession(rtpSession.GetRtpChannel(SDPMediaTypesEnum.audio), RTCIceComponent.rtp, null); iceSession.StartGathering(); Assert.NotNull(iceSession); Assert.NotEmpty(iceSession.Candidates); foreach (var hostCandidate in iceSession.Candidates) { logger.LogDebug(hostCandidate.ToString()); } var remoteCandidate = RTCIceCandidate.Parse("candidate:408132416 1 udp 2113937151 192.168.11.50 51268 typ host generation 0 ufrag CI7o network-cost 999"); await iceSession.AddRemoteCandidate(remoteCandidate); var remoteCandidate2 = RTCIceCandidate.Parse("candidate:408132417 1 udp 2113937150 192.168.11.51 51268 typ host generation 0 ufrag CI7o network-cost 999"); await iceSession.AddRemoteCandidate(remoteCandidate2); foreach (var entry in iceSession._checklist) { logger.LogDebug($"checklist entry priority {entry.Priority}."); } }