|
13 | 13 | from enum import Enum |
14 | 14 | from tempfile import NamedTemporaryFile |
15 | 15 | from threading import Lock |
16 | | -from typing import Any, Callable, Dict, List, Optional, Type, Union |
| 16 | +from typing import Any, Callable, List, Optional, Type, Union, Dict |
17 | 17 | from urllib.parse import parse_qs, urlparse |
18 | 18 |
|
19 | 19 | import pytest |
|
24 | 24 | from databricks.sdk import WorkspaceClient |
25 | 25 | from databricks.sdk.core import Config |
26 | 26 | from databricks.sdk.environments import Cloud, DatabricksEnvironment |
27 | | -from databricks.sdk.errors.platform import (AlreadyExists, BadRequest, |
28 | | - InternalError, NotImplemented, |
29 | | - PermissionDenied, TooManyRequests) |
| 27 | +from databricks.sdk.errors.platform import ( |
| 28 | + AlreadyExists, |
| 29 | + BadRequest, |
| 30 | + InternalError, |
| 31 | + NotImplemented, |
| 32 | + PermissionDenied, |
| 33 | + TooManyRequests, |
| 34 | +) |
30 | 35 | from databricks.sdk.mixins.files import FallbackToDownloadUsingFilesApi |
31 | 36 | from databricks.sdk.mixins.files_utils import CreateDownloadUrlResponse |
32 | 37 | from tests.clock import FakeClock |
@@ -1662,6 +1667,7 @@ def processor() -> list: |
1662 | 1667 | request_json = request.json() |
1663 | 1668 | etags = {} |
1664 | 1669 |
|
| 1670 | + assert len(request_json["parts"]) > 0 |
1665 | 1671 | for part in request_json["parts"]: |
1666 | 1672 | etags[part["part_number"]] = part["etag"] |
1667 | 1673 |
|
@@ -1738,10 +1744,17 @@ def to_string(test_case: "MultipartUploadTestCase") -> str: |
1738 | 1744 | [ |
1739 | 1745 | # -------------------------- happy cases -------------------------- |
1740 | 1746 | MultipartUploadTestCase( |
1741 | | - "Multipart upload successful: single part", |
| 1747 | + "Multipart upload successful: single part because of small file", |
1742 | 1748 | content_size=1024 * 1024, # less than part size |
1743 | | - multipart_upload_part_size=10 * 1024 * 1024, |
| 1749 | + multipart_upload_min_stream_size=10 * 1024 * 1024, |
1744 | 1750 | expected_part_size=1024 * 1024, # chunk size is used |
| 1751 | + expected_single_shot_upload=True, |
| 1752 | + ), |
| 1753 | + MultipartUploadTestCase( |
| 1754 | + "Multipart upload successful: empty file", |
| 1755 | + content_size=0, # less than part size |
| 1756 | + multipart_upload_min_stream_size=100 * 1024 * 1024, # all files smaller than 100M goes to single-shot |
| 1757 | + expected_single_shot_upload=True, |
1745 | 1758 | ), |
1746 | 1759 | MultipartUploadTestCase( |
1747 | 1760 | "Multipart upload successful: multiple parts (aligned)", |
|
0 commit comments