mirror of
https://github.com/dashpay/dash.git
synced 2024-12-28 13:32:47 +01:00
Merge pull request #5379
01dc2d8
[REST] add REST interface tests in rpc-test section (Jonas Schnelli)
This commit is contained in:
commit
7026cbd6db
@ -21,6 +21,7 @@ if [ "x${ENABLE_BITCOIND}${ENABLE_UTILS}${ENABLE_WALLET}" = "x111" ]; then
|
|||||||
${BUILDDIR}/qa/rpc-tests/txn_doublespend.py --srcdir "${BUILDDIR}/src"
|
${BUILDDIR}/qa/rpc-tests/txn_doublespend.py --srcdir "${BUILDDIR}/src"
|
||||||
${BUILDDIR}/qa/rpc-tests/txn_doublespend.py --mineblock --srcdir "${BUILDDIR}/src"
|
${BUILDDIR}/qa/rpc-tests/txn_doublespend.py --mineblock --srcdir "${BUILDDIR}/src"
|
||||||
${BUILDDIR}/qa/rpc-tests/getchaintips.py --srcdir "${BUILDDIR}/src"
|
${BUILDDIR}/qa/rpc-tests/getchaintips.py --srcdir "${BUILDDIR}/src"
|
||||||
|
${BUILDDIR}/qa/rpc-tests/rest.py --srcdir "${BUILDDIR}/src"
|
||||||
#${BUILDDIR}/qa/rpc-tests/forknotify.py --srcdir "${BUILDDIR}/src"
|
#${BUILDDIR}/qa/rpc-tests/forknotify.py --srcdir "${BUILDDIR}/src"
|
||||||
else
|
else
|
||||||
echo "No rpc tests to run. Wallet, utils, and bitcoind must all be enabled"
|
echo "No rpc tests to run. Wallet, utils, and bitcoind must all be enabled"
|
||||||
|
62
qa/rpc-tests/rest.py
Executable file
62
qa/rpc-tests/rest.py
Executable file
@ -0,0 +1,62 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
# Copyright (c) 2014 The Bitcoin Core developers
|
||||||
|
# Distributed under the MIT software license, see the accompanying
|
||||||
|
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||||
|
|
||||||
|
#
|
||||||
|
# Test REST interface
|
||||||
|
#
|
||||||
|
|
||||||
|
from test_framework import BitcoinTestFramework
|
||||||
|
from util import *
|
||||||
|
import json
|
||||||
|
|
||||||
|
try:
|
||||||
|
import http.client as httplib
|
||||||
|
except ImportError:
|
||||||
|
import httplib
|
||||||
|
try:
|
||||||
|
import urllib.parse as urlparse
|
||||||
|
except ImportError:
|
||||||
|
import urlparse
|
||||||
|
|
||||||
|
def http_get_call(host, port, path, response_object = 0):
|
||||||
|
conn = httplib.HTTPConnection(host, port)
|
||||||
|
conn.request('GET', path)
|
||||||
|
|
||||||
|
if response_object:
|
||||||
|
return conn.getresponse()
|
||||||
|
|
||||||
|
return conn.getresponse().read()
|
||||||
|
|
||||||
|
|
||||||
|
class RESTTest (BitcoinTestFramework):
|
||||||
|
FORMAT_SEPARATOR = "/"
|
||||||
|
|
||||||
|
def run_test(self):
|
||||||
|
url = urlparse.urlparse(self.nodes[0].url)
|
||||||
|
bb_hash = self.nodes[0].getbestblockhash()
|
||||||
|
|
||||||
|
# check binary format
|
||||||
|
response = http_get_call(url.hostname, url.port, '/rest/block/'+bb_hash+self.FORMAT_SEPARATOR+"bin", True)
|
||||||
|
assert_equal(response.status, 200)
|
||||||
|
assert_greater_than(int(response.getheader('content-length')), 10)
|
||||||
|
|
||||||
|
# check json format
|
||||||
|
json_string = http_get_call(url.hostname, url.port, '/rest/block/'+bb_hash+self.FORMAT_SEPARATOR+'json')
|
||||||
|
json_obj = json.loads(json_string)
|
||||||
|
assert_equal(json_obj['hash'], bb_hash)
|
||||||
|
|
||||||
|
# do tx test
|
||||||
|
tx_hash = json_obj['tx'][0];
|
||||||
|
json_string = http_get_call(url.hostname, url.port, '/rest/tx/'+tx_hash+self.FORMAT_SEPARATOR+"json")
|
||||||
|
json_obj = json.loads(json_string)
|
||||||
|
assert_equal(json_obj['txid'], tx_hash)
|
||||||
|
|
||||||
|
# check hex format response
|
||||||
|
hex_string = http_get_call(url.hostname, url.port, '/rest/tx/'+tx_hash+self.FORMAT_SEPARATOR+"hex", True)
|
||||||
|
assert_equal(response.status, 200)
|
||||||
|
assert_greater_than(int(response.getheader('content-length')), 10)
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
RESTTest ().main ()
|
@ -163,7 +163,7 @@ def start_node(i, dirname, extra_args=None, rpchost=None):
|
|||||||
Start a bitcoind and return RPC connection to it
|
Start a bitcoind and return RPC connection to it
|
||||||
"""
|
"""
|
||||||
datadir = os.path.join(dirname, "node"+str(i))
|
datadir = os.path.join(dirname, "node"+str(i))
|
||||||
args = [ os.getenv("BITCOIND", "bitcoind"), "-datadir="+datadir, "-keypool=1", "-discover=0" ]
|
args = [ os.getenv("BITCOIND", "bitcoind"), "-datadir="+datadir, "-keypool=1", "-discover=0", "-rest" ]
|
||||||
if extra_args is not None: args.extend(extra_args)
|
if extra_args is not None: args.extend(extra_args)
|
||||||
bitcoind_processes[i] = subprocess.Popen(args)
|
bitcoind_processes[i] = subprocess.Popen(args)
|
||||||
devnull = open("/dev/null", "w+")
|
devnull = open("/dev/null", "w+")
|
||||||
@ -327,3 +327,7 @@ def random_transaction(nodes, amount, min_fee, fee_increment, fee_variants):
|
|||||||
def assert_equal(thing1, thing2):
|
def assert_equal(thing1, thing2):
|
||||||
if thing1 != thing2:
|
if thing1 != thing2:
|
||||||
raise AssertionError("%s != %s"%(str(thing1),str(thing2)))
|
raise AssertionError("%s != %s"%(str(thing1),str(thing2)))
|
||||||
|
|
||||||
|
def assert_greater_than(thing1, thing2):
|
||||||
|
if thing1 <= thing2:
|
||||||
|
raise AssertionError("%s <= %s"%(str(thing1),str(thing2)))
|
Loading…
Reference in New Issue
Block a user