Exemple #1
0
    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)
Exemple #2
0
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()
Exemple #4
0
    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)
Exemple #5
0
                      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()
Exemple #6
0
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()