def assertRouteConfigUpdateTrafficHandoff( self, test_client: XdsTestClient, previous_route_config_version: str, retry_wait_second: int, timeout_second: int): retryer = retryers.constant_retryer( wait_fixed=datetime.timedelta(seconds=retry_wait_second), timeout=datetime.timedelta(seconds=timeout_second), retry_on_exceptions=(TdPropagationRetryableError, ), logger=logger, log_level=logging.INFO) try: for attempt in retryer: with attempt: self.assertSuccessfulRpcs(test_client) raw_config = test_client.csds.fetch_client_status( log_level=logging.INFO) dumped_config = xds_url_map_testcase.DumpedXdsConfig( json_format.MessageToDict(raw_config)) route_config_version = dumped_config.rds_version if previous_route_config_version == route_config_version: logger.info( 'Routing config not propagated yet. Retrying.') raise TdPropagationRetryableError( "CSDS not get updated routing config corresponding" " to the second set of url maps") else: self.assertSuccessfulRpcs(test_client) logger.info( '[SUCCESS] Confirmed successful RPC with the updated routing config, version=%s', route_config_version) except retryers.RetryError as retry_error: logger.info( 'Retry exhausted. TD routing config propagation failed after timeout %ds. Last seen client config dump: %s', timeout_second, dumped_config) raise retry_error
def tearDown(self): logger.info('----- TestMethod %s teardown -----', self.id()) retryer = retryers.constant_retryer(wait_fixed=_timedelta(seconds=10), attempts=3, log_level=logging.INFO) try: retryer(self._cleanup) except retryers.RetryError: logger.exception('Got error during teardown')
def test_client_config(self): retryer = retryers.constant_retryer( wait_fixed=datetime.timedelta( seconds=_URL_MAP_PROPAGATE_CHECK_INTERVAL_SEC), timeout=datetime.timedelta(seconds=_URL_MAP_PROPAGATE_TIMEOUT_SEC), logger=logging, log_level=logging.INFO) try: retryer(self._fetch_and_check_xds_config) finally: logging.info( 'latest xDS config:\n%s', GcpResourceManager().td.compute.resource_pretty_format( self._xds_json_config))
def assertRpcsEventuallyGoToGivenServers(self, test_client: XdsTestClient, servers: List[XdsTestServer], num_rpcs: int = 100): retryer = retryers.constant_retryer( wait_fixed=datetime.timedelta(seconds=1), timeout=datetime.timedelta(seconds=_TD_CONFIG_MAX_WAIT_SEC), log_level=logging.INFO) try: retryer(self._assertRpcsEventuallyGoToGivenServers, test_client, servers, num_rpcs) except retryers.RetryError: logger.exception( 'Rpcs did not go to expected servers before timeout %s', _TD_CONFIG_MAX_WAIT_SEC)