package net.tomp2p.p2p; import java.util.Collection; import java.util.HashMap; import java.util.HashSet; import java.util.Map; import net.tomp2p.Utils2; import net.tomp2p.p2p.VotingSchemeDHT; import net.tomp2p.peers.Number160; import net.tomp2p.peers.Number480; import net.tomp2p.peers.PeerAddress; import net.tomp2p.storage.Data; import org.junit.Assert; import org.junit.Test; public class TestEvaluation { @Test public void testEvaluationKeys() throws Exception { Map<PeerAddress, Collection<Number480>> rawKeys = new HashMap<PeerAddress, Collection<Number480>>(); PeerAddress pa1 = Utils2.createAddress(19); Collection<Number480> test1 = new HashSet<Number480>(); test1.add(new Number480(new Number160(4), new Number160(5),new Number160(12))); test1.add(new Number480(new Number160(4), new Number160(5),new Number160(13))); test1.add(new Number480(new Number160(4), new Number160(5),new Number160(14))); rawKeys.put(pa1, test1); // PeerAddress pa2 = Utils2.createAddress(20); Collection<Number480> test2 = new HashSet<Number480>(); test2.add(new Number480(new Number160(4), new Number160(5),new Number160(12))); test2.add(new Number480(new Number160(4), new Number160(5),new Number160(13))); rawKeys.put(pa2, test2); // PeerAddress pa3 = Utils2.createAddress(21); Collection<Number480> test3 = new HashSet<Number480>(); test3.add(new Number480(new Number160(4), new Number160(5),new Number160(11))); test3.add(new Number480(new Number160(4), new Number160(5),new Number160(13))); test3.add(new Number480(new Number160(4), new Number160(5),new Number160(14))); rawKeys.put(pa3, test3); VotingSchemeDHT evs = new VotingSchemeDHT(); Collection<Number480> tmp = evs.evaluate1(rawKeys); Assert.assertEquals(false, tmp.contains(new Number480(new Number160(4), new Number160(5), new Number160(11)))); Assert.assertEquals(true, tmp.contains(new Number480(new Number160(4), new Number160(5), new Number160(12)))); Assert.assertEquals(true, tmp.contains(new Number480(new Number160(4), new Number160(5), new Number160(13)))); Assert.assertEquals(true, tmp.contains(new Number480(new Number160(4), new Number160(5), new Number160(14)))); } @Test public void testEvaluationData1() throws Exception { byte[] me11 = new byte[] { 1, 1 }; byte[] me12 = new byte[] { 2, 2 }; byte[] me13 = new byte[] { 3, 3 }; byte[] me14 = new byte[] { 4, 4 }; Map<PeerAddress, Map<Number480, Data>> rawData = new HashMap<PeerAddress, Map<Number480, Data>>(); PeerAddress pa1 = Utils2.createAddress(19); Map<Number480, Data> test1 = new HashMap<Number480, Data>(); test1.put(new Number480(new Number160(12),new Number160(12),new Number160(12)), new Data(me12)); test1.put(new Number480(new Number160(13),new Number160(13),new Number160(13)), new Data(me13)); test1.put(new Number480(new Number160(14),new Number160(14),new Number160(14)), new Data(me14)); rawData.put(pa1, test1); // PeerAddress pa2 = Utils2.createAddress(20); Map<Number480, Data> test2 = new HashMap<Number480, Data>(); test2.put(new Number480(new Number160(12),new Number160(12),new Number160(12)), new Data(me12)); test2.put(new Number480(new Number160(13),new Number160(13),new Number160(13)), new Data(me13)); rawData.put(pa2, test2); // PeerAddress pa3 = Utils2.createAddress(21); Map<Number480, Data> test3 = new HashMap<Number480, Data>(); test3.put(new Number480(new Number160(11),new Number160(11),new Number160(11)), new Data(me11)); test3.put(new Number480(new Number160(13),new Number160(13),new Number160(13)), new Data(me13)); test3.put(new Number480(new Number160(14),new Number160(14),new Number160(14)), new Data(me14)); rawData.put(pa3, test3); VotingSchemeDHT evs = new VotingSchemeDHT(); Map<Number480, Data> tmp = evs.evaluate2(rawData); Assert.assertEquals(false, tmp.containsKey(new Number480(new Number160(11),new Number160(11),new Number160(11)))); Assert.assertEquals(true, tmp.containsKey(new Number480(new Number160(12),new Number160(12),new Number160(12)))); Assert.assertEquals(true, tmp.containsKey(new Number480(new Number160(13),new Number160(13),new Number160(13)))); Assert.assertEquals(true, tmp.containsKey(new Number480(new Number160(14),new Number160(14),new Number160(14)))); } @Test public void testEvaluationData2() throws Exception { byte[] me11 = new byte[] { 1, 1 }; byte[] me12 = new byte[] { 2, 2 }; byte[] me13 = new byte[] { 3, 3 }; byte[] me14 = new byte[] { 4, 4 }; Map<PeerAddress, Map<Number480, Data>> rawData = new HashMap<PeerAddress, Map<Number480, Data>>(); PeerAddress pa1 = Utils2.createAddress(19); Map<Number480, Data> test1 = new HashMap<Number480, Data>(); test1.put(new Number480(new Number160(12),new Number160(12),new Number160(12)), new Data(me12)); test1.put(new Number480(new Number160(13),new Number160(13),new Number160(13)), new Data(me13)); test1.put(new Number480(new Number160(14),new Number160(14),new Number160(14)), new Data(me14)); rawData.put(pa1, test1); // PeerAddress pa2 = Utils2.createAddress(20); Map<Number480, Data> test2 = new HashMap<Number480, Data>(); test2.put(new Number480(new Number160(12),new Number160(12),new Number160(12)), new Data(me11)); test2.put(new Number480(new Number160(13),new Number160(13),new Number160(13)), new Data(me13)); rawData.put(pa2, test2); // PeerAddress pa3 = Utils2.createAddress(21); Map<Number480, Data> test3 = new HashMap<Number480, Data>(); test3.put(new Number480(new Number160(11),new Number160(11),new Number160(11)), new Data(me11)); test3.put(new Number480(new Number160(13),new Number160(13),new Number160(13)), new Data(me13)); test3.put(new Number480(new Number160(14),new Number160(14),new Number160(14)), new Data(me14)); rawData.put(pa3, test3); VotingSchemeDHT evs = new VotingSchemeDHT(); Map<Number480, Data> tmp = evs.evaluate2(rawData); Assert.assertEquals(false, tmp.containsKey(new Number480(new Number160(11),new Number160(11),new Number160(11)))); Assert.assertEquals(false, tmp.containsKey(new Number480(new Number160(12),new Number160(12),new Number160(12)))); Assert.assertEquals(true, tmp.containsKey(new Number480(new Number160(13),new Number160(13),new Number160(13)))); Assert.assertEquals(true, tmp.containsKey(new Number480(new Number160(14),new Number160(14),new Number160(14)))); } }