From 7bc92a1823ac07858e8ef9c8d7831b1410532e29 Mon Sep 17 00:00:00 2001 From: AdrianPotter Date: Mon, 13 Nov 2017 14:00:20 +0000 Subject: [PATCH 1/7] Add tests for MK3 chopper alarms --- tests/mk3chopper.py | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 tests/mk3chopper.py diff --git a/tests/mk3chopper.py b/tests/mk3chopper.py new file mode 100644 index 0000000..6db97a0 --- /dev/null +++ b/tests/mk3chopper.py @@ -0,0 +1,36 @@ +import unittest +from unittest import skipIf + +from utils.channel_access import ChannelAccess +from utils.ioc_launcher import IOCRegister +from utils.testing import get_running_lewis_and_ioc + +MACROS = {"NUM_CHANNELS": 2} + +class Mk3chopperTests(unittest.TestCase): + + # Remote access modes + LOCAL = "LOCAL" + REMOTE = "REMOTE" + COMP_MODE_PV = "COMP:MODE" + + def setUp(self): + self._lewis, self._ioc = get_running_lewis_and_ioc("mk3chopper") + # Comp mode is on a slow 10s read. Needs a longer timeout than default + self.ca = ChannelAccess(device_prefix="MK3CHOPR_01", default_timeout=30) + self.ca.wait_for(self.COMP_MODE_PV) + + def test_WHEN_ioc_is_in_remote_mode_THEN_it_has_no_alarm(self): + # In RECSIM, switch to remote explicitly. DEVSIM can only have remote mode so no switch needed + if IOCRegister.uses_rec_sim: + # Bug in CA channel. Reports invalid alarm severity if you set enum directly + self.ca.set_pv_value("SIM:{}.VAL".format(self.COMP_MODE_PV), 1) + self.ca.assert_that_pv_is(self.COMP_MODE_PV, self.REMOTE) + self.ca.assert_pv_alarm_is(self.COMP_MODE_PV, ChannelAccess.ALARM_NONE) + + @skipIf(not IOCRegister.uses_rec_sim, "Can't switch to local mode in DEVSIM") + def test_WHEN_ioc_is_in_local_mode_THEN_it_has_a_major_alarm(self): + # Bug in CA channel. Reports invalid alarm severity if you set enum directly + self.ca.set_pv_value("SIM:{}.VAL".format(self.COMP_MODE_PV), 0) + self.ca.assert_that_pv_is(self.COMP_MODE_PV, self.LOCAL) + self.ca.assert_pv_alarm_is(self.COMP_MODE_PV, ChannelAccess.ALARM_MAJOR) From 83a396ea0c73cf85f53629392e103c5ebe6953c9 Mon Sep 17 00:00:00 2001 From: Adrian Potter Date: Mon, 13 Nov 2017 14:01:33 +0000 Subject: [PATCH 2/7] Update mk3chopper.py --- tests/mk3chopper.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/mk3chopper.py b/tests/mk3chopper.py index 6db97a0..ab5139e 100644 --- a/tests/mk3chopper.py +++ b/tests/mk3chopper.py @@ -5,7 +5,7 @@ from utils.ioc_launcher import IOCRegister from utils.testing import get_running_lewis_and_ioc -MACROS = {"NUM_CHANNELS": 2} +MACROS = {"NUM_CHANNELS": 1} class Mk3chopperTests(unittest.TestCase): From 2f34cd046a6e938579b0adf44af478879a3f5433 Mon Sep 17 00:00:00 2001 From: Tom Willemsen Date: Thu, 11 Jan 2018 15:12:54 +0000 Subject: [PATCH 3/7] Convert rest of tests --- tests/mk3chopper.py | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/tests/mk3chopper.py b/tests/mk3chopper.py index ab5139e..c50c5d5 100644 --- a/tests/mk3chopper.py +++ b/tests/mk3chopper.py @@ -1,11 +1,21 @@ import unittest -from unittest import skipIf from utils.channel_access import ChannelAccess -from utils.ioc_launcher import IOCRegister -from utils.testing import get_running_lewis_and_ioc +from utils.ioc_launcher import IOCRegister, get_default_ioc_dir +from utils.testing import skip_if_devsim + +DEVICE_PREFIX = "MK3CHOPR_01" + +IOCS = [ + { + "name": DEVICE_PREFIX, + "directory": get_default_ioc_dir("MK3CHOPR"), + "macros": { + "NUM_CHANNELS": 1 + }, + }, +] -MACROS = {"NUM_CHANNELS": 1} class Mk3chopperTests(unittest.TestCase): @@ -15,9 +25,9 @@ class Mk3chopperTests(unittest.TestCase): COMP_MODE_PV = "COMP:MODE" def setUp(self): - self._lewis, self._ioc = get_running_lewis_and_ioc("mk3chopper") + self._ioc = IOCRegister.get_running(DEVICE_PREFIX) # Comp mode is on a slow 10s read. Needs a longer timeout than default - self.ca = ChannelAccess(device_prefix="MK3CHOPR_01", default_timeout=30) + self.ca = ChannelAccess(device_prefix=DEVICE_PREFIX, default_timeout=30) self.ca.wait_for(self.COMP_MODE_PV) def test_WHEN_ioc_is_in_remote_mode_THEN_it_has_no_alarm(self): @@ -28,7 +38,7 @@ def test_WHEN_ioc_is_in_remote_mode_THEN_it_has_no_alarm(self): self.ca.assert_that_pv_is(self.COMP_MODE_PV, self.REMOTE) self.ca.assert_pv_alarm_is(self.COMP_MODE_PV, ChannelAccess.ALARM_NONE) - @skipIf(not IOCRegister.uses_rec_sim, "Can't switch to local mode in DEVSIM") + @skip_if_devsim("Can't switch to local mode in DEVSIM") def test_WHEN_ioc_is_in_local_mode_THEN_it_has_a_major_alarm(self): # Bug in CA channel. Reports invalid alarm severity if you set enum directly self.ca.set_pv_value("SIM:{}.VAL".format(self.COMP_MODE_PV), 0) From 2c1b552cf0674d57fa14d458decf15b68c283cce Mon Sep 17 00:00:00 2001 From: Tom Willemsen Date: Wed, 17 Jan 2018 10:00:22 +0000 Subject: [PATCH 4/7] Use python rather than batch files --- tests/mk3chopper.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tests/mk3chopper.py b/tests/mk3chopper.py index c50c5d5..dc1ce36 100644 --- a/tests/mk3chopper.py +++ b/tests/mk3chopper.py @@ -2,6 +2,7 @@ from utils.channel_access import ChannelAccess from utils.ioc_launcher import IOCRegister, get_default_ioc_dir +from utils.test_modes import TestModes from utils.testing import skip_if_devsim DEVICE_PREFIX = "MK3CHOPR_01" @@ -17,6 +18,9 @@ ] +TEST_MODES = [TestModes.RECSIM, TestModes.DEVSIM] + + class Mk3chopperTests(unittest.TestCase): # Remote access modes From 11ca10244cff74cfe3281d8f987def52dad85302 Mon Sep 17 00:00:00 2001 From: Tom Willemsen Date: Wed, 20 Jun 2018 14:25:37 +0100 Subject: [PATCH 5/7] Convert docs to new style. Make assertion names consistent. --- tests/mk3chopper.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/mk3chopper.py b/tests/mk3chopper.py index dc1ce36..1c8b306 100644 --- a/tests/mk3chopper.py +++ b/tests/mk3chopper.py @@ -32,7 +32,7 @@ def setUp(self): self._ioc = IOCRegister.get_running(DEVICE_PREFIX) # Comp mode is on a slow 10s read. Needs a longer timeout than default self.ca = ChannelAccess(device_prefix=DEVICE_PREFIX, default_timeout=30) - self.ca.wait_for(self.COMP_MODE_PV) + self.ca.assert_that_pv_exists(self.COMP_MODE_PV) def test_WHEN_ioc_is_in_remote_mode_THEN_it_has_no_alarm(self): # In RECSIM, switch to remote explicitly. DEVSIM can only have remote mode so no switch needed @@ -40,11 +40,11 @@ def test_WHEN_ioc_is_in_remote_mode_THEN_it_has_no_alarm(self): # Bug in CA channel. Reports invalid alarm severity if you set enum directly self.ca.set_pv_value("SIM:{}.VAL".format(self.COMP_MODE_PV), 1) self.ca.assert_that_pv_is(self.COMP_MODE_PV, self.REMOTE) - self.ca.assert_pv_alarm_is(self.COMP_MODE_PV, ChannelAccess.ALARM_NONE) + self.ca.assert_that_pv_alarm_is(self.COMP_MODE_PV, ChannelAccess.ALARM_NONE) @skip_if_devsim("Can't switch to local mode in DEVSIM") def test_WHEN_ioc_is_in_local_mode_THEN_it_has_a_major_alarm(self): # Bug in CA channel. Reports invalid alarm severity if you set enum directly self.ca.set_pv_value("SIM:{}.VAL".format(self.COMP_MODE_PV), 0) self.ca.assert_that_pv_is(self.COMP_MODE_PV, self.LOCAL) - self.ca.assert_pv_alarm_is(self.COMP_MODE_PV, ChannelAccess.ALARM_MAJOR) + self.ca.assert_that_pv_alarm_is(self.COMP_MODE_PV, ChannelAccess.ALARM_MAJOR) From ca1dff4faf762d6dc6d613b8531ef1fd471b69d4 Mon Sep 17 00:00:00 2001 From: Tom Willemsen Date: Wed, 20 Jun 2018 15:18:33 +0100 Subject: [PATCH 6/7] Catch some more old-style alarms --- tests/mk3chopper.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/mk3chopper.py b/tests/mk3chopper.py index 1c8b306..e1bb9ec 100644 --- a/tests/mk3chopper.py +++ b/tests/mk3chopper.py @@ -40,11 +40,11 @@ def test_WHEN_ioc_is_in_remote_mode_THEN_it_has_no_alarm(self): # Bug in CA channel. Reports invalid alarm severity if you set enum directly self.ca.set_pv_value("SIM:{}.VAL".format(self.COMP_MODE_PV), 1) self.ca.assert_that_pv_is(self.COMP_MODE_PV, self.REMOTE) - self.ca.assert_that_pv_alarm_is(self.COMP_MODE_PV, ChannelAccess.ALARM_NONE) + self.ca.assert_that_pv_alarm_is(self.COMP_MODE_PV, ChannelAccess.Alarms.NONE) @skip_if_devsim("Can't switch to local mode in DEVSIM") def test_WHEN_ioc_is_in_local_mode_THEN_it_has_a_major_alarm(self): # Bug in CA channel. Reports invalid alarm severity if you set enum directly self.ca.set_pv_value("SIM:{}.VAL".format(self.COMP_MODE_PV), 0) self.ca.assert_that_pv_is(self.COMP_MODE_PV, self.LOCAL) - self.ca.assert_that_pv_alarm_is(self.COMP_MODE_PV, ChannelAccess.ALARM_MAJOR) + self.ca.assert_that_pv_alarm_is(self.COMP_MODE_PV, ChannelAccess.Alarms.MAJOR) From ab262f1259b2b6c31af56c37d6b023a1d0cfaea2 Mon Sep 17 00:00:00 2001 From: aaronlong Date: Wed, 11 May 2022 10:36:53 +0100 Subject: [PATCH 7/7] added system tests to support module --- .gitignore | 5 +++++ Makefile | 3 +++ system_tests/__init__.py | 0 system_tests/run_tests.bat | 10 ++++++++++ system_tests/tests/__init__.py | 0 {tests => system_tests/tests}/mk3chopper.py | 0 6 files changed, 18 insertions(+) create mode 100644 system_tests/__init__.py create mode 100644 system_tests/run_tests.bat create mode 100644 system_tests/tests/__init__.py rename {tests => system_tests/tests}/mk3chopper.py (100%) diff --git a/.gitignore b/.gitignore index 2c30abf..d5c6496 100644 --- a/.gitignore +++ b/.gitignore @@ -201,3 +201,8 @@ FakesAssemblies/ # Visual Studio 6 workspace options file *.opt .project + +__pycache__/ +*.py[cod] +*$py.class +test-reports/ diff --git a/Makefile b/Makefile index 19c9068..1b3b814 100644 --- a/Makefile +++ b/Makefile @@ -29,3 +29,6 @@ iocBoot_DEPEND_DIRS += $(filter %App,$(DIRS)) # Add any additional dependency rules here: include $(TOP)/configure/RULES_TOP + +ioctests: + .\system_tests\run_tests.bat diff --git a/system_tests/__init__.py b/system_tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/system_tests/run_tests.bat b/system_tests/run_tests.bat new file mode 100644 index 0000000..65ab1d6 --- /dev/null +++ b/system_tests/run_tests.bat @@ -0,0 +1,10 @@ +@echo off +setlocal +REM Run this directory's tests using the IOC Testing Framework + +call "%~dp0..\..\..\..\config_env.bat" + +REM Command line arguments always passed to the test script +SET ARGS=--test_and_emulator %~dp0 +call %PYTHON3% -u "%EPICS_KIT_ROOT%\support\IocTestFramework\master\run_tests.py" %ARGS% %* +IF %ERRORLEVEL% NEQ 0 EXIT /b %ERRORLEVEL% diff --git a/system_tests/tests/__init__.py b/system_tests/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tests/mk3chopper.py b/system_tests/tests/mk3chopper.py similarity index 100% rename from tests/mk3chopper.py rename to system_tests/tests/mk3chopper.py