kopia lustrzana https://github.com/glidernet/ogn-python
Fixed tests...
rodzic
acd606aa2e
commit
d857f88512
|
@ -107,23 +107,24 @@ def compute_logbook_entries(session=None):
|
||||||
upd = update(Logbook) \
|
upd = update(Logbook) \
|
||||||
.where(and_(Logbook.device_id == complete_flights.c.device_id,
|
.where(and_(Logbook.device_id == complete_flights.c.device_id,
|
||||||
or_(and_(Logbook.takeoff_airport_id == complete_flights.c.takeoff_airport_id,
|
or_(and_(Logbook.takeoff_airport_id == complete_flights.c.takeoff_airport_id,
|
||||||
Logbook.takeoff_timestamp == complete_flights.c.takeoff_timestamp),
|
Logbook.takeoff_timestamp == complete_flights.c.takeoff_timestamp,
|
||||||
Logbook.takeoff_airport_id == null()),
|
Logbook.landing_airport_id == null()),
|
||||||
or_(and_(Logbook.landing_airport_id == complete_flights.c.landing_airport_id,
|
and_(Logbook.takeoff_airport_id == null(),
|
||||||
Logbook.landing_timestamp == complete_flights.c.landing_timestamp),
|
Logbook.landing_airport_id == complete_flights.c.landing_airport_id,
|
||||||
Logbook.landing_airport_id == null()))) \
|
Logbook.landing_timestamp == complete_flights.c.landing_timestamp)))) \
|
||||||
.values({"takeoff_timestamp": complete_flights.c.takeoff_timestamp,
|
.values({"takeoff_timestamp": complete_flights.c.takeoff_timestamp,
|
||||||
"takeoff_track": complete_flights.c.takeoff_track,
|
"takeoff_track": complete_flights.c.takeoff_track,
|
||||||
"takeoff_airport_id": complete_flights.c.takeoff_airport_id,
|
"takeoff_airport_id": complete_flights.c.takeoff_airport_id,
|
||||||
"landing_timestamp": complete_flights.c.landing_timestamp,
|
"landing_timestamp": complete_flights.c.landing_timestamp,
|
||||||
"landing_track": complete_flights.c.landing_track,
|
"landing_track": complete_flights.c.landing_track,
|
||||||
"landing_airport_id": complete_flights.c.landing_airport_id,
|
"landing_airport_id": complete_flights.c.landing_airport_id,
|
||||||
"duration": complete_flights.c.duration})
|
"duration": complete_flights.c.duration,
|
||||||
|
"max_altitude": 1})
|
||||||
|
|
||||||
result = session.execute(upd)
|
result = session.execute(upd)
|
||||||
counter = result.rowcount
|
update_counter = result.rowcount
|
||||||
session.commit()
|
session.commit()
|
||||||
logger.debug("Updated logbook entries: {}".format(counter))
|
logger.debug("Updated logbook entries: {}".format(update_counter))
|
||||||
|
|
||||||
# unite all computated flights ('incomplete' and 'complete')
|
# unite all computated flights ('incomplete' and 'complete')
|
||||||
union_query = complete_flight_query.union(
|
union_query = complete_flight_query.union(
|
||||||
|
@ -136,12 +137,13 @@ def compute_logbook_entries(session=None):
|
||||||
# consider only if not already stored
|
# consider only if not already stored
|
||||||
new_logbook_entries = session.query(union_query) \
|
new_logbook_entries = session.query(union_query) \
|
||||||
.filter(~exists().where(
|
.filter(~exists().where(
|
||||||
and_(Logbook.reftime == union_query.c.reftime,
|
and_(Logbook.device_id == union_query.c.device_id,
|
||||||
Logbook.device_id == union_query.c.device_id,
|
or_(and_(Logbook.takeoff_airport_id == union_query.c.takeoff_airport_id,
|
||||||
or_(Logbook.takeoff_airport_id == union_query.c.takeoff_airport_id,
|
Logbook.takeoff_timestamp == union_query.c.takeoff_timestamp),
|
||||||
and_(Logbook.takeoff_airport_id == null(),
|
and_(Logbook.takeoff_airport_id == null(),
|
||||||
union_query.c.takeoff_airport_id == null())),
|
union_query.c.takeoff_airport_id == null())),
|
||||||
or_(Logbook.landing_airport_id == union_query.c.landing_airport_id,
|
or_(and_(Logbook.landing_airport_id == union_query.c.landing_airport_id,
|
||||||
|
Logbook.landing_timestamp == union_query.c.landing_timestamp),
|
||||||
and_(Logbook.landing_airport_id == null(),
|
and_(Logbook.landing_airport_id == null(),
|
||||||
union_query.c.landing_airport_id == null())))))
|
union_query.c.landing_airport_id == null())))))
|
||||||
|
|
||||||
|
@ -158,8 +160,8 @@ def compute_logbook_entries(session=None):
|
||||||
new_logbook_entries)
|
new_logbook_entries)
|
||||||
|
|
||||||
result = session.execute(ins)
|
result = session.execute(ins)
|
||||||
counter = result.rowcount
|
insert_counter = result.rowcount
|
||||||
session.commit()
|
session.commit()
|
||||||
logger.debug("New logbook entries: {}".format(counter))
|
logger.debug("New logbook entries: {}".format(insert_counter))
|
||||||
|
|
||||||
return counter
|
return "{}/{}".format(update_counter, insert_counter)
|
||||||
|
|
|
@ -11,6 +11,11 @@ class TestDB(unittest.TestCase):
|
||||||
engine = None
|
engine = None
|
||||||
app = None
|
app = None
|
||||||
|
|
||||||
|
TAKEOFF_KOENIGSDF_DD0815 = "INSERT INTO takeoff_landing(device_id, airport_id, timestamp, is_takeoff) SELECT d.id, a.id, '2016-06-01 10:00:00', TRUE FROM airport a, device d WHERE a.name='Koenigsdorf' and d.address = 'DD0815'"
|
||||||
|
LANDING_KOENIGSDF_DD0815 = "INSERT INTO takeoff_landing(device_id, airport_id, timestamp, is_takeoff) SELECT d.id, a.id, '2016-06-01 10:05:00', FALSE FROM airport a, device d WHERE a.name='Koenigsdorf' and d.address = 'DD0815'"
|
||||||
|
LANDING_KOENIGSDF_DD0815_LATER = "INSERT INTO takeoff_landing(device_id, airport_id, timestamp, is_takeoff) SELECT d.id, a.id, '2016-06-02 10:05:00', FALSE FROM airport a, device d WHERE a.name='Koenigsdorf' and d.address = 'DD0815'"
|
||||||
|
TAKEOFF_OHLSTADT_DD4711 = "INSERT INTO takeoff_landing(device_id, airport_id, timestamp, is_takeoff) SELECT d.id, a.id, '2016-06-01 10:00:00', TRUE FROM airport a, device d WHERE a.name='Ohlstadt' and d.address = 'DD4711'"
|
||||||
|
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
os.environ['OGN_CONFIG_MODULE'] = 'config.test'
|
os.environ['OGN_CONFIG_MODULE'] = 'config.test'
|
||||||
from ogn.commands.dbutils import engine, session
|
from ogn.commands.dbutils import engine, session
|
||||||
|
@ -32,88 +37,89 @@ class TestDB(unittest.TestCase):
|
||||||
session.commit()
|
session.commit()
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def count_logbook_entries(self):
|
|
||||||
session = self.session
|
|
||||||
logbook_query = session.query(Logbook)
|
|
||||||
i = 0
|
|
||||||
for logbook in logbook_query.all():
|
|
||||||
i = i + 1
|
|
||||||
print("{} {} {} {} {} {}".format(logbook.id, logbook.device_id, logbook.takeoff_airport_id, logbook.takeoff_timestamp, logbook.landing_airport_id, logbook.landing_timestamp))
|
|
||||||
|
|
||||||
return i
|
|
||||||
|
|
||||||
def test_single_takeoff(self):
|
def test_single_takeoff(self):
|
||||||
session = self.session
|
session = self.session
|
||||||
|
|
||||||
session.execute("INSERT INTO takeoff_landing(device_id, airport_id, timestamp, is_takeoff) SELECT d.id, a.id, '2016-06-01 10:00:00', TRUE FROM airport a, device d WHERE a.name='Koenigsdorf' and d.address = 'DD0815'")
|
session.execute(self.TAKEOFF_KOENIGSDF_DD0815)
|
||||||
session.commit()
|
session.commit()
|
||||||
|
|
||||||
compute_logbook_entries(session)
|
entries_changed = compute_logbook_entries(session)
|
||||||
self.assertEqual(self.count_logbook_entries(), 1)
|
self.assertEqual(entries_changed, '0/1')
|
||||||
|
|
||||||
def test_single_landing(self):
|
def test_single_landing(self):
|
||||||
session = self.session
|
session = self.session
|
||||||
|
|
||||||
session.execute("INSERT INTO takeoff_landing(device_id, airport_id, timestamp, is_takeoff) SELECT d.id, a.id, '2016-06-01 10:00:00', FALSE FROM airport a, device d WHERE a.name='Koenigsdorf' and d.address = 'DD0815'")
|
session.execute(self.LANDING_KOENIGSDF_DD0815)
|
||||||
session.commit()
|
session.commit()
|
||||||
|
|
||||||
compute_logbook_entries(session)
|
entries_changed = compute_logbook_entries(session)
|
||||||
self.assertEqual(self.count_logbook_entries(), 1)
|
self.assertEqual(entries_changed, '0/1')
|
||||||
|
|
||||||
def test_different_takeoffs(self):
|
def test_different_takeoffs(self):
|
||||||
session = self.session
|
session = self.session
|
||||||
|
|
||||||
session.execute("INSERT INTO takeoff_landing(device_id, airport_id, timestamp, is_takeoff) SELECT d.id, a.id, '2016-06-01 10:00:00', TRUE FROM airport a, device d WHERE a.name='Koenigsdorf' and d.address = 'DD0815'")
|
session.execute(self.TAKEOFF_KOENIGSDF_DD0815)
|
||||||
session.execute("INSERT INTO takeoff_landing(device_id, airport_id, timestamp, is_takeoff) SELECT d.id, a.id, '2016-06-01 10:00:00', TRUE FROM airport a, device d WHERE a.name='Ohlstadt' and d.address = 'DD4711'")
|
session.execute(self.TAKEOFF_OHLSTADT_DD4711)
|
||||||
session.commit()
|
session.commit()
|
||||||
|
|
||||||
compute_logbook_entries(session)
|
entries_changed = compute_logbook_entries(session)
|
||||||
self.assertEqual(self.count_logbook_entries(), 2)
|
self.assertEqual(entries_changed, '0/2')
|
||||||
|
|
||||||
def test_takeoff_and_landing(self):
|
def test_takeoff_and_landing(self):
|
||||||
session = self.session
|
session = self.session
|
||||||
|
|
||||||
session.execute("INSERT INTO takeoff_landing(device_id, airport_id, timestamp, is_takeoff) SELECT d.id, a.id, '2016-06-01 10:00:00', TRUE FROM airport a, device d WHERE a.name='Koenigsdorf' and d.address = 'DD0815'")
|
session.execute(self.TAKEOFF_KOENIGSDF_DD0815)
|
||||||
session.execute("INSERT INTO takeoff_landing(device_id, airport_id, timestamp, is_takeoff) SELECT d.id, a.id, '2016-06-01 10:05:00', FALSE FROM airport a, device d WHERE a.name='Koenigsdorf' and d.address = 'DD0815'")
|
session.execute(self.LANDING_KOENIGSDF_DD0815)
|
||||||
session.commit()
|
session.commit()
|
||||||
|
|
||||||
compute_logbook_entries(session)
|
entries_changed = compute_logbook_entries(session)
|
||||||
self.assertEqual(self.count_logbook_entries(), 1)
|
self.assertEqual(entries_changed, '0/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
|
||||||
|
|
||||||
session.execute("INSERT INTO takeoff_landing(device_id, airport_id, timestamp, is_takeoff) SELECT d.id, a.id, '2016-06-01 10:00:00', TRUE FROM airport a, device d WHERE a.name='Koenigsdorf' and d.address = 'DD0815'")
|
session.execute(self.TAKEOFF_KOENIGSDF_DD0815)
|
||||||
session.execute("INSERT INTO takeoff_landing(device_id, airport_id, timestamp, is_takeoff) SELECT d.id, a.id, '2016-06-02 10:05:00', FALSE FROM airport a, device d WHERE a.name='Koenigsdorf' and d.address = 'DD0815'")
|
session.execute(self.LANDING_KOENIGSDF_DD0815_LATER)
|
||||||
session.commit()
|
session.commit()
|
||||||
|
|
||||||
compute_logbook_entries(session)
|
entries_changed = compute_logbook_entries(session)
|
||||||
self.assertEqual(self.count_logbook_entries(), 2)
|
self.assertEqual(entries_changed, '0/2')
|
||||||
|
|
||||||
def test_update(self):
|
def test_update(self):
|
||||||
session = self.session
|
session = self.session
|
||||||
|
|
||||||
session.execute("INSERT INTO takeoff_landing(device_id, airport_id, timestamp, is_takeoff) SELECT d.id, a.id, '2016-06-01 10:00:00', TRUE FROM airport a, device d WHERE a.name='Koenigsdorf' and d.address = 'DD0815'")
|
session.execute(self.TAKEOFF_KOENIGSDF_DD0815)
|
||||||
session.commit()
|
session.commit()
|
||||||
compute_logbook_entries(session)
|
|
||||||
session.execute("INSERT INTO takeoff_landing(device_id, airport_id, timestamp, is_takeoff) SELECT d.id, a.id, '2016-06-01 10:05:00', FALSE FROM airport a, device d WHERE a.name='Koenigsdorf' and d.address = 'DD0815'")
|
entries_changed = compute_logbook_entries(session)
|
||||||
|
self.assertEqual(entries_changed, '0/1')
|
||||||
|
|
||||||
|
session.execute(self.LANDING_KOENIGSDF_DD0815)
|
||||||
session.commit()
|
session.commit()
|
||||||
compute_logbook_entries(session)
|
|
||||||
|
|
||||||
self.assertEqual(self.count_logbook_entries(), 1)
|
entries_changed = compute_logbook_entries(session)
|
||||||
|
self.assertEqual(entries_changed, '1/0')
|
||||||
|
|
||||||
|
session.execute(self.TAKEOFF_OHLSTADT_DD4711)
|
||||||
|
session.commit()
|
||||||
|
|
||||||
|
entries_changed = compute_logbook_entries(session)
|
||||||
|
self.assertEqual(entries_changed, '0/1')
|
||||||
|
|
||||||
@unittest.skip("Doesnt work... dont know why. Fix it!")
|
|
||||||
def test_update_wrong_order(self):
|
def test_update_wrong_order(self):
|
||||||
session = self.session
|
session = self.session
|
||||||
|
|
||||||
session.execute("INSERT INTO takeoff_landing(device_id, airport_id, timestamp, is_takeoff) SELECT d.id, a.id, '2016-06-01 10:05:00', FALSE FROM airport a, device d WHERE a.name='Koenigsdorf' and d.address = 'DD0815'")
|
session.execute(self.LANDING_KOENIGSDF_DD0815)
|
||||||
session.commit()
|
session.commit()
|
||||||
compute_logbook_entries(session)
|
|
||||||
session.execute("INSERT INTO takeoff_landing(device_id, airport_id, timestamp, is_takeoff) SELECT d.id, a.id, '2016-06-01 10:00:00', TRUE FROM airport a, device d WHERE a.name='Koenigsdorf' and d.address = 'DD0815'")
|
|
||||||
session.commit()
|
|
||||||
compute_logbook_entries(session)
|
|
||||||
|
|
||||||
self.assertEqual(self.count_logbook_entries(), 1)
|
entries_changed = compute_logbook_entries(session)
|
||||||
|
self.assertEqual(entries_changed, '0/1')
|
||||||
|
|
||||||
|
session.execute(self.TAKEOFF_KOENIGSDF_DD0815)
|
||||||
|
session.commit()
|
||||||
|
|
||||||
|
entries_changed = compute_logbook_entries(session)
|
||||||
|
self.assertEqual(entries_changed, '1/0')
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
unittest.main()
|
unittest.main()
|
||||||
|
|
Ładowanie…
Reference in New Issue