Change configuration management / fixed tests

pull/78/head
Konstantin Gründger 2019-03-11 23:26:01 +01:00
rodzic 7c416b601a
commit 88a807406b
16 zmienionych plików z 238 dodań i 298 usunięć

Wyświetl plik

@ -1,7 +1,7 @@
language: python language: python
env: env:
- OGN_CONFIG_MODULE='config.test' - OGN_CONFIG_MODULE='config/test.py'
python: python:
- 3.5 - 3.5
@ -20,9 +20,9 @@ before_script:
- psql -U postgres -c 'CREATE EXTENSION postgis;' - psql -U postgres -c 'CREATE EXTENSION postgis;'
script: script:
- nosetests --with-coverage --cover-package=ogn - nosetests --with-coverage --cover-package=ogn_python
- pip install . --upgrade - pip install . --upgrade
- python -c 'import ogn' - python -c 'import ogn_python'
after_success: after_success:
- coveralls - coveralls

Wyświetl plik

@ -8,7 +8,10 @@ from ogn_python.flask_celery import make_celery
# Initialize Flask # Initialize Flask
app = Flask(__name__) 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 = Bootstrap(app) bootstrap = Bootstrap(app)

Wyświetl plik

@ -9,6 +9,22 @@ from ogn_python.utils import get_ddb, get_flarmnet
from ogn_python import app 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): def update_device_infos(session, address_origin, path=None):
if address_origin == DeviceInfoOrigin.flarmnet: if address_origin == DeviceInfoOrigin.flarmnet:
device_infos = get_flarmnet(fln_file=path) device_infos = get_flarmnet(fln_file=path)

Wyświetl plik

@ -7,6 +7,8 @@ from sqlalchemy.sql import func
from ogn_python.collect.database import update_device_infos, update_country_code from ogn_python.collect.database import update_device_infos, update_country_code
from ogn_python.model import * from ogn_python.model import *
from ogn_python.utils import get_airports, get_days from ogn_python.utils import get_airports, get_days
from ogn_python import app
from ogn_python import db from ogn_python import db
user_cli = AppGroup('database') user_cli = AppGroup('database')
@ -34,11 +36,8 @@ def get_database_days(start, end):
@user_cli.command('info') @user_cli.command('info')
def info(): def info():
import importlib print(app.config)
import os print(app.config['SQLALCHEMY_DATABASE_URI'])
config = importlib.import_module(os.environ['OGN_CONFIG_MODULE'])
print(config)
print(config.SQLALCHEMY_DATABASE_URI)
@user_cli.command('init') @user_cli.command('init')

Wyświetl plik

@ -2,10 +2,5 @@ SQLALCHEMY_DATABASE_URI = 'postgresql://postgres@localhost:5432/ogn_test'
SQLALCHEMY_TRACK_MODIFICATIONS = False SQLALCHEMY_TRACK_MODIFICATIONS = False
# Celery stuff # Celery stuff
broker_url = 'redis://localhost:6379/0' CELERY_BROKER_URL = 'redis://localhost:6379/0'
result_backend = 'redis://localhost:6379/0' CELERY_RESULT_BACKEND = 'redis://localhost:6379/0'
beat_schedule = {}
timezone = 'UTC'

Wyświetl plik

@ -1,75 +1,57 @@
import json
from datetime import datetime
import unittest import unittest
from unittest import mock from unittest import mock
import os
from datetime import datetime
from xmlunittest import XmlTestMixin 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.liveglidernet import rec, lxml
from ogn_python.backend.ognrange import stations2_filtered_pl from ogn_python.backend.ognrange import stations2_filtered_pl
from ogn_python.model.aircraft_type import AircraftType
class TestDB(unittest.TestCase, XmlTestMixin): class TestDB(TestBaseDB, XmlTestMixin):
session = None
engine = None
app = None
def setUp(self): def setUp(self):
os.environ['OGN_CONFIG_MODULE'] = 'config.test' super().setUp()
from ogn_python.commands.dbutils import engine, session
self.session = session
self.engine = engine
from ogn_python.commands.database import init
init()
# Prepare Beacons # 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.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.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') 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) db.session.add(self.r01)
session.add(self.r02) db.session.add(self.r02)
session.add(self.r03) db.session.add(self.r03)
session.commit() db.session.commit()
self.d01 = Device(address='DD4711', lastseen='2017-12-20 10:00:02') self.d01 = Device(address='DD4711', lastseen='2017-12-20 10:00:02')
self.d02 = Device(address='DD0815', lastseen='2017-12-20 09:56:00') self.d02 = Device(address='DD0815', lastseen='2017-12-20 09:56:00')
session.add(self.d01) db.session.add(self.d01)
session.add(self.d02) db.session.add(self.d02)
session.commit() db.session.commit()
self.di01 = DeviceInfo(registration='D-4711', competition='Hi', tracked=True, identified=True, device_id=self.d01.id) self.di01 = DeviceInfo(registration='D-4711', competition='Hi', tracked=True, identified=True, device_id=self.d01.id)
session.add(self.di01) db.session.add(self.di01)
session.commit() 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.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.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.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) 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) db.session.add(self.ab11)
session.add(self.ab12) db.session.add(self.ab12)
session.add(self.ab21) db.session.add(self.ab21)
session.add(self.ab22) db.session.add(self.ab22)
session.commit() db.session.commit()
def tearDown(self): @mock.patch('ogn_python.backend.liveglidernet.datetime')
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')
def test_rec(self, datetime_mock): def test_rec(self, datetime_mock):
session = self.session
datetime_mock.utcnow.return_value = datetime(2017, 12, 20, 10, 0) 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 # Check the document
root = self.assertXmlDocument(data) root = self.assertXmlDocument(data)
@ -88,14 +70,12 @@ class TestDB(unittest.TestCase, XmlTestMixin):
self.assertXmlEquivalentOutputs(data, expected) self.assertXmlEquivalentOutputs(data, expected)
@mock.patch('ogn.backend.liveglidernet.utc_to_local', side_effect=lambda x: x) @mock.patch('ogn_python.backend.liveglidernet.utc_to_local', side_effect=lambda x: x)
@mock.patch('ogn.backend.liveglidernet.datetime') @mock.patch('ogn_python.backend.liveglidernet.datetime')
def test_lxml(self, datetime_mock, utc_to_local_mock): 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) 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 # Check the complete document
expected = """<?xml version="1.0" encoding="UTF-8"?> expected = """<?xml version="1.0" encoding="UTF-8"?>
@ -107,15 +87,11 @@ class TestDB(unittest.TestCase, XmlTestMixin):
self.assertXmlEquivalentOutputs(data, expected) 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): def test_stations2_filtered_pl(self, datetime_mock):
session = self.session
datetime_mock.utcnow.return_value = datetime(2017, 12, 20, 10, 0) datetime_mock.utcnow.return_value = datetime(2017, 12, 20, 10, 0)
import json result = stations2_filtered_pl(db.session)
result = stations2_filtered_pl(session)
data = json.loads(result) data = json.loads(result)

Wyświetl plik

@ -1,36 +1,30 @@
import unittest import unittest
import os 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): class TestBaseDB(unittest.TestCase):
session = None
engine = None
@classmethod @classmethod
def setUpClass(cls): def setUpClass(cls):
from ogn_python.commands.dbutils import engine, session db.session.execute('CREATE EXTENSION IF NOT EXISTS postgis;')
cls.session = session db.session.commit()
cls.engine = engine db.drop_all()
db.create_all()
from ogn_python.commands.database import drop
drop(sure='y')
from ogn_python.commands.database import init
init()
def setUp(self): def setUp(self):
self.session.execute(""" pass
def tearDown(self):
db.session.execute("""
DELETE FROM aircraft_beacons; DELETE FROM aircraft_beacons;
DELETE FROM receiver_beacons; DELETE FROM receiver_beacons;
DELETE FROM takeoff_landings; DELETE FROM takeoff_landings;
DELETE FROM logbook; DELETE FROM logbook;
""") """)
def tearDown(self):
self.session.rollback()
if __name__ == '__main__': if __name__ == '__main__':
unittest.main() unittest.main()

Wyświetl plik

@ -1,53 +1,29 @@
import unittest 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.model import AircraftBeacon
from ogn_python.collect.database import add_missing_devices, add_missing_receivers, upsert from ogn_python.collect.database import upsert
class TestDatabase(TestBaseDB): class TestDatabase(TestBaseDB):
def test_update_devices(self): @unittest.skip('wip')
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')
def test_insert_duplicate_beacons(self): 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} 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} 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} 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} 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} 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} 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} 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} 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[0].ground_speed, 2)
self.assertEqual(result[1].ground_speed, 3) self.assertEqual(result[1].ground_speed, 3)
self.assertEqual(result[2].ground_speed, 1) self.assertEqual(result[2].ground_speed, 1)

Wyświetl plik

@ -1,16 +1,14 @@
import datetime
import unittest 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.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): class TestLogbook(TestBaseDB):
def setUp(self): def setUp(self):
super().setUp()
session = self.session
# Create basic data and insert # Create basic data and insert
self.dd0815 = Device(address='DD0815') self.dd0815 = Device(address='DD0815')
self.dd4711 = Device(address='DD4711') self.dd4711 = Device(address='DD4711')
@ -18,12 +16,12 @@ class TestLogbook(TestBaseDB):
self.koenigsdorf = Airport(name='Koenigsdorf') self.koenigsdorf = Airport(name='Koenigsdorf')
self.ohlstadt = Airport(name='Ohlstadt') self.ohlstadt = Airport(name='Ohlstadt')
session.add(self.dd0815) db.session.add(self.dd0815)
session.add(self.dd4711) db.session.add(self.dd4711)
session.add(self.koenigsdorf) db.session.add(self.koenigsdorf)
session.add(self.ohlstadt) db.session.add(self.ohlstadt)
session.commit() db.session.commit()
# Prepare takeoff and landings # 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) 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) 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): def get_logbook_entries(self):
session = self.session return db.session.query(Logbook).order_by(Logbook.takeoff_airport_id, Logbook.reftime).all()
return session.query(Logbook).order_by(Logbook.takeoff_airport_id, Logbook.reftime).all()
def test_single_takeoff(self): def test_single_takeoff(self):
session = self.session db.session.add(self.takeoff_koenigsdorf_dd0815)
db.session.commit()
session.add(self.takeoff_koenigsdorf_dd0815) update_entries(session=db.session, date=datetime.date(2016, 6, 1))
session.commit()
update_logbook(session)
entries = self.get_logbook_entries() entries = self.get_logbook_entries()
self.assertEqual(len(entries), 1) self.assertEqual(len(entries), 1)
self.assertEqual(entries[0].takeoff_airport_id, self.koenigsdorf.id) self.assertEqual(entries[0].takeoff_airport_id, self.koenigsdorf.id)
self.assertEqual(entries[0].landing_airport_id, None) 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() entries2 = self.get_logbook_entries()
self.assertEqual(entries, entries2) self.assertEqual(entries, entries2)
def test_single_landing(self): def test_single_landing(self):
session = self.session db.session.add(self.landing_koenigsdorf_dd0815)
db.session.commit()
session.add(self.landing_koenigsdorf_dd0815) update_entries(session=db.session, date=datetime.date(2016, 6, 1))
session.commit()
update_logbook(session)
entries = self.get_logbook_entries() entries = self.get_logbook_entries()
self.assertEqual(len(entries), 1) self.assertEqual(len(entries), 1)
self.assertEqual(entries[0].takeoff_airport_id, None) self.assertEqual(entries[0].takeoff_airport_id, None)
self.assertEqual(entries[0].landing_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() entries2 = self.get_logbook_entries()
self.assertEqual(entries, entries2) self.assertEqual(entries, entries2)
def test_different_takeoffs(self): 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) update_entries(session=db.session, date=datetime.date(2016, 6, 1))
session.add(self.takeoff_ohlstadt_dd4711)
session.commit()
update_logbook(session)
entries = self.get_logbook_entries() entries = self.get_logbook_entries()
self.assertEqual(len(entries), 2) self.assertEqual(len(entries), 2)
self.assertEqual(entries[0].takeoff_airport_id, self.koenigsdorf.id) self.assertEqual(entries[0].takeoff_airport_id, self.koenigsdorf.id)
self.assertEqual(entries[1].takeoff_airport_id, self.ohlstadt.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() entries2 = self.get_logbook_entries()
self.assertEqual(entries, entries2) self.assertEqual(entries, entries2)
def test_takeoff_and_landing(self): 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) update_entries(session=db.session, date=datetime.date(2016, 6, 1))
session.add(self.landing_koenigsdorf_dd0815)
session.commit()
update_logbook(session)
entries = self.get_logbook_entries() entries = self.get_logbook_entries()
self.assertEqual(len(entries), 1) self.assertEqual(len(entries), 1)
self.assertEqual(entries[0].takeoff_airport_id, self.koenigsdorf.id) self.assertEqual(entries[0].takeoff_airport_id, self.koenigsdorf.id)
self.assertEqual(entries[0].landing_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() entries2 = self.get_logbook_entries()
self.assertEqual(entries, entries2) self.assertEqual(entries, entries2)
def test_takeoff_and_landing_on_different_days(self): 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) update_entries(session=db.session, date=datetime.date(2016, 6, 1))
session.add(self.landing_koenigsdorf_dd0815_later) update_entries(session=db.session, date=datetime.date(2016, 6, 2))
session.commit()
update_logbook(session)
entries = self.get_logbook_entries() entries = self.get_logbook_entries()
self.assertEqual(len(entries), 2) self.assertEqual(len(entries), 2)
self.assertEqual(entries[0].takeoff_airport_id, self.koenigsdorf.id) 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].landing_airport_id, self.koenigsdorf.id)
self.assertEqual(entries[1].reftime, self.landing_koenigsdorf_dd0815_later.timestamp) 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() entries2 = self.get_logbook_entries()
self.assertEqual(entries, entries2) self.assertEqual(entries, entries2)
def test_update(self): def test_update(self):
session = self.session db.session.add(self.takeoff_koenigsdorf_dd0815)
db.session.commit()
session.add(self.takeoff_koenigsdorf_dd0815) update_entries(session=db.session, date=datetime.date(2016, 6, 1))
session.commit()
update_logbook(session)
entries = self.get_logbook_entries() entries = self.get_logbook_entries()
self.assertEqual(len(entries), 1) self.assertEqual(len(entries), 1)
self.assertEqual(entries[0].takeoff_airport_id, self.koenigsdorf.id) self.assertEqual(entries[0].takeoff_airport_id, self.koenigsdorf.id)
session.add(self.landing_koenigsdorf_dd0815) db.session.add(self.landing_koenigsdorf_dd0815)
session.commit() db.session.commit()
update_logbook(session) update_entries(session=db.session, date=datetime.date(2016, 6, 1))
entries = self.get_logbook_entries() entries = self.get_logbook_entries()
self.assertEqual(len(entries), 1) self.assertEqual(len(entries), 1)
self.assertEqual(entries[0].takeoff_airport_id, self.koenigsdorf.id) self.assertEqual(entries[0].takeoff_airport_id, self.koenigsdorf.id)
self.assertEqual(entries[0].landing_airport_id, self.koenigsdorf.id) self.assertEqual(entries[0].landing_airport_id, self.koenigsdorf.id)
session.add(self.takeoff_ohlstadt_dd4711) db.session.add(self.takeoff_ohlstadt_dd4711)
session.commit() db.session.commit()
update_logbook(session) update_entries(session=db.session, date=datetime.date(2016, 6, 1))
entries = self.get_logbook_entries() entries = self.get_logbook_entries()
self.assertEqual(len(entries), 2) self.assertEqual(len(entries), 2)
self.assertEqual(entries[0].takeoff_airport_id, self.koenigsdorf.id) self.assertEqual(entries[0].takeoff_airport_id, self.koenigsdorf.id)
self.assertEqual(entries[1].takeoff_airport_id, self.ohlstadt.id) self.assertEqual(entries[1].takeoff_airport_id, self.ohlstadt.id)
def test_update_wrong_order(self): 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) update_entries(session=db.session, date=datetime.date(2016, 6, 1))
session.commit()
update_logbook(session)
entries = self.get_logbook_entries() entries = self.get_logbook_entries()
self.assertEqual(len(entries), 1) self.assertEqual(len(entries), 1)
self.assertEqual(entries[0].takeoff_airport_id, None) self.assertEqual(entries[0].takeoff_airport_id, None)
self.assertEqual(entries[0].landing_airport_id, self.koenigsdorf.id) self.assertEqual(entries[0].landing_airport_id, self.koenigsdorf.id)
self.assertEqual(entries[0].reftime, self.landing_koenigsdorf_dd0815.timestamp) self.assertEqual(entries[0].reftime, self.landing_koenigsdorf_dd0815.timestamp)
session.add(self.takeoff_koenigsdorf_dd0815) db.session.add(self.takeoff_koenigsdorf_dd0815)
session.commit() db.session.commit()
update_logbook(session) update_entries(session=db.session, date=datetime.date(2016, 6, 1))
entries = self.get_logbook_entries() entries = self.get_logbook_entries()
self.assertEqual(len(entries), 1) self.assertEqual(len(entries), 1)
self.assertEqual(entries[0].takeoff_airport_id, self.koenigsdorf.id) self.assertEqual(entries[0].takeoff_airport_id, self.koenigsdorf.id)
self.assertEqual(entries[0].landing_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) 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() entries2 = self.get_logbook_entries()
self.assertEqual(entries, entries2) self.assertEqual(entries, entries2)

Wyświetl plik

@ -1,7 +1,7 @@
import unittest
from datetime import date 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.model import AircraftBeacon, Receiver, ReceiverCoverage, Device
from ogn_python.collect.ognrange import create_receiver_coverage 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): class TestOGNrange(TestBaseDB):
def setUp(self): def setUp(self):
super().setUp() super().setUp()
session = self.session
# Create basic data and insert # Create basic data and insert
self.dd0815 = Device(address='DD0815') self.dd0815 = Device(address='DD0815')
@ -19,26 +18,24 @@ class TestOGNrange(TestBaseDB):
self.r01 = Receiver(name='Koenigsdf') self.r01 = Receiver(name='Koenigsdf')
self.r02 = Receiver(name='Bene') self.r02 = Receiver(name='Bene')
session.add(self.dd0815) db.session.add(self.dd0815)
session.add(self.dd4711) db.session.add(self.dd4711)
session.add(self.r01) db.session.add(self.r01)
session.add(self.r02) db.session.add(self.r02)
session.commit() db.session.commit()
# Create beacons and insert # 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.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) 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) db.session.add(self.ab01)
session.add(self.ab02) db.session.add(self.ab02)
session.commit() db.session.commit()
def test_update_receiver_coverage(self): 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 = db.session.query(ReceiverCoverage).all()
coverages = session.query(ReceiverCoverage).all()
self.assertEqual(len(coverages), 1) self.assertEqual(len(coverages), 1)
coverage = coverages[0] coverage = coverages[0]
self.assertEqual(coverage.location_mgrs_short, '89ABC1267') self.assertEqual(coverage.location_mgrs_short, '89ABC1267')

Wyświetl plik

@ -1,7 +1,7 @@
import unittest
from datetime import datetime, date 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 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): class TestStats(TestBaseDB):
def setUp(self): def setUp(self):
super().setUp() super().setUp()
session = self.session
# Prepare Beacons # Prepare Beacons
self.ab01 = AircraftBeacon(name='FLRDD4711', receiver_name='Koenigsdf', timestamp='2017-12-10 10:00:01') 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') self.d01 = Device(address='DD4711')
session.add(self.r01) db.session.add(self.r01)
session.add(self.d01) db.session.add(self.d01)
session.commit() db.session.commit()
def test_create_device_stats(self): def test_create_device_stats(self):
session = self.session
# Compute 1st beacon # Compute 1st beacon
self.ab01.device = self.d01 self.ab01.device = self.d01
self.ab01.receiver = self.r01 self.ab01.receiver = self.r01
session.add(self.ab01) db.session.add(self.ab01)
session.commit() db.session.commit()
today = date(2017, 12, 10) 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(len(devicestats), 1)
self.assertEqual(devicestats[0].device, self.d01) self.assertEqual(devicestats[0].device, self.d01)
@ -68,12 +65,12 @@ class TestStats(TestBaseDB):
self.ab02.altitude = 200 self.ab02.altitude = 200
self.ab02.aircraft_type = 3 self.ab02.aircraft_type = 3
self.ab02.stealth = False self.ab02.stealth = False
session.add(self.ab02) db.session.add(self.ab02)
session.commit() 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(len(devicestats), 1)
self.assertEqual(devicestats[0].device, self.d01) self.assertEqual(devicestats[0].device, self.d01)
@ -94,12 +91,12 @@ class TestStats(TestBaseDB):
self.ab03.receiver = self.r01 self.ab03.receiver = self.r01
self.ab03.error_count = 1 self.ab03.error_count = 1
self.ab03.software_version = 6.01 self.ab03.software_version = 6.01
session.add(self.ab03) db.session.add(self.ab03)
session.commit() 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(len(devicestats), 1)
self.assertEqual(devicestats[0].device, self.d01) self.assertEqual(devicestats[0].device, self.d01)
@ -122,12 +119,12 @@ class TestStats(TestBaseDB):
self.ab04.software_version = 6.01 self.ab04.software_version = 6.01
self.ab04.hardware_version = 15 self.ab04.hardware_version = 15
self.ab04.real_address = 'DDALFA' self.ab04.real_address = 'DDALFA'
session.add(self.ab04) db.session.add(self.ab04)
session.commit() 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(len(devicestats), 1)
self.assertEqual(devicestats[0].device, self.d01) self.assertEqual(devicestats[0].device, self.d01)
@ -148,12 +145,12 @@ class TestStats(TestBaseDB):
self.ab05.receiver = self.r02 self.ab05.receiver = self.r02
self.ab05.altitude = 100 self.ab05.altitude = 100
self.ab05.stealth = True self.ab05.stealth = True
session.add(self.ab05) db.session.add(self.ab05)
session.commit() 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(len(devicestats), 1)
self.assertEqual(devicestats[0].device, self.d01) 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.timestamp = datetime(2017, 12, 10, 9, 59, 50)
self.ab06.altitude = 300 self.ab06.altitude = 300
self.ab06.software_version = 6.02 self.ab06.software_version = 6.02
session.add(self.ab06) db.session.add(self.ab06)
session.commit() 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(len(devicestats), 1)
self.assertEqual(devicestats[0].device, self.d01) self.assertEqual(devicestats[0].device, self.d01)

Wyświetl plik

@ -1,27 +1,26 @@
import datetime
import unittest import unittest
from tests.base import TestBaseDB from tests.base import TestBaseDB, db
from ogn_python.model import TakeoffLanding 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): class TestTakeoffLanding(TestBaseDB):
def setUp(self): def setUp(self):
super().setUp() super().setUp()
session = self.session
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('Benediktbeuren','0101000020E6100000D5E76A2BF6C72640D4063A6DA0DB4740',609,4)")
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('Koenigsdorf','0101000020E610000061E8FED7A6EE26407F20661C10EA4740',600,5)")
session.execute("INSERT INTO airports(name, location, altitude, style) VALUES('Ohlstadt','0101000020E6100000057E678EBF772640A142883E32D44740',655,5)") db.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("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): def count_takeoff_and_landings(self):
session = self.session query = db.session.query(TakeoffLanding)
query = session.query(TakeoffLanding)
i = 0 i = 0
for takeoff_landing in query.all(): for takeoff_landing in query.all():
i = i + 1 i = i + 1
@ -31,63 +30,61 @@ class TestTakeoffLanding(TestBaseDB):
def test_broken_rope(self): 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.""" """Fill the db with a winch launch where the rope breaks. The algorithm should detect one takeoff and one landing."""
session = self.session 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)")
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',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',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: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','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','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','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','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','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','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','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','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','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','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','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','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','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','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','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','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','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','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','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','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','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','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','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','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','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','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','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','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','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','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','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','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','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','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','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','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','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','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','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','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','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','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','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','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','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','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','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','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','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','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','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','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','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','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','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','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','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','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','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','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','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','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','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','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','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','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','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','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','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','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','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','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','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','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','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','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','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','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','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','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','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','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','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','0101000020E610000013AB192CAFEF264074029A081BEA4740',603,'2016-07-02 10:50:16',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','0101000020E610000042D2948AB3EF264074029A081BEA4740',604,'2016-07-02 10:50:10',300,5.555997978,0.101600203,0)") db.session.execute("UPDATE aircraft_beacons SET device_id = d.id, agl = altitude - 600 FROM devices d WHERE d.address='DDEFF7'")
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.commit()
session.execute("UPDATE aircraft_beacons SET device_id = d.id, agl = altitude - 600 FROM devices d WHERE d.address='DDEFF7'")
session.commit()
# find the takeoff and the landing # 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) self.assertEqual(self.count_takeoff_and_landings(), 2)
# we should not find the takeoff and the landing again # 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) self.assertEqual(self.count_takeoff_and_landings(), 2)

Wyświetl plik

@ -1,19 +1,21 @@
import unittest import unittest
import os import os
from tests.base import TestBaseDB from tests.base import TestBaseDB, db
from ogn_python.model import DeviceInfo from ogn_python.model import DeviceInfo
from ogn_python.commands.database import import_file from ogn_python.commands.database import import_file
from ogn_python import app
class TestDatabase(TestBaseDB): class TestDatabase(TestBaseDB):
def test_import_ddb_file(self): 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 = db.session.query(DeviceInfo).all()
device_infos = session.query(DeviceInfo).all()
self.assertEqual(len(device_infos), 6) self.assertEqual(len(device_infos), 6)

Wyświetl plik

@ -1,14 +1,18 @@
import os
import unittest import unittest
import inspect import inspect
import ogn.model os.environ['OGN_CONFIG_MODULE'] = 'config/test.py'
import ogn_python.model # noqa: E402
class TestStringMethods(unittest.TestCase): class TestStringMethods(unittest.TestCase):
def test_string(self): def test_string(self):
try: try:
for name, obj in inspect.getmembers(ogn.model): for name, obj in inspect.getmembers(ogn_python.model):
print("Testing: {}".format(name)) print("Testing: {}".format(name))
if inspect.isclass(obj): if inspect.isclass(obj):
print(obj()) print(obj())