+ def store_values(self, result):
+ self.stored = 3
+ d = self.a.storeValue(sha.new('4045').digest(), str(4045*3))
+ d.addCallback(self.value_stored, 4045)
+ d = self.a.storeValue(sha.new('4044').digest(), str(4044*2))
+ d.addCallback(self.value_stored, 4044)
+ d = self.b.storeValue(sha.new('4045').digest(), str(4045*2))
+ d.addCallback(self.value_stored, 4045)
+
+ def check_values(self, result, values):
+ self.checked -= 1
+ self.failUnless(len(result) == len(values))
+ for v in result:
+ self.failUnless(v in values)
+ if self.checked == 0:
+ self.lastDefer.callback(1)
+
+ def get_values(self):
+ self.checked = 4
+ d = self.a.getValue(sha.new('4044').digest())
+ d.addCallback(self.check_values, [str(4044*2)])
+ d = self.b.getValue(sha.new('4044').digest())
+ d.addCallback(self.check_values, [str(4044*2)])
+ d = self.a.getValue(sha.new('4045').digest())
+ d.addCallback(self.check_values, [str(4045*2), str(4045*3)])
+ d = self.b.getValue(sha.new('4045').digest())
+ d.addCallback(self.check_values, [str(4045*2), str(4045*3)])
+
+ def test_store(self):
+ from twisted.internet.base import DelayedCall
+ DelayedCall.debug = True
+ self.lastDefer = defer.Deferred()
+ d = self.a.join()
+ d.addCallback(self.node_join)
+ d.addCallback(self.store_values)
+ return self.lastDefer
+