def _domatch(self, prompt, flush): if flush: func = self.tn.expect else: func = self.tn.waitfor # Wait for a prompt. self.response = None try: result, match, self.response = func(prompt, self.timeout) except Exception: self._dbg(1, 'Error while waiting for ' + repr(prompt)) raise if match: self._dbg(2, "Got a prompt, match was %s" % repr(match.group())) self.buffer.pop(len(self.response)) self._dbg(5, "Response was %s" % repr(self.response)) if result == -1: error = 'Error while waiting for response from device' raise TimeoutException(error) if result == -2: if self.driver_replaced: self.driver_replaced = False raise DriverReplacedException() else: raise ExpectCancelledException() if self.response is None: raise ProtocolException('whoops - response is None') return result, match
def _domatch(self, prompt, flush): self._dbg(1, "Expecting a prompt") self._dbg(2, "Expected pattern: " + repr(p.pattern for p in prompt)) search_window_size = 150 while not self.cancel: # Check whether what's buffered matches the prompt. driver = self.get_driver() search_window = self.buffer.tail(search_window_size) search_window, incomplete_tail = driver.clean_response_for_re_match( search_window) match = None for n, regex in enumerate(prompt): match = regex.search(search_window) if match is not None: break if not match: if not self._fill_buffer(): error = 'EOF while waiting for response from device' raise ProtocolException(error) continue end = self.buffer.size() - len(search_window) + match.end() if flush: self.response = self.buffer.pop(end) else: self.response = self.buffer.head(end) return n, match # Ending up here, self.cancel_expect() was called. self.cancel = False if self.driver_replaced: self.driver_replaced = False raise DriverReplacedException() raise ExpectCancelledException()
def _domatch(self, prompt, flush): # Wait for a prompt. result, match, self.response = self._expect_any(prompt, flush) if match: self._dbg(2, "Got a prompt, match was %s" % repr(match.group())) else: self._dbg(2, "No prompt match") self._dbg(5, "Response was %s" % repr(str(self.buffer))) if result == -1: error = 'Error while waiting for response from device' raise TimeoutException(error) if result == -2: if self.driver_replaced: self.driver_replaced = False raise DriverReplacedException() else: raise ExpectCancelledException() return result, match