X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=apt_dht_Khashmir%2Fktable.py;h=907263edd9664c005860501d33390261c6b6bb34;hb=30b935bcd7c698e2be8ac4a20960e48212ad7249;hp=85abe4a82553dca0709b2561d2b3e3f95963f15d;hpb=7b1b1619dadfe5dc3c0910c72054e247d54db2bd;p=quix0rs-apt-p2p.git diff --git a/apt_dht_Khashmir/ktable.py b/apt_dht_Khashmir/ktable.py index 85abe4a..907263e 100644 --- a/apt_dht_Khashmir/ktable.py +++ b/apt_dht_Khashmir/ktable.py @@ -4,6 +4,7 @@ from datetime import datetime from bisect import bisect_left +from twisted.python import log from twisted.trial import unittest import khash @@ -13,10 +14,10 @@ class KTable: """local routing table for a kademlia like distributed hash table""" def __init__(self, node, config): # this is the root node, a.k.a. US! + assert node.id != NULL_ID self.node = node self.config = config self.buckets = [KBucket([], 0L, 2L**self.config['HASH_LENGTH'])] - self.insertNode(node) def _bucketIndexForInt(self, num): """the index of the bucket that should hold int""" @@ -133,7 +134,7 @@ class KTable: # this bucket is full and contains our node, split the bucket if len(self.buckets) >= self.config['HASH_LENGTH']: # our table is FULL, this is really unlikely - print "Hash Table is FULL! Increase K!" + log.err("Hash Table is FULL! Increase K!") return self._splitBucket(self.buckets[i]) @@ -210,26 +211,26 @@ class KBucket: class TestKTable(unittest.TestCase): def setUp(self): - self.a = Node().init(khash.newID(), 'localhost', 2002) + self.a = Node(khash.newID(), '127.0.0.1', 2002) self.t = KTable(self.a, {'HASH_LENGTH': 160, 'K': 8, 'MAX_FAILURES': 3}) def testAddNode(self): - self.b = Node().init(khash.newID(), 'localhost', 2003) + self.b = Node(khash.newID(), '127.0.0.1', 2003) self.t.insertNode(self.b) - self.assertEqual(len(self.t.buckets[0].l), 1) - self.assertEqual(self.t.buckets[0].l[0], self.b) + self.failUnlessEqual(len(self.t.buckets[0].l), 1) + self.failUnlessEqual(self.t.buckets[0].l[0], self.b) def testRemove(self): self.testAddNode() self.t.invalidateNode(self.b) - self.assertEqual(len(self.t.buckets[0].l), 0) + self.failUnlessEqual(len(self.t.buckets[0].l), 0) def testFail(self): self.testAddNode() for i in range(self.t.config['MAX_FAILURES'] - 1): self.t.nodeFailed(self.b) - self.assertEqual(len(self.t.buckets[0].l), 1) - self.assertEqual(self.t.buckets[0].l[0], self.b) + self.failUnlessEqual(len(self.t.buckets[0].l), 1) + self.failUnlessEqual(self.t.buckets[0].l[0], self.b) self.t.nodeFailed(self.b) - self.assertEqual(len(self.t.buckets[0].l), 0) + self.failUnlessEqual(len(self.t.buckets[0].l), 0)