diff options
| author | Chengwen Feng <[email protected]> | 2022-10-17 07:41:02 +0000 |
|---|---|---|
| committer | Thomas Monjalon <[email protected]> | 2022-10-31 16:13:55 +0100 |
| commit | 66542840dfd184c06813e6740664b280ef77d4e0 (patch) | |
| tree | e9f26882cbb24b84fb263d63388620c2319fb78c /usertools | |
| parent | 3429d6dd5cdcb4fa3c8c78115a4f2d9ba3157dea (diff) | |
usertools/telemetry: add JSON pretty print
Currently, the dpdk-telemetry.py show JSON in raw format under
interactive mode, which is not good for human reading.
E.g. The command '/ethdev/xstats,0' will output:
{"/ethdev/xstats": {"rx_good_packets": 0, "tx_good_packets": 0,
"rx_good_bytes": 0, "tx_good_bytes": 0, "rx_missed_errors": 0,
"rx_errors": 0, "tx_errors": 0, "rx_mbuf_allocation_errors": 0,
"rx_q0_packets": 0,...}}
This patch supports JSON pretty print by adding extra indent=2
parameter under interactive mode, so the same command will output:
{
"/ethdev/xstats": {
"rx_good_packets": 0,
"tx_good_packets": 0,
"rx_good_bytes": 0,
"tx_good_bytes": 0,
"rx_missed_errors": 0,
"rx_errors": 0,
"rx_mbuf_allocation_errors": 0,
"rx_q0_packets": 0,
...
}
}
Note: the non-interactive mode is made machine-readable and remains the
original way (it means don't use indent to pretty print).
Signed-off-by: Chengwen Feng <[email protected]>
Acked-by: David Marchand <[email protected]>
Acked-by: Ciara Power <[email protected]>
Tested-by: Bruce Richardson <[email protected]>
Diffstat (limited to 'usertools')
| -rwxr-xr-x | usertools/dpdk-telemetry.py | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/usertools/dpdk-telemetry.py b/usertools/dpdk-telemetry.py index a81868a547..568f222a03 100755 --- a/usertools/dpdk-telemetry.py +++ b/usertools/dpdk-telemetry.py @@ -23,7 +23,7 @@ DEFAULT_PREFIX = 'rte' CMDS = [] -def read_socket(sock, buf_len, echo=True): +def read_socket(sock, buf_len, echo=True, pretty=False): """ Read data from socket and return it in JSON format """ reply = sock.recv(buf_len).decode() try: @@ -33,7 +33,8 @@ def read_socket(sock, buf_len, echo=True): sock.close() raise if echo: - print(json.dumps(ret)) + indent = 2 if pretty else None + print(json.dumps(ret, indent=indent)) return ret @@ -127,7 +128,7 @@ def handle_socket(args, path): else: list_fp() return - json_reply = read_socket(sock, 1024, prompt) + json_reply = read_socket(sock, 1024, prompt, prompt) output_buf_len = json_reply["max_output_len"] app_name = get_app_name(json_reply["pid"]) if app_name and prompt: @@ -143,7 +144,7 @@ def handle_socket(args, path): while text != "quit": if text.startswith('/'): sock.send(text.encode()) - read_socket(sock, output_buf_len) + read_socket(sock, output_buf_len, pretty=prompt) text = input(prompt).strip() except EOFError: pass |
