/** * When a previously unknown peer contacts us, this method adds it to <code>initialPeers</code> * so it can be used as a bootstrap node. * @param packet * @param sender * @param receiveTime */ @Override public void packetReceived(CommunicationPacket packet, Destination sender, long receiveTime) { initialPeers.add(new KademliaPeer(sender, receiveTime)); } }
/** * Creates peer destinations from a <code>String</code> each, and adds them to <code>initialPeers</code>. * @param peerFileEntries A list of <code>String</code>s as they appear in the peer file */ private void addPeers(List<String> peerFileEntries) { for (String line: peerFileEntries) { if (!line.trim().isEmpty() && !line.startsWith("#")) try { Destination destination = new Destination(line); // don't add the local destination as a peer if (!destination.equals(localDestination)) { KademliaPeer peer = new KademliaPeer(destination, 0); initialPeers.add(peer); } } catch (DataFormatException e) { log.error("Invalid destination key in line " + line, e); } } }
log.error("insertionPoint > size(), this shouldn't happen."); if (insertionPoint < size()) { // if destination is closer than an existing sibling, replace the furthest away sibling and return the removed sibling peers.add(insertionPoint, new KademliaPeer(peer)); KademliaPeer removedPeer = peers.remove(size() - 1); return removedPeer;
@Override public void packetReceived(CommunicationPacket packet, Destination sender, long receiveTime) { BanList banList = BanList.getInstance(); banList.update(sender, packet); if (!banList.isBanned(sender)) // any type of incoming packet updates the peer's record in the bucket/sibling list, or adds the peer to the bucket/sibling list addOrUpdate(new KademliaPeer(sender)); else remove(sender); }
@Test public void testIsFull() { for (KBucket bucket: buckets) { Destination[] destinations = destinationMap.get(bucket); for (int i=0; i<K-1; i++) { bucket.addOrUpdate(new KademliaPeer(destinations[i])); assertFalse(bucket.isFull()); } bucket.addOrUpdate(new KademliaPeer(destinations[K-1])); assertTrue(bucket.isFull()); } }
initialPeers.add(new KademliaPeer(destination));
peers1[0] = new KademliaPeer(new Destination("c41n4lNINwohF7b0Q9Lk~XG1hKdmtLVnvsuYZ~Cp~oqdid6X80bje7mAmvbPIxrmpt~cP2YBhJdPK58gFBLyTGZ~aLrZ7~os6khqxFsdVtZpoGC4MrO5vtm0GolLicZT0GYX~rOjjLR9L~aPHHYD2TmSjo10lCf7PLCkdRDT~qDUfB~djfBIhoqSUQAUNu8GRbHNC9p6lshvH--do9Ja9bxVHrSs~Gesg4c6ylAwR8Y-w699LwL0Nh9vZnoLjIdCAckFK0NYpq4btc4zq4zQU4HWLPNSJVz1XzT4yfLoKt5ggYNDfzrKqbY5lcDmuKSSV-XyW4uX4MieqqUMInu40l~OiGs670zCIl-2X2EP-guPrgXUK0D1i7V3aeYpH8G~9Vhx8LmlBD5XPvKjr1EVjvbvm1scwLhg6S1pDiaCUkK~WtilESVa8lFFPshIlrFsX0jYOm5C9J72fBamS~HmVXCnsDw5V7CxeaSwWwBZ1nROXGU3e-9JX-1lB3FLlTKuAAAA")); peers1[1] = new KademliaPeer(new Destination("nn6eEP8mqldEwjr6c76fpuILWyQXNXWd0JIiA1qVoQPkNil4QSwZsNy7sBU9sIBL~7Vxz~QV-d6bqzVkmVfQN69DUs10Gcd~d6ZxzhfHZb51JVM9nUhNO1OMaRfc3YMXWrnlPShYlMXtDojHtgJD508mDpKQnRlws1fO8ngIzfdnyEv~LCuqbxO9~qCRtD4KwHpOeMn1Rak6dEBb2RNilzQsdBcEpL8hfyzYTv4EHUXs-TUSnJTto880N7CH2RNw~dWGUFG~MGwEquyIBDQ-5mfdzW03eIFXBLMdleHaOi49zggS-LlGpHPFlLEQyitz8-APmDuhzpfu0Yv8cZaBby~tAkIpNNKqmwdOO9A0~~E~rHWEIi5KcuRd8SiIy99kGqeCnaR52WfCn3SL-JkOZFae2H-OTh2gBAgNp~WwZETY45qHxnhKOXfZ90vcfrIXBWqYycfXalUVBh4-nKrL~688Yogk2ubbc5yKluDhr0ZN86xveqjq4ynwKIcWTun0AAAA")); peers1[2] = new KademliaPeer(new Destination("kj8Nfly9kmCMBpScKNx5ZEtUvfKBpxqPVewZt6uni20nvdnSo-ePlGtDSOXIluUFLr-fNOel9rHKa1bkz8Ej3O2PcYzDdT7Twg2x6zlRpr8qm-k9mC0t-ULyT6edKlBjsxsSUQS-ET7Xx23aU~RP7IUVR9wf0EPsU07jcvDgf5YQXmvC5bk541qsj3JYJW-szAZs7B4ITDha33VcNc0TLY6--HgQ7HUDopQBbwYpXnMyA6x~0ioPcOoZ6IbNLBUFKuVSAo8Lht2bEPn1dWl1~k4v7r7ngmQpckvfBOYWVXKXQSfI45xBqZAUw4~lFJ3P7hrEdcV5unQ5A98e76QKal6kcoFp6uWAwTzeYiXaEqdGANd2Eb1TW-g3mpTPZin0l9OoRJOmWNpl2y5thhqmBwVu8jGT-ykPNMa6REwisLznIxyQWc96OAnMbQwJeGbziAe~HTtkmIPRRGH2FvCHQJKQMd8kQ9E3OsygTypQqfu10tBwDEejInl9V3D0BohNAAAA")); peers1[3] = new KademliaPeer(new Destination("-WR~vXesvCS8ADHbl2v92lBp5oqMHf6h-evhD2CcdU646v8FQ~DK9usNzIovvP1xVbqSoTYmdMc76HtAYI~kij3zBFgU8izfhHFwKRS-~lvUaZUqdIbMv1rmV05vi1zugyQTGB7ZAXhpx5s5F2Iqrbx9H8AiT6kyZNNVpBKEZjly65LvODQnJEFe4N-ZfUAazEFRVb4GhXdka5rWaVrBHrdW3F4OMKTyNtTM13YMeW~Bk3D1fPfu883U2~Vn0v2kTpAktcm7dC8mlFuc0rSjMRzhfACX-CvnWEXmcg3iBbMLhg~Ded3FlER4ByUxSX5K0fQ3PJfTj0~QxomHU5zC9hcqVaIGsmnyAf9SClflNOQ7svMoBCjsXHAyqMqNSrzKUIrVfaC-BxJMJaonaBAvvfxEMCG4PUO-G4p5fxQWbapFyYvbugzLEwChnIByw1yYR6pqpQ9KSJJXfAi59Y8GUWsUK90eD~1hPcNHK45iTJX8adTEzGFfPkSv9gnJzdZ4AAAA")); peers1[4] = new KademliaPeer(new Destination("B96irbkDbwI4p~0GaFTR9pPSE3xXUQvEFC1G1tHqvQcW0PyUVOeSMW-58aHN7I-dR3HVvGag11SvvSH3jhIncxKrnbM7xHHhzmjlBknBGWdZurNWbVQAhqoUlupKez3jDurX49qTKXvFLViGG3IEhJ5BsmQ7Iq2Yyr9LNXbPsTYSzo0iECPjn1Hirp0bp1EgHPMktoDNyZo~agPzGzoir-shGOYRjjER9dsxSyrhR3alXJuhs00LRlsUcs0Qj--IMbeESya2ikYN8FGAd3ZkfmEkjQmTvCCic46yOUUrD3EVBuWizzQ9Luhdxy8SxvKj6jwJW7KV3nPsCIqZNphgAZWyMJAQRkXfHgF3xXRfuVE3EhCLYu5xgqy8UkFUESkDWfJ9tUNmOtUHoPwCko~ui1N0tUf0PqQHIlXLGs7pbbm500NztsDktDlQ6lx4QHmj1qpgYHRD~a2NQrUycJatZCsWC6x6do03df7Rf-PDCEMqMlh777H~GrRJuR~wmjcPAAAA")); peers1[5] = new KademliaPeer(new Destination("AH1rUf09G4DJpAjwurg24xQi7l5NZzy3JeJ30Wqi-nKpR67pqjt02GbwDsrf6tTsd380jZXnkeNDwZESeaerxb7YEPTMHt3SyzknF75ytz-peb4byDpMooguxA-b83HFIfXdxu~Le7hIw~C5C3HZAVJf9njgYUIFDaPjlFOye7w0v3OBA9LrToq7VS0AKwMaMviwRNuZTQp-r3dPCTSQ7UlnorYF2Fulv1g9ECFXY9~t08MdwQrd8Y7qYsDzSFSQpMiQ-U4vA1h-DvOtho71s2-LFEx4Skfrtx2n~~bFsOFuA~xBPVxU5VqtXKngAduV2SVNElmczqYJozVHH48PDG34c97amNtBcTrngMYLINTDT8fmUsEcpXlYzi7uRaTn1F12HnXD3b6gcB2unOPi08gXsbYs7Reh6VeFEyD1wOR7zQU303xKoc5vWtKbulIdRVwFghrOJ4OK0iPZUF9-mNP50zHWL7F4wx6CZj2ETH1PeOSOrd8JyFqqPphi4LEQAAAA")); peers1[6] = new KademliaPeer(new Destination("mGHDLBfmn7Qb65wPfmLEOn7WtvwIUoTbeRtlsyl6qBn5gDewh0RX3RS7j2yrrxaokTkXc0XXCMjPpHpO4OIrmYWO05InQna1EoOa5O4VxB3yTxLw34cuFv46U9LU7J4MMB5H7uJA204r5PxZjyC0Ht8EGQ4197HItX26HRSaU90KzNFisRT3iTEKzJwHvQ3YPSD8A9Bx507IcGWaGjF9~jutTMtbADntii1rJD-ijGB6kMIcXIbr1mJ6BKiZLm~7UTCgZI2yu0j2btLVA-l7aiHPVADNCYwdMg~UgJ58EjQKcy8Ld3iCYYOiHbUghs-drY1QsGyADZrgsYI94E3GgV6uwxE0TwNI7Ww86Yrcdh99mNKSB4mM81Mb8v-rwx8YdRrh60S5mr9z9MJMSHJdM7pNFClliYxAsfUCjop6tmE9rjl8suERFa0KcnW9xEpDgQdl7sz4psDD03xHfGaEa-BlId6O3gN~eJX2CGKTu8vg~dF7dwaIN0zOS1A0L7thAAAA")); peers1[7] = new KademliaPeer(new Destination("qLoEsY6LIxStqZEuxpShCFppNgbnrO00VLKuawq9pFQYrb22swcGnCk2a-g9yvJgQbDH3KEsutcCczJnzjXxMlY68hMnBW15ta-rzyE9E4tBY9TN4VtgOONIlCF-~mYiicKLkS5ijUAcLkXMng4seSSy1R-tAj4XRgIBTzzmZFyuo7NamCm98DDf0~C7ArgyIP0i6UtB6zQOznkIjXsjlL14qX8HtrC4H7Bgqn4HtKTkhptK7uiA7DvowqwVGmdJ2uFOC0~8AIEA4QX7WjWOFMiU82gKS0iVOJgjAq~siPedt3L~~ekVV74pddAa1f-DdNwsl-tSM58H0CGTzKqPtQgkzCX2i7DB8yUWeHBkwlpGkBkHWqfwVkrWlIUGDsvzxp9pVk7R4iMEt6O5ZByMtqeum8UOwxYRQ97DQA3I0IE5wAFvAS2wjcYfr0r2a1SGqvrWbp7k1gogs0QAmANmLxeiozWtTdtKg81LSJDbu41yWLTQUpW6gVom9E1gfmTpAAAA")); peers1[8] = new KademliaPeer(new Destination("33x1UIIyubQpoxf7w8noZEpzIkYz5geOigNV5h~kc-sBDIZUH3SqR3jeapVTwgcWzKhcncy-6LUjVKxyOJdpskQ45djL2glz0W4i7nkI8VBD-1zu0vTKP97Jtxgl2~GQ9HX1Awsp7GzuvZn8cN6TQ-lhxZ4o8-sTfFZ~WzRqRT-1fSEElpJEmxGLed4~lgdkSoMy6~W7Zqdz3p7SNo3Vvq9WzMtf9hyUtF7tDg4XbcDQ35UX626~~zofInrpXeQ5tN8eHh9v5cenwNgCr9HE~W~U~HJY6c~IqeEi2casXpvHUfqzN2IsUUk9fiO-YvQ2QxOXltJzZckMYk4duSadtnX9GKgyXFwXwXYrbjyk84OceCf99bVK8bN0LqovvlmjgMmw-qAEVU91HppXz6ejOISCrhWKUbVDJJYX1OVlQhO2b8q-WnfAuxDM-cFJxUmbFz3LuglJGxqhWVKZdqlCfnzg12PQOSPX91nlEOa1GkQ1nfNACB3bHm6T6BCeU5KhAAAA")); peers1[9] = new KademliaPeer(new Destination("1Fu-p4KKjgi6EF898VtZkKXP1dw5nhDHqLO6TJVPHNTBzh-KK~n06h0Z92vNbsOYXrz9Xb9tkk25PDUfeG~lKJU8HlaEhGfMHpMkvU2iYAYdf7NXY3mF5~xpMQbBuaLtgTMk8ORZNVm2qvAGATmRGWGp3KOgIBF1g~1c61~iAdLiXOmFfW~Otp8TREX4SIwAIFZKtxfOFlx~L3c5WJysLUq~1tfqgqvNA-cfmx4mSsBEoVzadBGdJwgu79xrOSUNxjkmjz7kD68ucFGguh2b3VC-5h2kmf9sWR919RugzY32163OqHaPkiBx1z9cClZK6Xy9Rb54vxGXuraY0Q-UZ3iTON8v~-UIMGTxu3j0fnpPCshRx8DUung2Vh0kI6gWPm5cEL7zqtf-sYUOdMvUg3E~gaZSxvU6ZlcONyc~0yZQoKauEv0mjKfGNbjgfy2er3rr9hW1RWAY0rKCSqZEyIqVhdusvU8EuvdiDR4xBEUgANrqygZsFKqllXZNXAbjAAAA")); peers1[10] = new KademliaPeer(new Destination("a4leKD93YJmKQ6bXk62YOR2R2PM4upJ5dKljnFYnYSBbd20eFak09yXUJI0kTst6iodn6UTxUquV~adRXIsm7CXHY2yFIL6g-wy3oQ7no88zyHYI8N1oz2lS7cpxyJp8nvScG0PSV1t4GoDt8GISaPnbrgF2MyIGTE8RaiBTD9RPbfnBgRfZMbCYXkroKGWbZWXo~BecZ44bHSsX4URlPt-tmQMdv~vJHQheIbYZOn1RTeTi8YViMuSrEWnup2OFeYQ3~RPChCKCxybgD8XDJCB8RRwKW~bfPr1gNtfHPFxeA-Nh1Or8AVAU34XYN1aVZbOkeVXHYc5Ia6j5D~pJlowVW-vkaEgjnl1uCS7Cf0vl8CqdkaziV6IT5mYy7kRFl0DQSxZe5t7qJSvzHEjppoeeZQuhlZOYIlAjCUzbrd~3IYbFlrg~M~MYLW5IH348-djZ38M-8~iFI1yel4dpA3MsLZ82o3q0JuPJFClWOQFKV-HVhUT847qMIlNeCSReAAAA")); peers1[11] = new KademliaPeer(new Destination("a7wn6AscZEezQhChrlzYSy~VEKgtSoFGT3URO9eeJgarM0Sjbb3QVvQhzR1S7RBRYz5lh~MJe~h95bkA8LQ70Cf~cpguDXCGOdApA5pbBJl1JaJMtCS6x7fOxRDkONXlN5QoyDST95pwOOUjgtENjfwbpsSk4L1ACkhA9yGZ2aaBstL8ptYsLKC4O~3uuwiEiW~V9s4C1tFbmKDbqkH6sHOTfUNQXM6cP~KHIXXZQskaFx-wtv8bC0FYqHzVkCTi9NaPRNQocYMCmF0tXtPpyfH3n3aXxnJCK9TQRq1EAFkFrPDMtcpxjeDWuf7YaBX~srDxhc9tpvM4au3LNrDpcEgbpRRplOvyOIKENdxxE4e2XmDjD2g0-RJtPe0bUztcthGU5NH~Olu8EFkmqbCTjNDYGDdCrXa~W-nh08J3b2weddUUg4AFWRauSqvZjdBDZuLbayOsLca7Am6BY5ju-YW2IgPFaU7ZZZuQWoD~auxXMQIXJ74SXsl3CTkeXPTEAAAA")); peers1[12] = new KademliaPeer(new Destination("QOGdKBN7YCJSiHUlCK1AWNbC4krjrNgEbeLcsF7dE5Hg7JtHTF9tH4dr2ZJMApa~AVGs2lRljgaVIbeSG5j1oJNJunExGyl~GjauLYMokRr40GehupS6k2XZClpj0OUWK4~FsPm9hnb1Q3tGDQAC9tGjL44uPw9K8TM0YKhkWDlguMiIY-uJBg6hC~RhkKneizFUv8JJMk3PVL95voKPP4p0bEIFrSMjZ8WSE86t2bWp73g-fkB4ZTpDq5GGYgNeIqvNR89qCWBB0e7ItaVQCt~3xM2NsTBJoMVwkewdAJmqR8iGTBSqCB5cDt46jRhr1JWyaUDqDOXhp5CjHCH67lSU~z1p412NQg2YVDJZfbuWrhO8AHurjYiQFu9GeHgO8T0G0auBQ58zgIjT7PQqvvol7TzGy8LzSNdI1eXoGnSq2xK6FUrEfqNQoRgMhN0PQjJ2BpkXq4ov-CYmdemVViIoHRar863EI2oBJu25b-asSLB1E0puzY6escUC3KKVAAAA")); peers1[13] = new KademliaPeer(new Destination("MGFxaRkreqWH5PWcKjV3qQvMa3PE0Ji4ibLqYYxep0-YWNLWumlTHUAyNIKxBbEdVGKehvNSUpWZmAhSfuVyp4PYUaCpyWNQIdPOwDcu5DcMIX5DKC40iqgEPKtrIbWy-ZCATLC6ZaTyRDkIfVI5vx59y4OL9W37YF5QSQqQHCZu-XWDxE9mcC~-WPKR-VKX2tuQuX64UlFViCdwBZUIe4NRdQ~Qq1NHXNsYq2GfKEWzbMiGsgy543NUQqCR7wQ86B4~QWrqgwA-ageDQ-mMj89S6pFtqzQvFDJVeeLaPgrJH59neQ~5DV1no40Aa1DoSDljfY~qvwowDThHS~lTJETqDXhnWUkWAFngzLvfkIr8Iwk1TFNAjvJILND1XgDXuyN7cxN~RGT866iVOMbynNXT~Qjp95C9GxE0QjVpf6HMFgA20J-q97tn2eHQblK8lqnfrR3vXhWYY084s36OuuVml75N2Qj3caWcv4q9Cv2UGVSwo1AP1kCvOm-6Nez8AAAA")); peers1[14] = new KademliaPeer(new Destination("SpCtXvbP1nGfjAP0QBHj2XdC4wNBg2eMdHvETMXQ4GfTNa6bqYVQRGU769UHj4NdSjtdnQh8ZcDJD3jWCY2mEF5UXudzgcjmHIVv0wQOsMk913Jcv9-1hdqNHjjRnk8eQ9hCEsaR73XsPxo6VX07pKyvdaM1JAZwOTbpF~rIzmZFbGG0nh~m9CgkHdI2M0dqBB7qnRFJo2ziLzB22qEHQGdSCoRRZOzUXXyJC9rP8ly3wa8kH1n4wz1J3LrvwCteSN39KKvY3MqgzzVIrodyTCwgi1PVEy9tHuW8O1ed8MtP~~kbyhAAynw1uJyhYqbF8t5vHsWkn1a7IZ4OKoVHtZMEfjoEmDaqvaw2iUUT-NapQPQrHXF3qTmSeQHXxCACXUu7zcBeBp5xaPzundV2n2TEn7VaBl4-7b4JawBjHsBlK1lbmsrD-0jEego2k2G1D5J8Z8vL8V-nvkxrFI1uDibADg4mz18FAJka6QtrwChPPz~dCTGygyq~oQvVvkxNAAAA")); peers1[15] = new KademliaPeer(new Destination("Y1lobj88qfraP2CK5ZT6SKz0p~cBYFdqVGdj55SfQpsnMt5NNwq4HCsso8Zv-pKImmJ6uHK3DicoQx6c77m9a6bbo41crXLTG~-HTeihJ1ApPx1~cPjX40msKx9GoKmu6f-butP6iRT12YInftZ~suTSch~P-JiVDStZ9QTIRpBYBB7XrZ2cEqWGWhT0Lu~KH0H67W9-dHb2rqChrDzFHYx46O5pW86UC4r2ESoqEurlzknYxFkOjTEyaIDs10jVr2illUbrawG7K~H7nWe3TxwmsnBskKluc7EVXt9JRHnewOt7h53aheLPgTJga~Q5Nw~AO1A0VXoqtbZwDjdryEtA3RUZP4WeZwYcNrMaOb3GaCmAN69kQLQ7yr3apO47YAm4xaM7hjpq-MkW-cpzrvm~dooUgPzwY5wVZT3DzR1FM-rZ0x8MumK5Q1j4ueCWvy-VTmmFQlk0A722kDKwOHIvCN1Q6a0HSkqBX1aU9926U-Zy5R5WRghU0qatztChAAAA")); peers1[16] = new KademliaPeer(new Destination("KCnuWHXiTE9FWwF5N1q9YQ2Sc4rkFOMKoaxa3GLQzaRae2eNBdfOBR6953Ov1B9N~NbymYuAFNIa8vB2ipp8~Zvk6mCtGZX~-DmsuZWrCSozS9B3wkkyRN68fTtVFc~~LVw3cOOeu6Jn9tRXs6AjyjIexKMfOVZEd8Xfa4LRactiQI5ttnDuJikFBmBOOizxQW7kJPcYeIx-0f8xgMP4tWY~6zAR81rr46RAg8GpoIqmoFvMnxzgaO0Y8eNG1o7t1~obYgiTOWU24~p1UgJw~EEcPaITkWixO0OBq8luiGrDeW4euEvVealUjpdkAvTRwYHNdhAjyQWyvhRap4CorWb-Qqnz-Tpd2dVa88DUYcNRozl787pO~7c5Cnw8EmbiZZlZDoDbgM-bElHHcKXt~pi-RPN-1lYaenLl0hQ8CGYs5qYiZqWfcr0SbVYypBAl5ytnWAL92AAxlUwgSJRjcQZJHpNFvXdB~UNaZ43Txe20q7Uae4USZlixBacXXOI2AAAA")); peers1[17] = new KademliaPeer(new Destination("pmv7g~Q6QxvSKAnjVz19pb4powAD97mMEsYyq6lss29jxeq~1W2paXMo7rg8~2PZmrevdbohn1TH3QGXcSQJmR8P3ljXSHKv6LPRVPkShW3UZqh8BnAZVyBJTN3~vCUpcEl2X24pG0rPfp4IhSI9Jec2jAhvqgNhryI84Ja8K0v007C4ZLq~0EyMzGZOB74wG7zDs-xkKDdm1N5KSNIY69FN4HWXJpprrnrRjO~jP6Bp9pwR6gS3jomuMHEkAv1IjAS8QHytMADYa804g4ikieoBOK0KdyewWxMuQ7vjGTaFtSLjYDwF61OvGrkJMyAjD86sKLOGOtVSGSUvNIGTD12aNNnFWI0NZM~vBQ2YoXBDIIK0n3AdhlJ3IHpjWhjNdRCMcAwZSy0Dljrn3UUx~Z243SVwh0eKZnmQoMZhaHOkcrSNbHWZSqoQgX81kvr26qpm25JWlA1HAED0SNydXDdJ3E6j-PqVq9VLFqLOwHxScBNi5BOeFehwwjGhMa4qAAAA")); peers1[18] = new KademliaPeer(new Destination("GbunpZ12gl0x-lMhCIxxXEIgEYhbU7-AXryXI0HExoDHd9o-fnrH7sinjCAEOuPj2JXWU6w2TbCNcEUTIU5ByNMhd~jkr0nC6gXcOkB5b5VJYTK8xMAvGW3fXDu0bSLRyJF~1nyEhfsTcD2ktXcnnbmHfF39056zbdLWWZVqdzZlEbvirafum~a3aGPnNEq17Xoq2GX4~eEghb~bQR~lI~XfrC32Ti5hcxCvJzpx03JDB3i0x4g6R7WCtVZMgTWgKBskBwPwqDyoVN8YhvI~3Ff5OyZgvjRMaLFN~PBmC10K-jiF9KeAOJ3UU3dxRqYm1vz61P2PoQEBo-Nzvb~yOif2NbdApAPGS5Q1EMJ0TUHOglh4nGXrDo5RW5IUxMq7xckcmTOH3P02caLysREzoGCURmcHPjasJbkWXTjWksIyxMTkejytR3toNRee6S0ztfAmj8bBuZlpXo37UHq3ZjOxa2nMVsVKsiYFZcaLUxwwDfDZyMiszzCg2CIR1l3pAAAA")); peers1[19] = new KademliaPeer(new Destination("M4INJgAX4z8UDixLgE3-nbdGPHjlEiFxY02whbZUtI4I0y1RZjpfWBSi5EImT9IaX6Yrr~HBGtYjHgwdBHMIWAcL1RCP9erC8ETLIS6BsZ82ZQGDrTilytADIlOHNJH-6u~~d6~gZGam~-JhVozD9K-MQ2fxjc1Ev51PpD7zXYcJny2siVvD8Z5vvwyR6E3XlZV-wwjTsgKI7LlxqT~I5s4lt2G0m~tkmrpXqzlNQK3kLXj5~tUP4Cvl3d12OB5sdmex81TYC9HH8GdS9NX6ZMF~qKonHIuCNl3rG0zYFhp8oakS7tGFIIcpuoMlx4RWDNPM-GwNxPhBt0AJY2ZFSFlvVvqQRgZgnUsJbY4sIeXDf0HlziUgwItbag3zbITmiuFGyKrkXZgbHULXWRbcfW2ZBOGUF6WcKFzEbeW3y60H8lPrYtZv1C1o9~v3srs1sTmZrZz4d9y3W~4XozbWiIrwPpAbyto9U3g5QhTzQRK7vbknCU8Lee1QEStu1OOlAAAA")); peers1[20] = new KademliaPeer(new Destination("hwtMFQ~WC7-bZ3vINz90q6qTQJHqsbA~c13TAAbxfKTGAnR9xUOZbk5bX9D6wd6owKtnVDUfjizOjES8Pc~E78wmyckoMwpEQe8adZzd4obJwJ7HN~cZ2artJC90RAcRWhWRSpDYGF~U3EB3By~wRzsHAQj-8~gySnUXvjonXyYn6chcnsvSKcQvjGnovblLK7ksy3TUlN8~8jGtgO2ZXeQjtRWSH33ZBSCXO1qEXVAFoRWYFe5lq8QDirjXPdjuAUTjD6tmWsNXnju4JWqpIPcT4Yq3mrY56FASjOHaeREbv0hIRPvuBO2IcIYl~isG5LtRkfvph6oR~iWvTx3YVDQVItPOryOOafF-x~sshUdVMVc8pb5vW2ajrNLiUozkfofYgApP9gtV52dUySb0YyaNesJ7huF3d1baTUOa6LVUze9zbXxnR4lRv11IP~QtekdQDqxAg~c2oyclIJhR7qxZreeIw7z4yMxRsQmWS94TXCNUf3JgMS1PmyPTJQ-sAAAA")); startId = new BigInteger("20165322902067810213412302882682490742329252029515918366652609455164745599540"); endId = new BigInteger("33702408623411834034558105528091829985375371188155381652341683994745035632399"); peers2[0] = new KademliaPeer(new Destination("S6D4Rq-nd4bviA~rUIw8C5mqgXrmcxNHHYRK2jQGTQxYcOWisFY3xHCn8eSiESUd4yQoeFdcWdzoEETZ5EvE4Em3x9cewwJowM~yB8W4ISh0Tu0~uUUGFNQF5uidpQiz3KZ7svda1eVyIo3nSFW~-PfsJQPH7igYHZ1Fnv92vpfzQE-RGlcx6HWlC6B6FS~zhQ1DfKHVlT8tsBh8TVQ6h1uN8jv3hcE0ZNQBuH5eXwCitA9lUrxjj8Tjd2u42jchmVbGG~pH-QqN9SPIaASIpA3XAP1eQPjtIwC30GXG3DoHios9-3x1WtbD-bTJ7Edh5p12x5XqDETXM-4OvzET2mqpDLu7U~YD4oIevgOV0pK5LUlIA-AQR5kMtgM0-T6el~h5LoEOQbKcY-XZcxf6t9aKsUogIdTP9dRPvvmjKfBU03SoFUIzvyHKnKjJL4Ltdbcy1QRal0x0xcsPlQEevxbtDo4ccZTBxoP27ri8lrVz5kyeTXAyTjYpwS6DwNdFAAAA")); peers2[1] = new KademliaPeer(new Destination("0c2AB3pMEwDR~-LkkTuhJtaVZuRKeHMwuqGZLnmdsrRUo9d4A6u3daVXV5Thg6rXtFrnLNL6hBp95eWGeLcjg3C74xUymgKnBa35n8M9Pb3jHWf-feiE4TL8H3W0DbYaX4EKwUHfiRB~RBJ2S62vuDRf9Iobu0SEio-6jag7kOiDIpU0O0JHq9SE07JRpC9ILlJCQSMpzq99O2DoskgxtyYG9XLlGkAK76XbPjC0BOI4ZSYYYb73VU95SImGOxWtIF6kLt0XNH9221Q-P~qF1bbRrdMtD4cCJ8~kJru62dV2RRXi4BzQF3a5GXwJzUxVEf99pS2dFAe1M0~rJjB37BUpeedab3b2dwJeBLKGu1WxYb91zPmJDF4gaEEVygJXDmeG1uo5S7aO7ExNA4lMqU7oDq~F0ae8jUZosDVv0h0EQj5vBledLPR12yiDpHfncEcbT-VFCJacGg-ctGGatMR60qvmQd5~a8diWRvIdy5LYK05afREOrUvm7TOtxJfAAAA")); peers2[2] = new KademliaPeer(new Destination("NjfPVnZmg1q42gomPhPMdW7VqvYzgOsvLijOPBj6ZBABcyvNi0bpEx3mKAe49-W-w1jim29Ptp3w3M0qjTmQXyX5gy-sgfhiT-Daaox5ZmxvNYM~3zfOXbBQOGLJYolilvQw0WNNb1TyCT-q-vkwGozdAQkBXKb~ZQREPx~xEaEc61pvs8MWzZNZndX01TU9QbzY284-Mzth0BwkHFm-r7gI9MjnbZzhWYI6hZzESmVcCzT250Zy2NQxL8dRr9DT8nHdhLic2syUhNBL3kTegsLZaNCFLv-uF0ZfWU~Cmfto9uuUhd9w3lU2BeQtVkYBLWH6UCSJBTlVhJF~KsuxxAJljKgI7QzHXSlrWeXTPI7JjuWtutZ-MGsVqrPN~NbvrMdsrwLCK8Rtot~6Qk9W8pxFmpYUZ0oLl9XuqqYoQaUxSbDqcvhc-28BWHRWqLSwcTGQOTozsjqS9kF6aap4kX7wnWYW2NpCQTlJNCgHmkIL4MGXTowRlmB78N8o2-JRAAAA")); peers2[3] = new KademliaPeer(new Destination("KAQN39u3gFBVqUAUw64tELcW7aPxv2MwpGpDauaDFjKKEnM-~mCiaaYXX0XczAwDBvvuxlq~T9IAXljTUqFu60TeX5tHaQFJ-vBRxCVEbbAi48l6H-ibOc60IO9pAmVMCp65YzmG-bVJs8P8z2qX-~7TvzlzZDpyIJCmkHJk-wQyDcsmx17h5Yd6vAeaRt3EjqWQRAmMn5Li5FQRJql7wQNF6TeE61Zw3faDdXp~-u6dM62~ee3iX0D8uVU1Xzf7U9bYxbgyCwiILVSdn7agyEUsBR9cIpP8fqJoj3WWtu6TdBYnBULAogijBO8n0IknE09j35tKQtLynur6lajK0gejzbzb1cW7SaVzmIrb7qUPFdLhQpZ-FCoTFWq0r7fr7Mmwxi3CYE77--DOEgef0tzP~nRhi6-iBzaHkwWkifPJs6xPICmp4re7Toedyd1tgfkn7cbKE4tIU6t9ocY9D7Kzlo~g0DKgHoKAxwLoPP3Gy~wJIJjL9VHxO86Nbo0RAAAA")); peers2[4] = new KademliaPeer(new Destination("AI0UbuCQbrVbUOV2Wq2kICJr1I0MgYzHNFMlLC2hr3Bjq81h07Qn~ulwwB8GfLt20E0kNJc9v0CDJZ~g0ZnIE53A6zalFHl0PMzsVByVYcpFxk3Nm-xR61Bnvjayz6u6Cueoq-tQe33sdgBzyJZ~gF7IeP-4PNpQ3EZy1nkcatX6h5ZzC322XtlL4LJAjgiWVmZZ4ruzEchUKE7A~f~HY8BMeJ-veb5j4xCZbdyQNbYPiMtPKHCkG5dyCPbSPSmzSmuKLPumkFnTgChXEE~KjF4E~2LsPIasgVMKv-0MBhpsHCVsxe0a6APFDXBRdLesPFVho8eQVZ9C5kkYCn9R8JZVGYtUZbqC9Xrg1uW4~00lP0fFBCrKFnxsXxBS7wrzkOM7ZLhrnqMJ681mTAtStZOeMB8ytKuc5P40Fb9~2HbWj9ctdw-YjO~otmARTRV2sQub-WEJSbNiaJKIQ2D28HY~zyX7-~oVvqPY0~cgb3zVw5ienEkEoQDjhaGEaOAaAAAA"));
@Test public void testRemove() { for (KBucket bucket: buckets) { Destination[] destinations = destinationMap.get(bucket); assertEquals(0, bucket.size()); bucket.addOrUpdate(new KademliaPeer(destinations[0])); assertEquals(1, bucket.size()); bucket.remove(destinations[0]); assertEquals(0, bucket.size()); bucket.addOrUpdate(new KademliaPeer(destinations[0])); bucket.addOrUpdate(new KademliaPeer(destinations[1])); bucket.addOrUpdate(new KademliaPeer(destinations[2])); assertEquals(3, bucket.size()); bucket.remove(destinations[0]); assertEquals(2, bucket.size()); bucket.remove(destinations[1]); assertEquals(1, bucket.size()); bucket.remove(destinations[2]); assertEquals(0, bucket.size()); } }
bucketManager.addOrUpdate(new KademliaPeer(peers[i])); assertEquals(S, bucketManager.getPeerCount()); assertEquals(S, bucketManager.getAllPeers().size()); bucketManager.addOrUpdate(new KademliaPeer(peers[startIndex+i])); assertEquals(S + K, bucketManager.getPeerCount()); assertEquals(S + K, bucketManager.getAllPeers().size()); bucketManager.addOrUpdate(new KademliaPeer(peers[index])); assertEquals(S+K+1, bucketManager.getPeerCount()); assertEquals(S+K+1, bucketManager.getAllPeers().size()); bucketManager.addOrUpdate(new KademliaPeer(peers[startIndex+i]));