mirror of
https://github.com/kvazar-network/kevacoin.git
synced 2025-02-08 21:24:24 +00:00
[qa] Use python2/3 syntax
This commit is contained in:
parent
28ad4d9fc2
commit
fa524d9ddb
@ -32,13 +32,13 @@ import re
|
|||||||
from tests_config import *
|
from tests_config import *
|
||||||
|
|
||||||
#If imported values are not defined then set to zero (or disabled)
|
#If imported values are not defined then set to zero (or disabled)
|
||||||
if not vars().has_key('ENABLE_WALLET'):
|
if 'ENABLE_WALLET' not in vars():
|
||||||
ENABLE_WALLET=0
|
ENABLE_WALLET=0
|
||||||
if not vars().has_key('ENABLE_BITCOIND'):
|
if 'ENABLE_BITCOIND' not in vars():
|
||||||
ENABLE_BITCOIND=0
|
ENABLE_BITCOIND=0
|
||||||
if not vars().has_key('ENABLE_UTILS'):
|
if 'ENABLE_UTILS' not in vars():
|
||||||
ENABLE_UTILS=0
|
ENABLE_UTILS=0
|
||||||
if not vars().has_key('ENABLE_ZMQ'):
|
if 'ENABLE_ZMQ' not in vars():
|
||||||
ENABLE_ZMQ=0
|
ENABLE_ZMQ=0
|
||||||
|
|
||||||
# python-zmq may not be installed. Handle this gracefully and with some helpful info
|
# python-zmq may not be installed. Handle this gracefully and with some helpful info
|
||||||
|
@ -11,7 +11,7 @@ from test_framework.blocktools import create_coinbase, create_block
|
|||||||
from test_framework.comptool import TestInstance, TestManager
|
from test_framework.comptool import TestInstance, TestManager
|
||||||
from test_framework.script import CScript, OP_1NEGATE, OP_CHECKLOCKTIMEVERIFY, OP_DROP
|
from test_framework.script import CScript, OP_1NEGATE, OP_CHECKLOCKTIMEVERIFY, OP_DROP
|
||||||
from binascii import unhexlify
|
from binascii import unhexlify
|
||||||
import cStringIO
|
from io import BytesIO
|
||||||
import time
|
import time
|
||||||
|
|
||||||
def cltv_invalidate(tx):
|
def cltv_invalidate(tx):
|
||||||
@ -60,7 +60,7 @@ class BIP65Test(ComparisonTestFramework):
|
|||||||
rawtx = node.createrawtransaction(inputs, outputs)
|
rawtx = node.createrawtransaction(inputs, outputs)
|
||||||
signresult = node.signrawtransaction(rawtx)
|
signresult = node.signrawtransaction(rawtx)
|
||||||
tx = CTransaction()
|
tx = CTransaction()
|
||||||
f = cStringIO.StringIO(unhexlify(signresult['hex']))
|
f = BytesIO(unhexlify(signresult['hex']))
|
||||||
tx.deserialize(f)
|
tx.deserialize(f)
|
||||||
return tx
|
return tx
|
||||||
|
|
||||||
|
@ -11,7 +11,7 @@ from test_framework.blocktools import create_coinbase, create_block
|
|||||||
from test_framework.comptool import TestInstance, TestManager
|
from test_framework.comptool import TestInstance, TestManager
|
||||||
from test_framework.script import *
|
from test_framework.script import *
|
||||||
from binascii import unhexlify
|
from binascii import unhexlify
|
||||||
import cStringIO
|
from io import BytesIO
|
||||||
import time
|
import time
|
||||||
|
|
||||||
'''
|
'''
|
||||||
@ -119,7 +119,7 @@ class BIP68_112_113Test(ComparisonTestFramework):
|
|||||||
outputs = { to_address : amount }
|
outputs = { to_address : amount }
|
||||||
rawtx = node.createrawtransaction(inputs, outputs)
|
rawtx = node.createrawtransaction(inputs, outputs)
|
||||||
tx = CTransaction()
|
tx = CTransaction()
|
||||||
f = cStringIO.StringIO(unhexlify(rawtx))
|
f = BytesIO(unhexlify(rawtx))
|
||||||
tx.deserialize(f)
|
tx.deserialize(f)
|
||||||
return tx
|
return tx
|
||||||
|
|
||||||
@ -127,7 +127,7 @@ class BIP68_112_113Test(ComparisonTestFramework):
|
|||||||
rawtx = ToHex(unsignedtx)
|
rawtx = ToHex(unsignedtx)
|
||||||
signresult = node.signrawtransaction(rawtx)
|
signresult = node.signrawtransaction(rawtx)
|
||||||
tx = CTransaction()
|
tx = CTransaction()
|
||||||
f = cStringIO.StringIO(unhexlify(signresult['hex']))
|
f = BytesIO(unhexlify(signresult['hex']))
|
||||||
tx.deserialize(f)
|
tx.deserialize(f)
|
||||||
return tx
|
return tx
|
||||||
|
|
||||||
|
@ -11,7 +11,7 @@ from test_framework.blocktools import create_coinbase, create_block
|
|||||||
from test_framework.comptool import TestInstance, TestManager
|
from test_framework.comptool import TestInstance, TestManager
|
||||||
from test_framework.script import CScript, OP_1NEGATE, OP_NOP3, OP_DROP
|
from test_framework.script import CScript, OP_1NEGATE, OP_NOP3, OP_DROP
|
||||||
from binascii import hexlify, unhexlify
|
from binascii import hexlify, unhexlify
|
||||||
import cStringIO
|
from io import BytesIO
|
||||||
import time
|
import time
|
||||||
import itertools
|
import itertools
|
||||||
|
|
||||||
@ -53,7 +53,7 @@ class BIP9SoftForksTest(ComparisonTestFramework):
|
|||||||
outputs = { to_address : amount }
|
outputs = { to_address : amount }
|
||||||
rawtx = node.createrawtransaction(inputs, outputs)
|
rawtx = node.createrawtransaction(inputs, outputs)
|
||||||
tx = CTransaction()
|
tx = CTransaction()
|
||||||
f = cStringIO.StringIO(unhexlify(rawtx))
|
f = BytesIO(unhexlify(rawtx))
|
||||||
tx.deserialize(f)
|
tx.deserialize(f)
|
||||||
tx.nVersion = 2
|
tx.nVersion = 2
|
||||||
return tx
|
return tx
|
||||||
@ -61,7 +61,7 @@ class BIP9SoftForksTest(ComparisonTestFramework):
|
|||||||
def sign_transaction(self, node, tx):
|
def sign_transaction(self, node, tx):
|
||||||
signresult = node.signrawtransaction(hexlify(tx.serialize()))
|
signresult = node.signrawtransaction(hexlify(tx.serialize()))
|
||||||
tx = CTransaction()
|
tx = CTransaction()
|
||||||
f = cStringIO.StringIO(unhexlify(signresult['hex']))
|
f = BytesIO(unhexlify(signresult['hex']))
|
||||||
tx.deserialize(f)
|
tx.deserialize(f)
|
||||||
return tx
|
return tx
|
||||||
|
|
||||||
@ -217,4 +217,4 @@ class BIP9SoftForksTest(ComparisonTestFramework):
|
|||||||
tx.nLockTime = self.last_block_time
|
tx.nLockTime = self.last_block_time
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
BIP9SoftForksTest().main()
|
BIP9SoftForksTest().main()
|
||||||
|
@ -11,7 +11,7 @@ from test_framework.blocktools import create_coinbase, create_block
|
|||||||
from test_framework.comptool import TestInstance, TestManager
|
from test_framework.comptool import TestInstance, TestManager
|
||||||
from test_framework.script import CScript
|
from test_framework.script import CScript
|
||||||
from binascii import unhexlify
|
from binascii import unhexlify
|
||||||
import cStringIO
|
from io import BytesIO
|
||||||
import time
|
import time
|
||||||
|
|
||||||
# A canonical signature consists of:
|
# A canonical signature consists of:
|
||||||
@ -68,7 +68,7 @@ class BIP66Test(ComparisonTestFramework):
|
|||||||
rawtx = node.createrawtransaction(inputs, outputs)
|
rawtx = node.createrawtransaction(inputs, outputs)
|
||||||
signresult = node.signrawtransaction(rawtx)
|
signresult = node.signrawtransaction(rawtx)
|
||||||
tx = CTransaction()
|
tx = CTransaction()
|
||||||
f = cStringIO.StringIO(unhexlify(signresult['hex']))
|
f = BytesIO(unhexlify(signresult['hex']))
|
||||||
tx.deserialize(f)
|
tx.deserialize(f)
|
||||||
return tx
|
return tx
|
||||||
|
|
||||||
|
@ -7,7 +7,7 @@ from test_framework.test_framework import BitcoinTestFramework
|
|||||||
from test_framework.util import *
|
from test_framework.util import *
|
||||||
from test_framework.mininode import *
|
from test_framework.mininode import *
|
||||||
from binascii import hexlify, unhexlify
|
from binascii import hexlify, unhexlify
|
||||||
from cStringIO import StringIO
|
from io import BytesIO
|
||||||
|
|
||||||
class DecodeScriptTest(BitcoinTestFramework):
|
class DecodeScriptTest(BitcoinTestFramework):
|
||||||
"""Tests decoding scripts via RPC command "decodescript"."""
|
"""Tests decoding scripts via RPC command "decodescript"."""
|
||||||
@ -131,7 +131,7 @@ class DecodeScriptTest(BitcoinTestFramework):
|
|||||||
assert_equal('OP_DUP OP_HASH160 dc863734a218bfe83ef770ee9d41a27f824a6e56 OP_EQUALVERIFY OP_CHECKSIG', rpc_result['vout'][0]['scriptPubKey']['asm'])
|
assert_equal('OP_DUP OP_HASH160 dc863734a218bfe83ef770ee9d41a27f824a6e56 OP_EQUALVERIFY OP_CHECKSIG', rpc_result['vout'][0]['scriptPubKey']['asm'])
|
||||||
assert_equal('OP_HASH160 2a5edea39971049a540474c6a99edf0aa4074c58 OP_EQUAL', rpc_result['vout'][1]['scriptPubKey']['asm'])
|
assert_equal('OP_HASH160 2a5edea39971049a540474c6a99edf0aa4074c58 OP_EQUAL', rpc_result['vout'][1]['scriptPubKey']['asm'])
|
||||||
txSave = CTransaction()
|
txSave = CTransaction()
|
||||||
txSave.deserialize(StringIO(unhexlify(tx)))
|
txSave.deserialize(BytesIO(unhexlify(tx)))
|
||||||
|
|
||||||
# make sure that a specifically crafted op_return value will not pass all the IsDERSignature checks and then get decoded as a sighash type
|
# make sure that a specifically crafted op_return value will not pass all the IsDERSignature checks and then get decoded as a sighash type
|
||||||
tx = '01000000015ded05872fdbda629c7d3d02b194763ce3b9b1535ea884e3c8e765d42e316724020000006b48304502204c10d4064885c42638cbff3585915b322de33762598321145ba033fc796971e2022100bb153ad3baa8b757e30a2175bd32852d2e1cb9080f84d7e32fcdfd667934ef1b012103163c0ff73511ea1743fb5b98384a2ff09dd06949488028fd819f4d83f56264efffffffff0200000000000000000b6a0930060201000201000180380100000000001976a9141cabd296e753837c086da7a45a6c2fe0d49d7b7b88ac00000000'
|
tx = '01000000015ded05872fdbda629c7d3d02b194763ce3b9b1535ea884e3c8e765d42e316724020000006b48304502204c10d4064885c42638cbff3585915b322de33762598321145ba033fc796971e2022100bb153ad3baa8b757e30a2175bd32852d2e1cb9080f84d7e32fcdfd667934ef1b012103163c0ff73511ea1743fb5b98384a2ff09dd06949488028fd819f4d83f56264efffffffff0200000000000000000b6a0930060201000201000180380100000000001976a9141cabd296e753837c086da7a45a6c2fe0d49d7b7b88ac00000000'
|
||||||
|
@ -32,7 +32,7 @@ class DisableWalletTest (BitcoinTestFramework):
|
|||||||
# Checking mining to an address without a wallet
|
# Checking mining to an address without a wallet
|
||||||
try:
|
try:
|
||||||
self.nodes[0].generatetoaddress(1, 'mneYUmWYsuk7kySiURxCi3AGxrAqZxLgPZ')
|
self.nodes[0].generatetoaddress(1, 'mneYUmWYsuk7kySiURxCi3AGxrAqZxLgPZ')
|
||||||
except JSONRPCException,e:
|
except JSONRPCException as e:
|
||||||
assert("Invalid address" not in e.error['message'])
|
assert("Invalid address" not in e.error['message'])
|
||||||
assert("ProcessNewBlock, block not accepted" not in e.error['message'])
|
assert("ProcessNewBlock, block not accepted" not in e.error['message'])
|
||||||
assert("Couldn't create new block" not in e.error['message'])
|
assert("Couldn't create new block" not in e.error['message'])
|
||||||
@ -40,7 +40,7 @@ class DisableWalletTest (BitcoinTestFramework):
|
|||||||
try:
|
try:
|
||||||
self.nodes[0].generatetoaddress(1, '3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy')
|
self.nodes[0].generatetoaddress(1, '3J98t1WpEZ73CNmQviecrnyiWrnqRhWNLy')
|
||||||
raise AssertionError("Must not mine to invalid address!")
|
raise AssertionError("Must not mine to invalid address!")
|
||||||
except JSONRPCException,e:
|
except JSONRPCException as e:
|
||||||
assert("Invalid address" in e.error['message'])
|
assert("Invalid address" in e.error['message'])
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
@ -209,7 +209,7 @@ class RawTransactionsTest(BitcoinTestFramework):
|
|||||||
matchingOuts = 0
|
matchingOuts = 0
|
||||||
for i, out in enumerate(dec_tx['vout']):
|
for i, out in enumerate(dec_tx['vout']):
|
||||||
totalOut += out['value']
|
totalOut += out['value']
|
||||||
if outputs.has_key(out['scriptPubKey']['addresses'][0]):
|
if out['scriptPubKey']['addresses'][0] in outputs:
|
||||||
matchingOuts+=1
|
matchingOuts+=1
|
||||||
else:
|
else:
|
||||||
assert_equal(i, rawtxfund['changepos'])
|
assert_equal(i, rawtxfund['changepos'])
|
||||||
@ -249,7 +249,7 @@ class RawTransactionsTest(BitcoinTestFramework):
|
|||||||
matchingOuts = 0
|
matchingOuts = 0
|
||||||
for out in dec_tx['vout']:
|
for out in dec_tx['vout']:
|
||||||
totalOut += out['value']
|
totalOut += out['value']
|
||||||
if outputs.has_key(out['scriptPubKey']['addresses'][0]):
|
if out['scriptPubKey']['addresses'][0] in outputs:
|
||||||
matchingOuts+=1
|
matchingOuts+=1
|
||||||
|
|
||||||
assert_equal(matchingOuts, 1)
|
assert_equal(matchingOuts, 1)
|
||||||
@ -291,7 +291,7 @@ class RawTransactionsTest(BitcoinTestFramework):
|
|||||||
matchingOuts = 0
|
matchingOuts = 0
|
||||||
for out in dec_tx['vout']:
|
for out in dec_tx['vout']:
|
||||||
totalOut += out['value']
|
totalOut += out['value']
|
||||||
if outputs.has_key(out['scriptPubKey']['addresses'][0]):
|
if out['scriptPubKey']['addresses'][0] in outputs:
|
||||||
matchingOuts+=1
|
matchingOuts+=1
|
||||||
|
|
||||||
assert_equal(matchingOuts, 2)
|
assert_equal(matchingOuts, 2)
|
||||||
@ -309,7 +309,7 @@ class RawTransactionsTest(BitcoinTestFramework):
|
|||||||
try:
|
try:
|
||||||
rawtxfund = self.nodes[2].fundrawtransaction(rawtx)
|
rawtxfund = self.nodes[2].fundrawtransaction(rawtx)
|
||||||
raise AssertionError("Spent more than available")
|
raise AssertionError("Spent more than available")
|
||||||
except JSONRPCException,e:
|
except JSONRPCException as e:
|
||||||
assert("Insufficient" in e.error['message'])
|
assert("Insufficient" in e.error['message'])
|
||||||
|
|
||||||
|
|
||||||
|
@ -82,7 +82,7 @@ class ImportPrunedFundsTest(BitcoinTestFramework):
|
|||||||
#Import with no affiliated address
|
#Import with no affiliated address
|
||||||
try:
|
try:
|
||||||
result1 = self.nodes[1].importprunedfunds(rawtxn1, proof1, "")
|
result1 = self.nodes[1].importprunedfunds(rawtxn1, proof1, "")
|
||||||
except JSONRPCException,e:
|
except JSONRPCException as e:
|
||||||
errorString = e.error['message']
|
errorString = e.error['message']
|
||||||
|
|
||||||
assert('No addresses' in errorString)
|
assert('No addresses' in errorString)
|
||||||
@ -119,7 +119,7 @@ class ImportPrunedFundsTest(BitcoinTestFramework):
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
self.nodes[1].removeprunedfunds(txnid1)
|
self.nodes[1].removeprunedfunds(txnid1)
|
||||||
except JSONRPCException,e:
|
except JSONRPCException as e:
|
||||||
errorString = e.error['message']
|
errorString = e.error['message']
|
||||||
|
|
||||||
assert('does not exist' in errorString)
|
assert('does not exist' in errorString)
|
||||||
|
@ -46,7 +46,7 @@ class KeyPoolTest(BitcoinTestFramework):
|
|||||||
try:
|
try:
|
||||||
addr = nodes[0].getnewaddress()
|
addr = nodes[0].getnewaddress()
|
||||||
raise AssertionError('Keypool should be exhausted after one address')
|
raise AssertionError('Keypool should be exhausted after one address')
|
||||||
except JSONRPCException,e:
|
except JSONRPCException as e:
|
||||||
assert(e.error['code']==-12)
|
assert(e.error['code']==-12)
|
||||||
|
|
||||||
# put three new keys in the keypool
|
# put three new keys in the keypool
|
||||||
@ -66,7 +66,7 @@ class KeyPoolTest(BitcoinTestFramework):
|
|||||||
try:
|
try:
|
||||||
addr = nodes[0].getrawchangeaddress()
|
addr = nodes[0].getrawchangeaddress()
|
||||||
raise AssertionError('Keypool should be exhausted after three addresses')
|
raise AssertionError('Keypool should be exhausted after three addresses')
|
||||||
except JSONRPCException,e:
|
except JSONRPCException as e:
|
||||||
assert(e.error['code']==-12)
|
assert(e.error['code']==-12)
|
||||||
|
|
||||||
# refill keypool with three new addresses
|
# refill keypool with three new addresses
|
||||||
@ -84,7 +84,7 @@ class KeyPoolTest(BitcoinTestFramework):
|
|||||||
try:
|
try:
|
||||||
nodes[0].generate(1)
|
nodes[0].generate(1)
|
||||||
raise AssertionError('Keypool should be exhausted after three addesses')
|
raise AssertionError('Keypool should be exhausted after three addesses')
|
||||||
except JSONRPCException,e:
|
except JSONRPCException as e:
|
||||||
assert(e.error['code']==-12)
|
assert(e.error['code']==-12)
|
||||||
|
|
||||||
def setup_chain(self):
|
def setup_chain(self):
|
||||||
|
@ -8,12 +8,12 @@
|
|||||||
from test_framework.test_framework import BitcoinTestFramework
|
from test_framework.test_framework import BitcoinTestFramework
|
||||||
from test_framework.util import *
|
from test_framework.util import *
|
||||||
from test_framework.mininode import CTransaction, COIN
|
from test_framework.mininode import CTransaction, COIN
|
||||||
import cStringIO
|
from io import BytesIO
|
||||||
import binascii
|
import binascii
|
||||||
|
|
||||||
def txFromHex(hexstring):
|
def txFromHex(hexstring):
|
||||||
tx = CTransaction()
|
tx = CTransaction()
|
||||||
f = cStringIO.StringIO(binascii.unhexlify(hexstring))
|
f = BytesIO(binascii.unhexlify(hexstring))
|
||||||
tx.deserialize(f)
|
tx.deserialize(f)
|
||||||
return tx
|
return tx
|
||||||
|
|
||||||
|
@ -59,7 +59,7 @@ class RawTransactionsTest(BitcoinTestFramework):
|
|||||||
errorString = ""
|
errorString = ""
|
||||||
try:
|
try:
|
||||||
rawtx = self.nodes[2].sendrawtransaction(rawtx['hex'])
|
rawtx = self.nodes[2].sendrawtransaction(rawtx['hex'])
|
||||||
except JSONRPCException,e:
|
except JSONRPCException as e:
|
||||||
errorString = e.error['message']
|
errorString = e.error['message']
|
||||||
|
|
||||||
assert("Missing inputs" in errorString)
|
assert("Missing inputs" in errorString)
|
||||||
|
@ -11,8 +11,9 @@
|
|||||||
from test_framework.test_framework import BitcoinTestFramework
|
from test_framework.test_framework import BitcoinTestFramework
|
||||||
from test_framework.util import *
|
from test_framework.util import *
|
||||||
from struct import *
|
from struct import *
|
||||||
|
from io import BytesIO
|
||||||
|
from codecs import encode
|
||||||
import binascii
|
import binascii
|
||||||
import StringIO
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
import http.client as httplib
|
import http.client as httplib
|
||||||
@ -146,7 +147,7 @@ class RESTTest (BitcoinTestFramework):
|
|||||||
binaryRequest += pack("i", 0)
|
binaryRequest += pack("i", 0)
|
||||||
|
|
||||||
bin_response = http_post_call(url.hostname, url.port, '/rest/getutxos'+self.FORMAT_SEPARATOR+'bin', binaryRequest)
|
bin_response = http_post_call(url.hostname, url.port, '/rest/getutxos'+self.FORMAT_SEPARATOR+'bin', binaryRequest)
|
||||||
output = StringIO.StringIO()
|
output = BytesIO()
|
||||||
output.write(bin_response)
|
output.write(bin_response)
|
||||||
output.seek(0)
|
output.seek(0)
|
||||||
chainHeight = unpack("i", output.read(4))[0]
|
chainHeight = unpack("i", output.read(4))[0]
|
||||||
@ -233,7 +234,7 @@ class RESTTest (BitcoinTestFramework):
|
|||||||
assert_equal(response_hex.status, 200)
|
assert_equal(response_hex.status, 200)
|
||||||
assert_greater_than(int(response_hex.getheader('content-length')), 160)
|
assert_greater_than(int(response_hex.getheader('content-length')), 160)
|
||||||
response_hex_str = response_hex.read()
|
response_hex_str = response_hex.read()
|
||||||
assert_equal(response_str.encode("hex")[0:160], response_hex_str[0:160])
|
assert_equal(encode(response_str, "hex")[0:160], response_hex_str[0:160])
|
||||||
|
|
||||||
# compare with hex block header
|
# compare with hex block header
|
||||||
response_header_hex = http_get_call(url.hostname, url.port, '/rest/headers/1/'+bb_hash+self.FORMAT_SEPARATOR+"hex", True)
|
response_header_hex = http_get_call(url.hostname, url.port, '/rest/headers/1/'+bb_hash+self.FORMAT_SEPARATOR+"hex", True)
|
||||||
@ -241,7 +242,7 @@ class RESTTest (BitcoinTestFramework):
|
|||||||
assert_greater_than(int(response_header_hex.getheader('content-length')), 160)
|
assert_greater_than(int(response_header_hex.getheader('content-length')), 160)
|
||||||
response_header_hex_str = response_header_hex.read()
|
response_header_hex_str = response_header_hex.read()
|
||||||
assert_equal(response_hex_str[0:160], response_header_hex_str[0:160])
|
assert_equal(response_hex_str[0:160], response_header_hex_str[0:160])
|
||||||
assert_equal(response_header_str.encode("hex")[0:160], response_header_hex_str[0:160])
|
assert_equal(encode(response_header_str, "hex")[0:160], response_header_hex_str[0:160])
|
||||||
|
|
||||||
# check json format
|
# check json format
|
||||||
block_json_string = http_get_call(url.hostname, url.port, '/rest/block/'+bb_hash+self.FORMAT_SEPARATOR+'json')
|
block_json_string = http_get_call(url.hostname, url.port, '/rest/block/'+bb_hash+self.FORMAT_SEPARATOR+'json')
|
||||||
|
@ -105,7 +105,7 @@ def check_estimates(node, fees_seen, max_invalid, print_estimates = True):
|
|||||||
print([str(all_estimates[e-1]) for e in [1,2,3,6,15,25]])
|
print([str(all_estimates[e-1]) for e in [1,2,3,6,15,25]])
|
||||||
delta = 1.0e-6 # account for rounding error
|
delta = 1.0e-6 # account for rounding error
|
||||||
last_e = max(fees_seen)
|
last_e = max(fees_seen)
|
||||||
for e in filter(lambda x: x >= 0, all_estimates):
|
for e in [x for x in all_estimates if x >= 0]:
|
||||||
# Estimates should be within the bounds of what transactions fees actually were:
|
# Estimates should be within the bounds of what transactions fees actually were:
|
||||||
if float(e)+delta < min(fees_seen) or float(e)-delta > max(fees_seen):
|
if float(e)+delta < min(fees_seen) or float(e)-delta > max(fees_seen):
|
||||||
raise AssertionError("Estimated fee (%f) out of range (%f,%f)"
|
raise AssertionError("Estimated fee (%f) out of range (%f,%f)"
|
||||||
|
@ -3,8 +3,9 @@
|
|||||||
# and for constructing a getheaders message
|
# and for constructing a getheaders message
|
||||||
#
|
#
|
||||||
|
|
||||||
from mininode import *
|
from .mininode import *
|
||||||
import dbm
|
import dbm
|
||||||
|
from io import BytesIO
|
||||||
|
|
||||||
class BlockStore(object):
|
class BlockStore(object):
|
||||||
def __init__(self, datadir):
|
def __init__(self, datadir):
|
||||||
@ -21,7 +22,7 @@ class BlockStore(object):
|
|||||||
serialized_block = self.blockDB[repr(blockhash)]
|
serialized_block = self.blockDB[repr(blockhash)]
|
||||||
except KeyError:
|
except KeyError:
|
||||||
return None
|
return None
|
||||||
f = cStringIO.StringIO(serialized_block)
|
f = BytesIO(serialized_block)
|
||||||
ret = CBlock()
|
ret = CBlock()
|
||||||
ret.deserialize(f)
|
ret.deserialize(f)
|
||||||
ret.calc_sha256()
|
ret.calc_sha256()
|
||||||
@ -115,7 +116,7 @@ class TxStore(object):
|
|||||||
serialized_tx = self.txDB[repr(txhash)]
|
serialized_tx = self.txDB[repr(txhash)]
|
||||||
except KeyError:
|
except KeyError:
|
||||||
return None
|
return None
|
||||||
f = cStringIO.StringIO(serialized_tx)
|
f = BytesIO(serialized_tx)
|
||||||
ret = CTransaction()
|
ret = CTransaction()
|
||||||
ret.deserialize(f)
|
ret.deserialize(f)
|
||||||
ret.calc_sha256()
|
ret.calc_sha256()
|
||||||
|
@ -4,8 +4,8 @@
|
|||||||
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||||
#
|
#
|
||||||
|
|
||||||
from mininode import *
|
from .mininode import *
|
||||||
from script import CScript, OP_TRUE, OP_CHECKSIG
|
from .script import CScript, OP_TRUE, OP_CHECKSIG
|
||||||
|
|
||||||
# Create a block (with regtest difficulty)
|
# Create a block (with regtest difficulty)
|
||||||
def create_block(hashprev, coinbase, nTime=None):
|
def create_block(hashprev, coinbase, nTime=None):
|
||||||
|
@ -4,9 +4,9 @@
|
|||||||
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||||
#
|
#
|
||||||
|
|
||||||
from mininode import *
|
from .mininode import *
|
||||||
from blockstore import BlockStore, TxStore
|
from .blockstore import BlockStore, TxStore
|
||||||
from util import p2p_port
|
from .util import p2p_port
|
||||||
|
|
||||||
'''
|
'''
|
||||||
This is a tool for comparing two or more bitcoinds to each other
|
This is a tool for comparing two or more bitcoinds to each other
|
||||||
|
@ -24,7 +24,8 @@ import binascii
|
|||||||
import time
|
import time
|
||||||
import sys
|
import sys
|
||||||
import random
|
import random
|
||||||
import cStringIO
|
from io import BytesIO
|
||||||
|
from codecs import encode
|
||||||
import hashlib
|
import hashlib
|
||||||
from threading import RLock
|
from threading import RLock
|
||||||
from threading import Thread
|
from threading import Thread
|
||||||
@ -75,12 +76,12 @@ def deser_string(f):
|
|||||||
|
|
||||||
def ser_string(s):
|
def ser_string(s):
|
||||||
if len(s) < 253:
|
if len(s) < 253:
|
||||||
return chr(len(s)) + s
|
return struct.pack("B", len(s)) + s
|
||||||
elif len(s) < 0x10000:
|
elif len(s) < 0x10000:
|
||||||
return chr(253) + struct.pack("<H", len(s)) + s
|
return struct.pack("B", 253) + struct.pack("<H", len(s)) + s
|
||||||
elif len(s) < 0x100000000L:
|
elif len(s) < 0x100000000L:
|
||||||
return chr(254) + struct.pack("<I", len(s)) + s
|
return struct.pack("B", 254) + struct.pack("<I", len(s)) + s
|
||||||
return chr(255) + struct.pack("<Q", len(s)) + s
|
return struct.pack("B", 255) + struct.pack("<Q", len(s)) + s
|
||||||
|
|
||||||
|
|
||||||
def deser_uint256(f):
|
def deser_uint256(f):
|
||||||
@ -132,13 +133,13 @@ def deser_vector(f, c):
|
|||||||
def ser_vector(l):
|
def ser_vector(l):
|
||||||
r = ""
|
r = ""
|
||||||
if len(l) < 253:
|
if len(l) < 253:
|
||||||
r = chr(len(l))
|
r = struct.pack("B", len(l))
|
||||||
elif len(l) < 0x10000:
|
elif len(l) < 0x10000:
|
||||||
r = chr(253) + struct.pack("<H", len(l))
|
r = struct.pack("B", 253) + struct.pack("<H", len(l))
|
||||||
elif len(l) < 0x100000000L:
|
elif len(l) < 0x100000000L:
|
||||||
r = chr(254) + struct.pack("<I", len(l))
|
r = struct.pack("B", 254) + struct.pack("<I", len(l))
|
||||||
else:
|
else:
|
||||||
r = chr(255) + struct.pack("<Q", len(l))
|
r = struct.pack("B", 255) + struct.pack("<Q", len(l))
|
||||||
for i in l:
|
for i in l:
|
||||||
r += i.serialize()
|
r += i.serialize()
|
||||||
return r
|
return r
|
||||||
@ -162,13 +163,13 @@ def deser_uint256_vector(f):
|
|||||||
def ser_uint256_vector(l):
|
def ser_uint256_vector(l):
|
||||||
r = ""
|
r = ""
|
||||||
if len(l) < 253:
|
if len(l) < 253:
|
||||||
r = chr(len(l))
|
r = struct.pack("B", len(l))
|
||||||
elif len(l) < 0x10000:
|
elif len(l) < 0x10000:
|
||||||
r = chr(253) + struct.pack("<H", len(l))
|
r = struct.pack("B", 253) + struct.pack("<H", len(l))
|
||||||
elif len(l) < 0x100000000L:
|
elif len(l) < 0x100000000L:
|
||||||
r = chr(254) + struct.pack("<I", len(l))
|
r = struct.pack("B", 254) + struct.pack("<I", len(l))
|
||||||
else:
|
else:
|
||||||
r = chr(255) + struct.pack("<Q", len(l))
|
r = struct.pack("B", 255) + struct.pack("<Q", len(l))
|
||||||
for i in l:
|
for i in l:
|
||||||
r += ser_uint256(i)
|
r += ser_uint256(i)
|
||||||
return r
|
return r
|
||||||
@ -192,13 +193,13 @@ def deser_string_vector(f):
|
|||||||
def ser_string_vector(l):
|
def ser_string_vector(l):
|
||||||
r = ""
|
r = ""
|
||||||
if len(l) < 253:
|
if len(l) < 253:
|
||||||
r = chr(len(l))
|
r = struct.pack("B", len(l))
|
||||||
elif len(l) < 0x10000:
|
elif len(l) < 0x10000:
|
||||||
r = chr(253) + struct.pack("<H", len(l))
|
r = struct.pack("B", 253) + struct.pack("<H", len(l))
|
||||||
elif len(l) < 0x100000000L:
|
elif len(l) < 0x100000000L:
|
||||||
r = chr(254) + struct.pack("<I", len(l))
|
r = struct.pack("B", 254) + struct.pack("<I", len(l))
|
||||||
else:
|
else:
|
||||||
r = chr(255) + struct.pack("<Q", len(l))
|
r = struct.pack("B", 255) + struct.pack("<Q", len(l))
|
||||||
for sv in l:
|
for sv in l:
|
||||||
r += ser_string(sv)
|
r += ser_string(sv)
|
||||||
return r
|
return r
|
||||||
@ -222,20 +223,20 @@ def deser_int_vector(f):
|
|||||||
def ser_int_vector(l):
|
def ser_int_vector(l):
|
||||||
r = ""
|
r = ""
|
||||||
if len(l) < 253:
|
if len(l) < 253:
|
||||||
r = chr(len(l))
|
r = struct.pack("B", len(l))
|
||||||
elif len(l) < 0x10000:
|
elif len(l) < 0x10000:
|
||||||
r = chr(253) + struct.pack("<H", len(l))
|
r = struct.pack("B", 253) + struct.pack("<H", len(l))
|
||||||
elif len(l) < 0x100000000L:
|
elif len(l) < 0x100000000L:
|
||||||
r = chr(254) + struct.pack("<I", len(l))
|
r = struct.pack("B", 254) + struct.pack("<I", len(l))
|
||||||
else:
|
else:
|
||||||
r = chr(255) + struct.pack("<Q", len(l))
|
r = struct.pack("B", 255) + struct.pack("<Q", len(l))
|
||||||
for i in l:
|
for i in l:
|
||||||
r += struct.pack("<i", i)
|
r += struct.pack("<i", i)
|
||||||
return r
|
return r
|
||||||
|
|
||||||
# Deserialize from a hex string representation (eg from RPC)
|
# Deserialize from a hex string representation (eg from RPC)
|
||||||
def FromHex(obj, hex_string):
|
def FromHex(obj, hex_string):
|
||||||
obj.deserialize(cStringIO.StringIO(binascii.unhexlify(hex_string)))
|
obj.deserialize(BytesIO(binascii.unhexlify(hex_string)))
|
||||||
return obj
|
return obj
|
||||||
|
|
||||||
# Convert a binary-serializable object to hex (eg for submission via RPC)
|
# Convert a binary-serializable object to hex (eg for submission via RPC)
|
||||||
@ -423,7 +424,7 @@ class CTransaction(object):
|
|||||||
def calc_sha256(self):
|
def calc_sha256(self):
|
||||||
if self.sha256 is None:
|
if self.sha256 is None:
|
||||||
self.sha256 = uint256_from_str(hash256(self.serialize()))
|
self.sha256 = uint256_from_str(hash256(self.serialize()))
|
||||||
self.hash = hash256(self.serialize())[::-1].encode('hex_codec')
|
self.hash = encode(hash256(self.serialize())[::-1], 'hex')
|
||||||
|
|
||||||
def is_valid(self):
|
def is_valid(self):
|
||||||
self.calc_sha256()
|
self.calc_sha256()
|
||||||
@ -492,7 +493,7 @@ class CBlockHeader(object):
|
|||||||
r += struct.pack("<I", self.nBits)
|
r += struct.pack("<I", self.nBits)
|
||||||
r += struct.pack("<I", self.nNonce)
|
r += struct.pack("<I", self.nNonce)
|
||||||
self.sha256 = uint256_from_str(hash256(r))
|
self.sha256 = uint256_from_str(hash256(r))
|
||||||
self.hash = hash256(r)[::-1].encode('hex_codec')
|
self.hash = encode(hash256(r)[::-1], 'hex')
|
||||||
|
|
||||||
def rehash(self):
|
def rehash(self):
|
||||||
self.sha256 = None
|
self.sha256 = None
|
||||||
@ -1281,7 +1282,7 @@ class NodeConn(asyncore.dispatcher):
|
|||||||
raise ValueError("got bad checksum " + repr(self.recvbuf))
|
raise ValueError("got bad checksum " + repr(self.recvbuf))
|
||||||
self.recvbuf = self.recvbuf[4+12+4+4+msglen:]
|
self.recvbuf = self.recvbuf[4+12+4+4+msglen:]
|
||||||
if command in self.messagemap:
|
if command in self.messagemap:
|
||||||
f = cStringIO.StringIO(msg)
|
f = BytesIO(msg)
|
||||||
t = self.messagemap[command]()
|
t = self.messagemap[command]()
|
||||||
t.deserialize(f)
|
t.deserialize(f)
|
||||||
self.got_message(t)
|
self.got_message(t)
|
||||||
|
@ -117,7 +117,7 @@ class Socks5Connection(object):
|
|||||||
self.serv.queue.put(cmdin)
|
self.serv.queue.put(cmdin)
|
||||||
print('Proxy: ', cmdin)
|
print('Proxy: ', cmdin)
|
||||||
# Fall through to disconnect
|
# Fall through to disconnect
|
||||||
except Exception,e:
|
except Exception as e:
|
||||||
traceback.print_exc(file=sys.stderr)
|
traceback.print_exc(file=sys.stderr)
|
||||||
self.serv.queue.put(e)
|
self.serv.queue.put(e)
|
||||||
finally:
|
finally:
|
||||||
|
@ -26,7 +26,7 @@ from .util import (
|
|||||||
check_json_precision,
|
check_json_precision,
|
||||||
initialize_chain_clean,
|
initialize_chain_clean,
|
||||||
)
|
)
|
||||||
from authproxy import AuthServiceProxy, JSONRPCException
|
from .authproxy import AuthServiceProxy, JSONRPCException
|
||||||
|
|
||||||
|
|
||||||
class BitcoinTestFramework(object):
|
class BitcoinTestFramework(object):
|
||||||
@ -140,7 +140,7 @@ class BitcoinTestFramework(object):
|
|||||||
print("JSONRPC error: "+e.error['message'])
|
print("JSONRPC error: "+e.error['message'])
|
||||||
traceback.print_tb(sys.exc_info()[2])
|
traceback.print_tb(sys.exc_info()[2])
|
||||||
except AssertionError as e:
|
except AssertionError as e:
|
||||||
print("Assertion failed: "+e.message)
|
print("Assertion failed: "+ str(e))
|
||||||
traceback.print_tb(sys.exc_info()[2])
|
traceback.print_tb(sys.exc_info()[2])
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print("Unexpected exception caught during testing: "+str(e))
|
print("Unexpected exception caught during testing: "+str(e))
|
||||||
|
@ -249,7 +249,7 @@ class WalletTest (BitcoinTestFramework):
|
|||||||
errorString = ""
|
errorString = ""
|
||||||
try:
|
try:
|
||||||
txId = self.nodes[0].sendtoaddress(self.nodes[2].getnewaddress(), "1f-4")
|
txId = self.nodes[0].sendtoaddress(self.nodes[2].getnewaddress(), "1f-4")
|
||||||
except JSONRPCException,e:
|
except JSONRPCException as e:
|
||||||
errorString = e.error['message']
|
errorString = e.error['message']
|
||||||
|
|
||||||
assert("Invalid amount" in errorString)
|
assert("Invalid amount" in errorString)
|
||||||
@ -257,7 +257,7 @@ class WalletTest (BitcoinTestFramework):
|
|||||||
errorString = ""
|
errorString = ""
|
||||||
try:
|
try:
|
||||||
self.nodes[0].generate("2") #use a string to as block amount parameter must fail because it's not interpreted as amount
|
self.nodes[0].generate("2") #use a string to as block amount parameter must fail because it's not interpreted as amount
|
||||||
except JSONRPCException,e:
|
except JSONRPCException as e:
|
||||||
errorString = e.error['message']
|
errorString = e.error['message']
|
||||||
|
|
||||||
assert("not an integer" in errorString)
|
assert("not an integer" in errorString)
|
||||||
@ -271,7 +271,7 @@ class WalletTest (BitcoinTestFramework):
|
|||||||
# Check that the txid and balance is found by node1
|
# Check that the txid and balance is found by node1
|
||||||
try:
|
try:
|
||||||
self.nodes[1].gettransaction(cbTxId)
|
self.nodes[1].gettransaction(cbTxId)
|
||||||
except JSONRPCException,e:
|
except JSONRPCException as e:
|
||||||
assert("Invalid or non-wallet transaction id" not in e.error['message'])
|
assert("Invalid or non-wallet transaction id" not in e.error['message'])
|
||||||
|
|
||||||
#check if wallet or blochchain maintenance changes the balance
|
#check if wallet or blochchain maintenance changes the balance
|
||||||
|
Loading…
x
Reference in New Issue
Block a user