@Test public void testHostCandidateHarvesting() throws IOException { // given FoundationsRegistry foundationsRegistry = new LiteFoundationsRegistry(); HostCandidateHarvester harvester = new HostCandidateHarvester(foundationsRegistry); IceMediaStream mediaStream = new IceMediaStream("audio", true); Selector selector = Selector.open(); // when try { PortManager portManager = new PortManager(); portManager.setHighestPort(62000); portManager.setLowestPort(61000); harvester.harvest(portManager, mediaStream, selector); } catch (NoCandidatesGatheredException e) { fail(); } catch (HarvestException e) { fail(); } // then List<LocalCandidateWrapper> rtpCandidates = mediaStream.getRtpComponent().getLocalCandidates(); List<LocalCandidateWrapper> rtcpCandidates = mediaStream.getRtcpComponent().getLocalCandidates(); assertTrue(rtpCandidates.size() > 0); assertTrue(rtcpCandidates.size() > 0); // Evaluate RTP Candidates for (LocalCandidateWrapper candidateWrapper : rtpCandidates) { DatagramChannel udpChannel = candidateWrapper.getChannel(); assertFalse(udpChannel.isBlocking()); assertFalse(udpChannel.isConnected()); assertTrue(udpChannel.isOpen()); IceCandidate candidate = candidateWrapper.getCandidate(); assertEquals(candidate, candidate.getBase()); assertEquals( new InetSocketAddress(candidate.getAddress(), candidate.getPort()), udpChannel.getLocalAddress()); assertNotNull(udpChannel.keyFor(selector)); } // Evaluate RTCP candidates for (LocalCandidateWrapper candidateWrapper : rtcpCandidates) { DatagramChannel udpChannel = candidateWrapper.getChannel(); assertFalse(udpChannel.isBlocking()); assertFalse(udpChannel.isConnected()); assertTrue(udpChannel.isOpen()); IceCandidate candidate = candidateWrapper.getCandidate(); assertEquals(candidate, candidate.getBase()); assertEquals( new InetSocketAddress(candidate.getAddress(), candidate.getPort()), udpChannel.getLocalAddress()); assertNotNull(udpChannel.keyFor(selector)); } }
private void closeMediaStream(IceMediaStream mediaStream) { IceComponent rtpComponent = mediaStream.getRtpComponent(); for (LocalCandidateWrapper localCandidate : rtpComponent.getLocalCandidates()) { DatagramChannel channel = localCandidate.getChannel(); if (channel.isOpen()) { try { channel.close(); } catch (IOException e) { e.printStackTrace(); } } } }