From d1cde53da02a00400431f5d64ae2ace61bd89ee4 Mon Sep 17 00:00:00 2001 From: Mattia Mancini <mancini@astron.nl> Date: Thu, 14 Mar 2019 14:02:18 +0000 Subject: [PATCH] OSB-44: Implementing tests and reformatting structure --- .gitattributes | 10 ++- .../DBInterface/test/models/CMakeLists.txt | 13 +++ .../test/{ => models}/t_rtsm_models.run | 0 .../test/{ => models}/t_rtsm_models.sh | 0 .../test/models/t_wincc_models.run | 4 + .../DBInterface/test/models/t_wincc_models.sh | 3 + .../test/{ => models}/test_rtsm_models.py | 0 .../test/models/test_wincc_models.py | 88 +++++++++++++++++++ 8 files changed, 115 insertions(+), 3 deletions(-) create mode 100644 LCU/Maintenance/DBInterface/test/models/CMakeLists.txt rename LCU/Maintenance/DBInterface/test/{ => models}/t_rtsm_models.run (100%) rename LCU/Maintenance/DBInterface/test/{ => models}/t_rtsm_models.sh (100%) create mode 100755 LCU/Maintenance/DBInterface/test/models/t_wincc_models.run create mode 100755 LCU/Maintenance/DBInterface/test/models/t_wincc_models.sh rename LCU/Maintenance/DBInterface/test/{ => models}/test_rtsm_models.py (100%) create mode 100644 LCU/Maintenance/DBInterface/test/models/test_wincc_models.py diff --git a/.gitattributes b/.gitattributes index 1584e2d7b66..802cce871a5 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1887,10 +1887,14 @@ LCU/Maintenance/DBInterface/test/controllers/t_all_components_error_types.run -t LCU/Maintenance/DBInterface/test/controllers/t_all_components_error_types.sh -text LCU/Maintenance/DBInterface/test/controllers/test_all_components_error_types.py -text LCU/Maintenance/DBInterface/test/controllers/test_data_generators.py -text +LCU/Maintenance/DBInterface/test/models/CMakeLists.txt -text +LCU/Maintenance/DBInterface/test/models/t_rtsm_models.run -text +LCU/Maintenance/DBInterface/test/models/t_rtsm_models.sh -text +LCU/Maintenance/DBInterface/test/models/t_wincc_models.run -text +LCU/Maintenance/DBInterface/test/models/t_wincc_models.sh -text +LCU/Maintenance/DBInterface/test/models/test_rtsm_models.py -text +LCU/Maintenance/DBInterface/test/models/test_wincc_models.py -text LCU/Maintenance/DBInterface/test/postgres_testrunner.py -text -LCU/Maintenance/DBInterface/test/t_rtsm_models.run -text -LCU/Maintenance/DBInterface/test/t_rtsm_models.sh -text -LCU/Maintenance/DBInterface/test/test_rtsm_models.py -text LCU/Maintenance/MDB_WebView/CMakeLists.txt -text LCU/Maintenance/MDB_WebView/maintenancedb_view/.env -text LCU/Maintenance/MDB_WebView/maintenancedb_view/CMakeLists.txt -text diff --git a/LCU/Maintenance/DBInterface/test/models/CMakeLists.txt b/LCU/Maintenance/DBInterface/test/models/CMakeLists.txt new file mode 100644 index 00000000000..f46339586de --- /dev/null +++ b/LCU/Maintenance/DBInterface/test/models/CMakeLists.txt @@ -0,0 +1,13 @@ +# $Id$ +include(LofarCTestPython) + +enable_coverage(3) + +set(py_files postgres_testrunner.py + __init__.py + test_rtsm_models.py + test_wincc_models.py) +python_install(${py_files} DESTINATION lofar/maintenance/test) + +lofar_add_test(t_rtsm_models) +lofar_add_test(t_wincc_models) diff --git a/LCU/Maintenance/DBInterface/test/t_rtsm_models.run b/LCU/Maintenance/DBInterface/test/models/t_rtsm_models.run similarity index 100% rename from LCU/Maintenance/DBInterface/test/t_rtsm_models.run rename to LCU/Maintenance/DBInterface/test/models/t_rtsm_models.run diff --git a/LCU/Maintenance/DBInterface/test/t_rtsm_models.sh b/LCU/Maintenance/DBInterface/test/models/t_rtsm_models.sh similarity index 100% rename from LCU/Maintenance/DBInterface/test/t_rtsm_models.sh rename to LCU/Maintenance/DBInterface/test/models/t_rtsm_models.sh diff --git a/LCU/Maintenance/DBInterface/test/models/t_wincc_models.run b/LCU/Maintenance/DBInterface/test/models/t_wincc_models.run new file mode 100755 index 00000000000..280b0394fcc --- /dev/null +++ b/LCU/Maintenance/DBInterface/test/models/t_wincc_models.run @@ -0,0 +1,4 @@ +#!/usr/bin/env bash +. coverage.sh + +python_coverage_test models/wincc -m lofar.maintenance.manage test lofar.maintenance.test.test_wincc_models --testrunner=lofar.maintenance.test.postgres_testrunner.PostgresqlTestRunner --settings lofar.maintenance.django_postgresql.test_settings diff --git a/LCU/Maintenance/DBInterface/test/models/t_wincc_models.sh b/LCU/Maintenance/DBInterface/test/models/t_wincc_models.sh new file mode 100755 index 00000000000..54249770c83 --- /dev/null +++ b/LCU/Maintenance/DBInterface/test/models/t_wincc_models.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env bash + +./runctest.sh t_wincc_models \ No newline at end of file diff --git a/LCU/Maintenance/DBInterface/test/test_rtsm_models.py b/LCU/Maintenance/DBInterface/test/models/test_rtsm_models.py similarity index 100% rename from LCU/Maintenance/DBInterface/test/test_rtsm_models.py rename to LCU/Maintenance/DBInterface/test/models/test_rtsm_models.py diff --git a/LCU/Maintenance/DBInterface/test/models/test_wincc_models.py b/LCU/Maintenance/DBInterface/test/models/test_wincc_models.py new file mode 100644 index 00000000000..ae1f428d7e5 --- /dev/null +++ b/LCU/Maintenance/DBInterface/test/models/test_wincc_models.py @@ -0,0 +1,88 @@ +from django.test import TestCase +from lofar.maintenance.monitoringdb.models.wincc import WinCCAntennaStatus + +from datetime import datetime +import django.db.utils as db_utils +import pytz +import random + + +class WinCCAntennaStatusTest(TestCase): + + def test_antenna_status_insertion_auto_timestamp(self): + antenna_status = WinCCAntennaStatus() + antenna_status.station = 'CS001' + antenna_status.antenna_type = 'HBA' + antenna_status.antenna_id = 1 + antenna_status.status_code = 0 + + before_insertion_timestamp = datetime.now(pytz.UTC) + antenna_status.save() + + after_insertion_timestamp = datetime.now(pytz.UTC) + + saved_entity = WinCCAntennaStatus.objects.\ + filter(antenna_type=antenna_status.antenna_type, antenna_id=antenna_status.antenna_id).\ + order_by('-timestamp').first() + self.assertEqual(saved_entity.status_code, antenna_status.status_code) + + self.assertGreaterEqual(saved_entity.timestamp, before_insertion_timestamp) + self.assertLessEqual(saved_entity.timestamp, after_insertion_timestamp) + + def test_antenna_status_insertion_error_if_not_specified_station(self): + with self.assertRaises(db_utils.IntegrityError): + antenna_status = WinCCAntennaStatus() + antenna_status.antenna_type = 'HBA' + antenna_status.antenna_id = 1 + antenna_status.status_code = 0 + + antenna_status.save() + + def test_antenna_status_insertion_error_if_not_specified_antenna_type(self): + with self.assertRaises(db_utils.IntegrityError): + antenna_status = WinCCAntennaStatus() + antenna_status.station = 'CS001' + antenna_status.antenna_id = 1 + antenna_status.status_code = 0 + antenna_status.save() + + def test_custom_query(self): + for i in range(10): + antenna_status = WinCCAntennaStatus() + antenna_status.station = 'CS001' + antenna_status.antenna_type = 'HBA' + antenna_status.antenna_id = random.sample([1, 2], 1)[0] + antenna_status.status_code = 0 + + antenna_status.save() + + antenna_status = WinCCAntennaStatus() + antenna_status.station = 'CS001' + antenna_status.antenna_type = 'HBA' + antenna_status.antenna_id = 1 + antenna_status.status_code = 0 + + antenna_status.save() + + last_status = WinCCAntennaStatus() + last_status.station = 'CS001' + last_status.antenna_type = 'HBA' + last_status.antenna_id = 1 + last_status.status_code = 0 + + before_last_insertion_timestamp = datetime.now(pytz.UTC) + last_status.save() + + saved_entity = WinCCAntennaStatus.objects. \ + filter(antenna_type=antenna_status.antenna_type, antenna_id=antenna_status.antenna_id). \ + order_by('-timestamp').first() + self.assertGreaterEqual(saved_entity.timestamp, before_last_insertion_timestamp) + + result = WinCCAntennaStatus.objects.\ + latest_status_per_station_and_component_type('CS001', + 'HBA', + datetime.now()) + + self.assertIn('1', result) + self.assertIn('2', result) + self.assertGreaterEqual(result['1']["inserted_at"], before_last_insertion_timestamp) -- GitLab