def _ExpectCreateAppRequest(self, region, err=None, retries=2): # If err is set, it will replace response app_msg = self.messages.Application(id=self.Project(), locationId=region) if err: self.mock_client.apps.Create.Expect(request=app_msg, response=None, exception=err) return op_name = api_test_util.AppOperationName(self.Project()) intermediate_response = self.messages.Operation(name=op_name) final_response = self.messages.Operation( name=op_name, done=True, response=encoding.JsonToMessage( self.messages.Operation.ResponseValue, encoding.MessageToJson(app_msg))) retry.ExpectWithRetries( method=self.mock_client.apps.Create, polling_method=self.mock_client.apps_operations.Get, request=app_msg, polling_request=self.messages.AppengineAppsOperationsGetRequest( name=op_name), response=intermediate_response, final_response=final_response, num_retries=retries)
def _ExpectPatchVersionRequest(self, project, service, version, serving_status, num_retries=0): """Helper function for stopping and starting versions.""" version_message = self.messages.Version( servingStatus=serving_status ) version_name = 'apps/{0}/services/{1}/versions/{2}'.format(project, service, version) stop_version_call = self.messages.AppengineAppsServicesVersionsPatchRequest( name=version_name, updateMask='servingStatus', version=version_message) op_name = VersionOperationName(project, service, version) req = self.messages.AppengineAppsServicesVersionsPatchRequest( name=version_name) done_message = self.messages.Operation( name=op_name, done=True, response=encoding.JsonToMessage( self.messages.Operation.ResponseValue, encoding.MessageToJson(req))) not_done_message = self.messages.Operation( name=op_name, done=False) polling_request = self.messages.AppengineAppsOperationsGetRequest( name=op_name) retry.ExpectWithRetries( method=self.mock_client.apps_services_versions.Patch, polling_method=self.mock_client.apps_operations.Get, request=stop_version_call, polling_request=polling_request, response=not_done_message, final_response=done_message, num_retries=num_retries)
def ExpectCreateVersion(self, project, service, version_id, num_attempts=1, success=True, deployment=None, handlers=None, beta_settings=None, version_call_args=None, operation_metadata=None): """Adds expected version create call and response to mock client. Args: project: str, the project ID service: str, the name of the service being updated. version_id: str, the ID of the version being created. num_attempts: int, the number of total attempts to be expected success: bool, whether operation should succeed deployment: appengine_v1_messages.Deployment, the expected deployment manifest message. handlers: [handler] the list of handlers expected in the create version call. beta_settings: appengine_v1_messages.Version.BetaSettingsValue, the beta settings in the app.yaml if any. version_call_args: kwargs to be added to the Version message, if any (e.g. {'vm': True}. operation_metadata: Metadata to be returned in the operation. """ version_call_args = version_call_args or self.DEFAULT_SERVICE_CONFIG op_name = VersionOperationName(project, service) version_call = self.GetCreateVersionCall(project, service, version_id, beta_settings, deployment, handlers, **version_call_args) polling_call = self.messages.AppengineAppsOperationsGetRequest( name=VersionOperationName(project, service)) version_not_created_response = self.messages.Operation(name=op_name, done=False) if success: final_response = self.messages.Operation( name=op_name, done=True, metadata=operation_metadata, response=encoding.JsonToMessage( self.messages.Operation.ResponseValue, encoding.MessageToJson(version_call.version))) else: final_response = version_not_created_response retry.ExpectWithRetries( method=self.mock_client.apps_services_versions.Create, polling_method=self.mock_client.apps_operations.Get, request=version_call, polling_request=polling_call, response=version_not_created_response, final_response=final_response, num_retries=num_attempts - 1)
def ExpectRepairApplicationRequest(self, project, num_retries=0): op_name = AppOperationName(project) method = self.mock_client.apps.Repair request = self._GetRepairApplicationRequest(self.Project()) response = self.messages.Operation(name=op_name, done=False) final_response = self.messages.Operation(name=op_name, done=True) polling_method = self.mock_client.apps_operations.Get polling_request = self.messages.AppengineAppsOperationsGetRequest( name=op_name) retry.ExpectWithRetries( method, request, response, polling_method=polling_method, polling_request=polling_request, final_response=final_response, num_retries=num_retries)
def ExpectSetDefault(self, project, service, version, num_tries=1, success=True): """Adds expected set-default call and response to mock client. Args: project: str, the project ID service: str, the name of the service being updated. version: str, the ID of the version being created. num_tries: int, number of times that setting default will be attempted. success: bool, whether operation is expected to succeed. """ op_name = 'apps/{0}/services/{1}/versions/{2}'.format( project, service, version) traffic_split = encoding.PyValueToMessage(self.messages.TrafficSplit, { 'allocations': { version: 1.0 }, 'shardBy': 'UNSPECIFIED' }) patch_call = self.messages.AppengineAppsServicesPatchRequest( name='apps/{0}/services/{1}'.format(project, service), updateMask='split', migrateTraffic=False, service=self.messages.Service(split=traffic_split)) err = http_error.MakeDetailedHttpError( message='Service does not exist', details=http_error.ExampleErrorDetails()) if success: final_response = self.messages.Operation( name=op_name, done=True, response=encoding.JsonToMessage( self.messages.Operation.ResponseValue, encoding.MessageToJson(patch_call))) else: final_response = err retry.ExpectWithRetries(method=self.mock_client.apps_services.Patch, request=patch_call, response=err, final_response=final_response, num_retries=num_tries - 1)
def ExpectDeleteServiceRequest(self, project, service, exception=None, retries=0): """Adds expected delete services request and response to mock client. Args: project: str, the project ID. service: str, the service ID to delete. exception: None|apitools.base.py.exceptions.HttpError, the error to be returned, if any. retries: Number of retries required to succeed. """ request = self.messages.AppengineAppsServicesDeleteRequest( name='apps/{0}/services/{1}'.format(project, service)) op_name = ServiceOperationName(project, service) service = self.messages.Service(name='apps/{0}/services/{1}'.format( project, service), id=service) if not exception: polling_request = self.messages.AppengineAppsOperationsGetRequest( name=op_name) intermediate_response = self.messages.Operation(name=op_name, done=False) response = self.messages.Operation( name=op_name, done=True, response=encoding.JsonToMessage( self.messages.Operation.ResponseValue, encoding.MessageToJson(service))) retry.ExpectWithRetries( method=self.mock_client.apps_services.Delete, polling_method=self.mock_client.apps_operations.Get, request=request, polling_request=polling_request, response=intermediate_response, final_response=response, num_retries=retries) else: self.mock_client.apps_services.Delete.Expect(request, exception=exception)
def _ExpectCreateAppRequest(self): app_msg = self.app_engine_messages.Application(id=self.project_id, locationId='us-central') op_name = app_api_test_util.AppOperationName(self.project_id) intermediate_response = self.app_engine_messages.Operation( name=op_name) final_response = self.app_engine_messages.Operation( name=op_name, done=True, response=encoding.JsonToMessage( self.app_engine_messages.Operation.ResponseValue, encoding.MessageToJson(app_msg))) op_get_request = self.app_engine_messages.AppengineAppsOperationsGetRequest retry.ExpectWithRetries( method=self.app_engine_client.apps.Create, polling_method=self.app_engine_client.apps_operations.Get, request=app_msg, polling_request=op_get_request(name=op_name), response=intermediate_response, final_response=final_response, num_retries=2)