aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWladimir J. van der Laan <laanwj@gmail.com>2016-04-14 12:14:24 +0200
committerWladimir J. van der Laan <laanwj@gmail.com>2016-04-14 12:14:42 +0200
commit72c54e388315861ce5827574e679784287d9f5d1 (patch)
treef85dc2633849534595433c873fee9f87809f860e
parentb778e5993af98ccb1659bc40d3d042ac687fe16c (diff)
parentd12760b16ac30734b5e3b047df8aaf6564e927db (diff)
Merge #7863: getblockchaininfo: make bip9_softforks an object, not an array.
d12760b rpc-tests: handle KeyError nicely in test_framework.py (Rusty Russell) 85c807c getblockchaininfo: make bip9_softforks an object, not an array. (Rusty Russell)
-rwxr-xr-xqa/rpc-tests/bip9-softforks.py6
-rwxr-xr-xqa/rpc-tests/test_framework/test_framework.py3
-rw-r--r--qa/rpc-tests/test_framework/util.py5
-rw-r--r--src/rpc/blockchain.cpp14
4 files changed, 11 insertions, 17 deletions
diff --git a/qa/rpc-tests/bip9-softforks.py b/qa/rpc-tests/bip9-softforks.py
index 98975e7193..e63343d352 100755
--- a/qa/rpc-tests/bip9-softforks.py
+++ b/qa/rpc-tests/bip9-softforks.py
@@ -79,11 +79,7 @@ class BIP9SoftForksTest(ComparisonTestFramework):
def get_bip9_status(self, key):
info = self.nodes[0].getblockchaininfo()
- for row in info['bip9_softforks']:
- if row['id'] == key:
- return row
- raise IndexError ('key:"%s" not found' % key)
-
+ return info['bip9_softforks'][key]
def test_BIP(self, bipName, activated_version, invalidate, invalidatePostSignature):
# generate some coins for later
diff --git a/qa/rpc-tests/test_framework/test_framework.py b/qa/rpc-tests/test_framework/test_framework.py
index 19ee472609..3b08cd1384 100755
--- a/qa/rpc-tests/test_framework/test_framework.py
+++ b/qa/rpc-tests/test_framework/test_framework.py
@@ -142,6 +142,9 @@ class BitcoinTestFramework(object):
except AssertionError as e:
print("Assertion failed: "+ str(e))
traceback.print_tb(sys.exc_info()[2])
+ except KeyError as e:
+ print("key not found: "+ str(e))
+ traceback.print_tb(sys.exc_info()[2])
except Exception as e:
print("Unexpected exception caught during testing: "+str(e))
traceback.print_tb(sys.exc_info()[2])
diff --git a/qa/rpc-tests/test_framework/util.py b/qa/rpc-tests/test_framework/util.py
index d9fe0f75f2..acb7f8a6b4 100644
--- a/qa/rpc-tests/test_framework/util.py
+++ b/qa/rpc-tests/test_framework/util.py
@@ -548,7 +548,4 @@ def create_lots_of_big_transactions(node, txouts, utxos, fee):
def get_bip9_status(node, key):
info = node.getblockchaininfo()
- for row in info['bip9_softforks']:
- if row['id'] == key:
- return row
- raise IndexError ('key:"%s" not found' % key)
+ return info['bip9_softforks'][key]
diff --git a/src/rpc/blockchain.cpp b/src/rpc/blockchain.cpp
index 34637b9f7e..7a01a10b7d 100644
--- a/src/rpc/blockchain.cpp
+++ b/src/rpc/blockchain.cpp
@@ -608,10 +608,9 @@ static UniValue SoftForkDesc(const std::string &name, int version, CBlockIndex*
return rv;
}
-static UniValue BIP9SoftForkDesc(const std::string& name, const Consensus::Params& consensusParams, Consensus::DeploymentPos id)
+static UniValue BIP9SoftForkDesc(const Consensus::Params& consensusParams, Consensus::DeploymentPos id)
{
UniValue rv(UniValue::VOBJ);
- rv.push_back(Pair("id", name));
const ThresholdState thresholdState = VersionBitsTipState(consensusParams, id);
switch (thresholdState) {
case THRESHOLD_DEFINED: rv.push_back(Pair("status", "defined")); break;
@@ -660,15 +659,14 @@ UniValue getblockchaininfo(const UniValue& params, bool fHelp)
" \"reject\": { ... } (object) progress toward rejecting pre-softfork blocks (same fields as \"enforce\")\n"
" }, ...\n"
" ],\n"
- " \"bip9_softforks\": [ (array) status of BIP9 softforks in progress\n"
- " {\n"
- " \"id\": \"xxxx\", (string) name of the softfork\n"
+ " \"bip9_softforks\": { (object) status of BIP9 softforks in progress\n"
+ " \"xxxx\" : { (string) name of the softfork\n"
" \"status\": \"xxxx\", (string) one of \"defined\", \"started\", \"lockedin\", \"active\", \"failed\"\n"
" \"bit\": xx, (numeric) the bit, 0-28, in the block version field used to signal this soft fork\n"
" \"startTime\": xx, (numeric) the minimum median time past of a block at which the bit gains its meaning\n"
" \"timeout\": xx (numeric) the median time past of a block at which the deployment is considered failed if not yet locked in\n"
" }\n"
- " ]\n"
+ " }\n"
"}\n"
"\nExamples:\n"
+ HelpExampleCli("getblockchaininfo", "")
@@ -691,11 +689,11 @@ UniValue getblockchaininfo(const UniValue& params, bool fHelp)
const Consensus::Params& consensusParams = Params().GetConsensus();
CBlockIndex* tip = chainActive.Tip();
UniValue softforks(UniValue::VARR);
- UniValue bip9_softforks(UniValue::VARR);
+ UniValue bip9_softforks(UniValue::VOBJ);
softforks.push_back(SoftForkDesc("bip34", 2, tip, consensusParams));
softforks.push_back(SoftForkDesc("bip66", 3, tip, consensusParams));
softforks.push_back(SoftForkDesc("bip65", 4, tip, consensusParams));
- bip9_softforks.push_back(BIP9SoftForkDesc("csv", consensusParams, Consensus::DEPLOYMENT_CSV));
+ bip9_softforks.push_back(Pair("csv", BIP9SoftForkDesc(consensusParams, Consensus::DEPLOYMENT_CSV)));
obj.push_back(Pair("softforks", softforks));
obj.push_back(Pair("bip9_softforks", bip9_softforks));