Skip to content
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

[v2] Modifies botocore tests to use the defaults created in configprovider.py #9209

Merged
merged 2 commits into from
Jan 14, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 17 additions & 18 deletions awscli/botocore/args.py
Original file line number Diff line number Diff line change
Expand Up @@ -398,25 +398,24 @@ def _compute_request_compression_config(self, config_kwargs):
def _validate_min_compression_size(self, min_size):
min_allowed_min_size = 1
max_allowed_min_size = 1048576
if min_size is not None:
error_msg_base = (
f'Invalid value "{min_size}" for '
'request_min_compression_size_bytes.'
error_msg_base = (
f'Invalid value "{min_size}" for '
'request_min_compression_size_bytes.'
)
try:
min_size = int(min_size)
except (ValueError, TypeError):
msg = (
f'{error_msg_base} Value must be an integer. '
f'Received {type(min_size)} instead.'
)
try:
min_size = int(min_size)
except (ValueError, TypeError):
msg = (
f'{error_msg_base} Value must be an integer. '
f'Received {type(min_size)} instead.'
)
raise botocore.exceptions.InvalidConfigError(error_msg=msg)
if not min_allowed_min_size <= min_size <= max_allowed_min_size:
msg = (
f'{error_msg_base} Value must be between '
f'{min_allowed_min_size} and {max_allowed_min_size}.'
)
raise botocore.exceptions.InvalidConfigError(error_msg=msg)
raise botocore.exceptions.InvalidConfigError(error_msg=msg)
if not min_allowed_min_size <= min_size <= max_allowed_min_size:
msg = (
f'{error_msg_base} Value must be between '
f'{min_allowed_min_size} and {max_allowed_min_size}.'
)
raise botocore.exceptions.InvalidConfigError(error_msg=msg)

return min_size

Expand Down
2 changes: 1 addition & 1 deletion tests/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@
assert_url_equal, create_session, random_chars, temporary_file,
patch_load_service_model, ALL_SERVICES, BaseEnvVar, BaseSessionTest,
BaseClientDriverTest, StubbedSession, ClientHTTPStubber, SessionHTTPStubber,
IntegerRefresher, FreezeTime,
IntegerRefresher, FreezeTime, get_botocore_default_config_mapping
)
# S3transfer testing utilities that we want to preserve import statements for
# in s3transfer specific tests.
Expand Down
5 changes: 3 additions & 2 deletions tests/unit/botocore/docs/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@

from botocore.docs.bcdoc.restdoc import DocumentStructure

from tests import mock, unittest
from tests import get_botocore_default_config_mapping, mock, unittest
from botocore.compat import OrderedDict
from botocore.hooks import HierarchicalEmitter
from botocore.model import ServiceModel, OperationModel
Expand Down Expand Up @@ -101,11 +101,12 @@ def load_service_mock(*args, **kwargs):
'signatureVersions': ['v4']
}

default_config_mapping = get_botocore_default_config_mapping()
self.creator = ClientCreator(
loader=self.loader, endpoint_resolver=endpoint_resolver,
user_agent='user-agent', event_emitter=self.events,
exceptions_factory=mock.Mock(),
config_store=ConfigValueStore()
config_store=ConfigValueStore(mapping=default_config_mapping)
)

self.client = self.creator.create_client('myservice', 'us-east-1')
Expand Down
9 changes: 5 additions & 4 deletions tests/unit/botocore/test_args.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
import socket

import botocore.config
from tests import mock, unittest
from tests import get_botocore_default_config_mapping, mock, unittest

from botocore import args
from botocore import exceptions
Expand All @@ -29,7 +29,8 @@
class TestCreateClientArgs(unittest.TestCase):
def setUp(self):
self.event_emitter = mock.Mock(HierarchicalEmitter)
self.config_store = ConfigValueStore()
default_config_mapping = get_botocore_default_config_mapping()
self.config_store = ConfigValueStore(mapping=default_config_mapping)
user_agent_creator = UserAgentString(
platform_name=None,
platform_version=None,
Expand Down Expand Up @@ -321,11 +322,11 @@ def test_uses_client_config_over_config_store_max_attempts(self):
)['client_config']
self.assertEqual(config.retries['max_attempts'], 2)

def test_max_attempts_unset_if_retries_is_none(self):
def test_max_attempts_expected_if_retries_is_none(self):
config = self.call_get_client_args(
client_config=Config(retries=None)
)['client_config']
self.assertEqual(config.retries, {'mode': 'standard'})
self.assertEqual(config.retries, {'max_attempts': 3, 'mode': 'standard'})

def test_retry_mode_set_on_config_store(self):
self.config_store.set_config_variable('retry_mode', 'standard')
Expand Down
15 changes: 7 additions & 8 deletions tests/unit/botocore/test_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
# language governing permissions and limitations under the License.
import io
import botocore.config
from tests import mock, unittest
from tests import get_botocore_default_config_mapping, mock, unittest

import botocore
from botocore import utils
Expand Down Expand Up @@ -140,7 +140,8 @@ def load_service_mock(*args, **kwargs):
}
self.resolver.construct_endpoint.return_value = self.endpoint_data
self.resolver.get_available_endpoints.return_value = ['us-west-2']
self.config_store = ConfigValueStore()
default_config_mapping = get_botocore_default_config_mapping()
self.config_store = ConfigValueStore(mapping=default_config_mapping)

def tearDown(self):
self.endpoint_creator_patch.stop()
Expand Down Expand Up @@ -872,13 +873,11 @@ def test_can_register_standard_retry_mode(self):

def test_can_register_standard_retry_mode_from_config_store(self):
fake_env = {'AWS_RETRY_MODE': 'standard'}
config_store = ConfigValueStore(
mapping={
'retry_mode': ChainProvider([
EnvironmentProvider('AWS_RETRY_MODE', fake_env),
])
}
default_config_mapping = get_botocore_default_config_mapping()
default_config_mapping['retry_mode'] = ChainProvider(
[EnvironmentProvider('AWS_RETRY_MODE', fake_env)]
)
config_store = ConfigValueStore(mapping=default_config_mapping)
creator = self.create_client_creator(config_store=config_store)
with mock.patch('botocore.client.standard') as standard:
creator.create_client( 'myservice', 'us-west-2')
Expand Down
6 changes: 6 additions & 0 deletions tests/utils/botocore/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@
from botocore.compat import parse_qs
from botocore import utils
from botocore import credentials
from botocore.configprovider import create_botocore_default_config_mapping
from botocore.stub import Stubber


Expand Down Expand Up @@ -104,6 +105,11 @@ def create_session(**kwargs):
return session


def get_botocore_default_config_mapping():
session = botocore.session.get_session()
return create_botocore_default_config_mapping(session)


@contextlib.contextmanager
def temporary_file(mode):
"""This is a cross platform temporary file creation.
Expand Down
Loading