1 from twisted.internet import defer, reactor
2 from twisted.trial import unittest
3 from twisted.web import resource, server
5 from p2pool import networks, node, work
6 from p2pool.bitcoin import worker_interface
7 from p2pool.util import deferral, jsonrpc, variable
10 new_headers = variable.Event()
11 new_block = variable.Event()
12 new_tx = variable.Event()
13 conn = variable.Variable(None)
15 def getProtocol(self):
16 return defer.Deferred()
18 class bitcoind(object):
24 def rpc_getblock(self, block_hash_hex):
25 return dict(height=42)
28 def rpc_getmemorypool(self):
31 "previousblockhash" : "000000000000016c169477c25421250ec5d32cf9c6d38538b5de970a2355fd89",
35 "flags" : "062f503253482f"
37 "coinbasevalue" : 5044450000,
38 "target" : "0000000000000513c50000000000000000000000000000000000000000000000",
39 "mintime" : 1351655621,
45 "noncerange" : "00000000ffffffff",
47 "sizelimit" : 1000000,
48 "curtime" : 1351659940,
53 class Test(unittest.TestCase):
54 @defer.inlineCallbacks
56 net = networks.nets['litecoin_testnet']
57 n = node.Node(factory, bitcoind, [], [], net)
60 wb = work.WorkerBridge(node=n, my_pubkey_hash=42, donation_percentage=2, merged_urls=[], worker_fee=3)
61 web_root = resource.Resource()
62 worker_interface.WorkerInterface(wb).attach_to(web_root)
63 port = reactor.listenTCP(8080, server.Site(web_root))
65 proxy = jsonrpc.Proxy('http://127.0.0.1:8080')
67 yield deferral.sleep(3)
70 blah = yield proxy.rpc_getwork()
71 yield proxy.rpc_getwork(blah['data'])
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 port.stopListening()
81 del net, n, wb, web_root, port, proxy
87 yield deferral.sleep(20) # waiting for work_poller to exit