-
Mattia Mancini authoredMattia Mancini authored
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
test_wincc_models.py 3.22 KiB
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)