def op_disconnect(self, content, headers, msg): # Timeout not implemented for this op. timeout = content.get('timeout', None) if timeout != None: assert (isinstance(timeout, int)), 'Expected integer timeout' assert (timeout > 0), 'Expected positive timeout' pass success = self.fsm.on_event(SiamDriverEvent.DISCONNECT) reply = {'success': success, 'result': None} if InstErrorCode.is_error(reply['success']): yield self.reply_ok(msg, reply) return success = self.fsm.on_event(SiamDriverEvent.DISCONNECT_COMPLETE) reply['success'] = success """ @TODO: why calling ''yield self.siamci.stop()'' to stop (terminate) the SiamCiProxy process causes errors? Here are some of the errors if this call is included when running test_siam_driver.py: [process :780] WARNING:Process bootstrap RPC conv-id=carueda_46740.7#29 timed out! [state_object :113] ERROR:ERROR in StateObject process(event=deactivate) [receiver :169] ERROR:Receiver error: Illegal state change [state_object :132] ERROR:Subsequent ERROR in StateObject error(), ND-ND """ # yield self.siamci.stop() if log.getEffectiveLevel() <= logging.DEBUG: log.debug('op_disconnect: complete. success = %s' % (reply['success'])) yield self.reply_ok(msg, reply)
def test_005_get_params_subset_good_and_bad(self): """ - connect - get with [(SiamDriverChannel.INSTRUMENT,'startDelayMsec'), (SiamDriverChannel.INSTRUMENT,'INVALID_param')] - disconnect """ self._check_skip() yield self.__connect() params = [(SiamDriverChannel.INSTRUMENT,'startDelayMsec'), (SiamDriverChannel.INSTRUMENT,'INVALID_param')] reply = yield self.driver_client.get(params) success = reply['success'] result = reply['result'] self.assert_(InstErrorCode.is_error(success)) # # TODO: Note, the adapter returns a single Error when any of the requested # params is invalid, ie., does not yet provide discriminated errors. # So the result here is None. # successParam, val = result[(SiamDriverChannel.INSTRUMENT,'startDelayMsec')] # self.assert_(InstErrorCode.is_ok(successParam)) # # successParam, val = result[(SiamDriverChannel.INSTRUMENT,'INVALID_param')] # self.assert_(InstErrorCode.is_error(successParam)) yield self.__disconnect()
def op_configure(self, content, headers, msg): assert (isinstance(content, dict)), 'Expected dict content.' params = content.get('params', None) assert (isinstance(params, dict)), 'Expected dict params.' # Timeout not implemented for this op. timeout = content.get('timeout', None) if timeout != None: assert (isinstance(timeout, int)), 'Expected integer timeout' assert (timeout > 0), 'Expected positive timeout' pass # Set up the reply message and validate the configuration parameters. # Reply with the error message if the parameters not valid. reply = {'success': None, 'result': params} reply['success'] = self._validate_configuration(params) if InstErrorCode.is_error(reply['success']): yield self.reply_ok(msg, reply) return # Fire EVENT_CONFIGURE with the validated configuration parameters. # Set the error message if the event is not handled in the current # state. reply['success'] = self.fsm.on_event(SiamDriverEvent.CONFIGURE, params) if log.getEffectiveLevel() <= logging.DEBUG: log.debug('op_configure: complete. success = %s' % (reply['success'])) yield self.reply_ok(msg, reply)
def op_connect(self, content, headers, msg): # Timeout not implemented for this op. timeout = content.get('timeout', None) if timeout != None: assert (isinstance(timeout, int)), 'Expected integer timeout' assert (timeout > 0), 'Expected positive timeout' pass success = self.fsm.on_event(SiamDriverEvent.CONNECT) reply = {'success': success, 'result': None} if InstErrorCode.is_error(reply['success']): yield self.reply_ok(msg, reply) return success = self.fsm.on_event(SiamDriverEvent.CONNECTION_COMPLETE) reply['success'] = success """ There is no actual "connect"/"disconnect" as the driver interacts via messaging with the SIAM-CI adapter service. We just start our proxy: """ yield self.siamci.start() if log.getEffectiveLevel() <= logging.DEBUG: log.debug('op_connect: SiamCiProxy started') yield self.reply_ok(msg, reply)
def op_connect(self, content, headers, msg): # Timeout not implemented for this op. timeout = content.get('timeout',None) if timeout != None: assert(isinstance(timeout,int)), 'Expected integer timeout' assert(timeout>0), 'Expected positive timeout' pass success = self.fsm.on_event(SiamDriverEvent.CONNECT) reply = {'success':success,'result':None} if InstErrorCode.is_error(reply['success']): yield self.reply_ok(msg, reply) return success = self.fsm.on_event(SiamDriverEvent.CONNECTION_COMPLETE) reply['success'] = success """ There is no actual "connect"/"disconnect" as the driver interacts via messaging with the SIAM-CI adapter service. We just start our proxy: """ yield self.siamci.start() if log.getEffectiveLevel() <= logging.DEBUG: log.debug('op_connect: SiamCiProxy started') yield self.reply_ok(msg, reply)
def op_configure(self, content, headers, msg): assert(isinstance(content, dict)), 'Expected dict content.' params = content.get('params', None) assert(isinstance(params, dict)), 'Expected dict params.' # Timeout not implemented for this op. timeout = content.get('timeout', None) if timeout != None: assert(isinstance(timeout, int)), 'Expected integer timeout' assert(timeout > 0), 'Expected positive timeout' pass # Set up the reply message and validate the configuration parameters. # Reply with the error message if the parameters not valid. reply = {'success':None, 'result':params} reply['success'] = self._validate_configuration(params) if InstErrorCode.is_error(reply['success']): yield self.reply_ok(msg, reply) return # Fire EVENT_CONFIGURE with the validated configuration parameters. # Set the error message if the event is not handled in the current # state. reply['success'] = self.fsm.on_event(SiamDriverEvent.CONFIGURE,params) if log.getEffectiveLevel() <= logging.DEBUG: log.debug('op_configure: complete. success = %s' % (reply['success'])) yield self.reply_ok(msg, reply)
def _configure(self, params): # Validate configuration. success = self._validate_configuration(params) if InstErrorCode.is_error(success): return False # Set configuration parameters. self.pid = params['pid'] self.port = params['port'] if log.getEffectiveLevel() <= logging.DEBUG: log.debug("_configure: pid = '" + \ str(self.pid) + "' port = '" + str(self.port) + "'") self.siamci = SiamCiAdapterProxy(self.pid, self.port) return True
def _configure(self, params): # Validate configuration. success = self._validate_configuration(params) if InstErrorCode.is_error(success): return False # Set configuration parameters. self.pid = params['pid'] self.port = params['port'] if log.getEffectiveLevel() <= logging.DEBUG: log.debug("_configure: pid = '" + \ str(self.pid) + "' port = '" + str(self.port) + "'") self.siamci = SiamCiAdapterProxy(self.pid, self.port) return True
def test_006_set_params_invalid(self): """ - connect - set some invalid parameters (we just check the operation completes) - disconnect """ self._check_skip() yield self.__connect() channel = SiamDriverChannel.INSTRUMENT params = {(channel,'baudrate'):'19200', (channel,'someWrongParam'):'someValue'} reply = yield self.driver_client.set(params) success = reply['success'] result = reply['result'] self.assert_(InstErrorCode.is_error(success)) yield self.__disconnect()
def op_disconnect(self, content, headers, msg): # Timeout not implemented for this op. timeout = content.get('timeout',None) if timeout != None: assert(isinstance(timeout,int)), 'Expected integer timeout' assert(timeout>0), 'Expected positive timeout' pass success = self.fsm.on_event(SiamDriverEvent.DISCONNECT) reply = {'success':success,'result':None} if InstErrorCode.is_error(reply['success']): yield self.reply_ok(msg, reply) return success = self.fsm.on_event(SiamDriverEvent.DISCONNECT_COMPLETE) reply['success'] = success """ @TODO: why calling ''yield self.siamci.stop()'' to stop (terminate) the SiamCiProxy process causes errors? Here are some of the errors if this call is included when running test_siam_driver.py: [process :780] WARNING:Process bootstrap RPC conv-id=carueda_46740.7#29 timed out! [state_object :113] ERROR:ERROR in StateObject process(event=deactivate) [receiver :169] ERROR:Receiver error: Illegal state change [state_object :132] ERROR:Subsequent ERROR in StateObject error(), ND-ND """ # yield self.siamci.stop() if log.getEffectiveLevel() <= logging.DEBUG: log.debug('op_disconnect: complete. success = %s' % (reply['success'])) yield self.reply_ok(msg, reply)