From 5b169530ddd46572b4fc76644e62dafc4f2d3eab Mon Sep 17 00:00:00 2001 From: Forrest Voight Date: Fri, 16 Mar 2012 15:15:41 -0400 Subject: [PATCH] fixed bitcoin.p2p test and moved to /test --- p2pool/bitcoin/p2p.py | 24 +++++------------------- p2pool/test/bitcoin/test_p2p.py | 20 ++++++++++++++++++++ 2 files changed, 25 insertions(+), 19 deletions(-) create mode 100644 p2pool/test/bitcoin/test_p2p.py diff --git a/p2pool/bitcoin/p2p.py b/p2pool/bitcoin/p2p.py index 9ac6e9e..b647728 100644 --- a/p2pool/bitcoin/p2p.py +++ b/p2pool/bitcoin/p2p.py @@ -3,10 +3,12 @@ Implementation of Bitcoin's p2p protocol ''' import random +import sys import time -from twisted.internet import defer, protocol, reactor, task +from twisted.internet import protocol, task +import p2pool from . import data as bitcoin_data from p2pool.util import deferral, p2protocol, pack, variable @@ -143,7 +145,8 @@ class Protocol(p2protocol.Protocol): self.factory.gotConnection(None) if hasattr(self, 'pinger'): self.pinger.stop() - print 'Bitcoin connection lost. Reason:', reason.getErrorMessage() + if p2pool.DEBUG: + print >>sys.stderr, 'Bitcoin connection lost. Reason:', reason.getErrorMessage() class ClientFactory(protocol.ReconnectingClientFactory): protocol = Protocol @@ -168,20 +171,3 @@ class ClientFactory(protocol.ReconnectingClientFactory): def getProtocol(self): return self.conn.get_not_none() - -if __name__ == '__main__': - from . import networks - factory = ClientFactory(networks.BitcoinMainnet) - reactor.connectTCP('127.0.0.1', 8333, factory) - - @repr - @apply - @defer.inlineCallbacks - def think(): - try: - print (yield (yield factory.getProtocol()).get_block(0x000000000000003aaaf7638f9f9c0d0c60e8b0eb817dcdb55fd2b1964efc5175)) - except defer.TimeoutError: - print "timeout" - reactor.stop() - - reactor.run() diff --git a/p2pool/test/bitcoin/test_p2p.py b/p2pool/test/bitcoin/test_p2p.py new file mode 100644 index 0000000..a564dad --- /dev/null +++ b/p2pool/test/bitcoin/test_p2p.py @@ -0,0 +1,20 @@ +from twisted.internet import defer, reactor +from twisted.trial import unittest + +from p2pool.bitcoin import data, networks, p2p +from p2pool.util import deferral + + +class Test(unittest.TestCase): + @defer.inlineCallbacks + def test_get_block(self): + factory = p2p.ClientFactory(networks.nets['bitcoin']) + c = reactor.connectTCP('127.0.0.1', 8333, factory) + try: + h = 0x000000000000046acff93b0e76cd10490551bf871ce9ac9fad62e67a07ff1d1e + block = yield deferral.retry()(defer.inlineCallbacks(lambda: defer.returnValue((yield (yield factory.getProtocol()).get_block(h)))))() + assert data.merkle_hash(map(data.hash256, map(data.tx_type.pack, block['txs']))) == block['header']['merkle_root'] + assert data.hash256(data.block_header_type.pack(block['header'])) == h + finally: + factory.stopTrying() + c.disconnect() -- 1.7.1