def setUp(self): # Make logfile with bogus messages self.bag = tempfile.NamedTemporaryFile() rebagger = rosbag.Bag(self.bag.name, 'w') for i in range(0, row_count): rebagger.write("/diagnostics", make_status_msg(i)) rebagger.close() # Make CSV self.exp = LogExporter(None, self.bag.name) self.exp.process_log() self.exp.finish_logfile() self.filename = self.exp.get_filename('Unit Test') ## Make sparse CSV's self.skip_10 = make_sparse_skip(self.filename, 10) self.length_10 = make_sparse_length(self.filename, 10)
class TestBagToCSV(unittest.TestCase): def setUp(self): # Make logfile with bogus messages self.bag = tempfile.NamedTemporaryFile() rebagger = rosbag.Bag(self.bag.name, 'w') for i in range(0, row_count): rebagger.write("/diagnostics", make_status_msg(i)) rebagger.close() # Make CSV self.exp = LogExporter(None, self.bag.name) self.exp.process_log() self.exp.finish_logfile() self.filename = self.exp.get_filename('Unit Test') ## Make sparse CSV's self.skip_10 = make_sparse_skip(self.filename, 10) self.length_10 = make_sparse_length(self.filename, 10) ##\brief Tests that exported file exists and is not None def test_file_exists(self): self.assert_(self.filename is not None, "CSV file is None") self.assert_(os.path.isfile(self.filename), "CSV file doesn't exist") ##\brief Test that CSV file has correct data, number of lines def test_export(self): # Read CSV, count rows input_reader = csv.reader(open(self.filename, 'rb')) count = -1 for row in input_reader: if count == -1: self.assert_(row[2].strip() == 'Message') self.assert_(row[3].strip() == 'Hardware ID') self.assert_(row[4].strip() == 'Value A') count += 1 continue self.assert_(row[2].strip() == 'OK') self.assert_(row[3].strip() == 'HW ID') self.assert_(row[4].strip() == str(count)) count += 1 self.assert_(count == row_count, "Row count doesn't match") ##\brief Tests that sparse CSV made with 'skip' option has correct number of lines def test_sparse_skip(self): self.assert_(len(open(self.skip_10).read().split('\n')) <= int(row_count / 10) + 2, "Length of sparse CSV (skipped) incorrect") ##\brief Tests that sparse CSV made with 'length' option has correct number of lines def test_sparse_length(self): self.assert_(len(open(self.length_10).read().split('\n')) == 12, "Length of sparse CSV incorrect") def tearDown(self): self.bag.close() os.remove(self.skip_10) os.remove(self.length_10) self.exp.remove_files()
class TestBagToCSV(unittest.TestCase): def setUp(self): # Make logfile with bogus messages self.bag = tempfile.NamedTemporaryFile() rebagger = rosbag.Bag(self.bag.name, 'w') for i in range(0, row_count): rebagger.write("/diagnostics", make_status_msg(i)) rebagger.close() # Make CSV self.exp = LogExporter(None, self.bag.name) self.exp.process_log() self.exp.finish_logfile() self.filename = self.exp.get_filename('Unit Test') ## Make sparse CSV's self.skip_10 = make_sparse_skip(self.filename, 10) self.length_10 = make_sparse_length(self.filename, 10) ##\brief Tests that exported file exists and is not None def test_file_exists(self): self.assert_(self.filename is not None, "CSV file is None") self.assert_(os.path.isfile(self.filename), "CSV file doesn't exist") ##\brief Test that CSV file has correct data, number of lines def test_export(self): # Read CSV, count rows input_reader = csv.reader(open(self.filename, newline=''), delimiter=',') count = -1 for row in input_reader: if count == -1: self.assert_(row[2].strip() == 'Message') self.assert_(row[3].strip() == 'Hardware ID') self.assert_(row[4].strip() == 'Value A') count += 1 continue self.assert_(row[2].strip() == 'OK') self.assert_(row[3].strip() == 'HW ID') self.assert_(row[4].strip() == str(count)) count += 1 self.assert_(count == row_count, "Row count doesn't match") ##\brief Tests that sparse CSV made with 'skip' option has correct number of lines def test_sparse_skip(self): self.assert_(len(open(self.skip_10).read().split('\n')) <= int(row_count / 10) + 2, "Length of sparse CSV (skipped) incorrect") ##\brief Tests that sparse CSV made with 'length' option has correct number of lines def test_sparse_length(self): self.assert_(len(open(self.length_10).read().split('\n')) == 12, "Length of sparse CSV incorrect") def tearDown(self): self.bag.close() os.remove(self.skip_10) os.remove(self.length_10) self.exp.remove_files()
dest="directory", help="Write output to DIR/output. Default: %s" % PKG, metavar="DIR", default=roslib.packages.get_pkg_dir(PKG), action="store") options, args = parser.parse_args() exporters = [] print('Output directory: %s/output' % options.directory) try: for i, f in enumerate(args): filepath = 'output/%s_csv' % os.path.basename( f)[0:os.path.basename(f).find('.')] output_dir = os.path.join(options.directory, filepath) print("Processing file %s. File %d of %d." % (os.path.basename(f), i + 1, len(args))) exp = LogExporter(output_dir, f) exp.process_log() exp.finish_logfile() exporters.append(exp) print('Finished processing files.') except: import traceback print("Caught exception processing log file") traceback.print_exc()
if __name__ == '__main__': # Allow user to set output directory parser = OptionParser() parser.add_option("-d", "--directory", dest="directory", help="Write output to DIR/output. Default: %s" % PKG, metavar="DIR", default=roslib.packages.get_pkg_dir(PKG), action="store") options, args = parser.parse_args() exporters = [] print 'Output directory: %s/output' % options.directory try: for i, f in enumerate(args): filepath = 'output/%s_csv' % os.path.basename(f)[0:os.path.basename(f).find('.')] output_dir = os.path.join(options.directory, filepath) print "Processing file %s. File %d of %d." % (os.path.basename(f), i + 1, len(args)) exp = LogExporter(output_dir, f) exp.process_log() exp.finish_logfile() exporters.append(exp) print 'Finished processing files.' except: import traceback print "Caught exception processing log file" traceback.print_exc()