Skip to content
Snippets Groups Projects
Commit 7febc433 authored by Mattia Mancini's avatar Mattia Mancini
Browse files

Story SW-300: finished implementation of the stationtest parser

parent 3d874b30
No related branches found
No related tags found
2 merge requests!89Monitoring maintenance Epic branch merge,!1Resolve OSB-13 "Monitoringmaintenance "
Showing
with 495 additions and 1 deletion
......@@ -1810,6 +1810,42 @@ LCU/MaintenanceDB/DBInterface/django_postgresql/settings.py -text
LCU/MaintenanceDB/DBInterface/django_postgresql/urls.py -text
LCU/MaintenanceDB/DBInterface/django_postgresql/wsgi.py -text
LCU/MaintenanceDB/DBInterface/manage.py -text
LCU/MaintenanceDB/DBInterface/monitoringdb/__init__.py -text
LCU/MaintenanceDB/DBInterface/monitoringdb/admin.py -text
LCU/MaintenanceDB/DBInterface/monitoringdb/apps.py -text
LCU/MaintenanceDB/DBInterface/monitoringdb/migrations/__init__.py -text
LCU/MaintenanceDB/DBInterface/monitoringdb/models/__init__.py -text
LCU/MaintenanceDB/DBInterface/monitoringdb/models/componenterror.py -text
LCU/MaintenanceDB/DBInterface/monitoringdb/models/fixed_types.py -text
LCU/MaintenanceDB/DBInterface/monitoringdb/models/hbacomponenterror.py -text
LCU/MaintenanceDB/DBInterface/monitoringdb/models/lbacomponenterror.py -text
LCU/MaintenanceDB/DBInterface/monitoringdb/models/rcucomponenterror.py -text
LCU/MaintenanceDB/DBInterface/monitoringdb/models/rspcomponenterror.py -text
LCU/MaintenanceDB/DBInterface/monitoringdb/models/spucomponenterror.py -text
LCU/MaintenanceDB/DBInterface/monitoringdb/models/stationtest.py -text
LCU/MaintenanceDB/DBInterface/monitoringdb/models/tbbcomponenterror.py -text
LCU/MaintenanceDB/DBInterface/monitoringdb/models/tileerror.py -text
LCU/MaintenanceDB/DBInterface/monitoringdb/serializers/__init__.py -text
LCU/MaintenanceDB/DBInterface/monitoringdb/serializers/componenterror.py -text
LCU/MaintenanceDB/DBInterface/monitoringdb/serializers/componenterrors_generic.py -text
LCU/MaintenanceDB/DBInterface/monitoringdb/serializers/hbaerrorserializers.py -text
LCU/MaintenanceDB/DBInterface/monitoringdb/serializers/lbaerrorserializer.py -text
LCU/MaintenanceDB/DBInterface/monitoringdb/serializers/rcuerrorserializer.py -text
LCU/MaintenanceDB/DBInterface/monitoringdb/serializers/rsperrorserializer.py -text
LCU/MaintenanceDB/DBInterface/monitoringdb/serializers/spuerrorserializer.py -text
LCU/MaintenanceDB/DBInterface/monitoringdb/serializers/stationtest.py -text
LCU/MaintenanceDB/DBInterface/monitoringdb/serializers/tbberrorserializer.py -text
LCU/MaintenanceDB/DBInterface/monitoringdb/serializers/tileerror.py -text
LCU/MaintenanceDB/DBInterface/monitoringdb/station_test_raw_parser.py -text
LCU/MaintenanceDB/DBInterface/monitoringdb/tests/.pytest_cache/v/cache/lastfailed -text
LCU/MaintenanceDB/DBInterface/monitoringdb/tests/.pytest_cache/v/cache/nodeids -text
LCU/MaintenanceDB/DBInterface/monitoringdb/tests/__init__.py -text
LCU/MaintenanceDB/DBInterface/monitoringdb/tests/common.py -text
LCU/MaintenanceDB/DBInterface/monitoringdb/tests/t_stationtest_model_creation.py -text
LCU/MaintenanceDB/DBInterface/monitoringdb/tests/t_stationtest_parser.py -text
LCU/MaintenanceDB/DBInterface/monitoringdb/tests/test_stationtestdata.csv -text
LCU/MaintenanceDB/DBInterface/monitoringdb/tests/tests.py -text
LCU/MaintenanceDB/DBInterface/monitoringdb/views.py -text
LCU/MaintenanceDB/__init__.py -text
LCU/PPSTune/CMakeLists.txt -text
LCU/PPSTune/MANIFEST.in -text
......
......@@ -37,7 +37,7 @@ INSTALLED_APPS = [
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework',
'django_postgresql.monitoringdb.apps.MonitoringDbConfig',
'monitoringdb.apps.MonitoringDbConfig',
]
MIDDLEWARE = [
......
from django.contrib import admin
# Register your model here.
from django.apps import AppConfig
class MonitoringDbConfig(AppConfig):
name = 'monitoringdb'
from django.db import models
from polymorphic.models import PolymorphicModel
from .stationtest import StationTest
from .fixed_types import COMPONENT_TYPES, ERROR_TYPES
NOISE_ERROR_TYPE = (('H', 'HIGH'), ('L', 'LOW'))
class ComponentError(PolymorphicModel):
id = models.AutoField(primary_key=True)
component_id = models.IntegerField()
component_type = models.CharField(max_length=6, choices=COMPONENT_TYPES)
error_type = models.CharField(max_length=15, choices=ERROR_TYPES)
STATION_TYPES = (
('c', 'core'),
('i', 'international'),
('r', 'remote')
)
COMPONENT_TYPES = (
('RSP', 'RSP'),
('TBB', 'Temporary Buffered Board'),
('RCU', 'RCU'),
('LBL', 'LBL'),
('LBH', 'LBH'),
('LBA', 'LBA'),
('HBA', 'HBA'),
)
ERROR_TYPES = (
('VERSION', 'Not expected hardware version'),
('MEMORY', 'Memory error'),
('BROKEN', 'Broken antennas connected to this RCU'),
('NOSIGNAL', 'Signal not detected'),
('TOOLOW', 'Average signal too low to perform test'),
('DOWN', 'Antenna fallen down'),
('RF_FAIL', 'Signal too high/low in tested subband'),
('LOW_NOISE', 'Average signal in subband is low compared to the other subbands'),
('HIGH_NOISE', 'Average signal in subband is high compared to the other subbands'),
('JITTER', 'Jitter error'),
('OSCILLATION', 'Oscillating antenna'),
('MODEM', 'Failure with tile connection'),
('SPURIOUS', 'Spurious signal found'),
('P_SUMMATOR', 'Too low signals on all tiles'),
('C_SUMMATOR', 'No communication with elements possible'),
('SUMMATOR_NOISE', 'oscillating summator'),
('TESTSIGNAL', 'Test signal used in RF test'),
)
POLARIZATIONS = ('X', 'Y')
LBA_TYPES = ('H', 'L')
\ No newline at end of file
from django.db import models
from .componenterror import ComponentError, NOISE_ERROR_TYPE
from .stationtest import StationTest
class HBAComponentError(ComponentError):
station_test = models.ForeignKey(StationTest,
related_name='hba_errors',
on_delete=models.CASCADE)
HBA_SUMMATOR_ERROR_TYPE = (('C',''), ('P',''))
class HBASummatorError(HBAComponentError):
type = models.CharField(choices=HBA_SUMMATOR_ERROR_TYPE, max_length=1)
class HBAModemError(HBAComponentError):
pass
class HBARFFailError(HBAComponentError):
measured_signal_nodelayX = models.FloatField(default=0)
measured_signal_fulldelayX = models.FloatField(default=0)
subband_used_nodelayX = models.PositiveSmallIntegerField(default=0)
subband_used_fulldelayX = models.PositiveSmallIntegerField(default=0)
reference_signal_nodelayX = models.FloatField(default=0)
reference_signal_fulldelayX = models.FloatField(default=0)
measured_signal_nodelayY = models.FloatField(default=0)
measured_signal_fulldelayY = models.FloatField(default=0)
subband_used_nodelayY = models.PositiveSmallIntegerField(default=0)
subband_used_fulldelayY = models.PositiveSmallIntegerField(default=0)
reference_signal_nodelayY = models.FloatField(default=0)
reference_signal_fulldelayY = models.FloatField(default=0)
class HBANoiseError(HBAComponentError):
type = models.CharField(default='-', max_length=1, choices=NOISE_ERROR_TYPE)
percentageX = models.FloatField(default=-1)
percentageY = models.FloatField(default=-1)
peak_valueX = models.FloatField(default=-1)
peak_valueY = models.FloatField(default=-1)
fluctuationX = models.FloatField(default=-1)
fluctuationY = models.FloatField(default=-1)
limitX = models.FloatField(default=-1)
limitY = models.FloatField(default=-1)
class HBAJitterError(HBAComponentError):
percentageX = models.FloatField(default=-1)
percentageY = models.FloatField(default=-1)
average_valueX = models.FloatField(default=-1)
average_valueY = models.FloatField(default=-1)
fluctuationX = models.FloatField(default=-1)
fluctuationY = models.FloatField(default=-1)
class HBAOscillationError(HBAComponentError):
polarizationX = models.BooleanField(default=False)
polarizationY = models.BooleanField(default=False)
class HBASpuriousError(HBAComponentError):
polarizationX = models.BooleanField(default=False)
polarizationY = models.BooleanField(default=False)
class HBASummatorNoise(HBAComponentError):
polarizationX = models.BooleanField(default=False)
polarizationY = models.BooleanField(default=False)
from django.db import models
from .componenterror import ComponentError, NOISE_ERROR_TYPE
from .stationtest import StationTest
class LBAComponentError(ComponentError):
station_test = models.ForeignKey(StationTest,
related_name='lba_errors',
on_delete=models.CASCADE)
lba_type = models.CharField(max_length=1)
class LBADownError(LBAComponentError):
signalX = models.FloatField(default=-1)
signalY = models.FloatField(default=-1)
signalX_offset = models.FloatField(default=-1)
signalY_offset = models.FloatField(default=-1)
class LBARFFailError(LBAComponentError):
signalX = models.FloatField(default=0)
signalY = models.FloatField(default=0)
class LBAFlatError(LBAComponentError):
mean_signalX = models.FloatField(default=0)
mean_signalY = models.FloatField(default=0)
class LBAShortError(LBAComponentError):
mean_signalX = models.FloatField(default=0)
mean_signalY = models.FloatField(default=0)
class LBAOscillationError(LBAComponentError):
polarizationX = models.BooleanField(default=False)
polarizationY = models.BooleanField(default=False)
class LBASpuriousError(LBAComponentError):
polarizationX = models.BooleanField(default=False)
polarizationY = models.BooleanField(default=False)
class LBANoiseError(LBAComponentError):
type = models.CharField(default='-', max_length=1, choices=NOISE_ERROR_TYPE)
percentageX = models.FloatField(default=-1)
percentageY = models.FloatField(default=-1)
peak_valueX = models.FloatField(default=-1)
peak_valueY = models.FloatField(default=-1)
fluctuationX = models.FloatField(default=-1)
fluctuationY = models.FloatField(default=-1)
limitX = models.FloatField(default=-1)
limitY = models.FloatField(default=-1)
class LBAJitterError(LBAComponentError):
percentageX = models.FloatField(default=-1)
percentageY = models.FloatField(default=-1)
average_valueX = models.FloatField(default=-1)
average_valueY = models.FloatField(default=-1)
fluctuationX = models.FloatField(default=-1)
fluctuationY = models.FloatField(default=-1)
\ No newline at end of file
from django.db import models
from .componenterror import ComponentError
from .stationtest import StationTest
class RCUComponentError(ComponentError):
station_test = models.ForeignKey(StationTest,
related_name='rcu_errors',
on_delete=models.CASCADE)
from django.db import models
from .componenterror import ComponentError
from .stationtest import StationTest
class RSPComponentError(ComponentError):
station_test = models.ForeignKey(StationTest,
related_name='rsp_errors',
on_delete=models.CASCADE)
class RSPVersionError(ComponentError):
bp = models.CharField(max_length=10)
ap = models.CharField(max_length=10)
class RSPVoltageError(ComponentError):
voltage_1_2 = models.FloatField(default=0)
voltage_2_5 = models.FloatField(default=0)
voltage_3_3 = models.FloatField(default=0)
class RSPTemperatureError(ComponentError):
pcb = models.FloatField(default=0)
bp = models.FloatField(default=0)
ap0 = models.FloatField(default=0)
ap1 = models.FloatField(default=0)
ap2 = models.FloatField(default=0)
ap3 = models.FloatField(default=0)
from django.db import models
from .componenterror import ComponentError
from .stationtest import StationTest
class SPUComponentError(ComponentError):
station_test = models.ForeignKey(StationTest,
related_name='spu_errors',
on_delete=models.CASCADE)
class SPUVoltageError(ComponentError):
voltage_rcu = models.FloatField(default=5)
voltage_lba = models.FloatField(default=8)
voltage_hba = models.FloatField(default=48)
voltage_spu = models.FloatField(default=3.3)
\ No newline at end of file
"""
In this file all the model regarding the stationtest output are collected
"""
from django.db import models
from .fixed_types import STATION_TYPES
class StationTest(models.Model):
id = models.AutoField(primary_key=True)
station_name = models.CharField(max_length=6)
station_type = models.CharField(max_length=1, choices=STATION_TYPES)
start_time = models.DateTimeField()
end_time = models.DateTimeField()
performed_checks = models.CharField(max_length=50)
from django.db import models
from .componenterror import ComponentError
from .stationtest import StationTest
class TBBComponentError(ComponentError):
station_test = models.ForeignKey(StationTest,
related_name='tbb_errors',
on_delete=models.CASCADE)
class TBBVersionError(ComponentError):
tp = models.CharField(max_length=10)
mp = models.CharField(max_length=10)
class TBBMemoryError(ComponentError):
pass
class TBBVoltageError(ComponentError):
voltage_1_2 = models.FloatField(default=0)
voltage_2_5 = models.FloatField(default=0)
voltage_3_3 = models.FloatField(default=0)
class TBBTemperatureError(ComponentError):
pcb = models.FloatField(default=0)
tp = models.FloatField(default=0)
mp0 = models.FloatField(default=0)
mp1 = models.FloatField(default=0)
mp2 = models.FloatField(default=0)
mp3 = models.FloatField(default=0)
\ No newline at end of file
from django.db import models
from polymorphic.models import PolymorphicModel
from .hbacomponenterror import *
class TileError(PolymorphicModel):
id = models.AutoField(primary_key=True)
tile_id = models.SmallIntegerField(default=-1)
class TileModemError(TileError):
communication_error = models.BooleanField(default=False)
wrong_answer_error = models.BooleanField(default=False)
parent_component_error = models.ForeignKey(HBAModemError,
related_name='tile_errors',
on_delete=models.CASCADE)
class TileOscillatingError(TileError):
polarization = models.CharField(max_length=1)
parent_component_error = models.ForeignKey(HBAOscillationError,
related_name='tile_errors',
on_delete=models.CASCADE)
class TileSpuriousError(TileError):
polarization = models.CharField(max_length=1)
parent_component_error = models.ForeignKey(HBASpuriousError,
related_name='tile_errors',
on_delete=models.CASCADE)
class TileNoiseError(TileError):
polarization = models.CharField(max_length=1)
type = models.CharField(max_length=1)
# measured (lowest) highest mean value over all subbands
value = models.FloatField()
# difference between lowest and highest found mean values
diff = models.FloatField()
parent_component_error = models.ForeignKey(HBANoiseError,
related_name='tile_errors',
on_delete=models.CASCADE)
class TileJitterError(TileError):
polarization = models.CharField(max_length=1)
fluctuation = models.FloatField()
parent_component_error = models.ForeignKey(HBAJitterError,
related_name='tile_errors',
on_delete=models.CASCADE)
class TileRFFailure(TileError):
polarization = models.CharField(max_length=1)
measured_signal_nodelay = models.FloatField()
measured_signal_fulldelay = models.FloatField()
subband_used_nodelay = models.PositiveSmallIntegerField()
subband_used_fulldelay = models.PositiveSmallIntegerField()
reference_signal_nodelay = models.FloatField()
reference_signal_fulldelay = models.FloatField()
parent_component_error = models.ForeignKey(HBARFFailError,
related_name='tile_errors',
on_delete=models.CASCADE)
\ No newline at end of file
from rest_framework import serializers
from rest_polymorphic.serializers import PolymorphicSerializer
from ..models.fixed_types import COMPONENT_TYPES, ERROR_TYPES
from ..models.stationtest import StationTest
class ComponentErrorSerializer(serializers.Serializer):
id = serializers.IntegerField(read_only=True)
station_test_id = serializers.PrimaryKeyRelatedField(queryset=StationTest.objects.all(), source='station_test.id')
component_id = serializers.IntegerField()
component_type = serializers.ChoiceField(COMPONENT_TYPES)
error_type = serializers.ChoiceField(ERROR_TYPES)
def create(self, validated_data):
"""
Create the component error given the fields
"""
return ComponentError.objects.create(**validated_data)
from .hbaerrorserializers import *
from .lbaerrorserializer import *
from .rcuerrorserializer import *
from .rsperrorserializer import *
from .tbberrorserializer import *
from .spuerrorserializer import *
class ComponentErrorPolimorphicSerializer(PolymorphicSerializer):
model_serializer_mapping = {
ComponentError: ComponentErrorSerializer,
HBAComponentError: HBAComponentErrorSerializer,
HBASummatorNoise: HBASummatorNoiseSerializer,
HBASummatorError: HBASummatorErrorSerializer,
HBAOscillationError: HBAOscillationErrorSerializer,
HBAModemError: HBAModemErrorSerializer,
HBANoiseError: HBANoiseSerializer,
HBAJitterError: HBAJitterSerializer,
HBASpuriousError: HBASpuriousSerializer,
HBARFFailError: HBARFFailSerializer,
LBAComponentError: LBAComponentErrorSerializer,
LBAOscillationError: LBAOscillationSerializer,
LBANoiseError: LBANoiseSerializer,
LBAJitterError: LBAJitterSerializer,
LBASpuriousError: LBASpuriousSerializer,
LBARFFailError: LBARFFailSerializer,
LBADownError: LBADownErrorSerializer,
LBAShortError: LBAShortErrorSerializer,
LBAFlatError: LBAFlatErrorSerializer,
RCUComponentError: RCUComponentErrorSerializer,
RSPComponentError: RSPComponentErrorSerializer,
RSPTemperatureError: RSPTemperatureErrorSerializer,
RSPVoltageError: RSPVoltageErrorSerializer,
RSPVersionError: RSPVersionErrorSerializer,
TBBComponentError: TBBComponentErrorSerializer,
TBBMemoryError: TBBMemoryErrorSerializer,
TBBVoltageError: TBBVoltageErrorSerializer,
TBBTemperatureError: TBBTemperatureErrorSerializer,
SPUComponentError: SPUComponentErrorSerializer
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment