diff --git a/test/caproto_wrapper.py b/test/caproto_wrapper.py new file mode 100644 index 0000000..05fed30 --- /dev/null +++ b/test/caproto_wrapper.py @@ -0,0 +1,22 @@ +from caproto.sync.client import read, write +from time import sleep + +class CaprotoWrapper: + def raw_read(pvname): + return read(pvname, timeout=5).data[0].decode('utf-8') + + def get_pv_value(pvname, expected_value): + timeout = 10 + while(expected_value != CaprotoWrapper.raw_read(pvname) and timeout > 0): + timeout -=1 + sleep(0.5) + + return CaprotoWrapper.raw_read(pvname) + + def set_pv_value(pvname, value): + write(pvname, value, notify=True) + timeout = 10 + while(value != CaprotoWrapper.raw_read(pvname) and timeout > 0): + timeout -= 1 + sleep(0.5) + \ No newline at end of file diff --git a/test/test.py b/test/test.py new file mode 100644 index 0000000..2b0c89f --- /dev/null +++ b/test/test.py @@ -0,0 +1,36 @@ +import subprocess +import sys +import signal + +from caproto_wrapper import CaprotoWrapper + +def is_ioc_running(): + return "" != CaprotoWrapper.raw_read("ePowerSwitch_set_outlet_1") + +def start_iocshell(): + res = subprocess.Popen(["./startioc.sh"]) + while not is_ioc_running(): + pass + return res + +def start_sim(): + return subprocess.Popen(["python", "./sim/ePowerSwitch8_sim.py"]) + +def start_pytest(): + return subprocess.Popen(["pytest","test"]) + +sim_process = start_sim() +iocsh_process = start_iocshell() +pytest_process = start_pytest() +exit_code = 0 + +try: + + exit_code = pytest_process.wait() + +finally: + sim_process.send_signal(sig=signal.SIGTERM) + iocsh_process.send_signal(sig=signal.SIGTERM) + pytest_process.send_signal(sig=signal.SIGTERM) + +sys.exit(exit_code) \ No newline at end of file diff --git a/test/test_main8.py b/test/test_main8.py new file mode 100644 index 0000000..857d778 --- /dev/null +++ b/test/test_main8.py @@ -0,0 +1,119 @@ +from caproto_wrapper import CaprotoWrapper + +delay = 1 + +def test_turn_on(): + CaprotoWrapper.set_pv_value("ePowerSwitch_set_outlet_1", "On") + + assert(CaprotoWrapper.get_pv_value("ePowerSwitch_set_outlet_1", "On") == "On") + assert(CaprotoWrapper.get_pv_value("ePowerSwitch_get_outlet_1", "On") == "On") + + CaprotoWrapper.set_pv_value("ePowerSwitch_set_outlet_2", "On") + + assert(CaprotoWrapper.get_pv_value("ePowerSwitch_set_outlet_2", "On") == "On") + assert(CaprotoWrapper.get_pv_value("ePowerSwitch_get_outlet_2", "On") == "On") + + CaprotoWrapper.set_pv_value("ePowerSwitch_set_outlet_3", "On") + + assert(CaprotoWrapper.get_pv_value("ePowerSwitch_set_outlet_3", "On") == "On") + assert(CaprotoWrapper.get_pv_value("ePowerSwitch_get_outlet_3", "On") == "On") + + CaprotoWrapper.set_pv_value("ePowerSwitch_set_outlet_4", "On") + + assert(CaprotoWrapper.get_pv_value("ePowerSwitch_set_outlet_4", "On") == "On") + assert(CaprotoWrapper.get_pv_value("ePowerSwitch_get_outlet_4", "On") == "On") + + CaprotoWrapper.set_pv_value("ePowerSwitch_set_outlet_5", "On") + + assert(CaprotoWrapper.get_pv_value("ePowerSwitch_set_outlet_5", "On") == "On") + assert(CaprotoWrapper.get_pv_value("ePowerSwitch_get_outlet_5", "On") == "On") + + CaprotoWrapper.set_pv_value("ePowerSwitch_set_outlet_6", "On") + + assert(CaprotoWrapper.get_pv_value("ePowerSwitch_set_outlet_6", "On") == "On") + assert(CaprotoWrapper.get_pv_value("ePowerSwitch_get_outlet_6", "On") == "On") + + CaprotoWrapper.set_pv_value("ePowerSwitch_set_outlet_7", "On") + + assert(CaprotoWrapper.get_pv_value("ePowerSwitch_set_outlet_7", "On") == "On") + assert(CaprotoWrapper.get_pv_value("ePowerSwitch_get_outlet_7", "On") == "On") + + CaprotoWrapper.set_pv_value("ePowerSwitch_set_outlet_8", "On") + + assert(CaprotoWrapper.get_pv_value("ePowerSwitch_set_outlet_8", "On") == "On") + assert(CaprotoWrapper.get_pv_value("ePowerSwitch_get_outlet_8", "On") == "On") + + + +def test_turn_off(): + CaprotoWrapper.set_pv_value("ePowerSwitch_set_outlet_1", "Off") + + assert(CaprotoWrapper.get_pv_value("ePowerSwitch_set_outlet_1", "Off") == "Off") + assert(CaprotoWrapper.get_pv_value("ePowerSwitch_get_outlet_1", "Off") == "Off") + + CaprotoWrapper.set_pv_value("ePowerSwitch_set_outlet_2", "Off") + + assert(CaprotoWrapper.get_pv_value("ePowerSwitch_set_outlet_2", "Off") == "Off") + assert(CaprotoWrapper.get_pv_value("ePowerSwitch_get_outlet_2", "Off") == "Off") + + + CaprotoWrapper.set_pv_value("ePowerSwitch_set_outlet_3", "Off") + + assert(CaprotoWrapper.get_pv_value("ePowerSwitch_set_outlet_3", "Off") == "Off") + assert(CaprotoWrapper.get_pv_value("ePowerSwitch_get_outlet_3", "Off") == "Off") + + CaprotoWrapper.set_pv_value("ePowerSwitch_set_outlet_4", "Off") + + assert(CaprotoWrapper.get_pv_value("ePowerSwitch_set_outlet_4", "Off") == "Off") + assert(CaprotoWrapper.get_pv_value("ePowerSwitch_get_outlet_4", "Off") == "Off") + + CaprotoWrapper.set_pv_value("ePowerSwitch_set_outlet_5", "Off") + + assert(CaprotoWrapper.get_pv_value("ePowerSwitch_set_outlet_5", "Off") == "Off") + assert(CaprotoWrapper.get_pv_value("ePowerSwitch_get_outlet_5", "Off") == "Off") + + CaprotoWrapper.set_pv_value("ePowerSwitch_set_outlet_6", "Off") + + assert(CaprotoWrapper.get_pv_value("ePowerSwitch_set_outlet_6", "Off") == "Off") + assert(CaprotoWrapper.get_pv_value("ePowerSwitch_get_outlet_6", "Off") == "Off") + + CaprotoWrapper.set_pv_value("ePowerSwitch_set_outlet_7", "Off") + + assert(CaprotoWrapper.get_pv_value("ePowerSwitch_set_outlet_7", "Off") == "Off") + assert(CaprotoWrapper.get_pv_value("ePowerSwitch_get_outlet_7", "Off") == "Off") + + CaprotoWrapper.set_pv_value("ePowerSwitch_set_outlet_8", "Off") + + assert(CaprotoWrapper.get_pv_value("ePowerSwitch_set_outlet_8", "Off") == "Off") + assert(CaprotoWrapper.get_pv_value("ePowerSwitch_get_outlet_8", "Off") == "Off") + + + +def test_restart(): + + CaprotoWrapper.set_pv_value("ePowerSwitch_set_outlet_1", "Restart") + assert(CaprotoWrapper.get_pv_value("ePowerSwitch_get_outlet_1", "Rst") == "Rst") + CaprotoWrapper.set_pv_value("ePowerSwitch_set_outlet_2", "Restart") + assert(CaprotoWrapper.get_pv_value("ePowerSwitch_get_outlet_2", "Rst") == "Rst") + CaprotoWrapper.set_pv_value("ePowerSwitch_set_outlet_3", "Restart") + assert(CaprotoWrapper.get_pv_value("ePowerSwitch_get_outlet_3", "Rst") == "Rst") + CaprotoWrapper.set_pv_value("ePowerSwitch_set_outlet_4", "Restart") + assert(CaprotoWrapper.get_pv_value("ePowerSwitch_get_outlet_4", "Rst") == "Rst") + CaprotoWrapper.set_pv_value("ePowerSwitch_set_outlet_5", "Restart") + assert(CaprotoWrapper.get_pv_value("ePowerSwitch_get_outlet_5", "Rst") == "Rst") + CaprotoWrapper.set_pv_value("ePowerSwitch_set_outlet_6", "Restart") + assert(CaprotoWrapper.get_pv_value("ePowerSwitch_get_outlet_6", "Rst") == "Rst") + CaprotoWrapper.set_pv_value("ePowerSwitch_set_outlet_7", "Restart") + assert(CaprotoWrapper.get_pv_value("ePowerSwitch_get_outlet_7", "Rst") == "Rst") + CaprotoWrapper.set_pv_value("ePowerSwitch_set_outlet_8", "Restart") + assert(CaprotoWrapper.get_pv_value("ePowerSwitch_get_outlet_8", "Rst") == "Rst") + + assert(CaprotoWrapper.get_pv_value("ePowerSwitch_get_outlet_1", "On") == "On") + assert(CaprotoWrapper.get_pv_value("ePowerSwitch_get_outlet_2", "On") == "On") + assert(CaprotoWrapper.get_pv_value("ePowerSwitch_get_outlet_3", "On") == "On") + assert(CaprotoWrapper.get_pv_value("ePowerSwitch_get_outlet_4", "On") == "On") + assert(CaprotoWrapper.get_pv_value("ePowerSwitch_get_outlet_5", "On") == "On") + assert(CaprotoWrapper.get_pv_value("ePowerSwitch_get_outlet_6", "On") == "On") + assert(CaprotoWrapper.get_pv_value("ePowerSwitch_get_outlet_7", "On") == "On") + assert(CaprotoWrapper.get_pv_value("ePowerSwitch_get_outlet_8", "On") == "On") +