Skip to content
Snippets Groups Projects
Commit 41fd61ae authored by toor's avatar toor
Browse files

CT-126: Added timeout attribute for each long rnning command.

Applied MR suggestions.
parent 9e8a8f98
No related branches found
No related tags found
No related merge requests found
...@@ -282,7 +282,7 @@ ...@@ -282,7 +282,7 @@
<archiveEvent fire="false" libCheckCriteria="false"/> <archiveEvent fire="false" libCheckCriteria="false"/>
<dataReadyEvent fire="false" libCheckCriteria="true"/> <dataReadyEvent fire="false" libCheckCriteria="true"/>
<status abstract="false" inherited="false" concrete="true" concreteHere="true"/> <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
<properties description="The output data rate (GB/s) on the link for each scan." label="outputDataRateToSdp" unit="" standardUnit="" displayUnit="" format="" maxValue="" minValue="" maxAlarm="" minAlarm="" maxWarning="" minWarning="" deltaTime="" deltaValue=""/> <properties description="The output data rate (GB/s) on the link for each scan." label="outputDataRateToSdp" unit="GB/s" standardUnit="" displayUnit="" format="" maxValue="" minValue="" maxAlarm="" minAlarm="" maxWarning="" minWarning="" deltaTime="" deltaValue=""/>
</attributes> </attributes>
<attributes name="lastScanConfiguration" attType="Scalar" rwType="READ" displayLevel="OPERATOR" polledPeriod="0" maxX="" maxY="" allocReadMember="true" isDynamic="false"> <attributes name="lastScanConfiguration" attType="Scalar" rwType="READ" displayLevel="OPERATOR" polledPeriod="0" maxX="" maxY="" allocReadMember="true" isDynamic="false">
<dataType xsi:type="pogoDsl:StringType"/> <dataType xsi:type="pogoDsl:StringType"/>
...@@ -298,7 +298,7 @@ ...@@ -298,7 +298,7 @@
<archiveEvent fire="false" libCheckCriteria="false"/> <archiveEvent fire="false" libCheckCriteria="false"/>
<dataReadyEvent fire="false" libCheckCriteria="true"/> <dataReadyEvent fire="false" libCheckCriteria="true"/>
<status abstract="false" inherited="false" concrete="true" concreteHere="true"/> <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
<properties description="The measured time (sec) taken to execute the command" label="configureScanMeasuredDuration" unit="sec" standardUnit="" displayUnit="" format="" maxValue="" minValue="" maxAlarm="" minAlarm="" maxWarning="" minWarning="" deltaTime="" deltaValue=""/> <properties description="The measured time (sec) taken to execute the ConfigureScan command." label="configureScanMeasuredDuration" unit="sec" standardUnit="" displayUnit="" format="" maxValue="" minValue="" maxAlarm="" minAlarm="" maxWarning="" minWarning="" deltaTime="" deltaValue=""/>
</attributes> </attributes>
<attributes name="listOfDevicesCompletedTasks" attType="Scalar" rwType="READ" displayLevel="OPERATOR" polledPeriod="0" maxX="" maxY="" allocReadMember="true" isDynamic="false"> <attributes name="listOfDevicesCompletedTasks" attType="Scalar" rwType="READ" displayLevel="OPERATOR" polledPeriod="0" maxX="" maxY="" allocReadMember="true" isDynamic="false">
<dataType xsi:type="pogoDsl:StringType"/> <dataType xsi:type="pogoDsl:StringType"/>
...@@ -356,13 +356,29 @@ ...@@ -356,13 +356,29 @@
<status abstract="false" inherited="false" concrete="true" concreteHere="true"/> <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
<properties description="The percentage progress of the command in the [0,100]." label="releaseResourcesProgress" unit="" standardUnit="" displayUnit="" format="" maxValue="100" minValue="0" maxAlarm="" minAlarm="" maxWarning="" minWarning="" deltaTime="" deltaValue=""/> <properties description="The percentage progress of the command in the [0,100]." label="releaseResourcesProgress" unit="" standardUnit="" displayUnit="" format="" maxValue="100" minValue="0" maxAlarm="" minAlarm="" maxWarning="" minWarning="" deltaTime="" deltaValue=""/>
</attributes> </attributes>
<attributes name="timeoutExpiredFlag" attType="Scalar" rwType="READ" displayLevel="OPERATOR" polledPeriod="0" maxX="" maxY="" allocReadMember="true" isDynamic="false"> <attributes name="configureScanTimeoutExpiredFlag" attType="Scalar" rwType="READ" displayLevel="OPERATOR" polledPeriod="0" maxX="" maxY="" allocReadMember="true" isDynamic="false">
<dataType xsi:type="pogoDsl:BooleanType"/> <dataType xsi:type="pogoDsl:BooleanType"/>
<changeEvent fire="false" libCheckCriteria="false"/> <changeEvent fire="false" libCheckCriteria="false"/>
<archiveEvent fire="false" libCheckCriteria="false"/> <archiveEvent fire="false" libCheckCriteria="false"/>
<dataReadyEvent fire="false" libCheckCriteria="true"/> <dataReadyEvent fire="false" libCheckCriteria="true"/>
<status abstract="false" inherited="false" concrete="true" concreteHere="true"/> <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
<properties description="Flag reporting command timeout expiration." label="timeoutExpiredFlag" unit="" standardUnit="" displayUnit="" format="" maxValue="" minValue="" maxAlarm="" minAlarm="" maxWarning="" minWarning="" deltaTime="" deltaValue=""/> <properties description="Flag reporting ConfigureScan command timeout expiration." label="configureScanTimeoutExpiredFlag" unit="" standardUnit="" displayUnit="" format="" maxValue="" minValue="" maxAlarm="" minAlarm="" maxWarning="" minWarning="" deltaTime="" deltaValue=""/>
</attributes>
<attributes name="assignResourcesTimeoutExpiredFlag" attType="Scalar" rwType="READ" displayLevel="OPERATOR" polledPeriod="0" maxX="" maxY="" allocReadMember="true" isDynamic="false">
<dataType xsi:type="pogoDsl:BooleanType"/>
<changeEvent fire="false" libCheckCriteria="false"/>
<archiveEvent fire="false" libCheckCriteria="false"/>
<dataReadyEvent fire="false" libCheckCriteria="true"/>
<status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
<properties description="Flag reporting AssignResources command timeout expiration." label="assignResourcesTimeoutExpiredFlag" unit="" standardUnit="" displayUnit="" format="" maxValue="" minValue="" maxAlarm="" minAlarm="" maxWarning="" minWarning="" deltaTime="" deltaValue=""/>
</attributes>
<attributes name="releaseResourcesTimeoutExpiredFlag" attType="Scalar" rwType="READ" displayLevel="OPERATOR" polledPeriod="0" maxX="" maxY="" allocReadMember="true" isDynamic="false">
<dataType xsi:type="pogoDsl:BooleanType"/>
<changeEvent fire="false" libCheckCriteria="false"/>
<archiveEvent fire="false" libCheckCriteria="false"/>
<dataReadyEvent fire="false" libCheckCriteria="true"/>
<status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
<properties description="Flag reporting ReleaseResources command timeout expiration." label="ReleaseResourcesTimeoutExpiredFlag" unit="" standardUnit="" displayUnit="" format="" maxValue="" minValue="" maxAlarm="" minAlarm="" maxWarning="" minWarning="" deltaTime="" deltaValue=""/>
</attributes> </attributes>
<attributes name="assignedResources" attType="Spectrum" rwType="READ" displayLevel="OPERATOR" polledPeriod="0" maxX="100" maxY="" allocReadMember="true"> <attributes name="assignedResources" attType="Spectrum" rwType="READ" displayLevel="OPERATOR" polledPeriod="0" maxX="100" maxY="" allocReadMember="true">
<dataType xsi:type="pogoDsl:StringType"/> <dataType xsi:type="pogoDsl:StringType"/>
......
...@@ -72,6 +72,7 @@ class CspSubElementSubarray(SKASubarray): ...@@ -72,6 +72,7 @@ class CspSubElementSubarray(SKASubarray):
outputDataRateToSdp = attribute( outputDataRateToSdp = attribute(
dtype='DevFloat', dtype='DevFloat',
label="outputDataRateToSdp", label="outputDataRateToSdp",
unit="GB/s",
doc="The output data rate (GB/s) on the link for each scan.", doc="The output data rate (GB/s) on the link for each scan.",
) )
...@@ -101,6 +102,12 @@ class CspSubElementSubarray(SKASubarray): ...@@ -101,6 +102,12 @@ class CspSubElementSubarray(SKASubarray):
doc="The measured time (sec) taken to execute the command", doc="The measured time (sec) taken to execute the command",
) )
configureScanTimeoutExpiredFlag = attribute(
dtype='DevBoolean',
label="configureScanTimeoutExpiredFlag",
doc="Flag reporting ConfigureScan command timeout expiration.",
)
assignResourcesMaximumDuration = attribute( assignResourcesMaximumDuration = attribute(
dtype='DevFloat', dtype='DevFloat',
access=AttrWriteType.READ_WRITE, access=AttrWriteType.READ_WRITE,
...@@ -124,6 +131,13 @@ class CspSubElementSubarray(SKASubarray): ...@@ -124,6 +131,13 @@ class CspSubElementSubarray(SKASubarray):
doc="The percentage progress of the command in the [0,100].", doc="The percentage progress of the command in the [0,100].",
) )
assignResourcesTimeoutExpiredFlag = attribute(
dtype='DevBoolean',
label="assignResourcesTimeoutExpiredFlag",
doc="Flag reporting AssignResources command timeout expiration.",
)
releaseResourcesMaximumDuration = attribute( releaseResourcesMaximumDuration = attribute(
dtype='DevFloat', dtype='DevFloat',
access=AttrWriteType.READ_WRITE, access=AttrWriteType.READ_WRITE,
...@@ -147,7 +161,7 @@ class CspSubElementSubarray(SKASubarray): ...@@ -147,7 +161,7 @@ class CspSubElementSubarray(SKASubarray):
doc="The percentage progress of the command in the [0,100].", doc="The percentage progress of the command in the [0,100].",
) )
timeoutExpiredFlag = attribute( releaseResourcesTimeoutExpiredFlag = attribute(
dtype='DevBoolean', dtype='DevBoolean',
label="timeoutExpiredFlag", label="timeoutExpiredFlag",
doc="Flag reporting command timeout expiration.", doc="Flag reporting command timeout expiration.",
...@@ -190,7 +204,7 @@ class CspSubElementSubarray(SKASubarray): ...@@ -190,7 +204,7 @@ class CspSubElementSubarray(SKASubarray):
device._scan_id = 0 device._scan_id = 0
device._sdp_addresses = {"outputHost":[], "outputMac": [], "outputPort":[]} device._sdp_addresses = {"outputHost":[], "outputMac": [], "outputPort":[]}
device._sdp_links_active = [] device._sdp_links_active = [False,]
device._sdp_output_data_rate = 0. device._sdp_output_data_rate = 0.
device._config_id = '' device._config_id = ''
...@@ -223,10 +237,17 @@ class CspSubElementSubarray(SKASubarray): ...@@ -223,10 +237,17 @@ class CspSubElementSubarray(SKASubarray):
# _timeout_expired: boolean flag to signal timeout during command execution. # _timeout_expired: boolean flag to signal timeout during command execution.
# To check and reset before a command execution. # To check and reset before a command execution.
# Need to implement one for each command? # keys: the command name in lower case(configurescan, assignresources,..)
device._timeout_expired = False # values: True/False
# configure the flag to push event from the device server device._timeout_expired = defaultdict(bool)
device.set_change_event('timeoutExpiredFlag', True, True) # configure the flags to push event from the device server
device.set_change_event('configureScanTimeoutExpiredFlag', True, True)
device.set_archive_event('configureScanTimeoutExpiredFlag', True, True)
device.set_change_event('assignResourcesTimeoutExpiredFlag', True, True)
device.set_archive_event('assignResourcesTimeoutExpiredFlag', True, True)
device.set_change_event('releaseResourcesTimeoutExpiredFlag', True, True)
device.set_archive_event('releaseResourcesTimeoutExpiredFlag', True, True)
message = "CspSubElementSubarray Init command completed OK" message = "CspSubElementSubarray Init command completed OK"
device.logger.info(message) device.logger.info(message)
...@@ -247,17 +268,6 @@ class CspSubElementSubarray(SKASubarray): ...@@ -247,17 +268,6 @@ class CspSubElementSubarray(SKASubarray):
# PROTECTED REGION ID(CspSubElementSubarray.delete_device) ENABLED START # # PROTECTED REGION ID(CspSubElementSubarray.delete_device) ENABLED START #
# PROTECTED REGION END # // CspSubElementSubarray.delete_device # PROTECTED REGION END # // CspSubElementSubarray.delete_device
def _fire_timeout_expired_event(self, value):
"""
Helper method that updates the timeout_expired internal variable and push the event on the
timeoutExpiredFlag TANGO attribute.
:param value: the flag value
:type value: boolean
"""
self._timeout_expired = value
self.push_change_event('timeoutExpiredFlag', self._timeout_expired)
# ------------------ # ------------------
# Attributes methods # Attributes methods
# ------------------ # ------------------
...@@ -304,6 +314,12 @@ class CspSubElementSubarray(SKASubarray): ...@@ -304,6 +314,12 @@ class CspSubElementSubarray(SKASubarray):
return self._cmd_measured_duration['configurescan'] return self._cmd_measured_duration['configurescan']
# PROTECTED REGION END # // CspSubElementSubarray.configureScanMeasuredDuration_read # PROTECTED REGION END # // CspSubElementSubarray.configureScanMeasuredDuration_read
def read_configureScanTimeoutExpiredFlag(self):
# PROTECTED REGION ID(CspSubElementSubarray.configureScanTimeoutExpiredFlag_read) ENABLED START #
"""Return the configureScanTimeoutExpiredFlag attribute."""
return self._timeout_expired['configurescan']
# PROTECTED REGION END # // CspSubElementSubarray.configureScanTimeoutExpiredFlag_read
def read_listOfDevicesCompletedTasks(self): def read_listOfDevicesCompletedTasks(self):
# PROTECTED REGION ID(CspSubElementSubarray.listOfDevicesCompletedTasks_read) ENABLED START # # PROTECTED REGION ID(CspSubElementSubarray.listOfDevicesCompletedTasks_read) ENABLED START #
"""Return the listOfDevicesCompletedTasks attribute.""" """Return the listOfDevicesCompletedTasks attribute."""
...@@ -335,6 +351,12 @@ class CspSubElementSubarray(SKASubarray): ...@@ -335,6 +351,12 @@ class CspSubElementSubarray(SKASubarray):
return self._cmd_progress['assignresources'] return self._cmd_progress['assignresources']
# PROTECTED REGION END # // CspSubElementSubarray.assignResourcesProgress_read # PROTECTED REGION END # // CspSubElementSubarray.assignResourcesProgress_read
def read_assignResourcesTimeoutExpiredFlag(self):
# PROTECTED REGION ID(CspSubElementSubarray.assignResourcesTimeoutExpiredFlag_read) ENABLED START #
"""Return the assignResourcesTimeoutExpiredFlag attribute."""
return self._timeout_expired['assignresources']
# PROTECTED REGION END # // CspSubElementSubarray.assignResourcesTimeoutExpiredFlag_read
def read_releaseResourcesMaximumDuration(self): def read_releaseResourcesMaximumDuration(self):
# PROTECTED REGION ID(CspSubElementSubarray.releaseResourcesMaximumDuration_read) ENABLED START # # PROTECTED REGION ID(CspSubElementSubarray.releaseResourcesMaximumDuration_read) ENABLED START #
"""Return the releaseResourcesMaximumDuration attribute.""" """Return the releaseResourcesMaximumDuration attribute."""
...@@ -359,11 +381,11 @@ class CspSubElementSubarray(SKASubarray): ...@@ -359,11 +381,11 @@ class CspSubElementSubarray(SKASubarray):
return self._cmd_progress['releaseresources'] return self._cmd_progress['releaseresources']
# PROTECTED REGION END # // CspSubElementSubarray.releaseResourcesProgress_read # PROTECTED REGION END # // CspSubElementSubarray.releaseResourcesProgress_read
def read_timeoutExpiredFlag(self): def read_releaseResourcesTimeoutExpiredFlag(self):
# PROTECTED REGION ID(CspSubElementSubarray.timeoutExpiredFlag_read) ENABLED START # # PROTECTED REGION ID(CspSubElementSubarray.releaseResourcesTimeoutExpiredFlag_read) ENABLED START #
"""Return the timeoutExpiredFlag attribute.""" """Return the releaseResourcesTimeoutExpiredFlag attribute."""
return self._timeout_expired return self._timeout_expired['releaseresources']
# PROTECTED REGION END # // CspSubElementSubarray.timeoutExpiredFlag_read # PROTECTED REGION END # // CspSubElementSubarray.releaseResourcesTimeoutExpiredFlag_read
def read_sdpLinkActive(self): def read_sdpLinkActive(self):
# PROTECTED REGION ID(CspSubElementSubarray.sdpLinkActive_read) ENABLED START # # PROTECTED REGION ID(CspSubElementSubarray.sdpLinkActive_read) ENABLED START #
...@@ -413,14 +435,14 @@ class CspSubElementSubarray(SKASubarray): ...@@ -413,14 +435,14 @@ class CspSubElementSubarray(SKASubarray):
:rtype: (ResultCode, str) :rtype: (ResultCode, str)
""" """
device = self.target device = self.target
result_code, msg = self.validate_configuration_data(argin) result_code, msg = self.validate_input(argin)
if result_code == ResultCode.FAILED: if result_code == ResultCode.FAILED:
return (result_code, msg) return (result_code, msg)
# store the configuration on command success # store the configuration on command success
device._last_scan_configuration = argin device._last_scan_configuration = argin
return (ResultCode.OK, "Configure command completed OK") return (ResultCode.OK, "Configure command completed OK")
def validate_configuration_data(self, argin): def validate_input(self, argin):
""" """
Validate the configuration parameters against allowed values, as needed. Validate the configuration parameters against allowed values, as needed.
:param argin: The JSON formatted string with configuration for the device. :param argin: The JSON formatted string with configuration for the device.
......
...@@ -16,7 +16,6 @@ import pytest ...@@ -16,7 +16,6 @@ import pytest
import json import json
from tango import DevState, DevFailed from tango import DevState, DevFailed
from tango.test_context import MultiDeviceTestContext
# PROTECTED REGION ID(CspSubelementSubarray.test_additional_imports) ENABLED START # # PROTECTED REGION ID(CspSubelementSubarray.test_additional_imports) ENABLED START #
from ska.base import SKASubarray, CspSubElementSubarray from ska.base import SKASubarray, CspSubElementSubarray
...@@ -50,6 +49,7 @@ class TestCspSubElementSubarray(object): ...@@ -50,6 +49,7 @@ class TestCspSubElementSubarray(object):
# PROTECTED REGION ID(CspSubelementSubarray.test_mocking) ENABLED START # # PROTECTED REGION ID(CspSubelementSubarray.test_mocking) ENABLED START #
# PROTECTED REGION END # // CspSubelementSubarray.test_mocking # PROTECTED REGION END # // CspSubelementSubarray.test_mocking
@pytest.mark.skip(reason="Not implemented")
def test_properties(self, tango_context): def test_properties(self, tango_context):
# Test the properties # Test the properties
# PROTECTED REGION ID(CspSubelementSubarray.test_properties) ENABLED START # # PROTECTED REGION ID(CspSubelementSubarray.test_properties) ENABLED START #
...@@ -166,13 +166,10 @@ class TestCspSubElementSubarray(object): ...@@ -166,13 +166,10 @@ class TestCspSubElementSubarray(object):
def test_sdpLinkActivity(self, tango_context): def test_sdpLinkActivity(self, tango_context):
"""Test for sdpLinkActive """ """Test for sdpLinkActive """
# PROTECTED REGION ID(CspSubelementSubarray.test_sdpLinkActive) ENABLED START # # PROTECTED REGION ID(CspSubelementSubarray.test_sdpLinkActive) ENABLED START #
expected = tango_context.device.sdpLinkActive actual = tango_context.device.sdpLinkActive
if expected is not None: n_links = len(actual)
n_links = len(expected) expected = [ False for i in range(0, n_links)]
actual = [ False for i in range(0, n_links)]
assert all([a == b for a, b in zip(actual, expected)]) assert all([a == b for a, b in zip(actual, expected)])
else:
assert expected is None
# PROTECTED REGION END # // CspSubelementSubarray.test_sdpLinkActive # PROTECTED REGION END # // CspSubelementSubarray.test_sdpLinkActive
# PROTECTED REGION ID(CspSubelementSubarray.test_outputDataRateToSdp_decorators) ENABLED START # # PROTECTED REGION ID(CspSubelementSubarray.test_outputDataRateToSdp_decorators) ENABLED START #
...@@ -263,51 +260,52 @@ class TestCspSubElementSubarray(object): ...@@ -263,51 +260,52 @@ class TestCspSubElementSubarray(object):
# PROTECTED REGION ID(CspSubelementSubarray.test_timeoutExpiredFlag_decorators) ENABLED START # # PROTECTED REGION ID(CspSubelementSubarray.test_timeoutExpiredFlag_decorators) ENABLED START #
# PROTECTED REGION END # // CspSubelementSubarray.test_timeoutExpiredFlag_decorators # PROTECTED REGION END # // CspSubelementSubarray.test_timeoutExpiredFlag_decorators
def test_timeoutExpiredFlag(self, tango_context): def test_configureScanTimeoutExpiredFlag(self, tango_context):
"""Test for timeoutExpiredFlag """ """Test for timeoutExpiredFlag """
# PROTECTED REGION ID(CspSubelementSubarray.test_timeoutExpiredFlag) ENABLED START # # PROTECTED REGION ID(CspSubelementSubarray.test_timeoutExpiredFlag) ENABLED START #
assert tango_context.device.timeoutExpiredFlag == False assert tango_context.device.configureScanTimeoutExpiredFlag == False
# PROTECTED REGION END # // CspSubelementSubarray.test_timeoutExpiredFlag
# PROTECTED REGION ID(CspSubelementSubarray.test_timeoutExpiredFlag_decorators) ENABLED START #
# PROTECTED REGION END # // CspSubelementSubarray.test_timeoutExpiredFlag_decorators
def test_assignResourcesTimeoutExpiredFlag(self, tango_context):
"""Test for timeoutExpiredFlag """
# PROTECTED REGION ID(CspSubelementSubarray.test_timeoutExpiredFlag) ENABLED START #
assert tango_context.device.assignResourcesTimeoutExpiredFlag == False
# PROTECTED REGION END # // CspSubelementSubarray.test_timeoutExpiredFlag
# PROTECTED REGION ID(CspSubelementSubarray.test_timeoutExpiredFlag_decorators) ENABLED START #
# PROTECTED REGION END # // CspSubelementSubarray.test_timeoutExpiredFlag_decorators
def test_releaseResourcesTimeoutExpiredFlag(self, tango_context):
"""Test for timeoutExpiredFlag """
# PROTECTED REGION ID(CspSubelementSubarray.test_timeoutExpiredFlag) ENABLED START #
assert tango_context.device.releaseResourcesTimeoutExpiredFlag == False
# PROTECTED REGION END # // CspSubelementSubarray.test_timeoutExpiredFlag # PROTECTED REGION END # // CspSubelementSubarray.test_timeoutExpiredFlag
# PROTECTED REGION ID(CspSubelementSubarray.test_ConfigureScan_decorators) ENABLED START # # PROTECTED REGION ID(CspSubelementSubarray.test_ConfigureScan_decorators) ENABLED START #
# PROTECTED REGION END # // CspSubelementSubarray.test_ConfigureScan_decorators # PROTECTED REGION END # // CspSubelementSubarray.test_ConfigureScan_decorators
def test_ConfigureScan(self, tango_context, tango_change_event_helper): @pytest.mark.parametrize("command_alias", ["Configure", "ConfigureScan"])
def test_ConfigureScan(self, tango_context, tango_change_event_helper, command_alias):
"""Test for ConfigureScan""" """Test for ConfigureScan"""
# PROTECTED REGION ID(CspSubelementSubarray.test_ConfigureScan) ENABLED START # # PROTECTED REGION ID(CspSubelementSubarray.test_ConfigureScan) ENABLED START #
tango_context.device.On() tango_context.device.On()
tango_context.device.AssignResources('{"example": [1,2,3]}') tango_context.device.AssignResources('{"example": [1,2,3]}')
obs_state_callback = tango_change_event_helper.subscribe("obsState") obs_state_callback = tango_change_event_helper.subscribe("obsState")
scan_configuration = '{"id":"sbi-mvp01-20200325-00002"}' scan_configuration = '{"id":"sbi-mvp01-20200325-00002"}'
tango_context.device.ConfigureScan(scan_configuration) tango_context.device.command_inout(command_alias, (scan_configuration))
obs_state_callback.assert_calls([ObsState.IDLE,ObsState.CONFIGURING]) obs_state_callback.assert_calls([ObsState.IDLE,ObsState.CONFIGURING])
assert tango_context.device.configurationID == "sbi-mvp01-20200325-00002" assert tango_context.device.configurationID == "sbi-mvp01-20200325-00002"
assert tango_context.device.lastScanConfiguration == scan_configuration assert tango_context.device.lastScanConfiguration == scan_configuration
# PROTECTED REGION END # // CspSubelementSubarray.test_ConfigureScan # PROTECTED REGION END # // CspSubelementSubarray.test_ConfigureScan
# PROTECTED REGION ID(CspSubelementSubarray.test_Configure_decorators) ENABLED START #
# PROTECTED REGION END # // CspSubelementSubarray.test_Configure_decorators
def test_Configure(self, tango_context, tango_change_event_helper):
"""Test for ConfigureScan"""
# PROTECTED REGION ID(CspSubelementSubarray.test_Configure) ENABLED START #
tango_context.device.On()
tango_context.device.AssignResources('{"example": [1,2,3]}')
obs_state_callback = tango_change_event_helper.subscribe("obsState")
scan_configuration = '{"id":"sbi-mvp01-20200325-00002"}'
tango_context.device.Configure(scan_configuration)
obs_state_callback.assert_calls([ObsState.IDLE,ObsState.CONFIGURING])
assert tango_context.device.configurationID == "sbi-mvp01-20200325-00002"
assert tango_context.device.lastScanConfiguration == scan_configuration
# PROTECTED REGION END # // CspSubelementSubarray.test_Configure
# PROTECTED REGION ID(CspSubelementSubarray.test_ConfigureScan_when_in_wrong_state_decorators) ENABLED START # # PROTECTED REGION ID(CspSubelementSubarray.test_ConfigureScan_when_in_wrong_state_decorators) ENABLED START #
# PROTECTED REGION END # // CspSubelementSubarray.test_ConfigureScan_when_in_wrong_state_decorators # PROTECTED REGION END # // CspSubelementSubarray.test_ConfigureScan_when_in_wrong_state_decorators
def test_ConfigureScan_when_in_wrong_state(self, tango_context): def test_ConfigureScan_when_in_wrong_state(self, tango_context):
"""Test for ConfigureScan when the device is in wrong state""" """Test for ConfigureScan when the device is in wrong state"""
# PROTECTED REGION ID(CspSubelementSubarray.test_ConfigureScan_when_in_wrong_state) ENABLED START # # PROTECTED REGION ID(CspSubelementSubarray.test_ConfigureScan_when_in_wrong_state) ENABLED START #
# The device in in OFF/EMPTY state, not valid to invoke ConfigureScan. # The device in in OFF/EMPTY state, not valid to invoke ConfigureScan.
with pytest.raises(DevFailed) as df: with pytest.raises(DevFailed, match="Error executing command ConfigureScanCommand"):
tango_context.device.ConfigureScan('{"id":"sbi-mvp01-20200325-00002"}') tango_context.device.ConfigureScan('{"id":"sbi-mvp01-20200325-00002"}')
assert "Error executing command ConfigureScanCommand" in str(df.value.args[0].desc)
# PROTECTED REGION END # // CspSubelementSubarray.test_ConfigureScan_when_in_wrong_state # PROTECTED REGION END # // CspSubelementSubarray.test_ConfigureScan_when_in_wrong_state
# PROTECTED REGION ID(CspSubelementSubarray.test_ConfigureScan_with_wrong_configId_key_decorators) ENABLED START # # PROTECTED REGION ID(CspSubelementSubarray.test_ConfigureScan_with_wrong_configId_key_decorators) ENABLED START #
...@@ -338,7 +336,8 @@ class TestCspSubElementSubarray(object): ...@@ -338,7 +336,8 @@ class TestCspSubElementSubarray(object):
# PROTECTED REGION ID(CspSubelementSubarray.test_GoToIdle_decorators) ENABLED START # # PROTECTED REGION ID(CspSubelementSubarray.test_GoToIdle_decorators) ENABLED START #
# PROTECTED REGION END # // CspSubelementSubarray.test_GoToIdle_decorators # PROTECTED REGION END # // CspSubelementSubarray.test_GoToIdle_decorators
def test_GoToIdle(self, tango_context, tango_change_event_helper): @pytest.mark.parametrize("command_alias", ["GoToIdle", "End"])
def test_GoToIdle(self, tango_context, tango_change_event_helper, command_alias):
"""Test for GoToIdle""" """Test for GoToIdle"""
# PROTECTED REGION ID(CspSubelementSubarray.test_GoToIdle) ENABLED START # # PROTECTED REGION ID(CspSubelementSubarray.test_GoToIdle) ENABLED START #
tango_context.device.On() tango_context.device.On()
...@@ -346,36 +345,8 @@ class TestCspSubElementSubarray(object): ...@@ -346,36 +345,8 @@ class TestCspSubElementSubarray(object):
obs_state_callback = tango_change_event_helper.subscribe("obsState") obs_state_callback = tango_change_event_helper.subscribe("obsState")
tango_context.device.ConfigureScan('{"id":"sbi-mvp01-20200325-00002"}') tango_context.device.ConfigureScan('{"id":"sbi-mvp01-20200325-00002"}')
obs_state_callback.assert_calls([ObsState.IDLE,ObsState.CONFIGURING, ObsState.READY]) obs_state_callback.assert_calls([ObsState.IDLE,ObsState.CONFIGURING, ObsState.READY])
tango_context.device.GoToIdle() tango_context.device.command_inout(command_alias)
obs_state_callback.assert_call(ObsState.IDLE) obs_state_callback.assert_call(ObsState.IDLE)
assert tango_context.device.scanID == 0 assert tango_context.device.scanID == 0
assert tango_context.device.configurationID == '' assert tango_context.device.configurationID == ''
# PROTECTED REGION END # // CspSubelementSubarray.test_GoToIdle # PROTECTED REGION END # // CspSubelementSubarray.test_GoToIdle
# PROTECTED REGION ID(CspSubelementSubarray.test_End_decorators) ENABLED START #
# PROTECTED REGION END # // CspSubelementSubarray.test_End_decorators
def test_End(self, tango_context, tango_change_event_helper):
"""Test for End"""
# PROTECTED REGION ID(CspSubelementSubarray.test_End) ENABLED START #
tango_context.device.On()
tango_context.device.AssignResources('{"example": [1,2,3]}')
obs_state_callback = tango_change_event_helper.subscribe("obsState")
tango_context.device.ConfigureScan('{"id":"sbi-mvp01-20200325-00002"}')
obs_state_callback.assert_calls([ObsState.IDLE,ObsState.CONFIGURING, ObsState.READY])
tango_context.device.End()
obs_state_callback.assert_call(ObsState.IDLE)
assert tango_context.device.scanID == 0
assert tango_context.device.configurationID == ''
# PROTECTED REGION END # // CspSubelementSubarray.test_GoToIdle
def test_multiple_devices_in_same_process():
devices_info = (
{"class": CspSubElementSubarray, "devices": [{"name": "test/se/1"}]},
{"class": SKASubarray, "devices": [{"name": "test/obsdevice/1"}]},
)
with MultiDeviceTestContext(devices_info, process=False) as context:
proxy1 = context.get_device("test/se/1")
proxy2 = context.get_device("test/obsdevice/1")
assert proxy1.State() == DevState.OFF
assert proxy2.State() == DevState.OFF
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment