@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)); } }