public void TestTableUpdate() { var local = new PeerId("Random Local Peer"); var m = new Metrics(); var rt = new RoutingTable(10, DhtId.ConvertPeerId(local), TimeSpan.FromHours(1), m); var peers = Enumerable.Range(0, 100) .Select(i => new PeerId($"Random Peer {i}")) .ToArray(); var rand = new Random(Environment.TickCount); for (var i = 0; i < 10000; i++) { rt.Update(peers[rand.Next(peers.Length)]); } for (var i = 0; i < 100; i++) { var id = DhtId.ConvertPeerId(new PeerId($"Random Peer {rand.Next(1024)}")); var ret = rt.NearestPeers(id, 5); Assert.That(ret.Length, Is.GreaterThan(0)); } }
public void TestTableFind() { var local = new PeerId("Random Local Peer"); var m = new Metrics(); var rt = new RoutingTable(10, DhtId.ConvertPeerId(local), TimeSpan.FromHours(1), m); var peers = new PeerId[100]; for (var i = 0; i < 5; i++) { peers[i] = new PeerId($"Random Peer {i}"); rt.Update(peers[i]); } var found = rt.NearestPeer(DhtId.ConvertPeerId(peers[2])); Assert.That(found, Is.EqualTo(peers[2])); }
public void TestTableMultithreaded() { var local = new PeerId("Random Local Peer"); var m = new Metrics(); var rt = new RoutingTable(20, DhtId.ConvertPeerId(local), TimeSpan.FromHours(1), m); var peers = Enumerable.Range(0, 500) .Select(i => new PeerId($"Random Peer {i}")) .ToArray(); var t1 = Task.Factory.StartNew(() => { var rand = new Random(Environment.TickCount); for (var i = 0; i < 1000; i++) { var n = rand.Next(peers.Length); rt.Update(peers[n]); } }); var t2 = Task.Factory.StartNew(() => { var rand = new Random(Environment.TickCount); for (var i = 0; i < 1000; i++) { var n = rand.Next(peers.Length); rt.Update(peers[n]); } }); var t3 = Task.Factory.StartNew(() => { var rand = new Random(Environment.TickCount); for (var i = 0; i < 1000; i++) { var n = rand.Next(peers.Length); rt.Find(peers[n]); } }); Task.WaitAll(t1, t2, t3); }
public void TestBucket() { var b = new Bucket(); var peers = new PeerId[100]; for (var i = 0; i < 100; i++) { peers[i] = new PeerId($"Random PeerId {i}"); b.PushFront(peers[i]); } var local = new PeerId($"Local PeerId"); var localId = DhtId.ConvertPeerId(local); var x = new Random(Environment.TickCount).Next(peers.Length); Assert.That(b.Has(peers[x]), Is.True); var spl = b.Split(0, DhtId.ConvertPeerId(local)); var llist = b.Peers; foreach (var e in llist) { var p = DhtId.ConvertPeerId(e); var cpl = DhtId.CommonPrefixLength(p, localId); Assert.That(cpl, Is.Not.GreaterThan(0)); } var rlist = spl.Peers; foreach (var e in rlist) { var p = DhtId.ConvertPeerId(e); var cpl = DhtId.CommonPrefixLength(p, localId); Assert.That(cpl, Is.Not.EqualTo(0)); } }