def testGetPointFromQueue(self): with self.subTest(name='Success'): point = gps_pb2.Point() self.pusher.AddPointToQueue(point, 1) result = self.pusher.GetPointFromQueue() self.assertTrue(result) if result: returned_point, returned_lap_number = result self.assertEqual(point, returned_point) self.assertEqual(1, returned_lap_number) with self.subTest(name='Retry Queue'): point = gps_pb2.Point() self.pusher.retry_point_queue.append((point, 2)) result = self.pusher.GetPointFromQueue() self.assertTrue(result) if result: returned_point, returned_lap_number = result self.assertEqual(point, returned_point) self.assertEqual(2, returned_lap_number) with self.subTest(name='Retry and Point Queue'): point = gps_pb2.Point() self.pusher.AddPointToQueue(point, 1) point = gps_pb2.Point() self.pusher.retry_point_queue.append((point, 2)) result = self.pusher.GetPointFromQueue() self.assertTrue(result) if result: returned_point, returned_lap_number = result self.assertEqual(point, returned_point) self.assertEqual(1, returned_lap_number)
def testCrossStartFinish(self): point_a = gps_pb2.Point() point_b = gps_pb2.Point() point_c = gps_pb2.Point() point_b.start_finish_distance = 5.613414540798601 point_c.start_finish_distance = 8.86833983566463 point_a.time.FromMilliseconds(1000) point_b.time.FromMilliseconds(2000) point_c.time.FromMilliseconds(3000) point_a.lat = 45.594961 point_a.lon = -122.694508 point_b.lat = 45.594988 point_b.lon = -122.694587 point_c.lat = 45.595000 point_c.lon = -122.694638 session = gps_pb2.Session() session.track = 'Portland International Raceway' session.start_finish.lat = 45.595015 session.start_finish.lon = -122.694526 lap = session.laps.add() lap.points.extend([point_a, point_b]) es = exit_speed.ExitSpeed(min_points_per_session=0) es.point = point_c es.lap = lap es.session = session es.CrossStartFinish() self.assertEqual(2, len(es.session.laps)) self.assertEqual(2, len(es.session.laps[0].points)) self.assertEqual(2, len(es.session.laps[1].points)) self.assertIn(point_a, es.session.laps[0].points) self.assertIn(point_b, es.session.laps[0].points) self.assertIn(point_b, es.session.laps[1].points) self.assertIn(point_c, es.session.laps[1].points) self.assertNotIn(point_c, es.session.laps[0].points)
def testGetElapsedTime(self): point = gps_pb2.Point() point.time.FromSeconds(10) self.assertEqual(0, self.pusher.GetElapsedTime(point, 1)) point = gps_pb2.Point() point.time.FromSeconds(20) self.assertEqual(10 * 1000, self.pusher.GetElapsedTime(point, 1))
def testPointDelta(self): point_a = gps_pb2.Point() point_b = gps_pb2.Point() point_a.lat = 1.1 point_b.lat = 2.2 point_a.lon = -1.1 point_b.lon = -2.2 self.assertEqual(171979.02735070087, common_lib.PointDelta(point_a, point_b))
def testUpdateSpeedDeltas(self): point = gps_pb2.Point() point.speed = 88 # mph best_point = gps_pb2.Point() best_point.speed = 87 self.leds.UpdateSpeedDeltas(point, best_point) deltas = collections.deque(maxlen=FLAGS.speed_deltas) deltas.append(-1.0) self.assertSequenceEqual(deltas, self.leds.speed_deltas)
def testCalcAcceleration(self): point_b = gps_pb2.Point() point_b.speed = 70 point_b.time.FromMilliseconds(1) point_c = gps_pb2.Point() point_c.speed = 72 point_c.time.FromMilliseconds(2) self.assertEqual(1999.9999999999998, lap_lib.CalcAcceleration(point_b, point_c))
def testSolvePointBAngle(self): point_b = gps_pb2.Point() point_b.start_finish_distance = 8 point_c = gps_pb2.Point() point_c.start_finish_distance = 6 with mock.patch.object(common_lib, 'PointDelta') as mock_delta: mock_delta.return_value = 7 self.assertEqual(46.56746344221023, lap_lib.SolvePointBAngle(point_b, point_c))
def testProcessPoint(self): prior_point = gps_pb2.Point() prior_point.lat = 12.000000 prior_point.lon = 23.000000 point = gps_pb2.Point() point.lat = 12.000001 point.lon = 23.000002 es = exit_speed.ExitSpeed() es.lap = gps_pb2.Lap() es.lap.points.extend([prior_point, point]) es.point = point es.ProcessPoint() self.assertEqual(2856514.6203466402, point.start_finish_distance)
def testSetLapTime(self): es = exit_speed.ExitSpeed() first_point = gps_pb2.Point() first_point.time.FromJsonString(u'2020-05-23T17:47:44.100Z') last_point = gps_pb2.Point() last_point.time.FromJsonString(u'2020-05-23T17:49:00.100Z') session = gps_pb2.Session() lap = session.laps.add() lap.points.append(first_point) lap.points.append(last_point) es.lap = lap es.session = session es.SetLapTime() self.assertEqual(76, lap.duration.ToSeconds()) self.assertEqual(es.leds.best_lap, lap)
def testPerpendicularDistanceToFinish(self): point_b_angle = 60 point_b = gps_pb2.Point() point_b.start_finish_distance = 1000 self.assertEqual(500.0000000000001, lap_lib.PerpendicularDistanceToFinish(point_b_angle, point_b))
def testDoCommitCycle(self): """Ensures points aren't dropped if errrors arrive between commits.""" point = gps_pb2.Point() point.alt = 1 point.speed = 1 point.lat = 45.69545832462609 point.lon = -121.52551179751754 point.tps_voltage = 2 point.water_temp_voltage = 3 point.oil_pressure_voltage = 4 point.rpm = 1000 point.afr = 14.7 point.fuel_level_voltage = 5 point.accelerometer_x = 0.0 point.accelerometer_y = 1.7 point.accelerometer_z = 1.2 self.assertEqual(0, len(self.pusher.point_queue)) self.pusher.AddPointToQueue(point, 1) self.pusher.Do() self.pusher.AddPointToQueue(point, 1) self.pusher.Do() with mock.patch.object(self.pusher, '_Commit') as mock_commit: mock_commit.side_effect = psycopg2.Error self.pusher.AddPointToQueue(point, 1) self.pusher.Do() self.assertEqual(3, len(self.pusher.retry_point_queue))
def testProcessSession(self): point = gps_pb2.Point() point.speed = 21 lap = gps_pb2.Lap() session = gps_pb2.Session() es = exit_speed.ExitSpeed() es.point = point es.session = session es.ProcessSession() for _ in session.laps: for lap_point in lap.points: self.assertEqual(point, lap_point) point = gps_pb2.Point() point.speed = 1 es.point = point es.ProcessSession()
def testFindClosestTrack(self): point = gps_pb2.Point() point.lat = 45.595412 point.lon = -122.693901 distance, track, _ = exit_speed.FindClosestTrack(point) self.assertEqual(65.64651548636733, distance) self.assertEqual(track, 'Portland International Raceway') self.assertEqual(point.lat, 45.595412) self.assertEqual(point.lon, -122.693901)
def testSolveTimeToCrossFinish(self): point_b = gps_pb2.Point() point_b.speed = 70 acceleration = 2 perp_dist_b = 1 self.assertEqual(0.014282800023195819, lap_lib.SolveTimeToCrossFinish(point_b, perp_dist_b, acceleration))
def testGetPriorUniquePoint(self): point_c = gps_pb2.Point() point_c.time.FromMilliseconds(10) lap = gps_pb2.Lap() point = lap.points.add() point.time.FromMilliseconds(9) point = lap.points.add() point.time.FromMilliseconds(9) point = lap.points.add() point.time.FromMilliseconds(8) returned = lap_lib.GetPriorUniquePoint(lap, point_c) self.assertEqual(8, returned.time.ToMilliseconds())
def setUp(self): super().setUp() _, self.file_prefix = tempfile.mkstemp() self.point = gps_pb2.Point() self.point.alt = 1 self.point.speed = 1 self.point.lat = 45.69545832462609 self.point.lon = -121.52551179751754 self.point.tps_voltage = 2 self.point.water_temp_voltage = 3 self.point.oil_pressure_voltage = 4 self.point.rpm = 1000 self.point.afr = 14.7 self.point.fuel_level_voltage = 5
def setUp(self): self.postgresql = Postgresql() with open('testdata/timescale_schema') as schema_file: statements = ''.join(schema_file.readlines()) conn = psycopg2.connect(**self.postgresql.dsn()) cursor = conn.cursor() cursor.execute(statements) conn.commit() self.conn = timescale.GetConnWithPointPrepare(conn) self.cursor = self.conn.cursor() point = gps_pb2.Point() point.time.FromJsonString('2020-09-13T01:36:38.600Z') self.pusher = timescale.Pusher(start_process=False) self.pusher.timescale_conn = self.conn self.pusher.track = 'Test Parking Lot' self.pusher.session_time = point.time
def testCalcTimeAfterFinish(self): start_finish = gps_pb2.Point() start_finish.lat = 45.595015 start_finish.lon = -122.694526 lap = gps_pb2.Lap() point_b = lap.points.add() point_c = lap.points.add() point_b.time.FromMilliseconds(1) point_c.time.FromMilliseconds(2) point_b.lat = 45.594988 point_b.lon = -122.694587 point_c.lat = 45.595000 point_c.lon = -122.694638 point_b.start_finish_distance = common_lib.PointDelta(start_finish, point_b) point_c.start_finish_distance = common_lib.PointDelta(start_finish, point_c) point_b.speed = 70 point_c.speed = 70.2 self.assertEqual(1000000.0548742702, lap_lib.CalcTimeAfterFinish(lap))
def testFindNearestBestLapPoint(self): lap = gps_pb2.Lap() point = lap.points.add() point.lat = 1 point.lon = 1 point = lap.points.add() point.lat = 5 point.lon = 5 point = lap.points.add() point.lat = 20 point.lon = 20 self.leds.SetBestLap(lap) # Build the tree. point = gps_pb2.Point() point.lat = 4 point.lon = 4 nearest = self.leds.FindNearestBestLapPoint(point) self.assertEqual(nearest.lat, 5) self.assertEqual(nearest.lon, 5)
def testCalcLastLapDuration(self): start_finish = gps_pb2.Point() start_finish.lat = 45.595015 start_finish.lon = -122.694526 session = gps_pb2.Session() lap = session.laps.add() point_y = lap.points.add() point_z = lap.points.add() point_y.time.FromMilliseconds(1) point_z.time.FromMilliseconds(2) point_y.lat = 45.594988 point_y.lon = -122.694587 point_z.lat = 45.595000 point_z.lon = -122.694638 point_y.start_finish_distance = common_lib.PointDelta(start_finish, point_y) point_z.start_finish_distance = common_lib.PointDelta(start_finish, point_z) point_y.speed = 70 point_z.speed = 70.2 self.assertEqual(1.0 * 1e6, lap_lib.CalcLastLapDuration(session)) lap = session.laps.add() point_a = point_z lap.points.append(point_a) point_b = lap.points.add() point_c = lap.points.add() point_b.time.FromMilliseconds(3) point_c.time.FromMilliseconds(4) point_b.lat = 45.594988 point_b.lon = -122.694587 point_c.lat = 45.595000 point_c.lon = -122.694638 point_b.start_finish_distance = common_lib.PointDelta(start_finish, point_b) point_c.start_finish_distance = common_lib.PointDelta(start_finish, point_c) point_b.speed = 70 point_c.speed = 70.2 self.assertEqual(2000000, lap_lib.CalcLastLapDuration(session))
def testGetTimeDelta(self): point_b = gps_pb2.Point() point_b.time.FromMilliseconds(1) point_c = gps_pb2.Point() point_c.time.FromMilliseconds(2) self.assertEqual(1 * 1e6, lap_lib.GetTimeDelta(point_b, point_c))
def testExportPointArrivesBeforeLap(self): point = gps_pb2.Point() self.pusher.ExportPoint(point, 99, self.cursor) self.assertEqual(1, len(self.pusher.retry_point_queue))