1 from twisted.internet import defer
2 from twisted.trial import unittest
4 from p2pool import networks, node, work
5 from p2pool.util import deferral, variable
8 new_headers = variable.Event()
9 new_block = variable.Event()
10 new_tx = variable.Event()
11 conn = variable.Variable(None)
13 def getProtocol(self):
14 return defer.Deferred()
16 class bitcoind(object):
22 def rpc_getblock(self, block_hash_hex):
23 return dict(height=42)
26 def rpc_getmemorypool(self):
29 "previousblockhash" : "000000000000016c169477c25421250ec5d32cf9c6d38538b5de970a2355fd89",
33 "flags" : "062f503253482f"
35 "coinbasevalue" : 5044450000,
36 "target" : "0000000000000513c50000000000000000000000000000000000000000000000",
37 "mintime" : 1351655621,
43 "noncerange" : "00000000ffffffff",
45 "sizelimit" : 1000000,
46 "curtime" : 1351659940,
51 class FakeRequest(object):
54 def getClientIP(self):
57 class Test(unittest.TestCase):
58 @defer.inlineCallbacks
60 net = networks.nets['litecoin_testnet']
61 n = node.Node(factory, bitcoind, [], [], net)
64 wb = work.WorkerBridge(node=n, my_pubkey_hash=42, donation_percentage=2, merged_urls=[], worker_fee=3)
66 yield deferral.sleep(3)
69 ba, got_resp = wb.get_work(pubkey_hash=4242, desired_share_target=2**256-1, desired_pseudoshare_target=2**256-1)
70 got_resp(dict(version=ba.version, previous_block=ba.previous_block, merkle_root=ba.merkle_root, timestamp=ba.timestamp, bits=ba.bits, nonce=42), FakeRequest())
71 yield deferral.sleep(.01)
73 yield deferral.sleep(3)
75 assert len(n.tracker.items) == 100
76 assert n.tracker.verified.get_height(n.best_share_var.value) == 100
80 yield deferral.sleep(20) # waiting for work_poller to exit