def test_handling_snuba_errors(self, mock_query): mock_query.side_effect = RateLimitExceeded("test") self.login_as(user=self.user) project = self.create_project() self.store_event( data={"event_id": "a" * 32, "message": "how to make fast"}, project_id=project.id ) with self.feature("organizations:discover-basic"): response = self.client.get( self.url, data={"field": ["id", "timestamp"], "orderby": ["-timestamp", "-id"]}, format="json", ) assert response.status_code == 400, response.content assert ( response.data["detail"] == "Query timeout. Please try again. If the problem persists try a smaller date range or fewer projects." ) mock_query.side_effect = QueryExecutionError("test") with self.feature("organizations:discover-basic"): response = self.client.get( self.url, data={"field": ["id", "timestamp"], "orderby": ["-timestamp", "-id"]}, format="json", ) assert response.status_code == 400, response.content assert response.data["detail"] == "Invalid query." mock_query.side_effect = QueryIllegalTypeOfArgument("test") with self.feature("organizations:discover-basic"): response = self.client.get( self.url, data={"field": ["id", "timestamp"], "orderby": ["-timestamp", "-id"]}, format="json", ) assert response.status_code == 400, response.content assert response.data["detail"] == "Invalid query. Argument to function is wrong type." mock_query.side_effect = QueryOutsideRetentionError("test") with self.feature("organizations:discover-basic"): response = self.client.get( self.url, data={"field": ["id", "timestamp"], "orderby": ["-timestamp", "-id"]}, format="json", ) assert response.status_code == 400, response.content assert response.data["detail"] == "Invalid date range. Please try a more recent date range."
def test_discover_snuba_error(self, emailer, mock_query): de = ExportedData.objects.create( user=self.user, organization=self.org, query_type=ExportQueryType.DISCOVER, query_info={ "project": [self.project.id], "field": ["title"], "query": "" }, ) mock_query.side_effect = QueryIllegalTypeOfArgument("test") with self.tasks(): assemble_download(de.id) error = emailer.call_args[1]["message"] assert error == "Invalid query. Argument to function is wrong type." # unicode mock_query.side_effect = QueryIllegalTypeOfArgument("\xfc") with self.tasks(): assemble_download(de.id) error = emailer.call_args[1]["message"] assert error == "Invalid query. Argument to function is wrong type." mock_query.side_effect = SnubaError("test") with self.tasks(): assemble_download(de.id) error = emailer.call_args[1]["message"] assert error == "Internal error. Please try again." # unicode mock_query.side_effect = SnubaError("\xfc") with self.tasks(): assemble_download(de.id) error = emailer.call_args[1]["message"] assert error == "Internal error. Please try again." mock_query.side_effect = RateLimitExceeded("test") with self.tasks(): assemble_download(de.id) error = emailer.call_args[1]["message"] assert ( error == "Query timeout. Please try again. If the problem persists try a smaller date range or fewer projects." ) mock_query.side_effect = QueryMemoryLimitExceeded("test") with self.tasks(): assemble_download(de.id) error = emailer.call_args[1]["message"] assert ( error == "Query timeout. Please try again. If the problem persists try a smaller date range or fewer projects." ) mock_query.side_effect = QueryExecutionTimeMaximum("test") with self.tasks(): assemble_download(de.id) error = emailer.call_args[1]["message"] assert ( error == "Query timeout. Please try again. If the problem persists try a smaller date range or fewer projects." ) mock_query.side_effect = QueryTooManySimultaneous("test") with self.tasks(): assemble_download(de.id) error = emailer.call_args[1]["message"] assert ( error == "Query timeout. Please try again. If the problem persists try a smaller date range or fewer projects." ) mock_query.side_effect = DatasetSelectionError("test") with self.tasks(): assemble_download(de.id) error = emailer.call_args[1]["message"] assert error == "Internal error. Your query failed to run." mock_query.side_effect = QueryConnectionFailed("test") with self.tasks(): assemble_download(de.id) error = emailer.call_args[1]["message"] assert error == "Internal error. Your query failed to run." mock_query.side_effect = QuerySizeExceeded("test") with self.tasks(): assemble_download(de.id) error = emailer.call_args[1]["message"] assert error == "Internal error. Your query failed to run." mock_query.side_effect = QueryExecutionError("test") with self.tasks(): assemble_download(de.id) error = emailer.call_args[1]["message"] assert error == "Internal error. Your query failed to run." mock_query.side_effect = SchemaValidationError("test") with self.tasks(): assemble_download(de.id) error = emailer.call_args[1]["message"] assert error == "Internal error. Your query failed to run." mock_query.side_effect = UnqualifiedQueryError("test") with self.tasks(): assemble_download(de.id) error = emailer.call_args[1]["message"] assert error == "Internal error. Your query failed to run."
def get(self, request): raise RateLimitExceeded()