예제 #1
0
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
예제 #2
0
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")
예제 #3
0
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
예제 #4
0
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)
예제 #5
0
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
예제 #6
0
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
예제 #7
0
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
예제 #8
0
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
예제 #9
0
    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)
예제 #10
0
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)))