kopia lustrzana https://github.com/glidernet/ogn-python
Better logbook testing
rodzic
2cc3b8f71c
commit
145f21604a
|
@ -17,9 +17,6 @@ def update_logbook(session=None):
|
|||
if session is None:
|
||||
session = app.session
|
||||
|
||||
or_args = [between(TakeoffLanding.timestamp, '2016-06-28 00:00:00', '2016-06-28 23:59:59')]
|
||||
or_args = []
|
||||
|
||||
# 'wo' is the window order for the sql window function
|
||||
wo = and_(func.date(TakeoffLanding.timestamp),
|
||||
TakeoffLanding.device_id,
|
||||
|
@ -43,7 +40,6 @@ def update_logbook(session=None):
|
|||
TakeoffLanding.airport_id,
|
||||
func.lag(TakeoffLanding.airport_id).over(order_by=wo).label('airport_id_prev'),
|
||||
func.lead(TakeoffLanding.airport_id).over(order_by=wo).label('airport_id_next')) \
|
||||
.filter(*or_args) \
|
||||
.subquery()
|
||||
|
||||
# find complete flights (with takeoff and landing on the same day)
|
||||
|
@ -156,7 +152,7 @@ def update_logbook(session=None):
|
|||
session.commit()
|
||||
logger.debug("New logbook entries: {}".format(insert_counter))
|
||||
|
||||
return "{}/{}".format(update_counter, insert_counter)
|
||||
return "Logbook entries: {} inserted, {} updated".format(update_counter, insert_counter)
|
||||
|
||||
|
||||
@app.task
|
||||
|
|
|
@ -1,6 +1,9 @@
|
|||
import unittest
|
||||
import os
|
||||
|
||||
from sqlalchemy.sql import null, and_
|
||||
|
||||
from ogn.model import Logbook, Airport
|
||||
from ogn.collect.logbook import update_logbook
|
||||
|
||||
|
||||
|
@ -35,17 +38,43 @@ class TestDB(unittest.TestCase):
|
|||
session.commit()
|
||||
pass
|
||||
|
||||
def count_logbook_entries(self):
|
||||
session = self.session
|
||||
query = session.query(Logbook)
|
||||
return len(query.all())
|
||||
|
||||
def assert_entries(self, koen_to=0, koen_ldg=0, koen_complete=0, ohl_to=0, ohl_ldg=0, ohl_complete=0):
|
||||
session = self.session
|
||||
|
||||
entries = len(session.query(Logbook).filter(and_(Airport.id == Logbook.takeoff_airport_id, Airport.name == 'Koenigsdorf')).filter(Logbook.landing_airport_id == null()).all())
|
||||
self.assertEqual(entries, koen_to)
|
||||
|
||||
entries = len(session.query(Logbook).filter(and_(Airport.id == Logbook.landing_airport_id, Airport.name == 'Koenigsdorf')).filter(Logbook.takeoff_airport_id == null()).all())
|
||||
self.assertEqual(entries, koen_ldg)
|
||||
|
||||
entries = len(session.query(Logbook).filter(and_(Airport.id == Logbook.takeoff_airport_id, Airport.name == 'Koenigsdorf')).filter(Logbook.takeoff_airport_id == Logbook.landing_airport_id).all())
|
||||
self.assertEqual(entries, koen_complete)
|
||||
|
||||
entries = len(session.query(Logbook).filter(and_(Airport.id == Logbook.takeoff_airport_id, Airport.name == 'Ohlstadt')).filter(Logbook.landing_airport_id == null()).all())
|
||||
self.assertEqual(entries, ohl_to)
|
||||
|
||||
entries = len(session.query(Logbook).filter(and_(Airport.id == Logbook.landing_airport_id, Airport.name == 'Ohlstadt')).filter(Logbook.takeoff_airport_id == null()).all())
|
||||
self.assertEqual(entries, ohl_ldg)
|
||||
|
||||
entries = len(session.query(Logbook).filter(and_(Airport.id == Logbook.takeoff_airport_id, Airport.name == 'Ohlstadt')).filter(Logbook.takeoff_airport_id == Logbook.landing_airport_id).all())
|
||||
self.assertEqual(entries, ohl_complete)
|
||||
|
||||
def test_single_takeoff(self):
|
||||
session = self.session
|
||||
|
||||
session.execute(self.TAKEOFF_KOENIGSDF_DD0815)
|
||||
session.commit()
|
||||
|
||||
entries_changed = update_logbook(session)
|
||||
self.assertEqual(entries_changed, '0/1')
|
||||
update_logbook(session)
|
||||
self.assert_entries(koen_to=1)
|
||||
|
||||
entries_changed = update_logbook(session)
|
||||
self.assertEqual(entries_changed, '0/0')
|
||||
update_logbook(session)
|
||||
self.assert_entries(koen_to=1)
|
||||
|
||||
def test_single_landing(self):
|
||||
session = self.session
|
||||
|
@ -53,11 +82,11 @@ class TestDB(unittest.TestCase):
|
|||
session.execute(self.LANDING_KOENIGSDF_DD0815)
|
||||
session.commit()
|
||||
|
||||
entries_changed = update_logbook(session)
|
||||
self.assertEqual(entries_changed, '0/1')
|
||||
update_logbook(session)
|
||||
self.assert_entries(koen_ldg=1)
|
||||
|
||||
entries_changed = update_logbook(session)
|
||||
self.assertEqual(entries_changed, '0/0')
|
||||
update_logbook(session)
|
||||
self.assert_entries(koen_ldg=1)
|
||||
|
||||
def test_different_takeoffs(self):
|
||||
session = self.session
|
||||
|
@ -66,11 +95,11 @@ class TestDB(unittest.TestCase):
|
|||
session.execute(self.TAKEOFF_OHLSTADT_DD4711)
|
||||
session.commit()
|
||||
|
||||
entries_changed = update_logbook(session)
|
||||
self.assertEqual(entries_changed, '0/2')
|
||||
update_logbook(session)
|
||||
self.assert_entries(koen_to=1, ohl_to=1)
|
||||
|
||||
entries_changed = update_logbook(session)
|
||||
self.assertEqual(entries_changed, '0/0')
|
||||
update_logbook(session)
|
||||
self.assert_entries(koen_to=1, ohl_to=1)
|
||||
|
||||
def test_takeoff_and_landing(self):
|
||||
session = self.session
|
||||
|
@ -79,11 +108,11 @@ class TestDB(unittest.TestCase):
|
|||
session.execute(self.LANDING_KOENIGSDF_DD0815)
|
||||
session.commit()
|
||||
|
||||
entries_changed = update_logbook(session)
|
||||
self.assertEqual(entries_changed, '0/1')
|
||||
update_logbook(session)
|
||||
self.assert_entries(koen_complete=1)
|
||||
|
||||
entries_changed = update_logbook(session)
|
||||
self.assertEqual(entries_changed, '0/0')
|
||||
update_logbook(session)
|
||||
self.assert_entries(koen_complete=1)
|
||||
|
||||
def test_takeoff_and_landing_on_different_days(self):
|
||||
session = self.session
|
||||
|
@ -92,11 +121,11 @@ class TestDB(unittest.TestCase):
|
|||
session.execute(self.LANDING_KOENIGSDF_DD0815_LATER)
|
||||
session.commit()
|
||||
|
||||
entries_changed = update_logbook(session)
|
||||
self.assertEqual(entries_changed, '0/2')
|
||||
update_logbook(session)
|
||||
self.assert_entries(koen_to=1, koen_ldg=1)
|
||||
|
||||
entries_changed = update_logbook(session)
|
||||
self.assertEqual(entries_changed, '0/0')
|
||||
update_logbook(session)
|
||||
self.assert_entries(koen_to=1, koen_ldg=1)
|
||||
|
||||
def test_update(self):
|
||||
session = self.session
|
||||
|
@ -104,23 +133,23 @@ class TestDB(unittest.TestCase):
|
|||
session.execute(self.TAKEOFF_KOENIGSDF_DD0815)
|
||||
session.commit()
|
||||
|
||||
entries_changed = update_logbook(session)
|
||||
self.assertEqual(entries_changed, '0/1')
|
||||
update_logbook(session)
|
||||
self.assert_entries(koen_to=1)
|
||||
|
||||
session.execute(self.LANDING_KOENIGSDF_DD0815)
|
||||
session.commit()
|
||||
|
||||
entries_changed = update_logbook(session)
|
||||
self.assertEqual(entries_changed, '1/0')
|
||||
update_logbook(session)
|
||||
self.assert_entries(koen_complete=1)
|
||||
|
||||
session.execute(self.TAKEOFF_OHLSTADT_DD4711)
|
||||
session.commit()
|
||||
|
||||
entries_changed = update_logbook(session)
|
||||
self.assertEqual(entries_changed, '0/1')
|
||||
update_logbook(session)
|
||||
self.assert_entries(koen_complete=1, ohl_to=1)
|
||||
|
||||
entries_changed = update_logbook(session)
|
||||
self.assertEqual(entries_changed, '0/0')
|
||||
update_logbook(session)
|
||||
self.assert_entries(koen_complete=1, ohl_to=1)
|
||||
|
||||
def test_update_wrong_order(self):
|
||||
session = self.session
|
||||
|
@ -128,14 +157,14 @@ class TestDB(unittest.TestCase):
|
|||
session.execute(self.LANDING_KOENIGSDF_DD0815)
|
||||
session.commit()
|
||||
|
||||
entries_changed = update_logbook(session)
|
||||
self.assertEqual(entries_changed, '0/1')
|
||||
update_logbook(session)
|
||||
self.assert_entries(koen_ldg=1)
|
||||
|
||||
session.execute(self.TAKEOFF_KOENIGSDF_DD0815)
|
||||
session.commit()
|
||||
|
||||
entries_changed = update_logbook(session)
|
||||
self.assertEqual(entries_changed, '1/0')
|
||||
update_logbook(session)
|
||||
self.assert_entries(koen_complete=1)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
|
Ładowanie…
Reference in New Issue