1 from unittest import defaultTestLoader, TextTestRunner, TestCase
3 from random import randrange
6 from twisted.internet import reactor
8 from khashmir import Khashmir
9 from khash import newID
11 if __name__ =="__main__":
12 tests = defaultTestLoader.loadTestsFromNames([sys.argv[0][:-3]])
13 result = TextTestRunner().run(tests)
15 class SimpleTests(TestCase):
17 self.a = Khashmir('127.0.0.1', 4044, '/tmp/a.test')
18 self.b = Khashmir('127.0.0.1', 4045, '/tmp/b.test')
21 self.a.listenport.stopListening()
22 self.b.listenport.stopListening()
23 os.unlink('/tmp/a.test')
24 os.unlink('/tmp/b.test')
28 def addContacts(self):
29 self.a.addContact('127.0.0.1', 4045)
35 def testAddContact(self):
36 self.assertEqual(len(self.a.table.buckets), 1)
37 self.assertEqual(len(self.a.table.buckets[0].l), 0)
39 self.assertEqual(len(self.b.table.buckets), 1)
40 self.assertEqual(len(self.b.table.buckets[0].l), 0)
44 self.assertEqual(len(self.a.table.buckets), 1)
45 self.assertEqual(len(self.a.table.buckets[0].l), 1)
46 self.assertEqual(len(self.b.table.buckets), 1)
47 self.assertEqual(len(self.b.table.buckets[0].l), 1)
49 def testStoreRetrieve(self):
52 self.a.storeValueForKey(sha('foo').digest(), 'foobar')
59 self.a.valueForKey(sha('foo').digest(), self._cb)
70 self.assertEqual(self.got, 1)
75 class MultiTest(TestCase):
83 for i in range(self.num):
84 self.l.append(Khashmir('127.0.0.1', self.startport + i, '/tmp/%s.test' % (self.startport + i)))
89 i.addContact('127.0.0.1', self.l[randrange(0,self.num)].port)
90 i.addContact('127.0.0.1', self.l[randrange(0,self.num)].port)
91 i.addContact('127.0.0.1', self.l[randrange(0,self.num)].port)
98 i.findCloseNodes(self._done)
103 i.findCloseNodes(self._done)
109 i.listenport.stopListening()
110 for i in range(self.startport, self.startport+self.num):
111 os.unlink('/tmp/%s.test' % i)
115 def testStoreRetrieve(self):
124 self.l[randrange(0, self.num)].storeValueForKey(K, V, _scb)
132 self.assertEqual(self.got, 1)
138 self.l[randrange(0, self.num)].valueForKey(K, _rcb)