Skip to content
Snippets Groups Projects
Commit 7e07894c authored by Katleho Madisa's avatar Katleho Madisa
Browse files

Merge branch 'SAR-167_remove_docker_compose_from_gitlab_tests' into 'master'

SAR-167 (SAR-168) Remove docker compose from the CI pipeline

See merge request ska-telescope/lmc-base-classes!29
parents 9715621a 129a3cc3
Branches
Tags v0.18.3
No related merge requests found
...@@ -60,9 +60,6 @@ build wheel for development: # Executed on non-tagged commit ...@@ -60,9 +60,6 @@ build wheel for development: # Executed on non-tagged commit
unit tests: unit tests:
stage: test stage: test
image: nexus.engageska-portugal.pt/ska-docker/tango-builder:latest
before_script:
- docker login -u $DOCKER_REGISTRY_USERNAME -p $DOCKER_REGISTRY_PASSWORD $DOCKER_REGISTRY_HOST
tags: tags:
- docker-executor - docker-executor
script: script:
...@@ -76,9 +73,6 @@ unit tests: ...@@ -76,9 +73,6 @@ unit tests:
linting: linting:
stage: linting stage: linting
image: nexus.engageska-portugal.pt/ska-docker/tango-builder:latest
before_script:
- docker login -u $DOCKER_REGISTRY_USERNAME -p $DOCKER_REGISTRY_PASSWORD $DOCKER_REGISTRY_HOST
tags: tags:
- docker-executor - docker-executor
script: script:
...@@ -123,14 +117,12 @@ release docker image: ...@@ -123,14 +117,12 @@ release docker image:
pages: pages:
stage: pages stage: pages
image: nexus.engageska-portugal.pt/ska-docker/tango-builder:latest
before_script:
- docker login -u $DOCKER_REGISTRY_USERNAME -p $DOCKER_REGISTRY_PASSWORD $DOCKER_REGISTRY_HOST
tags: tags:
- docker-executor - docker-executor
script: script:
- cp -R build public - cp -R build public
- mv public/lmcbaseclasses_htmlcov/* public - mv public/htmlcov/* public
artifacts: artifacts:
paths: paths:
- public - public
# #
# Project makefile for a LMC Base Classes project. You should normally only need to modify # Project makefile for a LMC Base Classes project. You should normally only need to modify
# DOCKER_REGISTRY_USER and PROJECT below. # DOCKER_REGISTRY_USER and PROJECT below.
#
# # Use bash shell with pipefail option enabled so that the return status of a
# piped command is the value of the last (rightmost) command to exit with a
# non-zero status. This lets us pipe output into tee but still exit on test
# failures.
SHELL = /bin/bash
.SHELLFLAGS = -o pipefail -c
# DOCKER_REGISTRY_HOST, DOCKER_REGISTRY_USER and PROJECT are combined to define # DOCKER_REGISTRY_HOST, DOCKER_REGISTRY_USER and PROJECT are combined to define
# the Docker tag for this project. The definition below inherits the standard # the Docker tag for this project. The definition below inherits the standard
# value for DOCKER_REGISTRY_HOST (=rnexus.engageska-portugal.pt) and overwrites # value for DOCKER_REGISTRY_HOST (=rnexus.engageska-portugal.pt) and overwrites
...@@ -15,163 +21,31 @@ PROJECT = lmcbaseclasses ...@@ -15,163 +21,31 @@ PROJECT = lmcbaseclasses
# #
# include makefile to pick up the standard Make targets, e.g., 'make build' # include makefile to pick up the standard Make targets, e.g., 'make build'
# build, 'make push' docker push procedure, etc. The other Make targets # build, 'make push' docker push procedure, etc. The other Make targets
# ('make interactive', 'make test', etc.) are defined in this file. # ('make lint', 'make test', etc.) are defined in this file.
# #
include .make/Makefile.mk include .make/Makefile.mk
#
# IMAGE_TO_TEST defines the tag of the Docker image to test
#
IMAGE_TO_TEST = $(DOCKER_REGISTRY_HOST)/$(DOCKER_REGISTRY_USER)/$(PROJECT):latest
#
# CACHE_VOLUME is the name of the Docker volume used to cache eggs and wheels
# used during the test procedure. The volume is not used during the build
# procedure
#
# TODO: WORKS LOCALLY
# CACHE_VOLUME = lmcbaseclasses-test-cache
# TODO: WORKS CI/CD
CACHE_VOLUME = $(PROJECT)-test-cache
# optional docker run-time arguments
DOCKER_RUN_ARGS =
#
# Never use the network=host mode when running CI jobs, and add extra
# distinguishing identifiers to the network name and container names to
# prevent collisions with jobs from the same project running at the same
# time.
#
ifneq ($(CI_JOB_ID),)
NETWORK_MODE := tangonet-$(CI_JOB_ID)
CONTAINER_NAME_PREFIX := $(PROJECT)-$(CI_JOB_ID)-
else
CONTAINER_NAME_PREFIX := $(PROJECT)-
endif
ifeq ($(OS),Windows_NT)
$(error Sorry, Windows is not supported yet)
else
UNAME_S := $(shell uname -s)
ifeq ($(UNAME_S),Linux)
DISPLAY ?= :0.0
NETWORK_MODE ?= host
XAUTHORITY_MOUNT := /tmp/.X11-unix:/tmp/.X11-unix
XAUTHORITY ?= /hosthome/.Xauthority
# /bin/sh (=dash) does not evaluate 'docker network' conditionals correctly
SHELL := /bin/bash
endif
ifeq ($(UNAME_S),Darwin)
IF_INTERFACE := $(shell netstat -nr -f inet | awk '{ if ($$1 ~/default/ && $$4 ~/en/) { print $$4} }')
DISPLAY := $(shell ifconfig $(IF_INTERFACE) | awk '{ if ($$1 ~/inet$$/) { print $$2} }'):0
# network_mode = host doesn't work on MacOS, so fix to the internal network
NETWORK_MODE := tangonet
XAUTHORITY_MOUNT := $(HOME):/hosthome:ro
XAUTHORITY := /hosthome/.Xauthority
endif
endif
#
# When running in network=host mode, point devices at a port on the host
# machine rather than at the container.
#
ifeq ($(NETWORK_MODE),host)
TANGO_HOST := $(shell hostname):10000
MYSQL_HOST := $(shell hostname):3306
else
# distinguish the bridge network from others by adding the project name
NETWORK_MODE := $(NETWORK_MODE)-$(PROJECT)
TANGO_HOST := $(CONTAINER_NAME_PREFIX)databaseds:10000
MYSQL_HOST := $(CONTAINER_NAME_PREFIX)tangodb:3306
endif
DOCKER_COMPOSE_ARGS := DISPLAY=$(DISPLAY) XAUTHORITY=$(XAUTHORITY) TANGO_HOST=$(TANGO_HOST) \
NETWORK_MODE=$(NETWORK_MODE) XAUTHORITY_MOUNT=$(XAUTHORITY_MOUNT) MYSQL_HOST=$(MYSQL_HOST) \
DOCKER_REGISTRY_HOST=$(DOCKER_REGISTRY_HOST) DOCKER_REGISTRY_USER=$(DOCKER_REGISTRY_USER) \
CONTAINER_NAME_PREFIX=$(CONTAINER_NAME_PREFIX) COMPOSE_IGNORE_ORPHANS=true
#
# Defines a default make target so that help is printed if make is called
# without a target
#
.DEFAULT_GOAL := help .DEFAULT_GOAL := help
# TODO: WORKS LOCALLY test: ## test lmcbaseclasses Python code
# DOCKER_NETWORK := $(shell echo "$(notdir $(CURDIR))"_default | tr -d "-" | tr A-Z a-z) mkdir -p build
# TODO: WORKS CI/CD python3 setup.py test | tee build/setup_py_test.stdout
DOCKER_NETWORK := $(shell echo "$(notdir $(CURDIR))"_default | tr A-Z a-z) mv coverage.xml build
# lint: ## lint lmcbaseclasses Python code
# defines a function to copy the ./test-harness directory into the container python3 -m pip install -U pylint==2.4.4
# and then runs the requested make target in the container. The container is: python3 -m pip install pylint2junit
# mkdir -p build/reports
# 1. attached to the network of the docker-compose test system pylint --output-format=parseable src/ska | tee build/code_analysis.stdout
# 2. uses a persistent volume to cache Python eggs and wheels so that fewer pylint --output-format=pylint2junit.JunitReporter src/ska > build/reports/linting.xml
# downloads are required
# 3. uses a transient volume as a working directory, in which untarred files
# and test output can be written in the container and subsequently copied
# to the host
#
make = tar -c test-harness/ | \
docker run -i --rm --network=$(NETWORK_MODE) \
-e TANGO_HOST=$(TANGO_HOST) \
-v $(CACHE_VOLUME):/home/tango/.cache \
-v /build -w /build -u tango $(DOCKER_RUN_ARGS) $(IMAGE_TO_TEST) \
bash -c "sudo chown -R tango:tango /build && \
tar x --strip-components 1 --warning=all && \
make TANGO_HOST=$(TANGO_HOST) $1"
test: DOCKER_RUN_ARGS = --volumes-from=$(BUILD)
test: build up ## test the application
$(INIT_CACHE)
$(call make,test); \
status=$$?; \
docker cp $(BUILD):/build .; \
$(MAKE) down; \
exit $$status
lint: DOCKER_RUN_ARGS = --volumes-from=$(BUILD)
lint: build up ## lint the application (static code analysis)
$(INIT_CACHE)
$(call make,lint); \
status=$$?; \
docker cp $(BUILD):/build .; \
$(MAKE) down; \
exit $$status
pull: ## download the application image
docker pull $(IMAGE_TO_TEST)
up: build ## start develop/test environment test-in-docker: build ## Build the docker image and run tests inside it.
ifneq ($(NETWORK_MODE),host) @docker run $(IMAGE):$(VERSION) make test
docker network inspect $(NETWORK_MODE) &> /dev/null || ([ $$? -ne 0 ] && docker network create $(NETWORK_MODE))
endif
$(DOCKER_COMPOSE_ARGS) docker-compose up -d
interactive: up lint-in-docker: build ## Build the docker image and run lint inside it.
interactive: ## start an interactive session using the project image (caution: R/W mounts source directory to /app) @docker run $(IMAGE):$(VERSION) make lint
docker run --rm -it -p 3000:3000 --name=$(CONTAINER_NAME_PREFIX)dev -e TANGO_HOST=$(TANGO_HOST) --network=$(NETWORK_MODE) \
-v $(CURDIR):/app $(IMAGE_TO_TEST) /bin/bash
down: ## stop develop/test environment and any interactive session
docker ps | grep $(CONTAINER_NAME_PREFIX)dev && docker stop $(PROJECT)-dev || true
$(DOCKER_COMPOSE_ARGS) docker-compose down
ifneq ($(NETWORK_MODE),host)
docker network inspect $(NETWORK_MODE) &> /dev/null && ([ $$? -eq 0 ] && docker network rm $(NETWORK_MODE)) || true
endif
help: ## show this help. help: ## show this help.
@grep -hE '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}' @grep -hE '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'
.PHONY: all test up down help .PHONY: test lint test-in-docker lint-in-docker help
# Creates Docker volume for use as a cache, if it doesn't exist already
INIT_CACHE = \
docker volume ls | grep $(CACHE_VOLUME) || \
docker create --name $(CACHE_VOLUME) -v $(CACHE_VOLUME):/cache $(IMAGE_TO_TEST)
# http://cakoose.com/wiki/gnu_make_thunks
BUILD_GEN = $(shell docker create -v /build $(IMAGE_TO_TEST))
BUILD = $(eval BUILD := $(BUILD_GEN))$(BUILD)
#
# Docker compose file for LMC Base classes.
# Contains services for TANGO database, database device server.
#
# Defines:
# - tangodb: MariaDB database with TANGO schema
# - databaseds: TANGO database device server
# - basedevice: Container having SKABaseDevice class
# - alarmhandler: Container having SKAAlarmHandler class
# - capability: Container having SKACapability class
# - logger: Container having SKALogger class
# - master: Container having SKAMaster class
# - obsdevice: Container having SKAObsDevice class
# - subarray: Container having SKASubarray class
# - telstate: Container having SKATelState class
# - logtest: Container having SKASubarray class for SKALogger testing
#
# Requires:
# - None
#
version: '2'
volumes:
tangodb: {}
services:
tangodb:
image: nexus.engageska-portugal.pt/ska-docker/tango-db:latest
restart: unless-stopped
network_mode: ${NETWORK_MODE}
container_name: ${CONTAINER_NAME_PREFIX}tangodb
environment:
- MYSQL_ROOT_PASSWORD=secret
- MYSQL_DATABASE=tango
- MYSQL_USER=tango
- MYSQL_PASSWORD=tango
volumes:
- tangodb:/var/lib/mysql
databaseds:
image: nexus.engageska-portugal.pt/ska-docker/tango-cpp:latest
restart: unless-stopped
depends_on:
- tangodb
network_mode: ${NETWORK_MODE}
container_name: ${CONTAINER_NAME_PREFIX}databaseds
environment:
- MYSQL_HOST=${MYSQL_HOST}
- MYSQL_DATABASE=tango
- MYSQL_USER=tango
- MYSQL_PASSWORD=tango
- TANGO_HOST=${TANGO_HOST}
entrypoint:
- /usr/local/bin/wait-for-it.sh
- ${MYSQL_HOST}
- --timeout=30
- --strict
- --
- /usr/local/bin/DataBaseds
- "2"
- -ORBendPoint
- giop:tcp::10000
basedevice:
image: ${DOCKER_REGISTRY_HOST}/${DOCKER_REGISTRY_USER}/lmcbaseclasses:latest
restart: unless-stopped
depends_on:
- databaseds
network_mode: ${NETWORK_MODE}
container_name: ${CONTAINER_NAME_PREFIX}basedevice
environment:
- TANGO_HOST=${TANGO_HOST}
command: >
sh -c "wait-for-it.sh ${TANGO_HOST} --timeout=30 --strict --
tango_admin --add-server SKABaseDevice/01 SKABaseDevice ska/basedevice/01 &&\
SKABaseDevice 01"
alarmhandler:
image: ${DOCKER_REGISTRY_HOST}/${DOCKER_REGISTRY_USER}/lmcbaseclasses:latest
restart: unless-stopped
depends_on:
- databaseds
network_mode: ${NETWORK_MODE}
container_name: ${CONTAINER_NAME_PREFIX}alarmhandler
environment:
- TANGO_HOST=${TANGO_HOST}
command: >
sh -c "wait-for-it.sh ${TANGO_HOST} --timeout=30 --strict --
tango_admin --add-server SKAAlarmHandler/01 SKAAlarmhandler ska/alarmhandler/01 &&\
SKAAlarmHandler 01"
capability:
image: ${DOCKER_REGISTRY_HOST}/${DOCKER_REGISTRY_USER}/lmcbaseclasses:latest
restart: unless-stopped
depends_on:
- databaseds
network_mode: ${NETWORK_MODE}
container_name: ${CONTAINER_NAME_PREFIX}capability
environment:
- TANGO_HOST=${TANGO_HOST}
command: >
sh -c "wait-for-it.sh ${TANGO_HOST} --timeout=30 --strict --
tango_admin --add-server SKACapability/01 SKACapability ska/capability/01 &&\
SKACapability 01"
logger:
image: ${DOCKER_REGISTRY_HOST}/${DOCKER_REGISTRY_USER}/lmcbaseclasses:latest
restart: unless-stopped
depends_on:
- databaseds
network_mode: ${NETWORK_MODE}
container_name: ${CONTAINER_NAME_PREFIX}logger
environment:
- TANGO_HOST=${TANGO_HOST}
command: >
sh -c "wait-for-it.sh ${TANGO_HOST} --timeout=30 --strict --
tango_admin --add-server SKALogger/01 SKALogger ska/logger/01 &&\
SKALogger 01"
master:
image: ${DOCKER_REGISTRY_HOST}/${DOCKER_REGISTRY_USER}/lmcbaseclasses:latest
restart: unless-stopped
depends_on:
- databaseds
network_mode: ${NETWORK_MODE}
container_name: ${CONTAINER_NAME_PREFIX}master
environment:
- TANGO_HOST=${TANGO_HOST}
command: >
sh -c "wait-for-it.sh ${TANGO_HOST} --timeout=30 --strict --
tango_admin --add-server SKAMaster/01 SKAMaster ska/master/01 &&\
SKAMaster 01"
obsdevice:
image: ${DOCKER_REGISTRY_HOST}/${DOCKER_REGISTRY_USER}/lmcbaseclasses:latest
restart: unless-stopped
depends_on:
- databaseds
network_mode: ${NETWORK_MODE}
container_name: ${CONTAINER_NAME_PREFIX}obsdevice
environment:
- TANGO_HOST=${TANGO_HOST}
command: >
sh -c "wait-for-it.sh ${TANGO_HOST} --timeout=30 --strict --
tango_admin --add-server SKAObsDevice/01 SKAObsDevice ska/obsdevice/01 &&\
SKAObsDevice 01"
subarray:
image: ${DOCKER_REGISTRY_HOST}/${DOCKER_REGISTRY_USER}/lmcbaseclasses:latest
restart: unless-stopped
depends_on:
- databaseds
network_mode: ${NETWORK_MODE}
container_name: ${CONTAINER_NAME_PREFIX}subarray
environment:
- TANGO_HOST=${TANGO_HOST}
command: >
sh -c "wait-for-it.sh ${TANGO_HOST} --timeout=30 --strict --
tango_admin --add-server SKASubarray/01 SKASubarray ska/subarray/01 &&\
SKASubarray 01"
telstate:
image: ${DOCKER_REGISTRY_HOST}/${DOCKER_REGISTRY_USER}/lmcbaseclasses:latest
restart: unless-stopped
depends_on:
- databaseds
network_mode: ${NETWORK_MODE}
container_name: ${CONTAINER_NAME_PREFIX}telstate
environment:
- TANGO_HOST=${TANGO_HOST}
command: >
sh -c "wait-for-it.sh ${TANGO_HOST} --timeout=30 --strict --
tango_admin --add-server SKATelState/01 SKATelState ska/telstate/01 &&\
SKATelState 01"
logtest:
image: ${DOCKER_REGISTRY_HOST}/${DOCKER_REGISTRY_USER}/lmcbaseclasses:latest
restart: unless-stopped
depends_on:
- databaseds
network_mode: ${NETWORK_MODE}
container_name: ${CONTAINER_NAME_PREFIX}testdevice
environment:
- TANGO_HOST=${TANGO_HOST}
command: >
sh -c "wait-for-it.sh ${TANGO_HOST} --timeout=30 --strict --
tango_admin --add-server SKASubarray/02 SKASubarray logger/test/1 &&\
SKASubarray 02"
...@@ -10,11 +10,11 @@ testpaths = tests ...@@ -10,11 +10,11 @@ testpaths = tests
addopts = --forked addopts = --forked
--verbose --verbose
--json-report --json-report
--json-report-file=htmlcov/report.json --json-report-file=build/htmlcov/report.json
--cov-report term --cov-report term
--cov-report html --cov-report html
--cov-report xml --cov-report xml
--cov=ska.base --cov=ska.base
--junitxml=/build/reports/unit-tests.xml --junitxml=build/reports/unit-tests.xml
console_output_style = progress console_output_style = progress
junit_family = legacy junit_family = legacy
# Use bash shell with pipefail option enabled so that the return status of a
# piped command is the value of the last (rightmost) commnand to exit with a
# non-zero status. This lets us pipe output into tee but still exit on test
# failures.
SHELL = /bin/bash
.SHELLFLAGS = -o pipefail -c
all: test lint
# wait for the device to be available before beginning the test
# A temporary volume is mounted at /build when 'make test' is executing.
# The following steps copy across useful output to this volume which can
# then be extracted to form the CI summary for the test procedure.
test:
retry --max=10 -- tango_admin --ping-device ska/basedevice/01
retry --max=10 -- tango_admin --ping-device ska/alarmhandler/01
retry --max=10 -- tango_admin --ping-device ska/capability/01
retry --max=10 -- tango_admin --ping-device ska/logger/01
retry --max=10 -- tango_admin --ping-device ska/master/01
retry --max=10 -- tango_admin --ping-device ska/obsdevice/01
retry --max=10 -- tango_admin --ping-device ska/subarray/01
retry --max=10 -- tango_admin --ping-device ska/telstate/01
cd /app && python setup.py test | tee setup_py_test.stdout && \
mkdir -p /build/reports && \
mv /app/setup_py_test.stdout /build/lmcbaseclasses_setup_py_test.stdout && \
mv /app/htmlcov /build/lmcbaseclasses_htmlcov && \
mv /app/coverage.xml /build/reports/code-coverage.xml
# wait for the device to be available before beginning the test
# A temporary volume is mounted at /build when 'make test' is executing.
# The following steps copy across useful output to this volume which can
# then be extracted to form the CI summary for the test procedure.
# FIXME: Add pylint2junit to the tango-builder:latest image so that we don't need to install it here.
# FIXME: Missing functionality in pylint2junit prevents converting from parseable to xml. Once it's implemented there is no need to run linting twice.
lint:
python3 -m pip install -U pylint==2.4.4; \
python3 -m pip install pylint2junit; \
mkdir -p /build/reports; \
cd /app && pylint --output-format=parseable src/ska | tee /build/code_analysis.stdout; \
cd /app && pylint --output-format=pylint2junit.JunitReporter src/ska > /build/reports/linting.xml;
.PHONY: all test lint
...@@ -10,13 +10,22 @@ ...@@ -10,13 +10,22 @@
import re import re
import pytest import pytest
from tango import DevState, DeviceProxy from tango import DevState
from tango.test_context import MultiDeviceTestContext
from ska.base.logger_device import SKALogger
from ska.base.subarray_device import SKASubarray
import tango import tango
# PROTECTED REGION ID(SKALogger.test_additional_imports) ENABLED START # # PROTECTED REGION ID(SKALogger.test_additional_imports) ENABLED START #
from ska.base.control_model import ( from ska.base.control_model import (
AdminMode, ControlMode, HealthState, LoggingLevel, SimulationMode, TestMode AdminMode,
ControlMode,
HealthState,
LoggingLevel,
SimulationMode,
TestMode,
) )
# PROTECTED REGION END # // SKALogger.test_additional_imports # PROTECTED REGION END # // SKALogger.test_additional_imports
...@@ -25,8 +34,10 @@ from ska.base.control_model import ( ...@@ -25,8 +34,10 @@ from ska.base.control_model import (
# PROTECTED REGION END # // SKALogger.test_SKALogger_decorators # PROTECTED REGION END # // SKALogger.test_SKALogger_decorators
class TestSKALogger(object): class TestSKALogger(object):
"""Test case for packet generation.""" """Test case for packet generation."""
properties = {'SkaLevel': '1',
'GroupDefinitions': '', properties = {
"SkaLevel": "1",
"GroupDefinitions": "",
} }
@classmethod @classmethod
...@@ -59,38 +70,15 @@ class TestSKALogger(object): ...@@ -59,38 +70,15 @@ class TestSKALogger(object):
assert tango_context.device.Status() == "The device is in OFF state." assert tango_context.device.Status() == "The device is in OFF state."
# PROTECTED REGION END # // SKALogger.test_Status # PROTECTED REGION END # // SKALogger.test_Status
# PROTECTED REGION ID(SKALogger.test_SetLoggingLevel_decorators) ENABLED START #
@pytest.mark.parametrize("logging_level", [int(tango.LogLevel.LOG_ERROR)])
@pytest.mark.parametrize("logging_target", ["logger/test/1"])
# PROTECTED REGION END # // SKALogger.test_SetLoggingLevel_decorators
def test_SetLoggingLevel(self, tango_context,
logging_level, logging_target):
"""Test for SetLoggingLevel"""
# PROTECTED REGION ID(SKALogger.test_SetLoggingLevel) ENABLED START #
# initial setting must not be same as what it will be set to
dev_proxy = DeviceProxy(logging_target)
dev_proxy.loggingLevel = int(tango.LogLevel.LOG_FATAL)
assert dev_proxy.loggingLevel != logging_level
levels = []
levels.append(logging_level)
targets = []
targets.append(logging_target)
device_details = []
device_details.append(levels)
device_details.append(targets)
tango_context.device.SetLoggingLevel(device_details)
assert dev_proxy.loggingLevel == logging_level
# PROTECTED REGION END # // SKALogger.test_SetLoggingLevel
# PROTECTED REGION ID(SKALogger.test_GetVersionInfo_decorators) ENABLED START # # PROTECTED REGION ID(SKALogger.test_GetVersionInfo_decorators) ENABLED START #
# PROTECTED REGION END # // SKALogger.test_GetVersionInfo_decorators # PROTECTED REGION END # // SKALogger.test_GetVersionInfo_decorators
def test_GetVersionInfo(self, tango_context): def test_GetVersionInfo(self, tango_context):
"""Test for GetVersionInfo""" """Test for GetVersionInfo"""
# PROTECTED REGION ID(SKALogger.test_GetVersionInfo) ENABLED START # # PROTECTED REGION ID(SKALogger.test_GetVersionInfo) ENABLED START #
versionPattern = re.compile( versionPattern = re.compile(
r'SKALogger, lmcbaseclasses, [0-9].[0-9].[0-9], ' r"SKALogger, lmcbaseclasses, [0-9].[0-9].[0-9], "
r'A set of generic base devices for SKA Telescope.') r"A set of generic base devices for SKA Telescope."
)
versionInfo = tango_context.device.GetVersionInfo() versionInfo = tango_context.device.GetVersionInfo()
assert (re.match(versionPattern, versionInfo[0])) is not None assert (re.match(versionPattern, versionInfo[0])) is not None
# PROTECTED REGION END # // SKALogger.test_GetVersionInfo # PROTECTED REGION END # // SKALogger.test_GetVersionInfo
...@@ -101,8 +89,9 @@ class TestSKALogger(object): ...@@ -101,8 +89,9 @@ class TestSKALogger(object):
"""Test for buildState""" """Test for buildState"""
# PROTECTED REGION ID(SKALogger.test_buildState) ENABLED START # # PROTECTED REGION ID(SKALogger.test_buildState) ENABLED START #
buildPattern = re.compile( buildPattern = re.compile(
r'lmcbaseclasses, [0-9].[0-9].[0-9], ' r"lmcbaseclasses, [0-9].[0-9].[0-9], "
r'A set of generic base devices for SKA Telescope') r"A set of generic base devices for SKA Telescope"
)
assert (re.match(buildPattern, tango_context.device.buildState)) is not None assert (re.match(buildPattern, tango_context.device.buildState)) is not None
# PROTECTED REGION END # // SKALogger.test_buildState # PROTECTED REGION END # // SKALogger.test_buildState
...@@ -111,7 +100,7 @@ class TestSKALogger(object): ...@@ -111,7 +100,7 @@ class TestSKALogger(object):
def test_versionId(self, tango_context): def test_versionId(self, tango_context):
"""Test for versionId""" """Test for versionId"""
# PROTECTED REGION ID(SKALogger.test_versionId) ENABLED START # # PROTECTED REGION ID(SKALogger.test_versionId) ENABLED START #
versionIdPattern = re.compile(r'[0-9].[0-9].[0-9]') versionIdPattern = re.compile(r"[0-9].[0-9].[0-9]")
assert (re.match(versionIdPattern, tango_context.device.versionId)) is not None assert (re.match(versionIdPattern, tango_context.device.versionId)) is not None
# PROTECTED REGION END # // SKALogger.test_versionId # PROTECTED REGION END # // SKALogger.test_versionId
...@@ -162,3 +151,30 @@ class TestSKALogger(object): ...@@ -162,3 +151,30 @@ class TestSKALogger(object):
# PROTECTED REGION ID(SKALogger.test_testMode) ENABLED START # # PROTECTED REGION ID(SKALogger.test_testMode) ENABLED START #
assert tango_context.device.testMode == TestMode.NONE assert tango_context.device.testMode == TestMode.NONE
# PROTECTED REGION END # // SKALogger.test_testMode # PROTECTED REGION END # // SKALogger.test_testMode
def test_SetLoggingLevel():
"""Test for SetLoggingLevel"""
logging_level = int(tango.LogLevel.LOG_ERROR)
logging_target = "logger/target/1"
logger_device = "logger/device/1"
devices_info = (
{"class": SKALogger, "devices": [{"name": logger_device}]},
{"class": SKASubarray, "devices": [{"name": logging_target}]},
)
with MultiDeviceTestContext(devices_info, process=False) as multi_context:
dev_proxy = multi_context.get_device(logging_target)
dev_proxy.Init()
dev_proxy.loggingLevel = int(tango.LogLevel.LOG_FATAL)
assert dev_proxy.loggingLevel != logging_level
levels = []
levels.append(logging_level)
targets = []
targets.append(multi_context.get_device_access(logging_target))
device_details = []
device_details.append(levels)
device_details.append(targets)
multi_context.get_device(logger_device).SetLoggingLevel(device_details)
assert dev_proxy.loggingLevel == logging_level
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment