def testCalculateTimestampInputDateAndTime1(self):
     time_utils = TimeUtils(self.test_date, self.test_time)
     actual = time_utils.calculateTimestamp(None, None, 140.320)
     expected = datetime.combine(
         self.test_date, self.test_time, tzinfo=timezone.utc) + timedelta(
             0, 140.320)
     self.assertEqual(
         expected, actual,
         'The calculated timestamp did not match the expected value.')
Example #2
0
def process(input_paths, output_url, output_format, tags, output_batch_size,
            start_date_datum, start_time_datum):
    data = DataState()
    time_util = TimeUtils(start_date_datum, start_time_datum)
    data.set_data_item('DateTime',
                       time_util.calculateTimestamp(None, None, 0.0))
    last_data_time = data.state_time
    parser = Parser(data)
    formatter = FormatterFactory.getFormatter(output_format, tags)
    ostream = io.StringIO()
    header_line = formatter.formatHeading(data)
    if header_line is not None:
        if verbose > 0:
            print(header_line)
        print(header_line, end='\n', file=ostream)
    line_count = 0
    for path in input_paths:
        print("Processing {0}".format(path))
        with open(path, "r") as ifile:
            for data_line in ifile:
                input_line = data_line.strip()
                if verbose > 0:
                    print(input_line)
                parser.parse(input_line)
                output_lines = formatter.formatData(data)
                if output_lines is not None:
                    for output_line in output_lines:
                        if verbose > 0:
                            print(output_line)
                        print(output_line, end='\n', file=ostream)
                        line_count = line_count + 1
                if data.state_time > last_data_time:
                    last_data_time = data.state_time
                    data.set_data_item(
                        'DateTime',
                        time_util.calculateTimestamp(
                            data.get_data_item('GPS_Date'),
                            data.get_data_item('GPS_Time'), data.state_time))
                    output_line = formatter.formatTimeIncrement(data)
                    if output_line is not None:
                        if verbose > 0:
                            print(output_line)
                        print(output_line, end='\n', file=ostream)
                        line_count = line_count + 1
                if line_count >= output_batch_size:
                    writeBatch(output_url, ostream)
                    ostream.close()
                    ostream = io.StringIO()
                    line_count = 0
        footer_line = formatter.formatFooter(data)
        if footer_line is not None:
            if verbose > 0:
                print(footer_line)
            print(footer_line, end='\n', file=ostream)
        writeBatch(output_url, ostream)
        ostream.close()
 def testCalculatedTimestampInputDate3(self):
     time_utils = TimeUtils(self.test_date, None)
     test_gps_time = time(22, 38, 12)
     actual = time_utils.calculateTimestamp(None, test_gps_time, 2273.431)
     expected = datetime.combine(self.test_date,
                                 test_gps_time,
                                 tzinfo=timezone.utc)
     self.assertEqual(
         expected, actual,
         'Time calculated timestamp did not match the expected value.')
 def testCalculatedTimestampInputDateAndTime2(self):
     time_utils = TimeUtils(self.test_date, self.test_time)
     test_gps_date = date(1999, 12, 19)
     actual = time_utils.calculateTimestamp(test_gps_date, None, 1432.938)
     expected = datetime.combine(
         self.test_date, self.test_time, tzinfo=timezone.utc) + timedelta(
             0, 1432.938)
     self.assertEqual(
         expected, actual,
         'Time calculated timestamp did not match the expected value.')
 def testCalculatedTimestampNoInput4(self):
     time_utils = TimeUtils(None, None)
     test_gps_date = date(2019, 8, 19)
     test_gps_time = time(22, 38, 12)
     actual = time_utils.calculateTimestamp(test_gps_date, test_gps_time,
                                            1174.835)
     expected = datetime.combine(test_gps_date, test_gps_time, timezone.utc)
     self.assertEqual(
         expected, actual,
         'Time calculated timestamp did not match the expected value.')
 def testInfluxDbTimestamp(self):
     test_datetime = datetime(2019, 8, 15, 23, 21, 30, tzinfo=timezone.utc)
     actual = TimeUtils.influxDBTimestamp(test_datetime)
     self.assertEqual(
         1565911290000, actual,
         'The conversion to InfluxDB timestamp did not return the expected value.'
     )
 def testInfluxDbTimestampMillisecond(self):
     test_datetime = datetime(2019,
                              8,
                              20,
                              12,
                              12,
                              12,
                              531000,
                              tzinfo=timezone.utc)
     actual = TimeUtils.influxDBTimestamp(test_datetime)
     self.assertEqual(
         1566303132531, actual,
         'The conversion to InfluxDB timestamp did not return the expected value.'
     )
 def testInfluxDbTimestampMicrosecond(self):
     test_datetime = datetime(2019,
                              8,
                              20,
                              12,
                              12,
                              12,
                              531999,
                              tzinfo=timezone.utc)
     actual = TimeUtils.influxDBTimestamp(test_datetime)
     # currently truncates, consider rounding
     self.assertEqual(
         1566303132531, actual,
         'The conversion to InfluxDB timestamp did not return the expected value.'
     )
 def formatData(self, data_state):
     fields = data_state.get_dirty_fields()
     influx_timestamp = TimeUtils.influxDBTimestamp(
         data_state.get_data_item(
             DataState.names[DataState.names.DateTime]))
     influx_data_lines = []
     if fields.issuperset(['Latitude', 'Longitude']):
         influx_data_lines.append(
             self.buildLocation(data_state) + str(influx_timestamp))
     if fields.issuperset(['X', 'Y', 'Z']):
         influx_data_lines.append(
             self.buildAcceleration(data_state) + str(influx_timestamp))
     if fields.issuperset(['Steering_Angle', 'Steering_Rate']):
         influx_data_lines.append(
             self.buildSteering(data_state) + str(influx_timestamp))
     if fields.issuperset(['Throttle', 'ECU_Throttle']):
         influx_data_lines.append(
             self.buildThrottle(data_state) + str(influx_timestamp))
     if fields.issuperset(['Brake', 'Brake_Pressure']):
         influx_data_lines.append(
             self.buildBrake(data_state) + str(influx_timestamp))
     if fields.issuperset(['Clutch']):
         influx_data_lines.append(
             self.buildClutch(data_state) + str(influx_timestamp))
     if fields.issuperset(['RPM']):
         influx_data_lines.append(
             self.buildRPM(data_state) + str(influx_timestamp))
     if fields.issuperset(['Coolant_Temperature']):
         influx_data_lines.append(
             self.buildCoolant(data_state) + str(influx_timestamp))
     if fields.issuperset(['Oil_Pressure']):
         influx_data_lines.append(
             self.buildOilPressure(data_state) + str(influx_timestamp))
     if fields.issuperset(['Oil_Temperature']):
         influx_data_lines.append(
             self.buildOilTemperature(data_state) + str(influx_timestamp))
     if fields.issuperset(['LF_KPH', 'RF_KPH', 'LR_KPH', 'RR_KPH']):
         influx_data_lines.append(
             self.buildWheelSpeed(data_state) + str(influx_timestamp))
     if fields.issuperset(['Sport_Mode', 'Pasm_Sport_Mode', 'PSM_Disable']):
         influx_data_lines.append(
             self.buildPModes(data_state) + str(influx_timestamp))
     return influx_data_lines
 def testCalculatedTimestampInputDate2(self):
     time_utils = TimeUtils(self.test_date, None)
     test_gps_date = date(1999, 12, 19)
     actual = time_utils.calculateTimestamp(test_gps_date, None, 1432.938)
     self.assertIsNone(actual,
                       'The calculated timestamp was expected to be None.')
 def testCalculateTimestampInputDate1(self):
     time_utils = TimeUtils(self.test_date, None)
     actual = time_utils.calculateTimestamp(None, None, 140.320)
     self.assertIsNone(actual,
                       'The calculated timestamp was expected to be None.')
 def testCalculatedTimestampNoInput3(self):
     time_utils = TimeUtils(None, None)
     test_gps_time = time(22, 38, 12)
     actual = time_utils.calculateTimestamp(None, test_gps_time, 2273.431)
     self.assertIsNone(actual,
                       'The calculated timestamp was expected to be None.')