diff --git a/metrics.py b/metrics.py index e13eb630..d642ecf4 100644 --- a/metrics.py +++ b/metrics.py @@ -11,7 +11,7 @@ def getTime(line): return timestamp.timestamp() -def parseLogs(filename, interval): +def parseLogs(filename, interval, minTxnCount = 0): with open(filename) as f: @@ -54,12 +54,13 @@ def parseLogs(filename, interval): loadTime = line[loadTimeIdx + len(loadTimeSubstr):txnsIdx] txnsPerSecond = line[txnsIdx + len(txnsSubstr):objsIdx] objsPerSecond = line[objsIdx + len(objsSubstr):-1] - totalTime += float(loadTime); - totalTxns += float(txnCount) - totalObjs += float(objCount) - intervalTime += float(loadTime) - intervalTxns += float(txnCount) - intervalObjs += float(objCount) + if int(txnCount) >= minTxnCount: + totalTime += float(loadTime); + totalTxns += float(txnCount) + totalObjs += float(objCount) + intervalTime += float(loadTime) + intervalTxns += float(txnCount) + intervalObjs += float(objCount) totalLoadTime += float(loadTime) intervalLoadTime += float(loadTime) @@ -127,10 +128,11 @@ def parseLogs(filename, interval): parser = argparse.ArgumentParser(description='parses logs') parser.add_argument("--filename") parser.add_argument("--interval",default=100000) +parser.add_argument("--minTxnCount",default=0) args = parser.parse_args() def run(args): - parseLogs(args.filename, int(args.interval)) + parseLogs(args.filename, int(args.interval), int(args.minTxnCount)) run(args) diff --git a/test.py b/test.py index 9410b251..a292f2cf 100755 --- a/test.py +++ b/test.py @@ -473,13 +473,36 @@ async def ledger_range(ip, port): if "error" in res: await ws.send(json.dumps({"command":"server_info"})) res = json.loads(await ws.recv()) + print(res) rng = res["result"]["info"]["complete_ledgers"] + if rng == "empty": + return (0,0) idx = rng.find("-") return (int(rng[0:idx]),int(rng[idx+1:-1])) return (res["ledger_index_min"],res["ledger_index_max"]) except websockets.exceptions.connectionclosederror as e: print(e) +async def fee(ip, port): + address = 'ws://' + str(ip) + ':' + str(port) + try: + async with websockets.connect(address) as ws: + await ws.send(json.dumps({"command":"fee"})) + res = json.loads(await ws.recv()) + print(json.dumps(res,indent=4,sort_keys=True)) + except websockets.exceptions.connectionclosederror as e: + print(e) + +async def ledger_diff(ip, port, base, desired, includeBlobs): + address = 'ws://' + str(ip) + ':' + str(port) + try: + async with websockets.connect(address) as ws: + await ws.send(json.dumps({"command":"ledger_diff","base_ledger":int(base),"desired_ledger":int(desired),"include_blobs":bool(includeBlobs)})) + res = json.loads(await ws.recv()) + print(json.dumps(res,indent=4,sort_keys=True)) + except websockets.exceptions.connectionclosederror as e: + print(e) + async def perf(ip, port): res = await ledger_range(ip,port) @@ -489,7 +512,7 @@ async def perf(ip, port): print(lps) parser = argparse.ArgumentParser(description='test script for xrpl-reporting') -parser.add_argument('action', choices=["account_info", "tx", "account_tx", "account_tx_full","ledger_data", "ledger_data_full", "book_offers","ledger","ledger_range","ledger_entry","ledger_entries","perf"]) +parser.add_argument('action', choices=["account_info", "tx", "account_tx", "account_tx_full","ledger_data", "ledger_data_full", "book_offers","ledger","ledger_range","ledger_entry","ledger_diff","ledger_entries","perf","fee"]) parser.add_argument('--ip', default='127.0.0.1') parser.add_argument('--port', default='8080') parser.add_argument('--hash') @@ -511,6 +534,9 @@ parser.add_argument('--maxLedger',default=-1) parser.add_argument('--filename',default=None) parser.add_argument('--index') parser.add_argument('--numPages',default=3) +parser.add_argument('--base') +parser.add_argument('--desired') +parser.add_argument('--includeBlobs',default=False) @@ -521,7 +547,9 @@ def run(args): asyncio.set_event_loop(asyncio.new_event_loop()) if(args.ledger is None): args.ledger = asyncio.get_event_loop().run_until_complete(ledger_range(args.ip, args.port))[1] - if args.action == "perf": + if args.action == "fee": + asyncio.get_event_loop().run_until_complete(fee(args.ip, args.port)) + elif args.action == "perf": asyncio.get_event_loop().run_until_complete( perf(args.ip,args.port)) elif args.action == "account_info": @@ -546,8 +574,9 @@ def run(args): print("mismatch!") return print("Data matches!") - - + elif args.action == "ledger_diff": + asyncio.get_event_loop().run_until_complete( + ledger_diff(args.ip, args.port, args.base, args.desired, args.includeBlobs)) elif args.action == "tx": if args.verify: args.binary = True