diff --git a/CDB/integration_ConfigDb.json b/CDB/integration_ConfigDb.json index b2f9cca6dc8db917942f35bb8be25e4cb88bdb93..76f66029a472312e498cf0da89224d3f5f7746e1 100644 --- a/CDB/integration_ConfigDb.json +++ b/CDB/integration_ConfigDb.json @@ -59,6 +59,25 @@ } } } + }, + "UNB2": { + "LTS": { + "UNB2": { + "LTS/UNB2/1": { + "properties": { + "OPC_Server_Name": [ + "despi.astron.nl" + ], + "OPC_Server_Port": [ + "4842" + ], + "OPC_Time_Out": [ + "5.0" + ] + } + } + } + } } } } diff --git a/devices/integration_test/devices/test_device_unb2.py b/devices/integration_test/devices/test_device_unb2.py new file mode 100644 index 0000000000000000000000000000000000000000..97f31ab6ee162f8183db963e92f4f03b9ee7f617 --- /dev/null +++ b/devices/integration_test/devices/test_device_unb2.py @@ -0,0 +1,59 @@ +# -*- coding: utf-8 -*- +# +# This file is part of the LOFAR 2.0 Station Software +# +# +# +# Distributed under the terms of the APACHE license. +# See LICENSE.txt for more info. + +import time + +from tango import DeviceProxy +from tango._tango import DevState + +from integration_test import base + + +class TestDeviceUNB2(base.IntegrationTestCase): + + def setUp(self): + """Intentionally recreate the device object in each test""" + super(TestDeviceUNB2, self).setUp() + + def tearDown(self): + """Turn device Off in teardown to prevent blocking tests""" + d = DeviceProxy("LTS/UNB2/1") + + try: + d.Off() + except Exception as e: + """Failing to turn Off devices should not raise errors here""" + print(f"Failed to turn device off in teardown {e}") + + def test_device_proxy_unb2(self): + """Test if we can successfully create a DeviceProxy and fetch state""" + + d = DeviceProxy("LTS/UNB2/1") + + self.assertEqual(DevState.OFF, d.state()) + + def test_device_unb2_initialize(self): + """Test if we can transition to standby""" + + d = DeviceProxy("LTS/UNB2/1") + + d.initialise() + + self.assertEqual(DevState.STANDBY, d.state()) + + def test_device_unb2_on(self): + """Test if we can transition to on""" + + d = DeviceProxy("LTS/UNB2/1") + + d.initialise() + + d.on() + + self.assertEqual(DevState.ON, d.state()) diff --git a/docker-compose/Makefile b/docker-compose/Makefile index 09eb760123bc4687207609c3ad94c740a72c317c..683019aa6781c2beca40ea39ade8a225c2ddeaca 100644 --- a/docker-compose/Makefile +++ b/docker-compose/Makefile @@ -126,8 +126,8 @@ pull: ## pull the images from the Docker hub build: ## rebuild images # docker-compose does not support build dependencies, so manage those here - $(DOCKER_COMPOSE_ARGS) docker-compose -f lofar-device-base.yml -f networks.yml build - $(DOCKER_COMPOSE_ARGS) docker-compose $(COMPOSE_FILE_ARGS) build + $(DOCKER_COMPOSE_ARGS) docker-compose -f lofar-device-base.yml -f networks.yml build --progress=plain + $(DOCKER_COMPOSE_ARGS) docker-compose $(COMPOSE_FILE_ARGS) build --progress=plain up: minimal ## start the base TANGO system and prepare all services $(DOCKER_COMPOSE_ARGS) docker-compose $(COMPOSE_FILE_ARGS) up --no-start diff --git a/jupyter-notebooks/UNB2_notebook.ipynb b/jupyter-notebooks/UNB2_notebook.ipynb index 3e87179f3a0f0ef951da6a078ba5df3610a6696d..e140631ffc4ea0cee80e2374ec6b5f1289dbba24 100644 --- a/jupyter-notebooks/UNB2_notebook.ipynb +++ b/jupyter-notebooks/UNB2_notebook.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 1, + "execution_count": 25, "id": "waiting-chance", "metadata": {}, "outputs": [], @@ -12,7 +12,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 26, "id": "moving-alexandria", "metadata": {}, "outputs": [], @@ -22,7 +22,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 28, "id": "ranking-aluminum", "metadata": { "scrolled": false @@ -55,7 +55,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 29, "id": "0caa8146", "metadata": {}, "outputs": [ @@ -63,68 +63,68 @@ "name": "stdout", "output_type": "stream", "text": [ - "version_R *L2SS-268-LR1_2_Read_hardware_status_of_UB2c_from_SDPHW [1007a5c5462b1aa3e8f81268f890f6c058413218]\n", + "version_R *L2SS-268-LR1_2_Read_hardware_status_of_UB2c_from_SDPHW [b2db449162be8e52013dbbd1a44d6d90a12491b5]\n", "UNB2_Power_ON_OFF_RW [False False]\n", "UNB2_Front_Panel_LED_RW [0 0]\n", "UNB2_Front_Panel_LED_R [0 0]\n", "UNB2_mask_RW [False False]\n", "UNB2_I2C_bus_STATUS_R [False False]\n", - "UNB2_EEPROM_Unique_ID_R [5947666 5947666]\n", - "UNB2_DC_DC_48V_12V_VIN_R [29.18505859 29.18505859]\n", - "UNB2_DC_DC_48V_12V_VOUT_R [12.00146484 11.98486328]\n", - "UNB2_DC_DC_48V_12V_IOUT_R [3.625 3.625]\n", - "UNB2_DC_DC_48V_12V_TEMP_R [37. 37.]\n", - "UNB2_POL_QSFP_N01_VOUT_R [3.28686523 3.28686523]\n", - "UNB2_POL_QSFP_N01_IOUT_R [1.55078125 1.55078125]\n", - "UNB2_POL_QSFP_N01_TEMP_R [33.75 33.75]\n", - "UNB2_POL_QSFP_N23_VOUT_R [3.28710938 3.28710938]\n", - "UNB2_POL_QSFP_N23_IOUT_R [1.25195312 1.25195312]\n", - "UNB2_POL_QSFP_N23_TEMP_R [40.625 40.625]\n", - "UNB2_POL_SWITCH_1V2_VOUT_R [1.19970703 1.19970703]\n", - "UNB2_POL_SWITCH_1V2_IOUT_R [1.73632812 1.73632812]\n", - "UNB2_POL_SWITCH_1V2_TEMP_R [45.125 45.125]\n", - "UNB2_POL_SWITCH_PHY_VOUT_R [1.00024414 1.00024414]\n", - "UNB2_POL_SWITCH_PHY_IOUT_R [0.52050781 0.52050781]\n", - "UNB2_POL_SWITCH_PHY_TEMP_R [46.1875 46.1875]\n", - "UNB2_POL_CLOCK_VOUT_R [2.49951172 2.49951172]\n", - "UNB2_POL_CLOCK_IOUT_R [0.94042969 0.94042969]\n", - "UNB2_POL_CLOCK_TEMP_R [42.875 42.875]\n", - "UNB2_FPGA_DDR4_SLOT_TEMP_R [[27.5 27.5 29.25 27.75 28.75 29.25 28.5 28.5 ]\n", - " [27.5 27.5 29.25 27.75 28.75 29.25 28.5 28.5 ]]\n", - "UNB2_FPGA_POL_CORE_IOUT_R [[5.921875 4.109375 3.76171875 3.55859375]\n", - " [5.921875 4.1015625 3.76171875 3.55859375]]\n", - "UNB2_FPGA_POL_CORE_TEMP_R [[30.84375 31.46875 32.4375 34.75 ]\n", - " [30.84375 31.5 32.375 34.6875 ]]\n", - "UNB2_FPGA_POL_ERAM_VOUT_R [[0.8996582 0.90014648 0.90014648 0.8996582 ]\n", - " [0.8996582 0.8996582 0.90014648 0.8996582 ]]\n", - "UNB2_FPGA_POL_ERAM_IOUT_R [[0.08764648 0.0880127 0.18725586 0.08703613]\n", - " [0.02593994 0.0880127 0.18725586 0.08703613]]\n", - "UNB2_FPGA_POL_ERAM_TEMP_R [[38.75 39.25 41. 41.4375]\n", - " [38.75 39.25 41. 41.4375]]\n", - "UNB2_FPGA_POL_RXGXB_VOUT_R [[0.90014648 0.89990234 0.90014648 0.90014648]\n", - " [0.90014648 0.89990234 0.90014648 0.90014648]]\n", - "UNB2_FPGA_POL_RXGXB_IOUT_R [[0.49755859 0.41113281 0.40234375 0.48876953]\n", - " [0.49755859 0.41113281 0.40234375 0.48876953]]\n", - "UNB2_FPGA_POL_RXGXB_TEMP_R [[34.75 38.0625 36.5 38.1875]\n", - " [34.75 38.0625 36.5 38.1875]]\n", - "UNB2_FPGA_POL_TXGXB_VOUT_R [[0.89990234 0.90014648 0.90014648 0.89990234]\n", - " [0.89990234 0.90014648 0.90014648 0.89990234]]\n", - "UNB2_FPGA_POL_TXGXB_IOUT_R [[0.17480469 0.12219238 0.06433105 0.13110352]\n", - " [0.17480469 0.12219238 0.06433105 0.13110352]]\n", - "UNB2_FPGA_POL_HGXB_VOUT_R [[1.80004883 1.79956055 1.79980469 1.79980469]\n", - " [1.80004883 1.79956055 1.79980469 1.79980469]]\n", - "UNB2_FPGA_POL_HGXB_IOUT_R [[0.67089844 0.76269531 0.80664062 0.7265625 ]\n", - " [0.67089844 0.76269531 0.80664062 0.7265625 ]]\n", - "UNB2_FPGA_POL_HGXB_TEMP_R [[40.375 41.8125 44.3125 40.625 ]\n", - " [40.375 41.8125 44.3125 40.625 ]]\n", - "UNB2_FPGA_POL_PGM_VOUT_R [[1.80029297 1.80004883 1.79931641 1.80029297]\n", - " [1.80029297 1.80004883 1.79931641 1.80029297]]\n", - "UNB2_FPGA_POL_PGM_IOUT_R [[0.13818359 0.17089844 0.31542969 0.10656738]\n", - " [0.1550293 0.17089844 0.31542969 0.10656738]]\n", - "UNB2_FPGA_POL_PGM_TEMP_R [[40.0625 42.1875 44.3125 40.3125]\n", - " [40.0625 42.1875 44.3125 40.3125]]\n", - "State <function __get_command_func.<locals>.f at 0x7f636d295510>\n", - "Status <function __get_command_func.<locals>.f at 0x7f636d295510>\n" + "UNB2_EEPROM_Unique_ID_R [0 0]\n", + "UNB2_DC_DC_48V_12V_VIN_R [0. 0.]\n", + "UNB2_DC_DC_48V_12V_VOUT_R [0. 0.]\n", + "UNB2_DC_DC_48V_12V_IOUT_R [0. 0.]\n", + "UNB2_DC_DC_48V_12V_TEMP_R [0. 0.]\n", + "UNB2_POL_QSFP_N01_VOUT_R [0. 0.]\n", + "UNB2_POL_QSFP_N01_IOUT_R [0. 0.]\n", + "UNB2_POL_QSFP_N01_TEMP_R [0. 0.]\n", + "UNB2_POL_QSFP_N23_VOUT_R [0. 0.]\n", + "UNB2_POL_QSFP_N23_IOUT_R [0. 0.]\n", + "UNB2_POL_QSFP_N23_TEMP_R [0. 0.]\n", + "UNB2_POL_SWITCH_1V2_VOUT_R [0. 0.]\n", + "UNB2_POL_SWITCH_1V2_IOUT_R [0. 0.]\n", + "UNB2_POL_SWITCH_1V2_TEMP_R [0. 0.]\n", + "UNB2_POL_SWITCH_PHY_VOUT_R [0. 0.]\n", + "UNB2_POL_SWITCH_PHY_IOUT_R [0. 0.]\n", + "UNB2_POL_SWITCH_PHY_TEMP_R [0. 0.]\n", + "UNB2_POL_CLOCK_VOUT_R [0. 0.]\n", + "UNB2_POL_CLOCK_IOUT_R [0. 0.]\n", + "UNB2_POL_CLOCK_TEMP_R [0. 0.]\n", + "UNB2_FPGA_DDR4_SLOT_TEMP_R [[0. 0. 0. 0. 0. 0. 0. 0.]\n", + " [0. 0. 0. 0. 0. 0. 0. 0.]]\n", + "UNB2_FPGA_POL_CORE_IOUT_R [[0. 0. 0. 0.]\n", + " [0. 0. 0. 0.]]\n", + "UNB2_FPGA_POL_CORE_TEMP_R [[0. 0. 0. 0.]\n", + " [0. 0. 0. 0.]]\n", + "UNB2_FPGA_POL_ERAM_VOUT_R [[0. 0. 0. 0.]\n", + " [0. 0. 0. 0.]]\n", + "UNB2_FPGA_POL_ERAM_IOUT_R [[0. 0. 0. 0.]\n", + " [0. 0. 0. 0.]]\n", + "UNB2_FPGA_POL_ERAM_TEMP_R [[0. 0. 0. 0.]\n", + " [0. 0. 0. 0.]]\n", + "UNB2_FPGA_POL_RXGXB_VOUT_R [[0. 0. 0. 0.]\n", + " [0. 0. 0. 0.]]\n", + "UNB2_FPGA_POL_RXGXB_IOUT_R [[0. 0. 0. 0.]\n", + " [0. 0. 0. 0.]]\n", + "UNB2_FPGA_POL_RXGXB_TEMP_R [[0. 0. 0. 0.]\n", + " [0. 0. 0. 0.]]\n", + "UNB2_FPGA_POL_TXGXB_VOUT_R [[0. 0. 0. 0.]\n", + " [0. 0. 0. 0.]]\n", + "UNB2_FPGA_POL_TXGXB_IOUT_R [[0. 0. 0. 0.]\n", + " [0. 0. 0. 0.]]\n", + "UNB2_FPGA_POL_HGXB_VOUT_R [[0. 0. 0. 0.]\n", + " [0. 0. 0. 0.]]\n", + "UNB2_FPGA_POL_HGXB_IOUT_R [[0. 0. 0. 0.]\n", + " [0. 0. 0. 0.]]\n", + "UNB2_FPGA_POL_HGXB_TEMP_R [[0. 0. 0. 0.]\n", + " [0. 0. 0. 0.]]\n", + "UNB2_FPGA_POL_PGM_VOUT_R [[0. 0. 0. 0.]\n", + " [0. 0. 0. 0.]]\n", + "UNB2_FPGA_POL_PGM_IOUT_R [[0. 0. 0. 0.]\n", + " [0. 0. 0. 0.]]\n", + "UNB2_FPGA_POL_PGM_TEMP_R [[0. 0. 0. 0.]\n", + " [0. 0. 0. 0.]]\n", + "State <function __get_command_func.<locals>.f at 0x7f4c210e1ea0>\n", + "Status <function __get_command_func.<locals>.f at 0x7f4c210e1ea0>\n" ] } ], @@ -138,7 +138,7 @@ }, { "cell_type": "code", - "execution_count": 78, + "execution_count": 30, "id": "929965c2", "metadata": {}, "outputs": [ @@ -171,7 +171,7 @@ }, { "cell_type": "code", - "execution_count": 82, + "execution_count": 22, "id": "6813164e", "metadata": {}, "outputs": [ @@ -201,7 +201,7 @@ }, { "cell_type": "code", - "execution_count": 74, + "execution_count": 23, "id": "e9b32ec7", "metadata": {}, "outputs": [ @@ -210,7 +210,7 @@ "output_type": "stream", "text": [ "Old values:\n", - " [ True True]\n", + " [False False]\n", "Values to be set:\n", " [False False]\n", "Values read back after setting:\n", @@ -231,25 +231,21 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 24, "id": "transsexual-battle", "metadata": {}, "outputs": [ { - "ename": "DevFailed", - "evalue": "DevFailed[\nDevError[\n desc = Read value for attribute FPGA_mask_RW has not been updated\n origin = Device_3Impl::read_attributes_no_except\n reason = API_AttrValueNotSet\nseverity = ERR]\n\nDevError[\n desc = Failed to read_attribute on device lts/sdp/1, attribute FPGA_mask_RW\n origin = DeviceProxy::read_attribute()\n reason = API_AttributeFailed\nseverity = ERR]\n]", + "ename": "AttributeError", + "evalue": "FPGA_mask_RW", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mDevFailed\u001b[0m Traceback (most recent call last)", + "\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m/tmp/ipykernel_22/2885399456.py\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m 1\u001b[0m values = [\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0;34m[\u001b[0m\u001b[0md\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mFPGA_mask_RW\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"FPGA_mask_RW\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 3\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0md\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mFPGA_scrap_R\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"FPGA_scrap_R\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0md\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mFPGA_scrap_RW\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"FPGA_scrap_RW\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0md\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mFPGA_status_R\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"FPGA_status_R\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/tango/device_proxy.py\u001b[0m in \u001b[0;36m__DeviceProxy__getattr\u001b[0;34m(self, name)\u001b[0m\n\u001b[1;32m 319\u001b[0m \u001b[0mattr_info\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__get_attr_cache\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mname_l\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 320\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mattr_info\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 321\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0m__get_attribute_value\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mattr_info\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mname\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 322\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 323\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mname_l\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__get_pipe_cache\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/tango/device_proxy.py\u001b[0m in \u001b[0;36m__get_attribute_value\u001b[0;34m(self, attr_info, name)\u001b[0m\n\u001b[1;32m 281\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m__get_attribute_value\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mattr_info\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mname\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 282\u001b[0m \u001b[0m_\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0menum_class\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mattr_info\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 283\u001b[0;31m \u001b[0mattr_value\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread_attribute\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mname\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mvalue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 284\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0menum_class\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 285\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0menum_class\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mattr_value\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/tango/green.py\u001b[0m in \u001b[0;36mgreener\u001b[0;34m(obj, *args, **kwargs)\u001b[0m\n\u001b[1;32m 193\u001b[0m \u001b[0mgreen_mode\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0maccess\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'green_mode'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 194\u001b[0m \u001b[0mexecutor\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mget_object_executor\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mobj\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mgreen_mode\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 195\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mexecutor\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrun\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfn\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mwait\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mwait\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtimeout\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mtimeout\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 196\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 197\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mgreener\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/tango/green.py\u001b[0m in \u001b[0;36mrun\u001b[0;34m(self, fn, args, kwargs, wait, timeout)\u001b[0m\n\u001b[1;32m 107\u001b[0m \u001b[0;31m# Sychronous (no delegation)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 108\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0masynchronous\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0min_executor_context\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 109\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mfn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 110\u001b[0m \u001b[0;31m# Asynchronous delegation\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 111\u001b[0m \u001b[0maccessor\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdelegate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfn\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/tango/device_proxy.py\u001b[0m in \u001b[0;36m__DeviceProxy__read_attribute\u001b[0;34m(self, value, extract_as)\u001b[0m\n\u001b[1;32m 439\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 440\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m__DeviceProxy__read_attribute\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mvalue\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mextract_as\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mExtractAs\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mNumpy\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 441\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0m__check_read_attribute\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_read_attribute\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mvalue\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mextract_as\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 442\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 443\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/tango/device_proxy.py\u001b[0m in \u001b[0;36m__check_read_attribute\u001b[0;34m(dev_attr)\u001b[0m\n\u001b[1;32m 155\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m__check_read_attribute\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdev_attr\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 156\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mdev_attr\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mhas_failed\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 157\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mDevFailed\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mdev_attr\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_err_stack\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 158\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mdev_attr\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 159\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mDevFailed\u001b[0m: DevFailed[\nDevError[\n desc = Read value for attribute FPGA_mask_RW has not been updated\n origin = Device_3Impl::read_attributes_no_except\n reason = API_AttrValueNotSet\nseverity = ERR]\n\nDevError[\n desc = Failed to read_attribute on device lts/sdp/1, attribute FPGA_mask_RW\n origin = DeviceProxy::read_attribute()\n reason = API_AttributeFailed\nseverity = ERR]\n]" + "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/tango/device_proxy.py\u001b[0m in \u001b[0;36m__DeviceProxy__getattr\u001b[0;34m(self, name)\u001b[0m\n\u001b[1;32m 353\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread_pipe\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mname\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 354\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 355\u001b[0;31m \u001b[0msix\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mraise_from\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mAttributeError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mname\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcause\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 356\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 357\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/six.py\u001b[0m in \u001b[0;36mraise_from\u001b[0;34m(value, from_value)\u001b[0m\n", + "\u001b[0;31mAttributeError\u001b[0m: FPGA_mask_RW" ] } ], diff --git a/sbin/run_integration_test.sh b/sbin/run_integration_test.sh index d54163625541c13816bf0309c09a2713ce35add9..f8f6bbbb1ded70b18db18732efcda4dfa502d8e5 100755 --- a/sbin/run_integration_test.sh +++ b/sbin/run_integration_test.sh @@ -8,7 +8,7 @@ fi # Start all required containers cd "$LOFAR20_DIR/docker-compose" || exit 1 -make start databaseds dsconfig device-sdp device-pcc jupyter elk sdptr-sim pypcc-sim +make start databaseds dsconfig device-sdp device-pcc jupyter elk sdptr-sim pypcc-sim unb2-sim # Update the dsconfig cd "$TANGO_LOFAR_LOCAL_DIR" || exit 1