From 578556c2559af4cc73e62ad42d828a96451c634d Mon Sep 17 00:00:00 2001 From: stedif <stefano.difrischia@inaf.it> Date: Fri, 8 Apr 2022 12:27:43 +0200 Subject: [PATCH] L2SS-747: introduce wait_function in archiver integration_test --- .../default/toolkit/test_archiver.py | 26 ++++++++++++++++--- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/tangostationcontrol/tangostationcontrol/integration_test/default/toolkit/test_archiver.py b/tangostationcontrol/tangostationcontrol/integration_test/default/toolkit/test_archiver.py index 1ead9d257..e7896dbd2 100644 --- a/tangostationcontrol/tangostationcontrol/integration_test/default/toolkit/test_archiver.py +++ b/tangostationcontrol/tangostationcontrol/integration_test/default/toolkit/test_archiver.py @@ -14,6 +14,7 @@ from tangostationcontrol.toolkit.archiver_util import attribute_fqdn from tangostationcontrol.integration_test.device_proxy import TestDeviceProxy import time +from tango import DeviceProxy from datetime import datetime @@ -23,6 +24,10 @@ class TestArchiver(BaseIntegrationTestCase): super().setUp() self.archiver = Archiver() self.assertIsNotNone(self.archiver) + # Safety cleanup + self.archiver.cm.delete_property('__SubDevices') + DeviceProxy(self.archiver.get_subscribers()[0]).delete_property('AttributeList') + DeviceProxy(self.archiver.get_subscribers()[0]).delete_property('__SubDevices') def test_archiver_initialisation(self): """Test archiver main attributes""" @@ -61,8 +66,10 @@ class TestArchiver(BaseIntegrationTestCase): self.archiver.remove_attributes_in_error() time.sleep(3) """ + polling_period=1000 + archive_event_period=3000 attr_fullname = 'stat/recv/1/recvtr_translator_busy_r' # boolean - self.archiver.add_attribute_to_archiver(attr_fullname, polling_period=1000, archive_event_period=3000) + self.archiver.add_attribute_to_archiver(attr_fullname, polling_period, archive_event_period) time.sleep(3) # Test if the attribute has been correctly added to event subscriber self.assertTrue(self.archiver.is_attribute_archived(attribute_fqdn(attr_fullname))) @@ -70,7 +77,7 @@ class TestArchiver(BaseIntegrationTestCase): # Retrieve data from DB views self.retriever = RetrieverTimescale() self.assertIsNotNone(self.retriever) - records = self.retriever.get_lofar_attribute(attr_fullname) + records = self._wait_for_archiving(attr_fullname, archive_event_period) self.assertTrue(len(records)>0) item = records[-1] # last table record self.assertEqual('stat/recv/1',item.device) # column device @@ -105,8 +112,10 @@ class TestArchiver(BaseIntegrationTestCase): self.archiver.remove_attributes_in_error() time.sleep(3) """ + polling_period=1000 + archive_event_period=3000 attr_fullname = 'stat/sdp/1/fpga_temp_r' # double - self.archiver.add_attribute_to_archiver(attr_fullname, polling_period=1000, archive_event_period=3000) + self.archiver.add_attribute_to_archiver(attr_fullname, polling_period, archive_event_period) time.sleep(3) # Test if the attribute has been correctly added to event subscriber self.assertTrue(self.archiver.is_attribute_archived(attribute_fqdn(attr_fullname))) @@ -114,7 +123,7 @@ class TestArchiver(BaseIntegrationTestCase): # Retrieve data from DB views self.retriever = RetrieverTimescale() self.assertIsNotNone(self.retriever) - records = self.retriever.get_lofar_attribute(attr_fullname) + records = self._wait_for_archiving(attr_fullname, archive_event_period) self.assertTrue(len(records)>0) item = records[-1] # last table record self.assertEqual('stat/sdp/1',item.device) # column device @@ -151,3 +160,12 @@ class TestArchiver(BaseIntegrationTestCase): time.sleep(3) max_load = self.archiver.get_maximum_device_load(device_name) self.assertGreater(max_load,0) + + def _wait_for_archiving(self, attr_fullname: str, archive_event_period: int, max_wait: int = 10): + wait = 0 + records = self.retriever.get_lofar_attribute(attr_fullname) + while (not(len(records)>0) and wait<max_wait): + time.sleep(archive_event_period) + records = self.retriever.get_lofar_attribute(attr_fullname) + wait+=1 + return records -- GitLab