From 7a4f8b3401a67e505eaa68fa74974b585a08e23e Mon Sep 17 00:00:00 2001 From: SirSevenG Date: Fri, 2 Aug 2019 03:05:47 +0700 Subject: [PATCH] Prolonged Proxy timeout Added support for multiple test chains --- qa/rpc-tests/nspv_client_test.py | 77 ++++++++++++++++++++++---------- src/tui/lib/tuilib.py | 20 ++++++++- 2 files changed, 73 insertions(+), 24 deletions(-) mode change 100644 => 100755 qa/rpc-tests/nspv_client_test.py diff --git a/qa/rpc-tests/nspv_client_test.py b/qa/rpc-tests/nspv_client_test.py old mode 100644 new mode 100755 index 63b7f78d1..ddc1d8093 --- a/qa/rpc-tests/nspv_client_test.py +++ b/qa/rpc-tests/nspv_client_test.py @@ -7,19 +7,48 @@ import time ''' specify chain ticker (daemon should be up), wif which will be imported and address to which you want to broadcast +change chain parameters if needed or add a new chain to test below added 1 second sleep after each case to surely not face the nSPV server limitation (1 call/second) ''' wif = '' dest_address = '' amount = '0.01' -chain = 'ILN' +chain = 'KMD' if not wif or not dest_address: raise Exception("Please set test wif and address to send transactions to") rpc_proxy = tuilib.def_credentials(chain) +chain_params = {"KMD": { + 'tx_list_address': 'RGShWG446Pv24CKzzxjA23obrzYwNbs1kA', + 'min_chain_height': 1468080, + 'notarization_height': '1468000', + 'prev_notarization_h': 1467980, + 'next_notarization_h': 1468020, + 'hdrs_proof_low': '1468100', + 'hdrs_proof_high': '1468200', + 'numhdrs_expected': 151, + 'tx_proof_id': 'f7beb36a65bc5bcbc9c8f398345aab7948160493955eb4a1f05da08c4ac3784f', + 'tx_spent_height': 1456212, + 'tx_proof_height': '1468520', + }, + "ILN": { + 'tx_list_address': 'RUp3xudmdTtxvaRnt3oq78FJBjotXy55uu', + 'min_chain_height': 3689, + 'notarization_height': '2000', + 'prev_notarization_h': 1998, + 'next_notarization_h': 2008, + 'hdrs_proof_low': '2000', + 'hdrs_proof_high': '2100', + 'numhdrs_expected': 113, + 'tx_proof_id': '67ffe0eaecd6081de04675c492a59090b573ee78955c4e8a85b8ac0be0e8e418', + 'tx_spent_height': 2681, + 'tx_proof_height': '2690', + } + } + class TestNspvClient(unittest.TestCase): @@ -37,31 +66,32 @@ class TestNspvClient(unittest.TestCase): result = rpc_proxy.nspv_listtransactions() self.assertEqual(result["result"], "success") time.sleep(1) - result = rpc_proxy.nspv_listtransactions("RUp3xudmdTtxvaRnt3oq78FJBjotXy55uu") + result = rpc_proxy.nspv_listtransactions(chain_params.get(chain).get("tx_list_address")) self.assertEqual(result["result"], "success") - self.assertEqual(result["address"], "RUp3xudmdTtxvaRnt3oq78FJBjotXy55uu") + self.assertEqual(result["address"], chain_params.get(chain).get("tx_list_address")) rpc_proxy.nspv_logout() def test_nspv_getinfo(self): print("testing nspv_getinfo") result = rpc_proxy.nspv_getinfo() self.assertEqual(result["result"], "success") - self.assertGreater(result["height"], 2689) + self.assertGreater(result["height"], chain_params.get(chain).get("min_chain_height")) time.sleep(1) def test_nspv_notarizations(self): print("testing nspv_notarizations") - result = rpc_proxy.nspv_notarizations("2000") + result = rpc_proxy.nspv_notarizations(chain_params.get(chain).get("notarization_height")) self.assertEqual(result["result"], "success") - self.assertEqual(result["prev"]["notarized_height"], 1998) - self.assertEqual(result["next"]["notarized_height"], 2008) + self.assertEqual(result["prev"]["notarized_height"], chain_params.get(chain).get("prev_notarization_h")) + self.assertEqual(result["next"]["notarized_height"], chain_params.get(chain).get("next_notarization_h")) time.sleep(1) def test_nspv_hdrsproof(self): print("testing nspv_hdrsproof") - result = rpc_proxy.nspv_hdrsproof("2000", "2100") + result = rpc_proxy.nspv_hdrsproof(chain_params.get(chain).get("hdrs_proof_low"), + chain_params.get(chain).get("hdrs_proof_high")) self.assertEqual(result["result"], "success") - self.assertEqual(result["numhdrs"], 113) + self.assertEqual(result["numhdrs"], chain_params.get(chain).get("numhdrs_expected")) time.sleep(1) def test_nspv_login(self): @@ -76,9 +106,9 @@ class TestNspvClient(unittest.TestCase): result = rpc_proxy.nspv_listunspent() self.assertEqual(result["result"], "success") time.sleep(1) - result = rpc_proxy.nspv_listunspent("RUp3xudmdTtxvaRnt3oq78FJBjotXy55uu") + result = rpc_proxy.nspv_listunspent(chain_params.get(chain).get("tx_list_address")) self.assertEqual(result["result"], "success") - self.assertEqual(result["address"], "RUp3xudmdTtxvaRnt3oq78FJBjotXy55uu") + self.assertEqual(result["address"], chain_params.get(chain).get("tx_list_address")) def test_nspv_spend(self): print("testing nspv_spend") @@ -113,25 +143,26 @@ class TestNspvClient(unittest.TestCase): def test_nspv_spentinfo(self): print("testing nspv_spent_info") - result = rpc_proxy.nspv_spentinfo("67ffe0eaecd6081de04675c492a59090b573ee78955c4e8a85b8ac0be0e8e418", "1") + result = rpc_proxy.nspv_spentinfo(chain_params.get(chain).get("tx_proof_id"), "1") self.assertEqual(result["result"], "success") - self.assertEqual(result["spentheight"], 2681) + self.assertEqual(result["spentheight"], chain_params.get(chain).get("tx_spent_height")) time.sleep(1) def test_nspv_txproof(self): print("testing nspv_txproof") - result = rpc_proxy.nspv_txproof("67ffe0eaecd6081de04675c492a59090b573ee78955c4e8a85b8ac0be0e8e418", "2673") - self.assertEqual(result["txid"], "67ffe0eaecd6081de04675c492a59090b573ee78955c4e8a85b8ac0be0e8e418") + result = rpc_proxy.nspv_txproof(chain_params.get(chain).get("tx_proof_id"), + chain_params.get(chain).get("tx_proof_height")) + self.assertEqual(result["txid"], chain_params.get(chain).get("tx_proof_id")) time.sleep(1) - def test_nspv_login_timout(self): - print("testing auto-logout in 777 seconds") - rpc_proxy.nspv_login(wif) - time.sleep(778) - result = rpc_proxy.nspv_spend(dest_address, amount) - self.assertEqual(result["result"], "error") - self.assertEqual(result["error"], "wif expired") - time.sleep(1) + def test_nspv_login_timout(self): + print("testing auto-logout in 777 seconds") + rpc_proxy.nspv_login(wif) + time.sleep(778) + result = rpc_proxy.nspv_spend(dest_address, amount) + self.assertEqual(result["result"], "error") + self.assertEqual(result["error"], "wif expired") + time.sleep(1) if __name__ == '__main__': diff --git a/src/tui/lib/tuilib.py b/src/tui/lib/tuilib.py index 9a2fed639..afb4fad63 100755 --- a/src/tui/lib/tuilib.py +++ b/src/tui/lib/tuilib.py @@ -21,6 +21,24 @@ if operating_system != 'Win64' and operating_system != 'Windows': import readline +class CustomProxy(Proxy): + def __init__(self, + service_url=None, + service_port=None, + conf_file=None, + timeout=3000): + config = dict() + if conf_file: + config = slickrpc.ConfigObj(conf_file) + if service_url: + config.update(self.url_to_conf(service_url)) + if service_port: + config.update(rpcport=service_port) + elif not config.get('rpcport'): + config['rpcport'] = 7771 + self.conn = self.prepare_connection(config, timeout=timeout) + + def colorize(string, color): colors = { @@ -97,7 +115,7 @@ def def_credentials(chain): print("check "+coin_config_file) exit(1) - return(Proxy("http://%s:%s@127.0.0.1:%d"%(rpcuser, rpcpassword, int(rpcport)))) + return(CustomProxy("http://%s:%s@127.0.0.1:%d"%(rpcuser, rpcpassword, int(rpcport)))) def getinfo_tui(rpc_connection):