Error when not all direction are present in flows data
Initially reported in turris forum post
Netmetr ends up in error state when one of the speed directions are not measured properly.
Starting speed test...
==== rmbt v3.11-68-gfe363acb6-dirty ====
connecting...
connected with 3 flow(s) for dl; 3 flow(s) for ul
pretest downlink start... (min 1s)
pretest downlink end.
rtt_tcp_payload start... (11 times)
rtt_tcp_payload end.
downlink test start... (5s)
downlink test end.
pretest uplink start... (min 1s)
pretest uplink end.
uplink test start... (5s)
error in poll of do_uplink: timeout
error in poll of do_uplink: timeout
error in poll of do_uplink: timeout
dl_throughput_mbps = 18.564554
ul_throughput_mbps = 0.000000
Exiting.
Speed test result:
{
"cnf_file_flows":"\/tmp\/tmpetmwlgyw.xz"
}
{
"res_id_test":"0fc4025d-ad6f-434d-8e90-ffd4bc210e19",
"res_time_start_s":1586435744,
"res_time_end_s":1586435800,
"res_status":"fail_ul",
"res_status_msg":"error in poll of do_uplink: timeout",
"res_version_client":"v3.11-68-gfe363acb6-dirty",
"res_version_server":"RMBTv0.3",
"res_server_ip":"217.31.202.97",
"res_server_port":8081,
"res_encrypt":false,
"res_chunksize":4096,
"res_tcp_congestion":"cubic",
"res_total_bytes_dl":14434724,
"res_total_bytes_ul":2085840,
"res_uname_sysname":"Linux",
"res_uname_nodename":"molekula",
"res_uname_release":"4.4.199-f90a52a6230ecb072f657fce5aebd444-0",
"res_uname_version":"#1 SMP Wed Jan 15 02:28:05 CET 2020",
"res_uname_machine":"ppc",
"res_rtt_tcp_payload_num":11,
"res_rtt_tcp_payload_client_ns":15991118,
"res_rtt_tcp_payload_server_ns":12718016,
"res_dl_num_flows":3,
"res_dl_time_ns":5440926052,
"res_dl_bytes":12626046,
"res_dl_throughput_kbps":18564.554459046707
}
Traceback (most recent call last):
File "/usr/bin/netmetr", line 11, in <module>
load_entry_point('netmetr==1.5.4', 'console_scripts', 'netmetr')()
File "/usr/lib/python3.6/site-packages/netmetr/__main__.py", line 621, in main
speed_flows = netmetr.import_speed_flows()
File "/usr/lib/python3.6/site-packages/netmetr/__main__.py", line 254, in import_speed_flows
for flow in flows_json["res_details"][d_short]:
KeyError: 'ul'