Example #1
0
 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)
Example #2
0
 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)
Example #3
0
 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))
Example #4
0
 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))
Example #5
0
 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)
Example #6
0
 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))
Example #7
0
 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))
Example #8
0
 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)
Example #9
0
 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)
Example #10
0
 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))
Example #11
0
 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))
Example #12
0
  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()
Example #13
0
 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)
Example #14
0
 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))
Example #15
0
 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())
Example #16
0
 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
Example #17
0
 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
Example #18
0
 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))
Example #19
0
    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)
Example #20
0
  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))
Example #21
0
 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))
Example #22
0
 def testExportPointArrivesBeforeLap(self):
     point = gps_pb2.Point()
     self.pusher.ExportPoint(point, 99, self.cursor)
     self.assertEqual(1, len(self.pusher.retry_point_queue))