async def _test(pvdb=None): logger.setLevel('DEBUG') if pvdb is None: pvdb = { 'pi': ChannelDouble( value=3.14, lower_disp_limit=3.13, upper_disp_limit=3.15, lower_alarm_limit=3.12, upper_alarm_limit=3.16, lower_warning_limit=3.11, upper_warning_limit=3.17, lower_ctrl_limit=3.10, upper_ctrl_limit=3.18, precision=5, units='doodles', ), 'enum': ChannelEnum( value='b', enum_strings=['a', 'b', 'c', 'd'], ), 'enum2': ChannelEnum( value='bb', enum_strings=['aa', 'bb', 'cc', 'dd'], ), 'int': ChannelInteger( value=96, units='doodles', ), 'char': ca.ChannelChar( value=b'3', units='poodles', lower_disp_limit=33, upper_disp_limit=35, lower_alarm_limit=32, upper_alarm_limit=36, lower_warning_limit=31, upper_warning_limit=37, lower_ctrl_limit=30, upper_ctrl_limit=38, ), 'chararray': ca.ChannelChar(value=b'1234567890' * 2), 'str': ca.ChannelString(value='hello', string_encoding='latin-1'), 'stra': ca.ChannelString(value=['hello', 'how is it', 'going'], string_encoding='latin-1'), } pvdb['pi'].alarm.alarm_string = 'delicious' ctx = Context('0.0.0.0', find_next_tcp_port(), pvdb) logger.info('Server starting up on %s:%d', ctx.host, ctx.port) return await ctx.run()
def curio_server(): caget_pvdb = { 'pi': ca.ChannelDouble(value=3.14, lower_disp_limit=3.13, upper_disp_limit=3.15, lower_alarm_limit=3.12, upper_alarm_limit=3.16, lower_warning_limit=3.11, upper_warning_limit=3.17, lower_ctrl_limit=3.10, upper_ctrl_limit=3.18, precision=5, units='doodles', ), 'enum': ca.ChannelEnum(value='b', enum_strings=['a', 'b', 'c', 'd'], ), 'int': ca.ChannelInteger(value=33, units='poodles', lower_disp_limit=33, upper_disp_limit=35, lower_alarm_limit=32, upper_alarm_limit=36, lower_warning_limit=31, upper_warning_limit=37, lower_ctrl_limit=30, upper_ctrl_limit=38, ), 'char': ca.ChannelChar(value=b'3', units='poodles', lower_disp_limit=33, upper_disp_limit=35, lower_alarm_limit=32, upper_alarm_limit=36, lower_warning_limit=31, upper_warning_limit=37, lower_ctrl_limit=30, upper_ctrl_limit=38, ), 'str': ca.ChannelString(value='hello', alarm=str_alarm_status, reported_record_type='caproto'), } async def run_server(): port = find_next_tcp_port(host=SERVER_HOST) print('Server will be on', (SERVER_HOST, port)) ctx = server.Context(SERVER_HOST, port, caget_pvdb, log_level='DEBUG') try: await ctx.run() except Exception as ex: print('Server failed', ex) raise finally: print('Server exiting') return run_server, caget_pvdb
lower_disp_limit=33, upper_disp_limit=35, lower_alarm_limit=32, upper_alarm_limit=36, lower_warning_limit=31, upper_warning_limit=37, lower_ctrl_limit=30, upper_ctrl_limit=38, ), 'char': ca.ChannelChar( value=b'3', units='poodles', lower_disp_limit=33, upper_disp_limit=35, lower_alarm_limit=32, upper_alarm_limit=36, lower_warning_limit=31, upper_warning_limit=37, lower_ctrl_limit=30, upper_ctrl_limit=38, ), 'str': ca.ChannelString(value='hello', alarm_status=str_alarm_status, reported_record_type='caproto'), } @pytest.fixture(scope='function') def curio_server(): async def run_server():
def pvdb_from_server_example(): alarm = ca.ChannelAlarm( status=ca.AlarmStatus.READ, severity=ca.AlarmSeverity.MINOR_ALARM, alarm_string='alarm string', ) pvdb = { 'pi': ca.ChannelDouble( value=3.14, lower_disp_limit=3.13, upper_disp_limit=3.15, lower_alarm_limit=3.12, upper_alarm_limit=3.16, lower_warning_limit=3.11, upper_warning_limit=3.17, lower_ctrl_limit=3.10, upper_ctrl_limit=3.18, precision=5, units='doodles', alarm=alarm, ), 'enum': ca.ChannelEnum( value='b', enum_strings=['a', 'b', 'c', 'd'], ), 'enum2': ca.ChannelEnum( value='bb', enum_strings=['aa', 'bb', 'cc', 'dd'], ), 'int': ca.ChannelInteger( value=96, units='doodles', ), 'char': ca.ChannelByte( value=b'3', units='poodles', lower_disp_limit=33, upper_disp_limit=35, lower_alarm_limit=32, upper_alarm_limit=36, lower_warning_limit=31, upper_warning_limit=37, lower_ctrl_limit=30, upper_ctrl_limit=38, ), 'bytearray': ca.ChannelByte(value=b'1234567890' * 2), 'chararray': ca.ChannelChar(value=b'1234567890' * 2), 'str': ca.ChannelString(value='hello', string_encoding='latin-1', alarm=alarm), 'str2': ca.ChannelString(value='hello', string_encoding='latin-1', alarm=alarm), 'stra': ca.ChannelString(value=['hello', 'how is it', 'going'], string_encoding='latin-1'), } return pvdb
), 'int3': ca.ChannelInteger(value=96, units='doodles', ), 'char': ca.ChannelByte(value=b'3', units='poodles', lower_disp_limit=33, upper_disp_limit=35, lower_alarm_limit=32, upper_alarm_limit=36, lower_warning_limit=31, upper_warning_limit=37, lower_ctrl_limit=30, upper_ctrl_limit=38, ), 'chararray': ca.ChannelChar(value=b'1234567890' * 2), 'str': ca.ChannelString(value='hello', string_encoding='latin-1', alarm=alarm), 'str2': ca.ChannelString(value='hello', string_encoding='latin-1', alarm=alarm), 'stra': ca.ChannelString(value=['hello', 'how is it', 'going'], string_encoding='latin-1'), } def main(): ioc_options, run_options = ioc_arg_parser( default_prefix='type_varieties:', desc='Run an IOC with PVs of various data types.')
), "char": ca.ChannelByte( value=b"3", units="poodles", lower_disp_limit=33, upper_disp_limit=35, lower_alarm_limit=32, upper_alarm_limit=36, lower_warning_limit=31, upper_warning_limit=37, lower_ctrl_limit=30, upper_ctrl_limit=38, ), "chararray": ca.ChannelChar(value=b"1234567890" * 2), "str": ca.ChannelString(value="hello", string_encoding="latin-1", alarm=alarm), "str2": ca.ChannelString(value="hello", string_encoding="latin-1", alarm=alarm), "stra": ca.ChannelString(value=["hello", "how is it", "going"], string_encoding="latin-1"), "waveform": ca.ChannelData(value=np.random.poisson(100, 4000)), "empty_string": ca.ChannelString(value="", string_encoding="latin-1"), "empty_bytes": ca.ChannelByte(value=b""), "empty_char": ca.ChannelChar(value=b""),
), 'char': ca.ChannelByte( value=b'3', units='poodles', lower_disp_limit=33, upper_disp_limit=35, lower_alarm_limit=32, upper_alarm_limit=36, lower_warning_limit=31, upper_warning_limit=37, lower_ctrl_limit=30, upper_ctrl_limit=38, ), 'chararray': ca.ChannelChar(value=b'1234567890' * 2), 'str': ca.ChannelString(value='hello', string_encoding='latin-1', alarm=alarm), 'str2': ca.ChannelString(value='hello', string_encoding='latin-1', alarm=alarm), 'stra': ca.ChannelString(value=['hello', 'how is it', 'going'], string_encoding='latin-1'), 'waveform': ca.ChannelData(value=np.random.poisson(100, 4000)), 'empty_string': ca.ChannelString(value='', string_encoding='latin-1'), 'empty_bytes': ca.ChannelByte(value=b''), 'empty_char': ca.ChannelChar(value=b''),