Better logbook testing

pull/68/head
Konstantin Gründger 2017-12-12 09:59:38 +01:00
rodzic 2cc3b8f71c
commit 145f21604a
2 zmienionych plików z 62 dodań i 37 usunięć

Wyświetl plik

@ -17,9 +17,6 @@ def update_logbook(session=None):
if session is None: if session is None:
session = app.session 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' is the window order for the sql window function
wo = and_(func.date(TakeoffLanding.timestamp), wo = and_(func.date(TakeoffLanding.timestamp),
TakeoffLanding.device_id, TakeoffLanding.device_id,
@ -43,7 +40,6 @@ def update_logbook(session=None):
TakeoffLanding.airport_id, TakeoffLanding.airport_id,
func.lag(TakeoffLanding.airport_id).over(order_by=wo).label('airport_id_prev'), 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')) \ func.lead(TakeoffLanding.airport_id).over(order_by=wo).label('airport_id_next')) \
.filter(*or_args) \
.subquery() .subquery()
# find complete flights (with takeoff and landing on the same day) # find complete flights (with takeoff and landing on the same day)
@ -156,7 +152,7 @@ def update_logbook(session=None):
session.commit() session.commit()
logger.debug("New logbook entries: {}".format(insert_counter)) 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 @app.task

Wyświetl plik

@ -1,6 +1,9 @@
import unittest import unittest
import os import os
from sqlalchemy.sql import null, and_
from ogn.model import Logbook, Airport
from ogn.collect.logbook import update_logbook from ogn.collect.logbook import update_logbook
@ -35,17 +38,43 @@ class TestDB(unittest.TestCase):
session.commit() session.commit()
pass 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): def test_single_takeoff(self):
session = self.session session = self.session
session.execute(self.TAKEOFF_KOENIGSDF_DD0815) session.execute(self.TAKEOFF_KOENIGSDF_DD0815)
session.commit() session.commit()
entries_changed = update_logbook(session) update_logbook(session)
self.assertEqual(entries_changed, '0/1') self.assert_entries(koen_to=1)
entries_changed = update_logbook(session) update_logbook(session)
self.assertEqual(entries_changed, '0/0') self.assert_entries(koen_to=1)
def test_single_landing(self): def test_single_landing(self):
session = self.session session = self.session
@ -53,11 +82,11 @@ class TestDB(unittest.TestCase):
session.execute(self.LANDING_KOENIGSDF_DD0815) session.execute(self.LANDING_KOENIGSDF_DD0815)
session.commit() session.commit()
entries_changed = update_logbook(session) update_logbook(session)
self.assertEqual(entries_changed, '0/1') self.assert_entries(koen_ldg=1)
entries_changed = update_logbook(session) update_logbook(session)
self.assertEqual(entries_changed, '0/0') self.assert_entries(koen_ldg=1)
def test_different_takeoffs(self): def test_different_takeoffs(self):
session = self.session session = self.session
@ -66,11 +95,11 @@ class TestDB(unittest.TestCase):
session.execute(self.TAKEOFF_OHLSTADT_DD4711) session.execute(self.TAKEOFF_OHLSTADT_DD4711)
session.commit() session.commit()
entries_changed = update_logbook(session) update_logbook(session)
self.assertEqual(entries_changed, '0/2') self.assert_entries(koen_to=1, ohl_to=1)
entries_changed = update_logbook(session) update_logbook(session)
self.assertEqual(entries_changed, '0/0') self.assert_entries(koen_to=1, ohl_to=1)
def test_takeoff_and_landing(self): def test_takeoff_and_landing(self):
session = self.session session = self.session
@ -79,11 +108,11 @@ class TestDB(unittest.TestCase):
session.execute(self.LANDING_KOENIGSDF_DD0815) session.execute(self.LANDING_KOENIGSDF_DD0815)
session.commit() session.commit()
entries_changed = update_logbook(session) update_logbook(session)
self.assertEqual(entries_changed, '0/1') self.assert_entries(koen_complete=1)
entries_changed = update_logbook(session) update_logbook(session)
self.assertEqual(entries_changed, '0/0') self.assert_entries(koen_complete=1)
def test_takeoff_and_landing_on_different_days(self): def test_takeoff_and_landing_on_different_days(self):
session = self.session session = self.session
@ -92,11 +121,11 @@ class TestDB(unittest.TestCase):
session.execute(self.LANDING_KOENIGSDF_DD0815_LATER) session.execute(self.LANDING_KOENIGSDF_DD0815_LATER)
session.commit() session.commit()
entries_changed = update_logbook(session) update_logbook(session)
self.assertEqual(entries_changed, '0/2') self.assert_entries(koen_to=1, koen_ldg=1)
entries_changed = update_logbook(session) update_logbook(session)
self.assertEqual(entries_changed, '0/0') self.assert_entries(koen_to=1, koen_ldg=1)
def test_update(self): def test_update(self):
session = self.session session = self.session
@ -104,23 +133,23 @@ class TestDB(unittest.TestCase):
session.execute(self.TAKEOFF_KOENIGSDF_DD0815) session.execute(self.TAKEOFF_KOENIGSDF_DD0815)
session.commit() session.commit()
entries_changed = update_logbook(session) update_logbook(session)
self.assertEqual(entries_changed, '0/1') self.assert_entries(koen_to=1)
session.execute(self.LANDING_KOENIGSDF_DD0815) session.execute(self.LANDING_KOENIGSDF_DD0815)
session.commit() session.commit()
entries_changed = update_logbook(session) update_logbook(session)
self.assertEqual(entries_changed, '1/0') self.assert_entries(koen_complete=1)
session.execute(self.TAKEOFF_OHLSTADT_DD4711) session.execute(self.TAKEOFF_OHLSTADT_DD4711)
session.commit() session.commit()
entries_changed = update_logbook(session) update_logbook(session)
self.assertEqual(entries_changed, '0/1') self.assert_entries(koen_complete=1, ohl_to=1)
entries_changed = update_logbook(session) update_logbook(session)
self.assertEqual(entries_changed, '0/0') self.assert_entries(koen_complete=1, ohl_to=1)
def test_update_wrong_order(self): def test_update_wrong_order(self):
session = self.session session = self.session
@ -128,14 +157,14 @@ class TestDB(unittest.TestCase):
session.execute(self.LANDING_KOENIGSDF_DD0815) session.execute(self.LANDING_KOENIGSDF_DD0815)
session.commit() session.commit()
entries_changed = update_logbook(session) update_logbook(session)
self.assertEqual(entries_changed, '0/1') self.assert_entries(koen_ldg=1)
session.execute(self.TAKEOFF_KOENIGSDF_DD0815) session.execute(self.TAKEOFF_KOENIGSDF_DD0815)
session.commit() session.commit()
entries_changed = update_logbook(session) update_logbook(session)
self.assertEqual(entries_changed, '1/0') self.assert_entries(koen_complete=1)
if __name__ == '__main__': if __name__ == '__main__':