Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
84 commits
Select commit Hold shift + click to select a range
22ba8ba
Rename plankton_emulators to lewis_emulators because framework name h…
Jan 6, 2017
6f425de
Update __init__.py
Jun 1, 2017
966314a
Merge pull request #17 from ISISComputingGroup/Ticket2371_EOL_fixes
FreddieAkeroyd Jun 2, 2017
91fdfb6
Tidied up the formatting for a lot of files
Jun 8, 2017
698b0ed
Merge pull request #18 from ISISComputingGroup/Ticket2379_Create_TPG2…
Jun 8, 2017
815d310
Pin emulators to latest version
Sep 25, 2017
a3ba861
Add device to test framework
Tom-Willemsen Dec 19, 2017
721625f
Add template emulator
Tom-Willemsen Dec 19, 2017
ee39e0a
Add triton tests
Tom-Willemsen Dec 19, 2017
06660f0
Add correct terminators and one command to stream interface
Tom-Willemsen Dec 19, 2017
798fe8c
PID controls working
Tom-Willemsen Dec 19, 2017
d177f0f
PID controls working
Tom-Willemsen Dec 19, 2017
c3eaf9d
Add heater range/temp setpoint
Tom-Willemsen Dec 19, 2017
5e9999b
Add heater range/temp setpoint
Tom-Willemsen Dec 19, 2017
635af94
Get heater power
Tom-Willemsen Dec 19, 2017
cd9ede6
Heater power tests
Tom-Willemsen Dec 19, 2017
40d0414
Add commands
Tom-Willemsen Dec 19, 2017
27979f8
Add tests
Tom-Willemsen Dec 19, 2017
dc26bcb
Add emulation for valve states
Tom-Willemsen Dec 20, 2017
b0b835b
Add valve state tests
Tom-Willemsen Dec 20, 2017
d2c7b51
Channel enablement
Tom-Willemsen Dec 20, 2017
e7bdc1c
Test for channel enablement£
Tom-Willemsen Dec 20, 2017
e0e8b9b
Add device status
Tom-Willemsen Dec 20, 2017
6d2fccb
Add device status
Tom-Willemsen Dec 20, 2017
6e3a300
Add automation
Tom-Willemsen Dec 20, 2017
e0886fa
Add automation
Tom-Willemsen Dec 20, 2017
08ea169
STIL/MC temperatures
Tom-Willemsen Dec 20, 2017
cd4bd45
STIL/MC temperatures
Tom-Willemsen Dec 20, 2017
a5f8d35
Refactor.
Tom-Willemsen Dec 20, 2017
b465f42
Refactor.
Tom-Willemsen Dec 20, 2017
0884fe1
Add pressures
Tom-Willemsen Dec 20, 2017
85b820e
Add pressures
Tom-Willemsen Dec 20, 2017
704c48d
Emulator happy (mostly) to talk to labview
Tom-Willemsen Dec 20, 2017
6357aaa
mixing chamber must be T5
Tom-Willemsen Dec 20, 2017
f19f526
Add support for setting closed loop mode
Tom-Willemsen Dec 21, 2017
8b6b12c
Add test for setting closed loop mode
Tom-Willemsen Dec 21, 2017
6f1e8d7
Substantial refactor
Tom-Willemsen Dec 21, 2017
b180ead
Rename test to follow GIVEN/WHEN/THEN convention.
Tom-Willemsen Jan 2, 2018
57a291f
Add test for arbitrary command
Tom-Willemsen Jan 2, 2018
e4ec6c5
Refactor emulator
Tom-Willemsen Jan 2, 2018
9403f5e
Update tests to be in line with new(er) command set
Tom-Willemsen Jan 25, 2018
b89dcc3
Update to newer command set
Tom-Willemsen Jan 25, 2018
47a3aa9
Recsim tests
Tom-Willemsen Jan 30, 2018
0cf6768
Emulator fixes
Tom-Willemsen Jan 30, 2018
ffcb710
Add heater %
Tom-Willemsen Feb 6, 2018
8e5d707
Add tests for heater %
Tom-Willemsen Feb 6, 2018
1d44041
Modify command for calculating heater %
Tom-Willemsen Feb 7, 2018
4a46826
Add tests for new command for getting heater %
Tom-Willemsen Feb 7, 2018
44ef327
Forgotten commit
Tom-Willemsen Feb 8, 2018
b547d9f
Convery triton tests to new style
Tom-Willemsen Feb 16, 2018
e9c6ffc
change tests back to run on ioc 1
Tom-Willemsen Feb 16, 2018
9384605
Merge pull request #48 from ISISComputingGroup/Ticket2828_Add_IOC_TRITON
AdrianPotter Feb 21, 2018
01f3f41
Upgrade Lewis
davidkeymer Mar 23, 2018
1ad28b3
Update lewis_versions.py
esouthren Apr 3, 2018
5539e4c
Merge pull request #55 from ISISComputingGroup/Ticket2386_Upgrade_Lewis
esouthren Apr 3, 2018
37e4fec
Remove tests relating to valve statuses
Tom-Willemsen Apr 6, 2018
a46b5b7
Remove valve statuses
Tom-Willemsen Apr 6, 2018
ff1e85c
Adjust valid channels range
Tom-Willemsen Apr 6, 2018
2d2c024
Remove invalid import. No longer emulate off-by-one error
Tom-Willemsen Apr 6, 2018
5d63938
Changed module name and updated emulator to pass temp test.
Jun 1, 2018
f46b96e
Re-add lost init file, with comment saying do not delete.
Tom-Willemsen Jun 15, 2018
5d8b3e3
Convert docs to new style. Make assertion names consistent.
Tom-Willemsen Jun 20, 2018
3601420
Refactor emulator.
Tom-Willemsen Oct 9, 2018
cb89dc8
Merge pull request #3 from ISISComputingGroup/Ticket3314_changes_requ…
John-Holt-Tessella Oct 15, 2018
852eb54
Add tests to ensure closed loop mode is set on
Tom-Willemsen Mar 20, 2019
7bdefb0
Skip test in recsim
Tom-Willemsen Apr 17, 2019
ac8b998
Updated lewis version
DominicOram Sep 25, 2019
322df1d
Merge pull request #54 from ISISComputingGroup/Ticket4775_upgrade_lew…
Tom-Willemsen Sep 25, 2019
ba310cd
renamed to cryogenic_sms/CRYOSMS
LilithCole Oct 15, 2019
0f4c67d
merge master
LilithCole Oct 15, 2019
cd122cb
Updated lewis version to 1.2.2
DominicOram Jun 1, 2020
f66709e
Updated a number of imports, python3 syntax changes and minor PEP8 vi…
Sep 16, 2020
9112de0
Fixed variable name for lewis version number
Sep 16, 2020
fbf2d9b
Merge pull request #87 from ISISComputingGroup/Ticket4889_convert_dev…
rerpha Sep 24, 2020
a089fc9
Updated to use latest lewis version and convert strings correctly
DominicOram Nov 10, 2020
36ec9c7
Update lewis version
DominicOram Nov 30, 2020
f67b2ef
removing __future__ imports
rerpha Dec 11, 2020
2ec57aa
Merge pull request #395 from ISISComputingGroup/Ticket4890_convert_io…
Tom-Willemsen Dec 15, 2020
c3cd652
Configure poll rate for tests
JamesKingWork Mar 18, 2021
5e9e4e2
Merge pull request #441 from ISISComputingGroup/TritonConfigurablePol…
rerpha Mar 18, 2021
01f5ade
Moved utils into lewis itself
DominicOram Jun 10, 2021
edf474a
Merge branch 'master' of C:/Instrument/Dev/EPICS-IOC_Test_Framework i…
May 6, 2022
ea8f3ef
Merge branch 'master' of C:/Instrument/Dev/EPICS-DeviceEmulator into …
May 6, 2022
6045034
moved system tests into support module
May 6, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -16,3 +16,7 @@ relPaths.sh
/doc/
*_info_positions.req
*_info_settings.req
__pycache__/
*.py[cod]
*$py.class
test-reports/
3 changes: 3 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,6 @@ DIRS += $(wildcard *[Aa]pp)
DIRS += $(wildcard ioc[Bb]oot)

include $(TOP)/configure/RULES_TOP

ioctests:
.\system_tests\run_tests.bat
Empty file added system_tests/__init__.py
Empty file.
2 changes: 2 additions & 0 deletions system_tests/lewis_emulators/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# DO NOT DELETE THIS FILE - LEWIS FRAMEWORK REQUIRES THE DIRECTORY TO BE IMPORTABLE
from __future__ import absolute_import
2 changes: 2 additions & 0 deletions system_tests/lewis_emulators/lewis_versions.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
LEWIS_1_3_0 = "1.3.0"
LEWIS_LATEST = LEWIS_1_3_0
5 changes: 5 additions & 0 deletions system_tests/lewis_emulators/triton/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
from .device import SimulatedTriton
from ..lewis_versions import LEWIS_LATEST

framework_version = LEWIS_LATEST
__all__ = ['SimulatedTriton']
153 changes: 153 additions & 0 deletions system_tests/lewis_emulators/triton/device.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,153 @@
from collections import OrderedDict
from .states import DefaultState
from lewis.devices import StateMachineDevice


HEATER_NAME = "H1"


class TemperatureStage(object):
"""
Class representing a temperature stage.
"""
def __init__(self, name):
self.name = name
self.temperature = 1
self.enabled = True

self.resistance = 0

self.excitation_type = "VOLT"
self.excitation = 10

self.pause = 10
self.dwell = 3


class PressureSensor(object):
"""
Class to represent a pressure sensor.

Having this as a class makes it more extensible in future, as the triton driver is still in flux.
"""
def __init__(self):
self.pressure = 0


class SimulatedTriton(StateMachineDevice):

def _initialize_data(self):
"""
Initialize all of the device's attributes.
"""
self.heater_range = 0
self.heater_power = 1
self.heater_resistance = 0

self.temperature_setpoint = 0
self.p = 0
self.i = 0
self.d = 0
self.closed_loop = False

self.status = "This is a device status message."
self.automation = "This is the automation status"

self.pressure_sensors = {"P{}".format(i): PressureSensor() for i in range(1, 6)}

self.temperature_stages = {
"T1": TemperatureStage("STIL"),
"T2": TemperatureStage("PT1"),
"T3": TemperatureStage("PT2"),
"T4": TemperatureStage("SORB"),
"T5": TemperatureStage("MC"),
"T6": TemperatureStage("unknown"),
}

self.sample_channel = "T5"
assert self.sample_channel in self.temperature_stages

def find_temperature_channel(self, name):

for k, v in self.temperature_stages.items():
if v.name == name:
return k
else:
raise KeyError("{} not found".format(name))

def set_temperature_backdoor(self, stage_name, new_temp):
self.temperature_stages[self.find_temperature_channel(stage_name)].temperature = new_temp

def set_pressure_backdoor(self, sensor, newpressure):
self.pressure_sensors["P{}".format(sensor)].pressure = float(newpressure)

def set_sensor_property_backdoor(self, sensor, property, value):
# In older versions of the software, there was an off-by-one error here in the OI software.
# This has now been fixed by O.I. so no longer need to adjust by one here.
setattr(self.temperature_stages["T{}".format(sensor)], property, value)

def _get_state_handlers(self):
return {'default': DefaultState()}

def _get_initial_state(self):
return 'default'

def _get_transition_handlers(self):
return OrderedDict([])

def get_closed_loop_mode(self):
return self.closed_loop

def set_closed_loop_mode(self, mode):
self.closed_loop = mode

def set_p(self, value):
self.p = value

def set_i(self, value):
self.i = value

def set_d(self, value):
self.d = value

def get_p(self):
return self.p

def get_i(self):
return self.i

def get_d(self):
return self.d

def get_temperature_setpoint(self):
return self.temperature_setpoint

def set_temperature_setpoint(self, value):
self.temperature_setpoint = value

def get_heater_range(self):
return self.heater_range

def set_heater_range(self, value):
self.heater_range = value

def is_channel_enabled(self, chan):
try:
return self.temperature_stages[chan].enabled
except KeyError:
return False

def set_channel_enabled(self, chan, newstate):
self.temperature_stages[chan].enabled = newstate

def get_status(self):
return self.status

def get_automation(self):
return self.automation

def get_pressure(self, sensor):
return self.pressure_sensors[sensor].pressure

def get_temp(self, stage):
return self.temperature_stages[stage].temperature
3 changes: 3 additions & 0 deletions system_tests/lewis_emulators/triton/interfaces/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
from .stream_interface import TritonStreamInterface

__all__ = ['TritonStreamInterface']
Loading