def test_configure_request_eq(): """ Verify that ConfigurationRequest objects are considered equal when: - they point to the same target - they set the same receiver band - their SDP configuration is the same - their CSP configuration is the same """ pointing_config = PointingConfiguration(Target(1, 1)) dish_config = DishConfiguration(receiver_band=ReceiverBand.BAND_1) sdp_config = SDPConfiguration("science_A") channel_avg_map = list(zip(itertools.count(1, 744), [2] + 19 * [0])) csp_id = "sbi-mvp01-20200325-00001-science_A" fsp_config = FSPConfiguration(1, FSPFunctionMode.CORR, 1, 140, 0, channel_avg_map) csp_config = CSPConfiguration(csp_id=csp_id, frequency_band=ReceiverBand.BAND_1, fsp_configs=[fsp_config]) request_1 = ConfigureRequest(pointing=pointing_config, dish=dish_config, sdp=sdp_config, csp=csp_config) request_2 = ConfigureRequest(pointing=pointing_config, dish=dish_config, sdp=sdp_config, csp=csp_config) assert request_1 == request_2
def set_subarray_to_fault(result): """ Set sub-array to FAULT state by sending incomplete JSON in the Configure command. """ LOGGER.info("Before starting the telescope checking if the TMC is in ON state") assert(tmc_is_on()) if telescope_is_in_standby(): set_telescope_to_running() take_subarray(1).to_be_composed_out_of(2) subarray = SubArray(1) conf_req = ConfigureRequest() conf_req.dish = DishConfiguration(receiver_band=ReceiverBand.BAND_1) # To set sub-array to FAULT, catch and ignore # the DevFailed of a bad Configure command try: subarray.configure_from_cdm(conf_req) except DevFailed: pass subarray_state = resource(result[SUBARRAY_USED]).get('obsState') assert subarray_state == 'FAULT', \ f"Expected sub-array to be in FAULT but instead was in {subarray_state}" LOGGER.info("Sub-array has been set to FAULT")
def test_mccs_configure_request_eq(): """ Verify that ConfigurationRequest objects for are considered equal when: - they point to the same target - their MCCS configuration is the same """ station_config = StnConfiguration(1) target = SubarrayBeamTarget(180.0, 45.0, "DriftScan", "HORIZON") station_beam_config = SubarrayBeamConfiguration(1, [1, 2], [[1, 2, 3, 4, 5, 6]], 1.0, target, [1.0, 1.0, 1.0], [0.0, 0.0]) mccs_config = MCCSConfiguration( station_configs=[station_config], subarray_beam_configs=[station_beam_config]) request_1 = ConfigureRequest(mccs=mccs_config) request_2 = ConfigureRequest(mccs=mccs_config) assert request_1 == request_2
def test_configure_request_mccs_independence(): """ Verify that an Mid & Low ConfigureRequests are independent. """ station_config = StnConfiguration(1) target = SubarrayBeamTarget(180.0, 45.0, "DriftScan", "HORIZON") station_beam_config = SubarrayBeamConfiguration(1, [1, 2], [[1, 2, 3, 4, 5, 6]], 1.0, target, [1.0, 1.0, 1.0], [0.0, 0.0]) mccs_config = MCCSConfiguration( station_configs=[station_config], subarray_beam_configs=[station_beam_config]) request = ConfigureRequest(mccs=mccs_config) assert request is not None dish_config = DishConfiguration(receiver_band=ReceiverBand.BAND_1) with pytest.raises(ValueError): ConfigureRequest(dish=dish_config, mccs=mccs_config)
def test_configure_request_eq_for_low(): """ Verify that ConfigurationRequest objects for are considered equal when: - they point to the same target - their MCCS configuration is the same """ station_config = StnConfiguration(1) target = SubarrayBeamTarget(180.0, 45.0, "DriftScan", "HORIZON") station_beam_config = SubarrayBeamConfiguration(1, [1, 2], [[1, 2, 3, 4, 5, 6]], 1.0, target, [1.0, 1.0, 1.0], [0.0, 0.0]) mccs_config = MCCSConfiguration( station_configs=[station_config], subarray_beam_configs=[station_beam_config]) request_1 = ConfigureRequest( interface='https://schema.skatelescope.org/ska-low-tmc-configure/1.0', mccs=mccs_config, sdp=SDPConfiguration("science_A")) request_2 = ConfigureRequest( interface='https://schema.skatelescope.org/ska-low-tmc-configure/1.0', mccs=mccs_config, sdp=SDPConfiguration("science_A")) assert request_1 == request_2
def test_mccs_configure_request_is_not_equal_to_other_objects(): """ Verify that an MCCS ConfigureRequest is not equal to other objects. """ station_config = StnConfiguration(1) target = SubarrayBeamTarget(180.0, 45.0, "DriftScan", "HORIZON") station_beam_config = SubarrayBeamConfiguration(1, [1, 2], [[1, 2, 3, 4, 5, 6]], 1.0, target, [1.0, 1.0, 1.0], [0.0, 0.0]) mccs_config = MCCSConfiguration( station_configs=[station_config], subarray_beam_configs=[station_beam_config]) request = ConfigureRequest(mccs=mccs_config) assert request != object assert request is not None
def test_configure_request_is_not_equal_to_other_objects_for_low(): """ Verify that an MCCS ConfigureRequest is not equal to other objects. """ station_config = StnConfiguration(1) target = SubarrayBeamTarget(180.0, 45.0, "DriftScan", "HORIZON") station_beam_config = SubarrayBeamConfiguration(1, [1, 2], [[1, 2, 3, 4, 5, 6]], 1.0, target, [1.0, 1.0, 1.0], [0.0, 0.0]) mccs_config = MCCSConfiguration( station_configs=[station_config], subarray_beam_configs=[station_beam_config]) request = ConfigureRequest( interface='https://schema.skatelescope.org/ska-low-tmc-configure/1.0', mccs=mccs_config, sdp=SDPConfiguration("science_A")) assert request != object assert request is not None
def test_configure_request_is_not_equal_to_other_objects(): """ Verify that ConfigureRequest is not equal to other objects. """ pointing_config = PointingConfiguration(Target(1, 1)) dish_config = DishConfiguration(receiver_band=ReceiverBand.BAND_1) sdp_config = SDPConfiguration("science_A") channel_avg_map = list(zip(itertools.count(1, 744), [2] + 19 * [0])) csp_id = "sbi-mvp01-20200325-00001-science_A" fsp_config = FSPConfiguration(1, FSPFunctionMode.CORR, 1, 140, 0, channel_avg_map) csp_config = CSPConfiguration(csp_id=csp_id, frequency_band=ReceiverBand.BAND_1, fsp_configs=[fsp_config]) request = ConfigureRequest(pointing=pointing_config, dish=dish_config, sdp=sdp_config, csp=csp_config) assert request != object
def create_configuration(self, data, **_): # pylint: disable=no-self-use """ Converted parsed JSON backn into a subarray_node.ConfigureRequest object. :param data: dict containing parsed JSON values :param _: kwargs passed by Marshmallow :return: ConfigurationRequest instance populated to match JSON """ interface = data.get("interface", None) pointing = data.get("pointing", None) dish = data.get("dish", None) sdp = data.get("sdp", None) csp = data.get("csp", None) tmc = data.get("tmc", None) mccs = data.get("mccs", None) return ConfigureRequest(interface=interface, pointing=pointing, dish=dish, sdp=sdp, csp=csp, mccs=mccs, tmc=tmc)
VALID_MID_CONFIGURE_OBJECT = ConfigureRequest( pointing=PointingConfiguration( Target( ra="13:29:52.698", dec="+47:11:42.93", name="M51", frame="icrs", unit=("hourangle", "deg"), )), dish=DishConfiguration(receiver_band=ReceiverBand.BAND_1), sdp=SDPConfiguration("science_A"), csp=CSPConfiguration( interface="https://schema.skatelescope.org/ska-csp-configure/1.0", subarray_config=SubarrayConfiguration('science period 23'), common_config=CommonConfiguration("sbi-mvp01-20200325-00001-science_A", ReceiverBand.BAND_1, 1), cbf_config=CBFConfiguration([ FSPConfiguration( 1, FSPFunctionMode.CORR, 1, 1400, 0, channel_averaging_map=[(0, 2), (744, 0)], fsp_channel_offset=0, output_link_map=[(0, 0), (200, 1)], ), FSPConfiguration( 2, FSPFunctionMode.CORR, 2, 1400, 1, channel_averaging_map=[(0, 2), (744, 0)], fsp_channel_offset=744, output_link_map=[(0, 4), (200, 5)], zoom_window_tuning=4700000, ) ])), tmc=TMCConfiguration(scan_duration=timedelta(seconds=10)))