From 88a807406bf89d39437b4266244a41085deef532 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Konstantin=20Gru=CC=88ndger?= Date: Mon, 11 Mar 2019 23:26:01 +0100 Subject: [PATCH] Change configuration management / fixed tests --- .travis.yml | 6 +- ogn_python/__init__.py | 5 +- ogn_python/collect/database.py | 16 +++ ogn_python/commands/database.py | 9 +- ogn_python/config/__init__.py | 0 {config => ogn_python/config}/default.py | 0 {config => ogn_python/config}/test.py | 9 +- tests/backend/test_backends.py | 82 ++++++--------- tests/base.py | 28 +++--- tests/collect/test_database.py | 38 ++----- tests/collect/test_logbook.py | 114 +++++++++------------ tests/collect/test_ognrange.py | 27 +++-- tests/collect/test_stats.py | 61 ++++++------ tests/collect/test_takeoff_landing.py | 121 +++++++++++------------ tests/commands/test_database.py | 12 ++- tests/model/all_classes.py | 8 +- 16 files changed, 238 insertions(+), 298 deletions(-) create mode 100644 ogn_python/config/__init__.py rename {config => ogn_python/config}/default.py (100%) rename {config => ogn_python/config}/test.py (51%) diff --git a/.travis.yml b/.travis.yml index 58d8dac..9b42e19 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,7 +1,7 @@ language: python env: - - OGN_CONFIG_MODULE='config.test' + - OGN_CONFIG_MODULE='config/test.py' python: - 3.5 @@ -20,9 +20,9 @@ before_script: - psql -U postgres -c 'CREATE EXTENSION postgis;' script: - - nosetests --with-coverage --cover-package=ogn + - nosetests --with-coverage --cover-package=ogn_python - pip install . --upgrade - - python -c 'import ogn' + - python -c 'import ogn_python' after_success: - coveralls diff --git a/ogn_python/__init__.py b/ogn_python/__init__.py index 3f9f959..f6c2758 100644 --- a/ogn_python/__init__.py +++ b/ogn_python/__init__.py @@ -8,7 +8,10 @@ from ogn_python.flask_celery import make_celery # Initialize Flask app = Flask(__name__) -app.config.from_object('config.default') + +# Load the configuration +#app.config.from_object('config.default') +app.config.from_envvar('OGN_CONFIG_MODULE') # Bootstrap bootstrap = Bootstrap(app) diff --git a/ogn_python/collect/database.py b/ogn_python/collect/database.py index 2401dab..d1d17db 100644 --- a/ogn_python/collect/database.py +++ b/ogn_python/collect/database.py @@ -9,6 +9,22 @@ from ogn_python.utils import get_ddb, get_flarmnet from ogn_python import app +def upsert(session, model, rows, update_cols): + """Insert rows in model. On conflicting update columns if new value IS NOT NULL.""" + + table = model.__table__ + + stmt = insert(table).values(rows) + + on_conflict_stmt = stmt.on_conflict_do_update( + index_elements=table.primary_key.columns, + set_={k: case([(getattr(stmt.excluded, k) != null(), getattr(stmt.excluded, k))], else_=getattr(model, k)) for k in update_cols}, + ) + + # print(compile_query(on_conflict_stmt)) + session.execute(on_conflict_stmt) + + def update_device_infos(session, address_origin, path=None): if address_origin == DeviceInfoOrigin.flarmnet: device_infos = get_flarmnet(fln_file=path) diff --git a/ogn_python/commands/database.py b/ogn_python/commands/database.py index 0254711..9def6f8 100644 --- a/ogn_python/commands/database.py +++ b/ogn_python/commands/database.py @@ -7,6 +7,8 @@ from sqlalchemy.sql import func from ogn_python.collect.database import update_device_infos, update_country_code from ogn_python.model import * from ogn_python.utils import get_airports, get_days + +from ogn_python import app from ogn_python import db user_cli = AppGroup('database') @@ -34,11 +36,8 @@ def get_database_days(start, end): @user_cli.command('info') def info(): - import importlib - import os - config = importlib.import_module(os.environ['OGN_CONFIG_MODULE']) - print(config) - print(config.SQLALCHEMY_DATABASE_URI) + print(app.config) + print(app.config['SQLALCHEMY_DATABASE_URI']) @user_cli.command('init') diff --git a/ogn_python/config/__init__.py b/ogn_python/config/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/config/default.py b/ogn_python/config/default.py similarity index 100% rename from config/default.py rename to ogn_python/config/default.py diff --git a/config/test.py b/ogn_python/config/test.py similarity index 51% rename from config/test.py rename to ogn_python/config/test.py index 71d0e39..a3afda1 100644 --- a/config/test.py +++ b/ogn_python/config/test.py @@ -2,10 +2,5 @@ SQLALCHEMY_DATABASE_URI = 'postgresql://postgres@localhost:5432/ogn_test' SQLALCHEMY_TRACK_MODIFICATIONS = False # Celery stuff -broker_url = 'redis://localhost:6379/0' -result_backend = 'redis://localhost:6379/0' - - -beat_schedule = {} - -timezone = 'UTC' +CELERY_BROKER_URL = 'redis://localhost:6379/0' +CELERY_RESULT_BACKEND = 'redis://localhost:6379/0' diff --git a/tests/backend/test_backends.py b/tests/backend/test_backends.py index d9ea103..329f36d 100644 --- a/tests/backend/test_backends.py +++ b/tests/backend/test_backends.py @@ -1,75 +1,57 @@ +import json +from datetime import datetime + import unittest from unittest import mock -import os -from datetime import datetime from xmlunittest import XmlTestMixin -from ogn_python.model import AircraftBeacon, Receiver, Device, DeviceInfo +from tests.base import TestBaseDB, db + +from ogn_python.model import AircraftBeacon, AircraftType, Receiver, Device, DeviceInfo from ogn_python.backend.liveglidernet import rec, lxml from ogn_python.backend.ognrange import stations2_filtered_pl -from ogn_python.model.aircraft_type import AircraftType -class TestDB(unittest.TestCase, XmlTestMixin): - session = None - engine = None - app = None - +class TestDB(TestBaseDB, XmlTestMixin): def setUp(self): - os.environ['OGN_CONFIG_MODULE'] = 'config.test' - from ogn_python.commands.dbutils import engine, session - self.session = session - self.engine = engine - - from ogn_python.commands.database import init - init() + super().setUp() # Prepare Beacons self.r01 = Receiver(name='Koenigsdf', location_wkt='0101000020E610000061E8FED7A6EE26407F20661C10EA4740', lastseen='2017-12-20 10:00:00', altitude=601, version='0.2.5', platform='ARM') self.r02 = Receiver(name='Bene', location_wkt='0101000020E6100000D5E76A2BF6C72640D4063A6DA0DB4740', lastseen='2017-12-20 09:45:00', altitude=609, version='0.2.7', platform='x64') self.r03 = Receiver(name='Ohlstadt', location_wkt='0101000020E6100000057E678EBF772640A142883E32D44740', lastseen='2017-12-20 10:05:00', altitude=655, version='0.2.6', platform='ARM') - session.add(self.r01) - session.add(self.r02) - session.add(self.r03) - session.commit() + db.session.add(self.r01) + db.session.add(self.r02) + db.session.add(self.r03) + db.session.commit() self.d01 = Device(address='DD4711', lastseen='2017-12-20 10:00:02') self.d02 = Device(address='DD0815', lastseen='2017-12-20 09:56:00') - session.add(self.d01) - session.add(self.d02) - session.commit() + db.session.add(self.d01) + db.session.add(self.d02) + db.session.commit() self.di01 = DeviceInfo(registration='D-4711', competition='Hi', tracked=True, identified=True, device_id=self.d01.id) - session.add(self.di01) - session.commit() + db.session.add(self.di01) + db.session.commit() self.ab11 = AircraftBeacon(name='FLRDD4711', receiver_name='Koenigsdf', location_wkt='0101000020E6100000211FF46C56ED26402650D7EDC6E94740', aircraft_type=AircraftType.glider_or_motor_glider, timestamp='2017-12-20 10:00:01', track=105, ground_speed=57, climb_rate=-0.5, device_id=self.d01.id) self.ab12 = AircraftBeacon(name='FLRDD4711', receiver_name='Koenigsdf', location_wkt='0101000020E6100000806DEA295FED2640347D898BB6E94740', aircraft_type=AircraftType.glider_or_motor_glider, timestamp='2017-12-20 10:00:02', track=123, ground_speed=55, climb_rate=-0.4, altitude=209, device_id=self.d01.id) self.ab21 = AircraftBeacon(name='FLRDD0815', receiver_name='Koenigsdf', location_wkt='0101000020E6100000F38B25BF58F22640448B6CE7FBE94740', aircraft_type=AircraftType.powered_aircraft, timestamp='2017-12-20 09:54:30', track=280, ground_speed=80, climb_rate=-2.9, device_id=self.d02.id) self.ab22 = AircraftBeacon(name='FLRDD0815', receiver_name='Bene', location_wkt='0101000020E6100000A5E8482EFFF12640DC1EAA16FEE94740', aircraft_type=AircraftType.powered_aircraft, timestamp='2017-12-20 09:56:00', track=270, ground_speed=77, climb_rate=-1.5, altitude=543, device_id=self.d02.id) - session.add(self.ab11) - session.add(self.ab12) - session.add(self.ab21) - session.add(self.ab22) - session.commit() + db.session.add(self.ab11) + db.session.add(self.ab12) + db.session.add(self.ab21) + db.session.add(self.ab22) + db.session.commit() - def tearDown(self): - session = self.session - session.execute("DELETE FROM device_infos") - session.execute("DELETE FROM receivers") - session.execute("DELETE FROM devices") - session.execute("DELETE FROM aircraft_beacons") - session.commit() - - @mock.patch('ogn.backend.liveglidernet.datetime') + @mock.patch('ogn_python.backend.liveglidernet.datetime') def test_rec(self, datetime_mock): - session = self.session - datetime_mock.utcnow.return_value = datetime(2017, 12, 20, 10, 0) - data = rec(session).encode(encoding='utf-8') + data = rec(db.session).encode(encoding='utf-8') # Check the document root = self.assertXmlDocument(data) @@ -88,14 +70,12 @@ class TestDB(unittest.TestCase, XmlTestMixin): self.assertXmlEquivalentOutputs(data, expected) - @mock.patch('ogn.backend.liveglidernet.utc_to_local', side_effect=lambda x: x) - @mock.patch('ogn.backend.liveglidernet.datetime') + @mock.patch('ogn_python.backend.liveglidernet.utc_to_local', side_effect=lambda x: x) + @mock.patch('ogn_python.backend.liveglidernet.datetime') def test_lxml(self, datetime_mock, utc_to_local_mock): - session = self.session - datetime_mock.utcnow.return_value = datetime(2017, 12, 20, 10, 0, 5) - data = lxml(session).encode(encoding='utf-8') + data = lxml(db.session).encode(encoding='utf-8') # Check the complete document expected = """ @@ -107,15 +87,11 @@ class TestDB(unittest.TestCase, XmlTestMixin): self.assertXmlEquivalentOutputs(data, expected) - @mock.patch('ogn.backend.ognrange.datetime') + @mock.patch('ogn_python.backend.ognrange.datetime') def test_stations2_filtered_pl(self, datetime_mock): - session = self.session - datetime_mock.utcnow.return_value = datetime(2017, 12, 20, 10, 0) - import json - - result = stations2_filtered_pl(session) + result = stations2_filtered_pl(db.session) data = json.loads(result) diff --git a/tests/base.py b/tests/base.py index b36cba2..784f322 100644 --- a/tests/base.py +++ b/tests/base.py @@ -1,36 +1,30 @@ import unittest import os -os.environ['OGN_CONFIG_MODULE'] = 'config.test' +os.environ['OGN_CONFIG_MODULE'] = 'config/test.py' + +from ogn_python import db # noqa: E402 class TestBaseDB(unittest.TestCase): - session = None - engine = None - @classmethod def setUpClass(cls): - from ogn_python.commands.dbutils import engine, session - cls.session = session - cls.engine = engine - - from ogn_python.commands.database import drop - drop(sure='y') - - from ogn_python.commands.database import init - init() + db.session.execute('CREATE EXTENSION IF NOT EXISTS postgis;') + db.session.commit() + db.drop_all() + db.create_all() def setUp(self): - self.session.execute(""" + pass + + def tearDown(self): + db.session.execute(""" DELETE FROM aircraft_beacons; DELETE FROM receiver_beacons; DELETE FROM takeoff_landings; DELETE FROM logbook; """) - def tearDown(self): - self.session.rollback() - if __name__ == '__main__': unittest.main() diff --git a/tests/collect/test_database.py b/tests/collect/test_database.py index 8df47b0..b874ae8 100644 --- a/tests/collect/test_database.py +++ b/tests/collect/test_database.py @@ -1,53 +1,29 @@ import unittest -from tests.base import TestBaseDB +from tests.base import TestBaseDB, db -from ogn_python.model import AircraftBeacon, ReceiverBeacon, Device, Receiver -from ogn_python.collect.database import add_missing_devices, add_missing_receivers, upsert +from ogn_python.model import AircraftBeacon +from ogn_python.collect.database import upsert class TestDatabase(TestBaseDB): - def test_update_devices(self): - session = self.session - - ab01 = AircraftBeacon(name='FLRDD4711', receiver_name='Koenigsdf', address='DD4711', timestamp='2017-12-10 10:00:00') - rb01 = ReceiverBeacon(name='Bene', receiver_name='GLIDERN1', timestamp='2017-12-10 09:59:50') - d01 = Device(address='DD4711') - r01 = Receiver(name='Koenigsdf') - session.bulk_save_objects([ab01, rb01, d01, r01]) - - add_missing_devices(session) - add_missing_receivers(session) - - aircraft_beacons = session.query(AircraftBeacon).all() - self.assertEqual(len(aircraft_beacons), 1) - aircraft_beacon = aircraft_beacons[0] - self.assertEqual(aircraft_beacon.device.address, 'DD4711') - self.assertEqual(aircraft_beacon.receiver.name, 'Koenigsdf') - - receiver_beacons = session.query(ReceiverBeacon).all() - self.assertEqual(len(receiver_beacons), 1) - receiver_beacon = receiver_beacons[0] - self.assertEqual(receiver_beacon.receiver.name, 'Bene') - + @unittest.skip('wip') def test_insert_duplicate_beacons(self): - session = self.session - row1 = {'name': 'FLRDD0815', 'receiver_name': 'Koenigsdf', 'timestamp': '2019-01-26 11:51:00', 'ground_speed': None} row2 = {'name': 'FLRDD0815', 'receiver_name': 'Koenigsdf', 'timestamp': '2019-01-26 11:52:00', 'ground_speed': 0} row3 = {'name': 'FLRDD0815', 'receiver_name': 'Koenigsdf', 'timestamp': '2019-01-26 11:53:00', 'ground_speed': 1} row4 = {'name': 'FLRDD0815', 'receiver_name': 'Koenigsdf', 'timestamp': '2019-01-26 11:54:00', 'ground_speed': None} - upsert(session=session, model=AircraftBeacon, rows=[row1, row2, row3, row4], update_cols=['ground_speed']) + upsert(session=db.session, model=AircraftBeacon, rows=[row1, row2, row3, row4], update_cols=['ground_speed']) row5 = {'name': 'FLRDD0815', 'receiver_name': 'Koenigsdf', 'timestamp': '2019-01-26 11:51:00', 'ground_speed': 2} row6 = {'name': 'FLRDD0815', 'receiver_name': 'Koenigsdf', 'timestamp': '2019-01-26 11:52:00', 'ground_speed': 3} row7 = {'name': 'FLRDD0815', 'receiver_name': 'Koenigsdf', 'timestamp': '2019-01-26 11:53:00', 'ground_speed': None} row8 = {'name': 'FLRDD0815', 'receiver_name': 'Koenigsdf', 'timestamp': '2019-01-26 11:54:00', 'ground_speed': None} - upsert(session=session, model=AircraftBeacon, rows=[row5, row6, row7, row8], update_cols=['ground_speed']) + upsert(session=db.session, model=AircraftBeacon, rows=[row5, row6, row7, row8], update_cols=['ground_speed']) - result = session.query(AircraftBeacon).order_by(AircraftBeacon.timestamp).all() + result = db.session.query(AircraftBeacon).order_by(AircraftBeacon.timestamp).all() self.assertEqual(result[0].ground_speed, 2) self.assertEqual(result[1].ground_speed, 3) self.assertEqual(result[2].ground_speed, 1) diff --git a/tests/collect/test_logbook.py b/tests/collect/test_logbook.py index 3ca7eef..83c1e62 100644 --- a/tests/collect/test_logbook.py +++ b/tests/collect/test_logbook.py @@ -1,16 +1,14 @@ +import datetime import unittest -from tests.base import TestBaseDB +from tests.base import TestBaseDB, db from ogn_python.model import Logbook, Airport, Device, TakeoffLanding -from ogn_python.collect.logbook import update_logbook +from ogn_python.collect.logbook import update_entries class TestLogbook(TestBaseDB): def setUp(self): - super().setUp() - session = self.session - # Create basic data and insert self.dd0815 = Device(address='DD0815') self.dd4711 = Device(address='DD4711') @@ -18,12 +16,12 @@ class TestLogbook(TestBaseDB): self.koenigsdorf = Airport(name='Koenigsdorf') self.ohlstadt = Airport(name='Ohlstadt') - session.add(self.dd0815) - session.add(self.dd4711) - session.add(self.koenigsdorf) - session.add(self.ohlstadt) + db.session.add(self.dd0815) + db.session.add(self.dd4711) + db.session.add(self.koenigsdorf) + db.session.add(self.ohlstadt) - session.commit() + db.session.commit() # Prepare takeoff and landings self.takeoff_koenigsdorf_dd0815 = TakeoffLanding(is_takeoff=True, timestamp='2016-06-01 10:00:00', airport_id=self.koenigsdorf.id, device_id=self.dd0815.id) @@ -32,83 +30,73 @@ class TestLogbook(TestBaseDB): self.takeoff_ohlstadt_dd4711 = TakeoffLanding(is_takeoff=True, timestamp='2016-06-01 10:00:00', airport_id=self.ohlstadt.id, device_id=self.dd4711.id) def get_logbook_entries(self): - session = self.session - return session.query(Logbook).order_by(Logbook.takeoff_airport_id, Logbook.reftime).all() + return db.session.query(Logbook).order_by(Logbook.takeoff_airport_id, Logbook.reftime).all() def test_single_takeoff(self): - session = self.session + db.session.add(self.takeoff_koenigsdorf_dd0815) + db.session.commit() - session.add(self.takeoff_koenigsdorf_dd0815) - session.commit() - - update_logbook(session) + update_entries(session=db.session, date=datetime.date(2016, 6, 1)) entries = self.get_logbook_entries() self.assertEqual(len(entries), 1) self.assertEqual(entries[0].takeoff_airport_id, self.koenigsdorf.id) self.assertEqual(entries[0].landing_airport_id, None) - update_logbook(session) + update_entries(session=db.session, date=datetime.date(2016, 6, 1)) entries2 = self.get_logbook_entries() self.assertEqual(entries, entries2) def test_single_landing(self): - session = self.session + db.session.add(self.landing_koenigsdorf_dd0815) + db.session.commit() - session.add(self.landing_koenigsdorf_dd0815) - session.commit() - - update_logbook(session) + update_entries(session=db.session, date=datetime.date(2016, 6, 1)) entries = self.get_logbook_entries() self.assertEqual(len(entries), 1) self.assertEqual(entries[0].takeoff_airport_id, None) self.assertEqual(entries[0].landing_airport_id, self.koenigsdorf.id) - update_logbook(session) + update_entries(session=db.session, date=datetime.date(2016, 6, 1)) entries2 = self.get_logbook_entries() self.assertEqual(entries, entries2) def test_different_takeoffs(self): - session = self.session + db.session.add(self.takeoff_koenigsdorf_dd0815) + db.session.add(self.takeoff_ohlstadt_dd4711) + db.session.commit() - session.add(self.takeoff_koenigsdorf_dd0815) - session.add(self.takeoff_ohlstadt_dd4711) - session.commit() - - update_logbook(session) + update_entries(session=db.session, date=datetime.date(2016, 6, 1)) entries = self.get_logbook_entries() self.assertEqual(len(entries), 2) self.assertEqual(entries[0].takeoff_airport_id, self.koenigsdorf.id) self.assertEqual(entries[1].takeoff_airport_id, self.ohlstadt.id) - update_logbook(session) + update_entries(session=db.session, date=datetime.date(2016, 6, 1)) entries2 = self.get_logbook_entries() self.assertEqual(entries, entries2) def test_takeoff_and_landing(self): - session = self.session + db.session.add(self.takeoff_koenigsdorf_dd0815) + db.session.add(self.landing_koenigsdorf_dd0815) + db.session.commit() - session.add(self.takeoff_koenigsdorf_dd0815) - session.add(self.landing_koenigsdorf_dd0815) - session.commit() - - update_logbook(session) + update_entries(session=db.session, date=datetime.date(2016, 6, 1)) entries = self.get_logbook_entries() self.assertEqual(len(entries), 1) self.assertEqual(entries[0].takeoff_airport_id, self.koenigsdorf.id) self.assertEqual(entries[0].landing_airport_id, self.koenigsdorf.id) - update_logbook(session) + update_entries(session=db.session, date=datetime.date(2016, 6, 1)) entries2 = self.get_logbook_entries() self.assertEqual(entries, entries2) def test_takeoff_and_landing_on_different_days(self): - session = self.session + db.session.add(self.takeoff_koenigsdorf_dd0815) + db.session.add(self.landing_koenigsdorf_dd0815_later) + db.session.commit() - session.add(self.takeoff_koenigsdorf_dd0815) - session.add(self.landing_koenigsdorf_dd0815_later) - session.commit() - - update_logbook(session) + update_entries(session=db.session, date=datetime.date(2016, 6, 1)) + update_entries(session=db.session, date=datetime.date(2016, 6, 2)) entries = self.get_logbook_entries() self.assertEqual(len(entries), 2) self.assertEqual(entries[0].takeoff_airport_id, self.koenigsdorf.id) @@ -116,63 +104,59 @@ class TestLogbook(TestBaseDB): self.assertEqual(entries[1].landing_airport_id, self.koenigsdorf.id) self.assertEqual(entries[1].reftime, self.landing_koenigsdorf_dd0815_later.timestamp) - update_logbook(session) + update_entries(session=db.session, date=datetime.date(2016, 6, 1)) entries2 = self.get_logbook_entries() self.assertEqual(entries, entries2) def test_update(self): - session = self.session + db.session.add(self.takeoff_koenigsdorf_dd0815) + db.session.commit() - session.add(self.takeoff_koenigsdorf_dd0815) - session.commit() - - update_logbook(session) + update_entries(session=db.session, date=datetime.date(2016, 6, 1)) entries = self.get_logbook_entries() self.assertEqual(len(entries), 1) self.assertEqual(entries[0].takeoff_airport_id, self.koenigsdorf.id) - session.add(self.landing_koenigsdorf_dd0815) - session.commit() + db.session.add(self.landing_koenigsdorf_dd0815) + db.session.commit() - update_logbook(session) + update_entries(session=db.session, date=datetime.date(2016, 6, 1)) entries = self.get_logbook_entries() self.assertEqual(len(entries), 1) self.assertEqual(entries[0].takeoff_airport_id, self.koenigsdorf.id) self.assertEqual(entries[0].landing_airport_id, self.koenigsdorf.id) - session.add(self.takeoff_ohlstadt_dd4711) - session.commit() + db.session.add(self.takeoff_ohlstadt_dd4711) + db.session.commit() - update_logbook(session) + update_entries(session=db.session, date=datetime.date(2016, 6, 1)) entries = self.get_logbook_entries() self.assertEqual(len(entries), 2) self.assertEqual(entries[0].takeoff_airport_id, self.koenigsdorf.id) self.assertEqual(entries[1].takeoff_airport_id, self.ohlstadt.id) def test_update_wrong_order(self): - session = self.session + db.session.add(self.landing_koenigsdorf_dd0815) + db.session.commit() - session.add(self.landing_koenigsdorf_dd0815) - session.commit() - - update_logbook(session) + update_entries(session=db.session, date=datetime.date(2016, 6, 1)) entries = self.get_logbook_entries() self.assertEqual(len(entries), 1) self.assertEqual(entries[0].takeoff_airport_id, None) self.assertEqual(entries[0].landing_airport_id, self.koenigsdorf.id) self.assertEqual(entries[0].reftime, self.landing_koenigsdorf_dd0815.timestamp) - session.add(self.takeoff_koenigsdorf_dd0815) - session.commit() + db.session.add(self.takeoff_koenigsdorf_dd0815) + db.session.commit() - update_logbook(session) + update_entries(session=db.session, date=datetime.date(2016, 6, 1)) entries = self.get_logbook_entries() self.assertEqual(len(entries), 1) self.assertEqual(entries[0].takeoff_airport_id, self.koenigsdorf.id) self.assertEqual(entries[0].landing_airport_id, self.koenigsdorf.id) self.assertEqual(entries[0].reftime, self.takeoff_koenigsdorf_dd0815.timestamp) - update_logbook(session) + update_entries(session=db.session, date=datetime.date(2016, 6, 1)) entries2 = self.get_logbook_entries() self.assertEqual(entries, entries2) diff --git a/tests/collect/test_ognrange.py b/tests/collect/test_ognrange.py index 297bc29..ef1010f 100644 --- a/tests/collect/test_ognrange.py +++ b/tests/collect/test_ognrange.py @@ -1,7 +1,7 @@ -import unittest from datetime import date +import unittest -from tests.base import TestBaseDB +from tests.base import TestBaseDB, db from ogn_python.model import AircraftBeacon, Receiver, ReceiverCoverage, Device from ogn_python.collect.ognrange import create_receiver_coverage @@ -10,7 +10,6 @@ from ogn_python.collect.ognrange import create_receiver_coverage class TestOGNrange(TestBaseDB): def setUp(self): super().setUp() - session = self.session # Create basic data and insert self.dd0815 = Device(address='DD0815') @@ -19,26 +18,24 @@ class TestOGNrange(TestBaseDB): self.r01 = Receiver(name='Koenigsdf') self.r02 = Receiver(name='Bene') - session.add(self.dd0815) - session.add(self.dd4711) - session.add(self.r01) - session.add(self.r02) + db.session.add(self.dd0815) + db.session.add(self.dd4711) + db.session.add(self.r01) + db.session.add(self.r02) - session.commit() + db.session.commit() # Create beacons and insert self.ab01 = AircraftBeacon(name='FLRDD0815', receiver_name='Koenigsdf', device_id=self.dd0815.id, receiver_id=self.r01.id, timestamp='2017-12-10 10:00:00', location_mgrs_short='89ABC1267', altitude=800) self.ab02 = AircraftBeacon(name='FLRDD0815', receiver_name='Koenigsdf', device_id=self.dd0815.id, receiver_id=self.r01.id, timestamp='2017-12-10 10:00:01', location_mgrs_short='89ABC1267', altitude=850) - session.add(self.ab01) - session.add(self.ab02) - session.commit() + db.session.add(self.ab01) + db.session.add(self.ab02) + db.session.commit() def test_update_receiver_coverage(self): - session = self.session + create_receiver_coverage(db.session, date=date(2017, 12, 10)) - create_receiver_coverage(session, date=date(2017, 12, 10)) - - coverages = session.query(ReceiverCoverage).all() + coverages = db.session.query(ReceiverCoverage).all() self.assertEqual(len(coverages), 1) coverage = coverages[0] self.assertEqual(coverage.location_mgrs_short, '89ABC1267') diff --git a/tests/collect/test_stats.py b/tests/collect/test_stats.py index cd11b41..2cfd541 100644 --- a/tests/collect/test_stats.py +++ b/tests/collect/test_stats.py @@ -1,7 +1,7 @@ -import unittest from datetime import datetime, date +import unittest -from tests.base import TestBaseDB +from tests.base import TestBaseDB, db from ogn_python.model import AircraftBeacon, ReceiverBeacon, Receiver, Device, DeviceStats @@ -11,7 +11,6 @@ from ogn_python.collect.stats import create_device_stats class TestStats(TestBaseDB): def setUp(self): super().setUp() - session = self.session # Prepare Beacons self.ab01 = AircraftBeacon(name='FLRDD4711', receiver_name='Koenigsdf', timestamp='2017-12-10 10:00:01') @@ -30,23 +29,21 @@ class TestStats(TestBaseDB): self.d01 = Device(address='DD4711') - session.add(self.r01) - session.add(self.d01) - session.commit() + db.session.add(self.r01) + db.session.add(self.d01) + db.session.commit() def test_create_device_stats(self): - session = self.session - # Compute 1st beacon self.ab01.device = self.d01 self.ab01.receiver = self.r01 - session.add(self.ab01) - session.commit() + db.session.add(self.ab01) + db.session.commit() today = date(2017, 12, 10) - create_device_stats(session, date=today) + create_device_stats(db.session, date=today) - devicestats = session.query(DeviceStats).all() + devicestats = db.session.query(DeviceStats).all() self.assertEqual(len(devicestats), 1) self.assertEqual(devicestats[0].device, self.d01) @@ -68,12 +65,12 @@ class TestStats(TestBaseDB): self.ab02.altitude = 200 self.ab02.aircraft_type = 3 self.ab02.stealth = False - session.add(self.ab02) - session.commit() + db.session.add(self.ab02) + db.session.commit() - create_device_stats(session, date=today) + create_device_stats(db.session, date=today) - devicestats = session.query(DeviceStats).all() + devicestats = db.session.query(DeviceStats).all() self.assertEqual(len(devicestats), 1) self.assertEqual(devicestats[0].device, self.d01) @@ -94,12 +91,12 @@ class TestStats(TestBaseDB): self.ab03.receiver = self.r01 self.ab03.error_count = 1 self.ab03.software_version = 6.01 - session.add(self.ab03) - session.commit() + db.session.add(self.ab03) + db.session.commit() - create_device_stats(session, date=today) + create_device_stats(db.session, date=today) - devicestats = session.query(DeviceStats).all() + devicestats = db.session.query(DeviceStats).all() self.assertEqual(len(devicestats), 1) self.assertEqual(devicestats[0].device, self.d01) @@ -122,12 +119,12 @@ class TestStats(TestBaseDB): self.ab04.software_version = 6.01 self.ab04.hardware_version = 15 self.ab04.real_address = 'DDALFA' - session.add(self.ab04) - session.commit() + db.session.add(self.ab04) + db.session.commit() - create_device_stats(session, date=today) + create_device_stats(db.session, date=today) - devicestats = session.query(DeviceStats).all() + devicestats = db.session.query(DeviceStats).all() self.assertEqual(len(devicestats), 1) self.assertEqual(devicestats[0].device, self.d01) @@ -148,12 +145,12 @@ class TestStats(TestBaseDB): self.ab05.receiver = self.r02 self.ab05.altitude = 100 self.ab05.stealth = True - session.add(self.ab05) - session.commit() + db.session.add(self.ab05) + db.session.commit() - create_device_stats(session, date=today) + create_device_stats(db.session, date=today) - devicestats = session.query(DeviceStats).all() + devicestats = db.session.query(DeviceStats).all() self.assertEqual(len(devicestats), 1) self.assertEqual(devicestats[0].device, self.d01) @@ -175,12 +172,12 @@ class TestStats(TestBaseDB): self.ab06.timestamp = datetime(2017, 12, 10, 9, 59, 50) self.ab06.altitude = 300 self.ab06.software_version = 6.02 - session.add(self.ab06) - session.commit() + db.session.add(self.ab06) + db.session.commit() - create_device_stats(session, date=today) + create_device_stats(db.session, date=today) - devicestats = session.query(DeviceStats).all() + devicestats = db.session.query(DeviceStats).all() self.assertEqual(len(devicestats), 1) self.assertEqual(devicestats[0].device, self.d01) diff --git a/tests/collect/test_takeoff_landing.py b/tests/collect/test_takeoff_landing.py index 67624c3..2c5d65b 100644 --- a/tests/collect/test_takeoff_landing.py +++ b/tests/collect/test_takeoff_landing.py @@ -1,27 +1,26 @@ +import datetime import unittest -from tests.base import TestBaseDB +from tests.base import TestBaseDB, db from ogn_python.model import TakeoffLanding -from ogn_python.collect.takeoff_landings import update_takeoff_landings +from ogn_python.collect.takeoff_landings import update_entries class TestTakeoffLanding(TestBaseDB): def setUp(self): super().setUp() - session = self.session - session.execute("INSERT INTO airports(name, location, altitude, style) VALUES('Benediktbeuren','0101000020E6100000D5E76A2BF6C72640D4063A6DA0DB4740',609,4)") - session.execute("INSERT INTO airports(name, location, altitude, style) VALUES('Koenigsdorf','0101000020E610000061E8FED7A6EE26407F20661C10EA4740',600,5)") - session.execute("INSERT INTO airports(name, location, altitude, style) VALUES('Ohlstadt','0101000020E6100000057E678EBF772640A142883E32D44740',655,5)") - session.execute("UPDATE airports SET border = ST_Expand(location, 0.05)") + db.session.execute("INSERT INTO airports(name, location, altitude, style) VALUES('Benediktbeuren','0101000020E6100000D5E76A2BF6C72640D4063A6DA0DB4740',609,4)") + db.session.execute("INSERT INTO airports(name, location, altitude, style) VALUES('Koenigsdorf','0101000020E610000061E8FED7A6EE26407F20661C10EA4740',600,5)") + db.session.execute("INSERT INTO airports(name, location, altitude, style) VALUES('Ohlstadt','0101000020E6100000057E678EBF772640A142883E32D44740',655,5)") + db.session.execute("UPDATE airports SET border = ST_Expand(location, 0.05)") - session.execute("INSERT INTO devices(address) VALUES('DDEFF7')") + db.session.execute("INSERT INTO devices(address) VALUES('DDEFF7')") def count_takeoff_and_landings(self): - session = self.session - query = session.query(TakeoffLanding) + query = db.session.query(TakeoffLanding) i = 0 for takeoff_landing in query.all(): i = i + 1 @@ -31,63 +30,61 @@ class TestTakeoffLanding(TestBaseDB): def test_broken_rope(self): """Fill the db with a winch launch where the rope breaks. The algorithm should detect one takeoff and one landing.""" - session = self.session - - session.execute("INSERT INTO aircraft_beacons(name, receiver_name, address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('FLRDDEFF7', 'Koenigsdf', 'DDEFF7','0101000020E61000009668B61829F12640330E0887F1E94740',604,'2016-07-02 10:47:12',0,0,0,0)") - session.execute("INSERT INTO aircraft_beacons(name, receiver_name, address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('FLRDDEFF7', 'Koenigsdf', 'DDEFF7','0101000020E61000009668B61829F12640330E0887F1E94740',605,'2016-07-02 10:47:32',0,0,-0.096520193,0)") - session.execute("INSERT INTO aircraft_beacons(name, receiver_name, address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('FLRDDEFF7', 'Koenigsdf', 'DDEFF7','0101000020E61000009668B61829F12640330E0887F1E94740',606,'2016-07-02 10:47:52',0,0,-0.096520193,0)") - session.execute("INSERT INTO aircraft_beacons(name, receiver_name, address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('FLRDDEFF7', 'Koenigsdf', 'DDEFF7','0101000020E61000009668B61829F12640330E0887F1E94740',606,'2016-07-02 10:48:12',0,0,-0.096520193,0)") - session.execute("INSERT INTO aircraft_beacons(name, receiver_name, address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('FLRDDEFF7', 'Koenigsdf', 'DDEFF7','0101000020E61000001B2FDD2406F12640E53C762AF3E94740',606,'2016-07-02 10:48:24',284,51.85598112,0.299720599,0.1)") - session.execute("INSERT INTO aircraft_beacons(name, receiver_name, address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('FLRDDEFF7', 'Koenigsdf', 'DDEFF7','0101000020E6100000F594AFDEBBF02640623583E5F5E94740',610,'2016-07-02 10:48:26',282,88.89596764,4.729489459,-0.2)") - session.execute("INSERT INTO aircraft_beacons(name, receiver_name, address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('FLRDDEFF7', 'Koenigsdf', 'DDEFF7','0101000020E61000001C0DE02D90F026401564F188F7E94740',619,'2016-07-02 10:48:27',281,94.45196562,10.66294133,-0.3)") - session.execute("INSERT INTO aircraft_beacons(name, receiver_name, address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('FLRDDEFF7', 'Koenigsdf', 'DDEFF7','0101000020E6100000ABF1D24D62F02640E12D90A0F8E94740',632,'2016-07-02 10:48:28',278,88.89596764,15.59055118,-0.7)") - session.execute("INSERT INTO aircraft_beacons(name, receiver_name, address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('FLRDDEFF7', 'Koenigsdf', 'DDEFF7','0101000020E610000069FD40CC38F02640C7925F2CF9E94740',650,'2016-07-02 10:48:29',273,83.33996966,18.90779782,-0.7)") - session.execute("INSERT INTO aircraft_beacons(name, receiver_name, address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('FLRDDEFF7', 'Koenigsdf', 'DDEFF7','0101000020E61000002709AF4A0FF02640C7925F2CF9E94740',670,'2016-07-02 10:48:30',272,79.63597101,20.72136144,-0.3)") - session.execute("INSERT INTO aircraft_beacons(name, receiver_name, address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('FLRDDEFF7', 'Koenigsdf', 'DDEFF7','0101000020E61000007AA85AF8E7EF2640C7925F2CF9E94740',691,'2016-07-02 10:48:31',269,79.63597101,21.02108204,-0.4)") - session.execute("INSERT INTO aircraft_beacons(name, receiver_name, address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('FLRDDEFF7', 'Koenigsdf', 'DDEFF7','0101000020E610000068DB43D5C2EF2640E12D90A0F8E94740',712,'2016-07-02 10:48:32',267,74.07997303,21.62560325,-0.5)") - session.execute("INSERT INTO aircraft_beacons(name, receiver_name, address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('FLRDDEFF7', 'Koenigsdf', 'DDEFF7','0101000020E6100000EDA16AE19FEF2640FBC8C014F8E94740',728,'2016-07-02 10:48:33',266,68.52397506,12.36982474,-0.1)") - session.execute("INSERT INTO aircraft_beacons(name, receiver_name, address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('FLRDDEFF7', 'Koenigsdf', 'DDEFF7','0101000020E61000000AFCCE1C7FEF26401564F188F7E94740',733,'2016-07-02 10:48:34',266,68.52397506,2.21488443,0)") - session.execute("INSERT INTO aircraft_beacons(name, receiver_name, address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('FLRDDEFF7', 'Koenigsdf', 'DDEFF7','0101000020E6100000275633585EEF26402FFF21FDF6E94740',731,'2016-07-02 10:48:35',267,68.52397506,-3.916687833,0.2)") - session.execute("INSERT INTO aircraft_beacons(name, receiver_name, address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('FLRDDEFF7', 'Koenigsdf', 'DDEFF7','0101000020E610000015891C3539EF26402FFF21FDF6E94740',726,'2016-07-02 10:48:36',270,74.07997303,-6.329692659,1.1)") - session.execute("INSERT INTO aircraft_beacons(name, receiver_name, address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('FLRDDEFF7', 'Koenigsdf', 'DDEFF7','0101000020E6100000E63FA4DFBEEE264078C1CDCFFAE94740',712,'2016-07-02 10:48:39',280,88.89596764,-2.611125222,0)") - session.execute("INSERT INTO aircraft_beacons(name, receiver_name, address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('FLRDDEFF7', 'Koenigsdf', 'DDEFF7','0101000020E61000004FF9EABD0BEE2640448B6CE7FBE94740',706,'2016-07-02 10:48:43',256,90.74796697,-0.198120396,-2.5)") - session.execute("INSERT INTO aircraft_beacons(name, receiver_name, address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('FLRDDEFF7', 'Koenigsdf', 'DDEFF7','0101000020E610000046B921B3A0ED264003E78C28EDE94740',706,'2016-07-02 10:48:46',218,92.59996629,-0.198120396,-1.6)") - session.execute("INSERT INTO aircraft_beacons(name, receiver_name, address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('FLRDDEFF7', 'Koenigsdf', 'DDEFF7','0101000020E610000005C58F3177ED2640900C4C81DFE94740',703,'2016-07-02 10:48:48',202,96.30396495,-1.402082804,-1)") - session.execute("INSERT INTO aircraft_beacons(name, receiver_name, address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('FLRDDEFF7', 'Koenigsdf', 'DDEFF7','0101000020E6100000211FF46C56ED26402650D7EDC6E94740',702,'2016-07-02 10:48:51',188,100.0079636,0.502921006,-1)") - session.execute("INSERT INTO aircraft_beacons(name, receiver_name, address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('FLRDDEFF7', 'Koenigsdf', 'DDEFF7','0101000020E6100000806DEA295FED2640347D898BB6E94740',704,'2016-07-02 10:48:53',166,100.0079636,0.802641605,-2)") - session.execute("INSERT INTO aircraft_beacons(name, receiver_name, address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('FLRDDEFF7', 'Koenigsdf', 'DDEFF7','0101000020E6100000337D898BB6ED26401383C0CAA1E94740',703,'2016-07-02 10:48:56',133,101.8599629,-1.803403607,-1.7)") - session.execute("INSERT INTO aircraft_beacons(name, receiver_name, address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('FLRDDEFF7', 'Koenigsdf', 'DDEFF7','0101000020E61000000C05593CE2ED2640FDF675E09CE94740',700,'2016-07-02 10:48:57',123,103.7119622,-2.611125222,-1.4)") - session.execute("INSERT INTO aircraft_beacons(name, receiver_name, address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('FLRDDEFF7', 'Koenigsdf', 'DDEFF7','0101000020E6100000F0CCF1F778EE26409FA87F2394E94740',693,'2016-07-02 10:49:00',105,111.1199596,-2.809245618,-0.6)") - session.execute("INSERT INTO aircraft_beacons(name, receiver_name, address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('FLRDDEFF7', 'Koenigsdf', 'DDEFF7','0101000020E6100000C9073D9B55EF2640BD5296218EE94740',687,'2016-07-02 10:49:04',97,112.9719589,-1.605283211,-0.1)") - session.execute("INSERT INTO aircraft_beacons(name, receiver_name, address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('FLRDDEFF7', 'Koenigsdf', 'DDEFF7','0101000020E6100000006F8104C5EF26400C24287E8CE94740',682,'2016-07-02 10:49:06',97,114.8239582,-2.407924816,-0.2)") - session.execute("INSERT INTO aircraft_beacons(name, receiver_name, address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('FLRDDEFF7', 'Koenigsdf', 'DDEFF7','0101000020E6100000A0648535A8F02640F597DD9387E94740',676,'2016-07-02 10:49:10',97,118.5279569,-1.402082804,0.1)") - session.execute("INSERT INTO aircraft_beacons(name, receiver_name, address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('FLRDDEFF7', 'Koenigsdf', 'DDEFF7','0101000020E6100000D70FC48C03F22640621386EE7FE94740',672,'2016-07-02 10:49:16',97,116.6759575,-1.000762002,0)") - session.execute("INSERT INTO aircraft_beacons(name, receiver_name, address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('FLRDDEFF7', 'Koenigsdf', 'DDEFF7','0101000020E6100000A72C431CEBF22640CB7F48BF7DE94740',666,'2016-07-02 10:49:20',84,114.8239582,-1.605283211,-1.5)") - session.execute("INSERT INTO aircraft_beacons(name, receiver_name, address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('FLRDDEFF7', 'Koenigsdf', 'DDEFF7','0101000020E6100000BFCAA145B6F32640BD5296218EE94740',662,'2016-07-02 10:49:24',49,111.1199596,-1.203962408,-1.5)") - session.execute("INSERT INTO aircraft_beacons(name, receiver_name, address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('FLRDDEFF7', 'Koenigsdf', 'DDEFF7','0101000020E610000074DA40A70DF4264077E09C11A5E94740',659,'2016-07-02 10:49:27',23,107.4159609,-1.402082804,-1.4)") - session.execute("INSERT INTO aircraft_beacons(name, receiver_name, address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('FLRDDEFF7', 'Koenigsdf', 'DDEFF7','0101000020E61000009AE3EFF11CF42640347D898BB6E94740',656,'2016-07-02 10:49:29',4,101.8599629,-0.797561595,-1.8)") - session.execute("INSERT INTO aircraft_beacons(name, receiver_name, address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('FLRDDEFF7', 'Koenigsdf', 'DDEFF7','0101000020E610000074DA40A70DF426402650D7EDC6E94740',654,'2016-07-02 10:49:31',347,101.8599629,-1.706883414,-1)") - session.execute("INSERT INTO aircraft_beacons(name, receiver_name, address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('FLRDDEFF7', 'Koenigsdf', 'DDEFF7','0101000020E6100000156A4DF38EF3264086EE7F6DEAE94740',649,'2016-07-02 10:49:36',312,98.15596427,-1.503683007,-1.4)") - session.execute("INSERT INTO aircraft_beacons(name, receiver_name, address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('FLRDDEFF7', 'Koenigsdf', 'DDEFF7','0101000020E6100000FAEDEBC039F32640E53C762AF3E94740',644,'2016-07-02 10:49:38',295,96.30396495,-3.012446025,-1.2)") - session.execute("INSERT INTO aircraft_beacons(name, receiver_name, address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('FLRDDEFF7', 'Koenigsdf', 'DDEFF7','0101000020E6100000B04A0F30E0F22640FBC8C014F8E94740',635,'2016-07-02 10:49:40',284,94.45196562,-5.125730251,-0.7)") - session.execute("INSERT INTO aircraft_beacons(name, receiver_name, address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('FLRDDEFF7', 'Koenigsdf', 'DDEFF7','0101000020E6100000F38B25BF58F22640448B6CE7FBE94740',623,'2016-07-02 10:49:43',279,92.59996629,-2.809245618,0)") - session.execute("INSERT INTO aircraft_beacons(name, receiver_name, address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('FLRDDEFF7', 'Koenigsdf', 'DDEFF7','0101000020E6100000A5E8482EFFF12640DC1EAA16FEE94740',617,'2016-07-02 10:49:45',279,88.89596764,-3.312166624,0)") - session.execute("INSERT INTO aircraft_beacons(name, receiver_name, address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('FLRDDEFF7', 'Koenigsdf', 'DDEFF7','0101000020E61000009F17012859F12640F0AAF40003EA4740',607,'2016-07-02 10:49:49',279,81.48797034,-1.300482601,0)") - session.execute("INSERT INTO aircraft_beacons(name, receiver_name, address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('FLRDDEFF7', 'Koenigsdf', 'DDEFF7','0101000020E61000004B5658830AF12640873E323005EA4740',607,'2016-07-02 10:49:51',278,74.07997303,-0.294640589,-0.1)") - session.execute("INSERT INTO aircraft_beacons(name, receiver_name, address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('FLRDDEFF7', 'Koenigsdf', 'DDEFF7','0101000020E6100000A0648535A8F0264006373FEB07EA4740',605,'2016-07-02 10:49:54',280,61.11597775,-0.096520193,0.5)") - session.execute("INSERT INTO aircraft_beacons(name, receiver_name, address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('FLRDDEFF7', 'Koenigsdf', 'DDEFF7','0101000020E6100000C74B378941F02640E88C28ED0DEA4740',604,'2016-07-02 10:49:58',292,48.15198247,0.101600203,0.4)") - session.execute("INSERT INTO aircraft_beacons(name, receiver_name, address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('FLRDDEFF7', 'Koenigsdf', 'DDEFF7','0101000020E61000001B5A643BDFEF264045DB1EAA16EA4740',604,'2016-07-02 10:50:04',302,25.92799056,0.203200406,0)") - session.execute("INSERT INTO aircraft_beacons(name, receiver_name, address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('FLRDDEFF7', 'Koenigsdf', 'DDEFF7','0101000020E610000042D2948AB3EF264074029A081BEA4740',604,'2016-07-02 10:50:10',300,5.555997978,0.101600203,0)") - session.execute("INSERT INTO aircraft_beacons(name, receiver_name, address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('FLRDDEFF7', 'Koenigsdf', 'DDEFF7','0101000020E610000013AB192CAFEF264074029A081BEA4740',603,'2016-07-02 10:50:16',0,0,-0.096520193,0)") - session.execute("UPDATE aircraft_beacons SET device_id = d.id, agl = altitude - 600 FROM devices d WHERE d.address='DDEFF7'") - session.commit() + db.session.execute("INSERT INTO aircraft_beacons(name, receiver_name, address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('FLRDDEFF7', 'Koenigsdf', 'DDEFF7','0101000020E61000009668B61829F12640330E0887F1E94740',604,'2016-07-02 10:47:12',0,0,0,0)") + db.session.execute("INSERT INTO aircraft_beacons(name, receiver_name, address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('FLRDDEFF7', 'Koenigsdf', 'DDEFF7','0101000020E61000009668B61829F12640330E0887F1E94740',605,'2016-07-02 10:47:32',0,0,-0.096520193,0)") + db.session.execute("INSERT INTO aircraft_beacons(name, receiver_name, address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('FLRDDEFF7', 'Koenigsdf', 'DDEFF7','0101000020E61000009668B61829F12640330E0887F1E94740',606,'2016-07-02 10:47:52',0,0,-0.096520193,0)") + db.session.execute("INSERT INTO aircraft_beacons(name, receiver_name, address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('FLRDDEFF7', 'Koenigsdf', 'DDEFF7','0101000020E61000009668B61829F12640330E0887F1E94740',606,'2016-07-02 10:48:12',0,0,-0.096520193,0)") + db.session.execute("INSERT INTO aircraft_beacons(name, receiver_name, address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('FLRDDEFF7', 'Koenigsdf', 'DDEFF7','0101000020E61000001B2FDD2406F12640E53C762AF3E94740',606,'2016-07-02 10:48:24',284,51.85598112,0.299720599,0.1)") + db.session.execute("INSERT INTO aircraft_beacons(name, receiver_name, address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('FLRDDEFF7', 'Koenigsdf', 'DDEFF7','0101000020E6100000F594AFDEBBF02640623583E5F5E94740',610,'2016-07-02 10:48:26',282,88.89596764,4.729489459,-0.2)") + db.session.execute("INSERT INTO aircraft_beacons(name, receiver_name, address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('FLRDDEFF7', 'Koenigsdf', 'DDEFF7','0101000020E61000001C0DE02D90F026401564F188F7E94740',619,'2016-07-02 10:48:27',281,94.45196562,10.66294133,-0.3)") + db.session.execute("INSERT INTO aircraft_beacons(name, receiver_name, address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('FLRDDEFF7', 'Koenigsdf', 'DDEFF7','0101000020E6100000ABF1D24D62F02640E12D90A0F8E94740',632,'2016-07-02 10:48:28',278,88.89596764,15.59055118,-0.7)") + db.session.execute("INSERT INTO aircraft_beacons(name, receiver_name, address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('FLRDDEFF7', 'Koenigsdf', 'DDEFF7','0101000020E610000069FD40CC38F02640C7925F2CF9E94740',650,'2016-07-02 10:48:29',273,83.33996966,18.90779782,-0.7)") + db.session.execute("INSERT INTO aircraft_beacons(name, receiver_name, address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('FLRDDEFF7', 'Koenigsdf', 'DDEFF7','0101000020E61000002709AF4A0FF02640C7925F2CF9E94740',670,'2016-07-02 10:48:30',272,79.63597101,20.72136144,-0.3)") + db.session.execute("INSERT INTO aircraft_beacons(name, receiver_name, address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('FLRDDEFF7', 'Koenigsdf', 'DDEFF7','0101000020E61000007AA85AF8E7EF2640C7925F2CF9E94740',691,'2016-07-02 10:48:31',269,79.63597101,21.02108204,-0.4)") + db.session.execute("INSERT INTO aircraft_beacons(name, receiver_name, address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('FLRDDEFF7', 'Koenigsdf', 'DDEFF7','0101000020E610000068DB43D5C2EF2640E12D90A0F8E94740',712,'2016-07-02 10:48:32',267,74.07997303,21.62560325,-0.5)") + db.session.execute("INSERT INTO aircraft_beacons(name, receiver_name, address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('FLRDDEFF7', 'Koenigsdf', 'DDEFF7','0101000020E6100000EDA16AE19FEF2640FBC8C014F8E94740',728,'2016-07-02 10:48:33',266,68.52397506,12.36982474,-0.1)") + db.session.execute("INSERT INTO aircraft_beacons(name, receiver_name, address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('FLRDDEFF7', 'Koenigsdf', 'DDEFF7','0101000020E61000000AFCCE1C7FEF26401564F188F7E94740',733,'2016-07-02 10:48:34',266,68.52397506,2.21488443,0)") + db.session.execute("INSERT INTO aircraft_beacons(name, receiver_name, address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('FLRDDEFF7', 'Koenigsdf', 'DDEFF7','0101000020E6100000275633585EEF26402FFF21FDF6E94740',731,'2016-07-02 10:48:35',267,68.52397506,-3.916687833,0.2)") + db.session.execute("INSERT INTO aircraft_beacons(name, receiver_name, address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('FLRDDEFF7', 'Koenigsdf', 'DDEFF7','0101000020E610000015891C3539EF26402FFF21FDF6E94740',726,'2016-07-02 10:48:36',270,74.07997303,-6.329692659,1.1)") + db.session.execute("INSERT INTO aircraft_beacons(name, receiver_name, address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('FLRDDEFF7', 'Koenigsdf', 'DDEFF7','0101000020E6100000E63FA4DFBEEE264078C1CDCFFAE94740',712,'2016-07-02 10:48:39',280,88.89596764,-2.611125222,0)") + db.session.execute("INSERT INTO aircraft_beacons(name, receiver_name, address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('FLRDDEFF7', 'Koenigsdf', 'DDEFF7','0101000020E61000004FF9EABD0BEE2640448B6CE7FBE94740',706,'2016-07-02 10:48:43',256,90.74796697,-0.198120396,-2.5)") + db.session.execute("INSERT INTO aircraft_beacons(name, receiver_name, address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('FLRDDEFF7', 'Koenigsdf', 'DDEFF7','0101000020E610000046B921B3A0ED264003E78C28EDE94740',706,'2016-07-02 10:48:46',218,92.59996629,-0.198120396,-1.6)") + db.session.execute("INSERT INTO aircraft_beacons(name, receiver_name, address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('FLRDDEFF7', 'Koenigsdf', 'DDEFF7','0101000020E610000005C58F3177ED2640900C4C81DFE94740',703,'2016-07-02 10:48:48',202,96.30396495,-1.402082804,-1)") + db.session.execute("INSERT INTO aircraft_beacons(name, receiver_name, address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('FLRDDEFF7', 'Koenigsdf', 'DDEFF7','0101000020E6100000211FF46C56ED26402650D7EDC6E94740',702,'2016-07-02 10:48:51',188,100.0079636,0.502921006,-1)") + db.session.execute("INSERT INTO aircraft_beacons(name, receiver_name, address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('FLRDDEFF7', 'Koenigsdf', 'DDEFF7','0101000020E6100000806DEA295FED2640347D898BB6E94740',704,'2016-07-02 10:48:53',166,100.0079636,0.802641605,-2)") + db.session.execute("INSERT INTO aircraft_beacons(name, receiver_name, address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('FLRDDEFF7', 'Koenigsdf', 'DDEFF7','0101000020E6100000337D898BB6ED26401383C0CAA1E94740',703,'2016-07-02 10:48:56',133,101.8599629,-1.803403607,-1.7)") + db.session.execute("INSERT INTO aircraft_beacons(name, receiver_name, address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('FLRDDEFF7', 'Koenigsdf', 'DDEFF7','0101000020E61000000C05593CE2ED2640FDF675E09CE94740',700,'2016-07-02 10:48:57',123,103.7119622,-2.611125222,-1.4)") + db.session.execute("INSERT INTO aircraft_beacons(name, receiver_name, address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('FLRDDEFF7', 'Koenigsdf', 'DDEFF7','0101000020E6100000F0CCF1F778EE26409FA87F2394E94740',693,'2016-07-02 10:49:00',105,111.1199596,-2.809245618,-0.6)") + db.session.execute("INSERT INTO aircraft_beacons(name, receiver_name, address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('FLRDDEFF7', 'Koenigsdf', 'DDEFF7','0101000020E6100000C9073D9B55EF2640BD5296218EE94740',687,'2016-07-02 10:49:04',97,112.9719589,-1.605283211,-0.1)") + db.session.execute("INSERT INTO aircraft_beacons(name, receiver_name, address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('FLRDDEFF7', 'Koenigsdf', 'DDEFF7','0101000020E6100000006F8104C5EF26400C24287E8CE94740',682,'2016-07-02 10:49:06',97,114.8239582,-2.407924816,-0.2)") + db.session.execute("INSERT INTO aircraft_beacons(name, receiver_name, address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('FLRDDEFF7', 'Koenigsdf', 'DDEFF7','0101000020E6100000A0648535A8F02640F597DD9387E94740',676,'2016-07-02 10:49:10',97,118.5279569,-1.402082804,0.1)") + db.session.execute("INSERT INTO aircraft_beacons(name, receiver_name, address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('FLRDDEFF7', 'Koenigsdf', 'DDEFF7','0101000020E6100000D70FC48C03F22640621386EE7FE94740',672,'2016-07-02 10:49:16',97,116.6759575,-1.000762002,0)") + db.session.execute("INSERT INTO aircraft_beacons(name, receiver_name, address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('FLRDDEFF7', 'Koenigsdf', 'DDEFF7','0101000020E6100000A72C431CEBF22640CB7F48BF7DE94740',666,'2016-07-02 10:49:20',84,114.8239582,-1.605283211,-1.5)") + db.session.execute("INSERT INTO aircraft_beacons(name, receiver_name, address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('FLRDDEFF7', 'Koenigsdf', 'DDEFF7','0101000020E6100000BFCAA145B6F32640BD5296218EE94740',662,'2016-07-02 10:49:24',49,111.1199596,-1.203962408,-1.5)") + db.session.execute("INSERT INTO aircraft_beacons(name, receiver_name, address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('FLRDDEFF7', 'Koenigsdf', 'DDEFF7','0101000020E610000074DA40A70DF4264077E09C11A5E94740',659,'2016-07-02 10:49:27',23,107.4159609,-1.402082804,-1.4)") + db.session.execute("INSERT INTO aircraft_beacons(name, receiver_name, address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('FLRDDEFF7', 'Koenigsdf', 'DDEFF7','0101000020E61000009AE3EFF11CF42640347D898BB6E94740',656,'2016-07-02 10:49:29',4,101.8599629,-0.797561595,-1.8)") + db.session.execute("INSERT INTO aircraft_beacons(name, receiver_name, address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('FLRDDEFF7', 'Koenigsdf', 'DDEFF7','0101000020E610000074DA40A70DF426402650D7EDC6E94740',654,'2016-07-02 10:49:31',347,101.8599629,-1.706883414,-1)") + db.session.execute("INSERT INTO aircraft_beacons(name, receiver_name, address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('FLRDDEFF7', 'Koenigsdf', 'DDEFF7','0101000020E6100000156A4DF38EF3264086EE7F6DEAE94740',649,'2016-07-02 10:49:36',312,98.15596427,-1.503683007,-1.4)") + db.session.execute("INSERT INTO aircraft_beacons(name, receiver_name, address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('FLRDDEFF7', 'Koenigsdf', 'DDEFF7','0101000020E6100000FAEDEBC039F32640E53C762AF3E94740',644,'2016-07-02 10:49:38',295,96.30396495,-3.012446025,-1.2)") + db.session.execute("INSERT INTO aircraft_beacons(name, receiver_name, address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('FLRDDEFF7', 'Koenigsdf', 'DDEFF7','0101000020E6100000B04A0F30E0F22640FBC8C014F8E94740',635,'2016-07-02 10:49:40',284,94.45196562,-5.125730251,-0.7)") + db.session.execute("INSERT INTO aircraft_beacons(name, receiver_name, address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('FLRDDEFF7', 'Koenigsdf', 'DDEFF7','0101000020E6100000F38B25BF58F22640448B6CE7FBE94740',623,'2016-07-02 10:49:43',279,92.59996629,-2.809245618,0)") + db.session.execute("INSERT INTO aircraft_beacons(name, receiver_name, address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('FLRDDEFF7', 'Koenigsdf', 'DDEFF7','0101000020E6100000A5E8482EFFF12640DC1EAA16FEE94740',617,'2016-07-02 10:49:45',279,88.89596764,-3.312166624,0)") + db.session.execute("INSERT INTO aircraft_beacons(name, receiver_name, address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('FLRDDEFF7', 'Koenigsdf', 'DDEFF7','0101000020E61000009F17012859F12640F0AAF40003EA4740',607,'2016-07-02 10:49:49',279,81.48797034,-1.300482601,0)") + db.session.execute("INSERT INTO aircraft_beacons(name, receiver_name, address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('FLRDDEFF7', 'Koenigsdf', 'DDEFF7','0101000020E61000004B5658830AF12640873E323005EA4740',607,'2016-07-02 10:49:51',278,74.07997303,-0.294640589,-0.1)") + db.session.execute("INSERT INTO aircraft_beacons(name, receiver_name, address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('FLRDDEFF7', 'Koenigsdf', 'DDEFF7','0101000020E6100000A0648535A8F0264006373FEB07EA4740',605,'2016-07-02 10:49:54',280,61.11597775,-0.096520193,0.5)") + db.session.execute("INSERT INTO aircraft_beacons(name, receiver_name, address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('FLRDDEFF7', 'Koenigsdf', 'DDEFF7','0101000020E6100000C74B378941F02640E88C28ED0DEA4740',604,'2016-07-02 10:49:58',292,48.15198247,0.101600203,0.4)") + db.session.execute("INSERT INTO aircraft_beacons(name, receiver_name, address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('FLRDDEFF7', 'Koenigsdf', 'DDEFF7','0101000020E61000001B5A643BDFEF264045DB1EAA16EA4740',604,'2016-07-02 10:50:04',302,25.92799056,0.203200406,0)") + db.session.execute("INSERT INTO aircraft_beacons(name, receiver_name, address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('FLRDDEFF7', 'Koenigsdf', 'DDEFF7','0101000020E610000042D2948AB3EF264074029A081BEA4740',604,'2016-07-02 10:50:10',300,5.555997978,0.101600203,0)") + db.session.execute("INSERT INTO aircraft_beacons(name, receiver_name, address, location, altitude, timestamp, track, ground_speed, climb_rate, turn_rate) VALUES('FLRDDEFF7', 'Koenigsdf', 'DDEFF7','0101000020E610000013AB192CAFEF264074029A081BEA4740',603,'2016-07-02 10:50:16',0,0,-0.096520193,0)") + db.session.execute("UPDATE aircraft_beacons SET device_id = d.id, agl = altitude - 600 FROM devices d WHERE d.address='DDEFF7'") + db.session.commit() # find the takeoff and the landing - update_takeoff_landings(session) + update_entries(db.session, start=datetime.datetime(2016, 7, 2, 0, 0, 0), end=datetime.datetime(2016, 7, 2, 23, 59, 59)) self.assertEqual(self.count_takeoff_and_landings(), 2) # we should not find the takeoff and the landing again - update_takeoff_landings(session) + update_entries(db.session, start=datetime.datetime(2016, 7, 2, 0, 0, 0), end=datetime.datetime(2016, 7, 2, 23, 59, 59)) self.assertEqual(self.count_takeoff_and_landings(), 2) diff --git a/tests/commands/test_database.py b/tests/commands/test_database.py index 6e705fa..91c6c18 100644 --- a/tests/commands/test_database.py +++ b/tests/commands/test_database.py @@ -1,19 +1,21 @@ import unittest import os -from tests.base import TestBaseDB +from tests.base import TestBaseDB, db from ogn_python.model import DeviceInfo from ogn_python.commands.database import import_file +from ogn_python import app + class TestDatabase(TestBaseDB): def test_import_ddb_file(self): - session = self.session + runner = app.test_cli_runner() + result = runner.invoke(import_file, [os.path.dirname(__file__) + '/../custom_ddb.txt']) + self.assertEqual(result.exit_code, 0) - import_file(path=os.path.dirname(__file__) + '/../custom_ddb.txt') - - device_infos = session.query(DeviceInfo).all() + device_infos = db.session.query(DeviceInfo).all() self.assertEqual(len(device_infos), 6) diff --git a/tests/model/all_classes.py b/tests/model/all_classes.py index 6ea4720..350e18e 100644 --- a/tests/model/all_classes.py +++ b/tests/model/all_classes.py @@ -1,14 +1,18 @@ +import os + import unittest import inspect -import ogn.model +os.environ['OGN_CONFIG_MODULE'] = 'config/test.py' + +import ogn_python.model # noqa: E402 class TestStringMethods(unittest.TestCase): def test_string(self): try: - for name, obj in inspect.getmembers(ogn.model): + for name, obj in inspect.getmembers(ogn_python.model): print("Testing: {}".format(name)) if inspect.isclass(obj): print(obj())