diff --git a/ethereum/p2p/src/test/java/tech/pegasys/pantheon/ethereum/p2p/discovery/internal/RecursivePeerRefreshStateTest.java b/ethereum/p2p/src/test/java/tech/pegasys/pantheon/ethereum/p2p/discovery/internal/RecursivePeerRefreshStateTest.java index de758f34d2..b1b1466b8f 100644 --- a/ethereum/p2p/src/test/java/tech/pegasys/pantheon/ethereum/p2p/discovery/internal/RecursivePeerRefreshStateTest.java +++ b/ethereum/p2p/src/test/java/tech/pegasys/pantheon/ethereum/p2p/discovery/internal/RecursivePeerRefreshStateTest.java @@ -404,53 +404,29 @@ public Integer getDistance() { return distance; } - void setBondQueried() { - this.bondQueried = true; - } + void setBondQueried() {this.bondQueried = true;} - void setBondResponded() { - this.bondResponded = true; - } + boolean getBondQueried() {return bondQueried;} - void setBondEvaluation() { - this.bondEvaluated = true; - } + void setBondResponded() {this.bondResponded = true;} - boolean getBondQueried() { - return bondQueried; - } + boolean getBondResponded() {return bondResponded;} - boolean getBondResponded() { - return bondResponded; - } + void setBondEvaluation() {this.bondEvaluated = true;} - boolean getBondEvaluation() { - return bondEvaluated; - } + boolean getBondEvaluation() {return bondEvaluated;} - void setNeighbourQueried() { - this.neighbourQueried = true; - } + void setNeighbourQueried() {this.neighbourQueried = true;} - boolean getNeighbourQueried() { - return neighbourQueried; - } + boolean getNeighbourQueried() {return neighbourQueried;} - void setNeighbourResponded() { - this.neighbourResponded = true; - } + void setNeighbourResponded() {this.neighbourResponded = true;} - boolean getNeighbourResponded() { - return neighbourResponded; - } + boolean getNeighbourResponded() {return neighbourResponded;} - void setNeighbourEvaluation() { - this.neighbourEvaluated = true; - } + void setNeighbourEvaluation() {this.neighbourEvaluated = true;} - boolean getNeighbourEvaluation() { - return neighbourEvaluated; - } + boolean getNeighbourEvaluation() {return neighbourEvaluated;} @Override public boolean equals(final Object o) { @@ -472,49 +448,7 @@ public String toString() { } @Test - public void testSort() { - - MetadataPeer peerA = new MetadataPeer(peer_000, distance(target, peer_000.getId())); - MetadataPeer peerB = new MetadataPeer(peer_010, distance(target, peer_010.getId())); - MetadataPeer peerC = new MetadataPeer(peer_011, distance(target, peer_011.getId())); - MetadataPeer peerD = new MetadataPeer(peer_012, distance(target, peer_012.getId())); - MetadataPeer peerE = new MetadataPeer(peer_013, distance(target, peer_013.getId())); - - SortedMap iterationParticipantMap0 = new TreeMap<>(); - - iterationParticipantMap0.put(peer_000.getId(), peerA); - iterationParticipantMap0.put(peer_011.getId(), peerC); - iterationParticipantMap0.put(peer_013.getId(), peerE); - iterationParticipantMap0.put(peer_010.getId(), peerB); - iterationParticipantMap0.put(peer_012.getId(), peerD); - - for (Object obj : iterationParticipantMap0.entrySet()) { - Map.Entry entry = (Map.Entry) obj; - System.out.print("Key: " + entry.getKey()); - System.out.println(", Value: " + entry.getValue()); - } - System.out.println("-------"); - - SortedMap iterationParticipantMap1 = putFirstEntries(3, iterationParticipantMap0); - - for (Object obj : iterationParticipantMap1.entrySet()) { - Map.Entry entry = (Map.Entry) obj; - System.out.print("Key: " + entry.getKey()); - System.out.println(", Value: " + entry.getValue()); - } - System.out.println("-------"); - - List iterationParticipantList = alpha(3, iterationParticipantMap0); - - for (DiscoveryPeer discoveryPeer : iterationParticipantList) { - System.out.println(discoveryPeer); - } - - } - - - @Test - public void testSortMetadata() { //assertThat(method.getName()).isEqualTo("debug_metrics"); + public void testSortMetadataBonding() { final MetadataPeer peerA = new MetadataPeer(peer_020, distance(target, peer_020.getId())); @@ -574,27 +508,64 @@ private List bondingRoundCandidates(final int max, final SortedMa return candidatesList; } + private List neighboursRoundCandidates(final int max, final SortedMap source) { + final List candidatesList = new ArrayList<>(); - private List alpha(int max, SortedMap source) { int count = 0; - List target = new ArrayList<>(); - for (Map.Entry entry : source.entrySet()) { - if (count >= max) break; - target.add(entry.getValue().getPeer()); - count++; + for (Map.Entry candidateEntry : source.entrySet()) { + if (count >= max) { + break; + } + final MetadataPeer candidate = candidateEntry.getValue(); + + if(candidate.getBondQueried() && candidate.getBondResponded()) { + candidatesList.add(candidate.getPeer()); + count++; + } } - return target; + return candidatesList; } - private SortedMap putFirstEntries(int max, SortedMap source) { - int count = 0; - TreeMap target = new TreeMap<>(); - for (Map.Entry entry : source.entrySet()) { - if (count >= max) break; - target.put(entry.getKey(), entry.getValue()); - count++; + @Test + public void testSortMetadataNeighbours() { + + final MetadataPeer peerA = new MetadataPeer(peer_020, distance(target, peer_020.getId())); + peerA.setBondQueried(); + peerA.setBondEvaluation(); //!!! + + final MetadataPeer peerB = new MetadataPeer(peer_021, distance(target, peer_021.getId())); + peerB.setBondQueried(); + peerB.setBondResponded(); + + final MetadataPeer peerC = new MetadataPeer(peer_022, distance(target, peer_022.getId())); + peerC.setBondQueried(); + peerC.setBondResponded(); + + final MetadataPeer peerD = new MetadataPeer(peer_023, distance(target, peer_023.getId())); // Not returned on threshold 3 + peerD.setBondQueried(); + peerD.setBondResponded(); + + final SortedMap oneTrueMap = new TreeMap<>(); + + oneTrueMap.put(peer_023.getId(), peerD); + oneTrueMap.put(peer_022.getId(), peerC); + oneTrueMap.put(peer_021.getId(), peerB); + oneTrueMap.put(peer_020.getId(), peerA); + + try { + assertThat(oneTrueMap).containsExactly( + entry(peer_020.getId(), peerA), + entry(peer_021.getId(), peerB), + entry(peer_022.getId(), peerC), + entry(peer_023.getId(), peerD)); + } catch (Exception e) { + System.err.println("Contains disorder."); } - return target; - } + final List bondingRoundCandidatesList = neighboursRoundCandidates(3, oneTrueMap); + + assertThat(bondingRoundCandidatesList).contains(peerB.getPeer(), atIndex(0)); + assertThat(bondingRoundCandidatesList).contains(peerC.getPeer(), atIndex(1)); + assertThat(bondingRoundCandidatesList).contains(peerD.getPeer(), atIndex(2)); + } }