plotjuggler falling back to qlog (#20105)

* fallback to qlogs

* minor fixes

* removed extra line

* help on no args

* Update tools/plotjuggler/juggle.py

Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
old-commit-hash: d4feecd8032567c0e331713a8af7caab35b6495c
This commit is contained in:
iejMac
2021-02-17 22:59:31 -08:00
committed by GitHub
parent 0823abceff
commit b97a2a3dd3
2 changed files with 45 additions and 31 deletions
+26 -25
View File
@@ -10,7 +10,6 @@ from common.basedir import BASEDIR
from selfdrive.test.process_replay.compare_logs import save_log
from tools.lib.route import Route
from tools.lib.logreader import LogReader
from tools.lib.url_file import URLFile
def load_segment(segment_name):
@@ -26,14 +25,26 @@ def juggle_file(fn):
juggle_dir = os.path.dirname(os.path.realpath(__file__))
subprocess.call(f"bin/plotjuggler -d {fn}", shell=True, env=env, cwd=juggle_dir)
def juggle_route(route_name):
def juggle_route(route_name, segment_number):
r = Route(route_name)
all_data = []
logs = r.log_paths()
if segment_number is not None:
logs = logs[segment_number:segment_number+1]
if None in logs:
fallback_answer = input("At least one of the rlogs in this segment does not exist, would you like to use the qlogs? (y/n) : ")
if fallback_answer == 'y':
logs = r.qlog_paths()
if segment_number is not None:
logs = logs[segment_number:segment_number+1]
else:
print(f"Please try a different {'segment' if segment_number is not None else 'route'}")
return
all_data = []
pool = multiprocessing.Pool(24)
all_data = []
for d in pool.map(load_segment, r.log_paths()):
for d in pool.map(load_segment, logs):
all_data += d
tempfile = NamedTemporaryFile(suffix='.rlog')
@@ -42,29 +53,19 @@ def juggle_route(route_name):
juggle_file(tempfile.name)
def juggle_segment(route_name, segment_nr):
r = Route(route_name)
lp = r.log_paths()[segment_nr]
if lp is None:
print("This segment does not exist, please try a different one")
return
uf = URLFile(lp)
juggle_file(uf.name)
def get_arg_parser():
parser = argparse.ArgumentParser(description="PlotJuggler plugin for reading rlogs",
formatter_class=argparse.ArgumentDefaultsHelpFormatter)
parser.add_argument("route_name", nargs='?', help="The name of the route that will be plotted.")
parser.add_argument("route_name", nargs='?', help="The name of the route that will be plotted.")
parser.add_argument("segment_number", type=int, nargs='?', help="The index of the segment that will be plotted")
return parser
if __name__ == "__main__":
args = get_arg_parser().parse_args(sys.argv[1:])
if args.segment_number is None:
juggle_route(args.route_name)
else:
juggle_segment(args.route_name, args.segment_number)
arg_parser = get_arg_parser()
if len(sys.argv) == 1:
arg_parser.print_help()
sys.exit()
args = arg_parser.parse_args(sys.argv[1:])
juggle_route(args.route_name, args.segment_number)