+ "after %d rounds.", round)); log.trace("{}\n{}", String.format("Peers discovered %d", peerTable.count()), peerTable.getPeerUriList()); return; log.debug("Terminating discover after {} rounds.", round); log.trace("{}\n{}", String.format("Peers discovered %d", peerTable.count()), peerTable.getPeerUriList()); return;
@Override public PeerTable discover(PeerHandlerFactory factory) { this.factory = factory; List<Peer> prevTried = new ArrayList<>(); for (Peer peer : peerTable.getBootstrappingSeedList()) { String ynodeUriWithoutPubKey = peerTable.getOwner().getYnodeUri() .substring(peer.getYnodeUri().indexOf("@")); if (peer.getYnodeUri().contains(ynodeUriWithoutPubKey)) { continue; } prevTried.add(peer); PeerHandler peerHandler = null; try { log.info("Try connecting to SEED peer = {}", peer); peerHandler = factory.create(peer); List<Peer> peerList = peerHandler.findPeers(owner); peerList.forEach(peerTable::addPeer); } catch (Exception e) { log.error("Failed connecting to SEED peer = {}", peer); } finally { if (peerHandler != null) { peerHandler.stop(); } } } int peerCount = peerTable.count(); log.info("Start discover! peerCount={}", peerCount - 1); findPeers(0, prevTried); return peerTable; }
void logDebugging() { log.info("{} => peerTable={}, active={}", peerTable.getOwner(), String.format("%3d", peerTable.count()), getActivePeerCount()); } }
@Test public void getLatestPeers() { SlowTest.apply(); assert peerTable.count() == 0; Peer peer1 = Peer.valueOf("ynode://75bff16c@127.0.0.1:32921"); peerTable.addPeer(peer1); assert peerTable.count() == 1; Utils.sleep(2000); Peer peer2 = Peer.valueOf("ynode://75bff16c@127.0.0.1:32922"); peerTable.addPeer(peer2); assert peerTable.count() == 2; long touchedTime = peer2.getModified(); List<Peer> latestPeerList = peerTable.getLatestPeers(touchedTime); assertEquals(latestPeerList.size(), 1); assertTrue(!latestPeerList.contains(peer1)); assertTrue(latestPeerList.contains(peer2)); }