def assert_driver_process_launch_success(self, driver_config): """ Verify that we can launch a driver using a driver config. @param driver_config: driver configuration dictionary """ driver_process = DriverProcess.get_process(driver_config, True) self.assertTrue(driver_process) driver_process.launch() self.assertTrue(driver_process.getpid()) # command not portable #log.info("Driver memory usage after init: %d", driver_process.memory_usage()) self.assertGreater(driver_process._command_port, 0) self.assertGreater(driver_process._event_port, 0) driver_client = driver_process.get_client() self.assertTrue(driver_client) driver_client.start_messaging(self.event_received) # command not portable # self.assertGreater(driver_process.memory_usage(), 0) # log.info("Driver memory usage before stop: %d", driver_process.memory_usage()) driver_process.stop() self.assertFalse(driver_process.getpid())
def init_driver_process_client(self): """ @brief Launch the driver process and driver client @retval return driver process and driver client object """ log.info("Startup Driver Process") driver_config = { 'dvr_mod' : self.test_config.driver_module, 'dvr_cls' : self.test_config.driver_class, 'workdir' : self.test_config.working_dir, 'comms_config' : self.port_agent_comm_config(), 'process_type' : self.test_config.driver_process_type, } self.driver_process = DriverProcess.get_process(driver_config, True) self.driver_process.launch() # Verify the driver has started. if not self.driver_process.getpid(): log.error('Error starting driver process.') raise InstrumentException('Error starting driver process.') try: driver_client = self.driver_process.get_client() driver_client.start_messaging(self.event_received) retval = driver_client.cmd_dvr('process_echo', 'Test.') self.driver_client = driver_client except Exception, e: self.driver_process.stop() log.error('Error starting driver client. %s', e) raise InstrumentException('Error starting driver client.')
def test_driver_process(self): """ Test driver process launch """ driver_process = DriverProcess.get_process(self._driver_config, True) self.assertTrue(driver_process) driver_process.launch() self.assertTrue(driver_process.getpid()) log.info("Driver memory usage after init: %d", driver_process.memory_usage()) self.assertGreater(driver_process._command_port, 0) self.assertGreater(driver_process._event_port, 0) driver_client = driver_process.get_client() self.assertTrue(driver_client) driver_client.start_messaging(self.event_received()) packet_factories = driver_process.get_packet_factories() self.assertTrue(packet_factories) self.assertGreater(driver_process.memory_usage(), 0) log.info("Driver memory usage before stop: %d", driver_process.memory_usage()) driver_process.stop() self.assertFalse(driver_process.getpid())
def _start_driver(self, dvr_config): ## Part of <update-july-2012> ## ## Adapted from InstrumentAgent._start_driver(self, dvr_config). ## """ Start the driver process and driver client. @param dvr_config The driver configuration. @raises InstDriverError If the driver or client failed to start properly. """ from ion.agents.instrument.driver_process import DriverProcess self._dvr_proc = DriverProcess.get_process(dvr_config, True) self._dvr_proc.launch() # Verify the driver has started. if not self._dvr_proc.getpid(): log.error('TrhphDriverProxy: error starting driver process.') raise InstDriverError('Error starting driver process.') def evt_recv(evt): """ Callback to receive asynchronous driver events. @param evt The driver event received. """ log.info('TrhphDriverProxy:received driver event %s' % str(evt)) try: driver_client = self._dvr_proc.get_client() driver_client.start_messaging(evt_recv) # retval = driver_client.cmd_dvr('process_echo', 'Test.') self._dvr_client = driver_client except Exception, e: self._dvr_proc.stop() log.error('TrhphDriverProxy: error starting driver client: %s' % e) raise InstDriverError('Error starting driver client: %s' % e)