-
Notifications
You must be signed in to change notification settings - Fork 131
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Internal] Add unit tests for retriable requests #879
[Internal] Add unit tests for retriable requests #879
Conversation
content_length = int(h.headers.get('Content-Length', 0)) | ||
if content_length > 0: | ||
received_data.append(h.rfile.read(content_length)) | ||
def get_data(self): |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Test cases are reused, so we need to construct a fresh data object every time.
assert received_requests == [test_case._expected_result for _ in range(expected_attempts_made)] | ||
|
||
|
||
class MockSession: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This mock session reads all the input stream before failing.
If integration tests don't run automatically, an authorized user can run them manually by following the instructions below: Trigger: Inputs:
Checks will be approved automatically on success. |
Approved, the downstream issue is not related to this PR. |
### Bug Fixes * Fix docs generation when two services have the same name ([#872](#872)). ### Internal Changes * Add CICD environment to the User Agent ([#866](#866)). * Add unit tests for retriable requests ([#879](#879)). * Extract "before retry" handler, use it to rewind the stream ([#878](#878)). * Update Model Serving `http_request` mixin to correctly use the underlying API. ([#876](#876)). ### API Changes: * Added [a.budget_policy](https://databricks-sdk-py.readthedocs.io/en/latest/account/budget_policy.html) account-level service. * Added [a.enable_ip_access_lists](https://databricks-sdk-py.readthedocs.io/en/latest/account/account_settings/enable_ip_access_lists.html) account-level service. * Added `review_state`, `reviews` and `runner_collaborators` fields for `databricks.sdk.service.cleanrooms.CleanRoomAssetNotebook`. * Added `statement_id` field for `databricks.sdk.service.dashboards.QueryAttachment`. * Added `effective_performance_target` field for `databricks.sdk.service.jobs.BaseRun`. * Added `performance_target` field for `databricks.sdk.service.jobs.CreateJob`. * Added `performance_target` field for `databricks.sdk.service.jobs.JobSettings`. * Added `effective_performance_target` field for `databricks.sdk.service.jobs.Run`. * Added `performance_target` field for `databricks.sdk.service.jobs.RunNow`. * Added `effective_performance_target` field for `databricks.sdk.service.jobs.RunTask`. * Added `run_as_repl` field for `databricks.sdk.service.jobs.SparkJarTask`. * Added `user_authorized_scopes` field for `databricks.sdk.service.oauth2.CreateCustomAppIntegration`. * Added `user_authorized_scopes` field for `databricks.sdk.service.oauth2.GetCustomAppIntegrationOutput`. * Added `user_authorized_scopes` field for `databricks.sdk.service.oauth2.UpdateCustomAppIntegration`. * Added `contents` field for `databricks.sdk.service.serving.HttpRequestResponse`. * Added . * Added . * Added . * Changed `create()` method for [w.serving_endpoints](https://databricks-sdk-py.readthedocs.io/en/latest/workspace/serving_endpoints.html) workspace-level service with new required argument order. * Changed `http_request()` method for [w.serving_endpoints](https://databricks-sdk-py.readthedocs.io/en/latest/workspace/serving_endpoints.html) workspace-level service to type `http_request()` method for [w.serving_endpoints](https://databricks-sdk-py.readthedocs.io/en/latest/workspace/serving_endpoints.html) workspace-level service. * Changed `http_request()` method for [w.serving_endpoints](https://databricks-sdk-py.readthedocs.io/en/latest/workspace/serving_endpoints.html) workspace-level service to return `databricks.sdk.service.serving.HttpRequestResponse` dataclass. * Changed `config` field for `databricks.sdk.service.serving.CreateServingEndpoint` to no longer be required. * Removed `securable_kind` field for `databricks.sdk.service.catalog.CatalogInfo`. * Removed `securable_kind` field for `databricks.sdk.service.catalog.ConnectionInfo`. * Removed `status_code` and `text` fields for `databricks.sdk.service.serving.ExternalFunctionResponse`. OpenAPI SHA: 840c660106f820a1a5dff931d51fa5f65cd9fdd9, Date: 2025-01-28
### Bug Fixes * Fix docs generation when two services have the same name ([#872](#872)). ### Internal Changes * Add CICD environment to the User Agent ([#866](#866)). * Add unit tests for retriable requests ([#879](#879)). * Extract "before retry" handler, use it to rewind the stream ([#878](#878)). * Update Model Serving `http_request` mixin to correctly use the underlying API. ([#876](#876)). ### Backward Incompatible Changes * Changed `create()` method for [w.serving_endpoints](https://databricks-sdk-py.readthedocs.io/en/latest/workspace/serving/serving_endpoints.html) workspace-level service with new required argument order. * Changed `http_request()` method for [w.serving_endpoints](https://databricks-sdk-py.readthedocs.io/en/latest/workspace/serving/serving_endpoints.html) workspace-level service to type `http_request()` method for [w.serving_endpoints](https://databricks-sdk-py.readthedocs.io/en/latest/workspace/serving/serving_endpoints.html) workspace-level service. * Changed `http_request()` method for [w.serving_endpoints](https://databricks-sdk-py.readthedocs.io/en/latest/workspace/serving/serving_endpoints.html) workspace-level service to return `databricks.sdk.service.serving.HttpRequestResponse` dataclass. * Changed `config` field for `databricks.sdk.service.serving.CreateServingEndpoint` to no longer be required. * Removed `securable_kind` field for `databricks.sdk.service.catalog.CatalogInfo`. * Removed `securable_kind` field for `databricks.sdk.service.catalog.ConnectionInfo`. * Removed `status_code` and `text` fields for `databricks.sdk.service.serving.ExternalFunctionResponse`. ### API Changes: * Added [a.budget_policy](https://databricks-sdk-py.readthedocs.io/en/latest/account/billing/budget_policy.html) account-level service. * Added [a.enable_ip_access_lists](https://databricks-sdk-py.readthedocs.io/en/latest/account/settings/settings/enable_ip_access_lists.html) account-level service. * Added `review_state`, `reviews` and `runner_collaborators` fields for `databricks.sdk.service.cleanrooms.CleanRoomAssetNotebook`. * Added `statement_id` field for `databricks.sdk.service.dashboards.QueryAttachment`. * Added `effective_performance_target` field for `databricks.sdk.service.jobs.BaseRun`. * Added `performance_target` field for `databricks.sdk.service.jobs.CreateJob`. * Added `performance_target` field for `databricks.sdk.service.jobs.JobSettings`. * Added `effective_performance_target` field for `databricks.sdk.service.jobs.Run`. * Added `performance_target` field for `databricks.sdk.service.jobs.RunNow`. * Added `effective_performance_target` field for `databricks.sdk.service.jobs.RunTask`. * Added `run_as_repl` field for `databricks.sdk.service.jobs.SparkJarTask`. * Added `user_authorized_scopes` field for `databricks.sdk.service.oauth2.CreateCustomAppIntegration`. * Added `user_authorized_scopes` field for `databricks.sdk.service.oauth2.GetCustomAppIntegrationOutput`. * Added `user_authorized_scopes` field for `databricks.sdk.service.oauth2.UpdateCustomAppIntegration`. * Added `contents` field for `databricks.sdk.service.serving.HttpRequestResponse`. * Added `clean_room` enum value for `databricks.sdk.service.catalog.SecurableType`. * Added `budget_policy_limit_exceeded` enum value for `databricks.sdk.service.jobs.TerminationCodeCode`. * Added `arclight_azure_exchange_token_with_user_delegation_key` enum value for `databricks.sdk.service.settings.TokenType`. OpenAPI SHA: 840c660106f820a1a5dff931d51fa5f65cd9fdd9, Date: 2025-01-28 --------- Signed-off-by: Renaud Hartert <renaud.hartert@databricks.com>
What changes are proposed in this pull request?
Improving tests for retriable requests, ensuring we're covering retries from error response and connection exceptions.
Now we have one unified test which is parameterized by:
How is this tested?
This PR only changes tests.