You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
			
				
					80 lines
				
				2.4 KiB
			
		
		
			
		
	
	
					80 lines
				
				2.4 KiB
			| 
											6 years ago
										 | #!/usr/bin/env python3
 | ||
|  | import subprocess
 | ||
|  | import os
 | ||
|  | import sys
 | ||
|  | import argparse
 | ||
|  | import tempfile
 | ||
|  | 
 | ||
|  | from selfdrive.locationd.test.ubloxd_py_test import parser_test
 | ||
|  | from selfdrive.locationd.test.ubloxd_regression_test import compare_results
 | ||
|  | 
 | ||
|  | 
 | ||
|  | def mkdirs_exists_ok(path):
 | ||
|  |   try:
 | ||
|  |     os.makedirs(path)
 | ||
|  |   except OSError:
 | ||
|  |     if not os.path.isdir(path):
 | ||
|  |       raise
 | ||
|  | 
 | ||
|  | 
 | ||
|  | def main(args):
 | ||
|  |   cur_dir = os.path.dirname(os.path.realpath(__file__))
 | ||
|  |   ubloxd_dir = os.path.join(cur_dir, '../')
 | ||
|  | 
 | ||
|  |   cc_output_dir = os.path.join(args.output_dir, 'cc')
 | ||
|  |   mkdirs_exists_ok(cc_output_dir)
 | ||
|  | 
 | ||
|  |   py_output_dir = os.path.join(args.output_dir, 'py')
 | ||
|  |   mkdirs_exists_ok(py_output_dir)
 | ||
|  | 
 | ||
|  |   archive_file = os.path.join(cur_dir, args.stream_gz_file)
 | ||
|  | 
 | ||
|  |   try:
 | ||
|  |     print('Extracting stream file')
 | ||
|  |     subprocess.check_call(['tar', 'zxf', archive_file], cwd=tempfile.gettempdir())
 | ||
|  |     stream_file_path = os.path.join(tempfile.gettempdir(), 'ubloxRaw.stream')
 | ||
|  | 
 | ||
|  |     if not os.path.isfile(stream_file_path):
 | ||
|  |       print('Extract file failed')
 | ||
|  |       sys.exit(-3)
 | ||
|  | 
 | ||
|  |     print('Run regression test - CC parser...')
 | ||
|  |     if args.valgrind:
 | ||
|  |       subprocess.check_call(["valgrind", "--leak-check=full", os.path.join(ubloxd_dir, 'ubloxd_test'), stream_file_path, cc_output_dir])
 | ||
|  |     else:
 | ||
|  |       subprocess.check_call([os.path.join(ubloxd_dir, 'ubloxd_test'), stream_file_path, cc_output_dir])
 | ||
|  | 
 | ||
|  |     print('Running regression test - py parser...')
 | ||
|  |     parser_test(stream_file_path, py_output_dir)
 | ||
|  | 
 | ||
|  |     print('Running regression test - compare result...')
 | ||
|  |     r = compare_results(cc_output_dir, py_output_dir)
 | ||
|  | 
 | ||
|  |     print('All done!')
 | ||
|  | 
 | ||
|  |     subprocess.check_call(["rm", stream_file_path])
 | ||
|  |     subprocess.check_call(["rm", '-rf', cc_output_dir])
 | ||
|  |     subprocess.check_call(["rm", '-rf', py_output_dir])
 | ||
|  |     sys.exit(r)
 | ||
|  | 
 | ||
|  |   except subprocess.CalledProcessError as e:
 | ||
|  |     print('CI test failed with {}'.format(e.returncode))
 | ||
|  |     sys.exit(e.returncode)
 | ||
|  | 
 | ||
|  | 
 | ||
|  | if __name__ == "__main__":
 | ||
|  |   parser = argparse.ArgumentParser(description="Ubloxd CI test",
 | ||
|  |                                    formatter_class=argparse.ArgumentDefaultsHelpFormatter)
 | ||
|  | 
 | ||
|  |   parser.add_argument("stream_gz_file", nargs='?', default='ubloxRaw.tar.gz',
 | ||
|  |                       help="UbloxRaw data stream zip file")
 | ||
|  | 
 | ||
|  |   parser.add_argument("output_dir", nargs='?', default='out',
 | ||
|  |                       help="Output events temp directory")
 | ||
|  | 
 | ||
|  |   parser.add_argument("--valgrind", default=False, action='store_true',
 | ||
|  |                       help="Run in valgrind")
 | ||
|  | 
 | ||
|  |   args = parser.parse_args()
 | ||
|  |   main(args)
 |