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

1.92.0: pytest fails in 6 units #3677

Open
kloczek opened this issue Nov 9, 2024 · 0 comments
Open

1.92.0: pytest fails in 6 units #3677

kloczek opened this issue Nov 9, 2024 · 0 comments
Labels
stage/needs-triage Automatically applied to new issues and PRs, indicating they haven't been looked at.

Comments

@kloczek
Copy link

kloczek commented Nov 9, 2024

Description

Looks like pytest fails in 6 units.

Steps to reproduce

I'm packaging your module as an rpm package so I'm using the typical PEP517 based build, install and test cycle used on building packages from non-root account.

  • python3 -sBm build -w --no-isolation
  • because I'm calling build with --no-isolation I'm using during all processes only locally installed modules
  • install .whl file in </install/prefix> using installer module
  • run pytest with $PYTHONPATH pointing to sitearch and sitelib inside </install/prefix>
  • build is performed in env which is cut off from access to the public network (pytest is executed with -m "not network")

Observed result

Here is pytest output:
+ PYTHONPATH=/home/tkloczko/rpmbuild/BUILDROOT/python-aws-sam-translator-1.92.0-2.fc37.x86_64/usr/lib64/python3.10/site-packages:/home/tkloczko/rpmbuild/BUILDROOT/python-aws-sam-translator-1.92.0-2.fc37.x86_64/usr/lib/python3.10/site-packages
+ /usr/bin/pytest -ra -m 'not network' --ignore tests/bin/test_public_interface.py
==================================================================================== test session starts ====================================================================================
platform linux -- Python 3.10.14, pytest-8.2.2, pluggy-1.5.0
rootdir: /home/tkloczko/rpmbuild/BUILD/serverless-application-model-1.92.0
configfile: pytest.ini
testpaths: tests
collected 3984 items

tests/feature_toggle/test_dialup.py ..............                                                                                                                                    [  0%]
tests/feature_toggle/test_feature_toggle.py .....................................                                                                                                     [  1%]
tests/internal/test_deprecation_control.py .                                                                                                                                          [  1%]
tests/intrinsics/test_actions.py ............................................................................                                                                         [  3%]
tests/intrinsics/test_resolver.py .....................                                                                                                                               [  3%]
tests/intrinsics/test_resource_refs.py ............                                                                                                                                   [  4%]
tests/metrics/test_method_decorator.py .........                                                                                                                                      [  4%]
tests/metrics/test_metrics.py .................                                                                                                                                       [  4%]
tests/model/api/test_api_generator.py ....                                                                                                                                            [  4%]
tests/model/api/test_http_api_generator.py ............................                                                                                                               [  5%]
tests/model/connector_profiles/test_profile.py .............                                                                                                                          [  5%]
tests/model/eventsources/test_api_event_source.py ......                                                                                                                              [  5%]
tests/model/eventsources/test_cloudwatch_event_source.py ..                                                                                                                           [  6%]
tests/model/eventsources/test_cloudwatchlogs_event_source.py ....                                                                                                                     [  6%]
tests/model/eventsources/test_documentdb_event_source.py ...........                                                                                                                  [  6%]
tests/model/eventsources/test_eventbridge_rule_source.py ...................                                                                                                          [  6%]
tests/model/eventsources/test_mq_event_source.py .......                                                                                                                              [  7%]
tests/model/eventsources/test_msk_event_source.py ...                                                                                                                                 [  7%]
tests/model/eventsources/test_schedule_event_source.py ................                                                                                                               [  7%]
tests/model/eventsources/test_schedulev2_event_source.py ...........................                                                                                                  [  8%]
tests/model/eventsources/test_self_managed_kafka_event_source.py ...................                                                                                                  [  8%]
tests/model/eventsources/test_sns_event_source.py ........                                                                                                                            [  8%]
tests/model/stepfunctions/test_api_event.py ......                                                                                                                                    [  9%]
tests/model/stepfunctions/test_cloudwatchevents_event.py ............                                                                                                                 [  9%]
tests/model/stepfunctions/test_eventbridge_rule_source.py ....                                                                                                                        [  9%]
tests/model/stepfunctions/test_schedule_event.py ...................                                                                                                                  [  9%]
tests/model/stepfunctions/test_state_machine_generator.py ...............                                                                                                             [ 10%]
tests/model/tags/test_resource_tagging.py ...                                                                                                                                         [ 10%]
tests/model/test_api.py .............                                                                                                                                                 [ 10%]
tests/model/test_api_v2.py .................                                                                                                                                          [ 11%]
tests/model/test_exceptions.py ......                                                                                                                                                 [ 11%]
tests/model/test_resource.py ..                                                                                                                                                       [ 11%]
tests/model/test_resource_policies.py ......................................                                                                                                          [ 12%]
tests/model/test_resource_validator.py ......                                                                                                                                         [ 12%]
tests/model/test_sam_resources.py ................................................                                                                                                    [ 13%]
tests/openapi/test_openapi.py ..............................................                                                                                                          [ 14%]
tests/parser/test_parser.py .....                                                                                                                                                     [ 14%]
tests/plugins/api/test_default_definition_body_plugin.py ...                                                                                                                          [ 14%]
tests/plugins/api/test_implicit_api_plugin.py .............................................                                                                                           [ 16%]
tests/plugins/application/test_serverless_app_plugin.py ..............FFFF......F                                                                                                     [ 16%]
tests/plugins/globals/test_globals.py ............................................                                                                                                    [ 17%]
tests/plugins/globals/test_globals_plugin.py ...                                                                                                                                      [ 17%]
tests/plugins/policies/test_policy_templates_plugin.py ...........                                                                                                                    [ 18%]
tests/policy_template_processor/test_processor.py ..................                                                                                                                  [ 18%]
tests/policy_template_processor/test_schema.py ...............                                                                                                                        [ 19%]
tests/policy_template_processor/test_template.py ...............                                                                                                                      [ 19%]
tests/schema/test_validate_schema.py ................................................................................................................................................ [ 23%]
..................................................................................................................................................................................... [ 27%]
..................................................................................................................................................................................... [ 32%]
..........................................................................................................................                                                            [ 35%]
tests/sdk/test_parameter.py ............                                                                                                                                              [ 35%]
tests/sdk/test_resource.py .......                                                                                                                                                    [ 35%]
tests/sdk/test_template.py ............                                                                                                                                               [ 35%]
tests/swagger/test_swagger.py ........................................................................................................                                                [ 38%]
tests/test_import.py ............................................................................................................................................................     [ 42%]
tests/test_intrinsics.py ............................                                                                                                                                 [ 43%]
tests/test_model.py .............................                                                                                                                                     [ 43%]
tests/test_plugins.py ..........................                                                                                                                                      [ 44%]
tests/test_types.py ............                                                                                                                                                      [ 44%]
tests/translator/model/preferences/test_deployment_preference.py ........                                                                                                             [ 45%]
tests/translator/model/preferences/test_deployment_preference_collection.py ..........................                                                                                [ 45%]
tests/translator/model/test_update_policy.py ..                                                                                                                                       [ 45%]
tests/translator/test_api_resource.py ....                                                                                                                                            [ 45%]
tests/translator/test_arn_generator.py ............                                                                                                                                   [ 46%]
tests/translator/test_function_resources.py ...............................                                                                                                           [ 46%]
tests/translator/test_logical_id_generator.py .................                                                                                                                       [ 47%]
tests/translator/test_managed_policies_translator.py .                                                                                                                                [ 47%]
tests/translator/test_resource_level_attributes.py ...........................................................................................................................        [ 50%]
tests/translator/test_translator.py ................................................................................................................................................. [ 54%]
..................................................................................................................................................................................... [ 58%]
..................................................................................................................................................................................... [ 63%]
..................................................................................................................................................................................... [ 67%]
..................................................................................................................................................................................... [ 72%]
..................................................................................................................................................................................... [ 76%]
..................................................................................................................................................................................... [ 81%]
..................................................................................................................................................................................... [ 85%]
..................................................................................................................................................................................... [ 90%]
..................................................................................................................................................................................... [ 95%]
..................................................................................                                                                                                    [ 97%]
tests/unit/model/preferences/test_deployment_preference_collection.py .....                                                                                                           [ 97%]
tests/unit/test_region_configuration.py .....F..........                                                                                                                              [ 97%]
tests/unit/translator/test_arn_generator.py ..............                                                                                                                            [ 97%]
tests/utils/test_dynamic_references.py ........                                                                                                                                       [ 98%]
tests/utils/test_py27hash_fix.py ...................................................................                                                                                  [ 99%]
tests/utils/test_utils.py .......                                                                                                                                                     [100%]

========================================================================================= FAILURES ==========================================================================================
__________________________________________________ TestServerlessAppPlugin_on_before_transform_template_translate.test_sar_success_one_app __________________________________________________

self = <tests.plugins.application.test_serverless_app_plugin.TestServerlessAppPlugin_on_before_transform_template_translate testMethod=test_sar_success_one_app>
SamTemplateMock = <MagicMock name='SamTemplate' id='139904562117456'>

    @patch("samtranslator.plugins.application.serverless_app_plugin.SamTemplate")
    def test_sar_success_one_app(self, SamTemplateMock):
        template_dict = {"a": "b"}
        app_resources = [
            ("id1", ApplicationResource(app_id="id1", semver="1.0.0", location=True)),
        ]

        sam_template = Mock()
        SamTemplateMock.return_value = sam_template
        sam_template.iterate = Mock()
        sam_template.iterate.return_value = app_resources

        client = Mock()
        client.create_cloud_formation_template = Mock()
        client.create_cloud_formation_template.return_value = {"TemplateUrl": "/URL", "Status": STATUS_ACTIVE}
        self.plugin = ServerlessAppPlugin(sar_client=client)
        self.plugin._can_process_application = Mock()
        self.plugin._can_process_application.return_value = True
>       self.plugin.on_before_transform_template(template_dict)

tests/plugins/application/test_serverless_app_plugin.py:311:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
samtranslator/metrics/method_decorator.py:117: in wrapper_cw_timer
    exec_result = func(*args, **kwargs)
samtranslator/plugins/application/serverless_app_plugin.py:150: in on_before_transform_template
    if not RegionConfiguration.is_service_supported("serverlessrepo"):  # type: ignore[no-untyped-call]
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

cls = <class 'samtranslator.region_configuration.RegionConfiguration'>, service = 'serverlessrepo', region = None

    @classmethod
    def is_service_supported(cls, service, region=None):  # type: ignore[no-untyped-def]
        """
        Not all services are supported in all regions.  This method returns whether a given
        service is supported in a given region.  If no region is specified, the current region
        (as identified by boto3) is used.
        https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/

        :param service: service code (string used to obtain a boto3 client for the service)
        :param region: region identifier (e.g., us-east-1)
        :return: True, if the service is supported in the region
        """

        # Attempt to re-use an existing session if present.
        session = boto3.Session() if not boto3.DEFAULT_SESSION else boto3.DEFAULT_SESSION

        if not region:
            # get the current region
            region = session.region_name

            # need to handle when region is None so that it won't break
            if region is None:
                if ArnGenerator.BOTO_SESSION_REGION_NAME is not None:
                    region = ArnGenerator.BOTO_SESSION_REGION_NAME
                else:
>                   raise NoRegionFound("AWS Region cannot be found")
E                   samtranslator.translator.arn_generator.NoRegionFound: AWS Region cannot be found

samtranslator/region_configuration.py:50: NoRegionFound
_________________________________________ TestServerlessAppPlugin_on_before_transform_template_translate.test_sar_throttling_doesnt_stop_processing _________________________________________

self = <tests.plugins.application.test_serverless_app_plugin.TestServerlessAppPlugin_on_before_transform_template_translate testMethod=test_sar_throttling_doesnt_stop_processing>
SamTemplateMock = <MagicMock name='SamTemplate' id='139904527800048'>

    @patch("samtranslator.plugins.application.serverless_app_plugin.SamTemplate")
    def test_sar_throttling_doesnt_stop_processing(self, SamTemplateMock):
        client = Mock()
        client.create_cloud_formation_template = Mock()
        client.create_cloud_formation_template.side_effect = ClientError(
            {"Error": {"Code": "TooManyRequestsException"}}, "CreateCloudFormationTemplate"
        )

        app_resources = [
            ("id1", ApplicationResource(app_id="id1", semver="1.0.0", location=True)),
        ]

        sam_template = Mock()
        SamTemplateMock.return_value = sam_template
        sam_template.iterate = Mock()
        sam_template.iterate.return_value = app_resources

        self.plugin = ServerlessAppPlugin(sar_client=client)
        self.plugin._can_process_application = Mock()
        self.plugin._can_process_application.return_value = True
        self.plugin._get_sleep_time_sec = Mock()
        self.plugin._get_sleep_time_sec.return_value = 0.02
        self.plugin.TEMPLATE_WAIT_TIMEOUT_SECONDS = 1.0

>       self.plugin.on_before_transform_template({})

tests/plugins/application/test_serverless_app_plugin.py:261:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
samtranslator/metrics/method_decorator.py:117: in wrapper_cw_timer
    exec_result = func(*args, **kwargs)
samtranslator/plugins/application/serverless_app_plugin.py:150: in on_before_transform_template
    if not RegionConfiguration.is_service_supported("serverlessrepo"):  # type: ignore[no-untyped-call]
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

cls = <class 'samtranslator.region_configuration.RegionConfiguration'>, service = 'serverlessrepo', region = None

    @classmethod
    def is_service_supported(cls, service, region=None):  # type: ignore[no-untyped-def]
        """
        Not all services are supported in all regions.  This method returns whether a given
        service is supported in a given region.  If no region is specified, the current region
        (as identified by boto3) is used.
        https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/

        :param service: service code (string used to obtain a boto3 client for the service)
        :param region: region identifier (e.g., us-east-1)
        :return: True, if the service is supported in the region
        """

        # Attempt to re-use an existing session if present.
        session = boto3.Session() if not boto3.DEFAULT_SESSION else boto3.DEFAULT_SESSION

        if not region:
            # get the current region
            region = session.region_name

            # need to handle when region is None so that it won't break
            if region is None:
                if ArnGenerator.BOTO_SESSION_REGION_NAME is not None:
                    region = ArnGenerator.BOTO_SESSION_REGION_NAME
                else:
>                   raise NoRegionFound("AWS Region cannot be found")
E                   samtranslator.translator.arn_generator.NoRegionFound: AWS Region cannot be found

samtranslator/region_configuration.py:50: NoRegionFound
_______________________________________________ TestServerlessAppPlugin_on_before_transform_template_translate.test_sleep_between_sar_checks ________________________________________________

self = <tests.plugins.application.test_serverless_app_plugin.TestServerlessAppPlugin_on_before_transform_template_translate testMethod=test_sleep_between_sar_checks>
SamTemplateMock = <MagicMock name='SamTemplate' id='139904526040560'>

    @patch("samtranslator.plugins.application.serverless_app_plugin.SamTemplate")
    def test_sleep_between_sar_checks(self, SamTemplateMock):
        template_dict = {"a": "b"}
        client = Mock()

        app_resources = [
            ("id1", ApplicationResource(app_id="id1", semver="1.0.0", location=True)),
        ]

        sam_template = Mock()
        SamTemplateMock.return_value = sam_template
        sam_template.iterate = Mock()
        sam_template.iterate.return_value = app_resources
        client.create_cloud_formation_template = Mock()
        client.create_cloud_formation_template.side_effect = [
            ClientError({"Error": {"Code": "TooManyRequestsException"}}, "CreateCloudFormationTemplate"),
            {"TemplateUrl": "/URL", "Status": STATUS_ACTIVE},
        ]
        self.plugin._can_process_application = Mock()
        self.plugin._can_process_application.return_value = True
        self.plugin = ServerlessAppPlugin(sar_client=client, wait_for_template_active_status=True, validate_only=False)
        self.plugin._get_sleep_time_sec = Mock()
        self.plugin._get_sleep_time_sec.return_value = 0.001
>       self.plugin.on_before_transform_template(template_dict)

tests/plugins/application/test_serverless_app_plugin.py:338:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
samtranslator/metrics/method_decorator.py:117: in wrapper_cw_timer
    exec_result = func(*args, **kwargs)
samtranslator/plugins/application/serverless_app_plugin.py:150: in on_before_transform_template
    if not RegionConfiguration.is_service_supported("serverlessrepo"):  # type: ignore[no-untyped-call]
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

cls = <class 'samtranslator.region_configuration.RegionConfiguration'>, service = 'serverlessrepo', region = None

    @classmethod
    def is_service_supported(cls, service, region=None):  # type: ignore[no-untyped-def]
        """
        Not all services are supported in all regions.  This method returns whether a given
        service is supported in a given region.  If no region is specified, the current region
        (as identified by boto3) is used.
        https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/

        :param service: service code (string used to obtain a boto3 client for the service)
        :param region: region identifier (e.g., us-east-1)
        :return: True, if the service is supported in the region
        """

        # Attempt to re-use an existing session if present.
        session = boto3.Session() if not boto3.DEFAULT_SESSION else boto3.DEFAULT_SESSION

        if not region:
            # get the current region
            region = session.region_name

            # need to handle when region is None so that it won't break
            if region is None:
                if ArnGenerator.BOTO_SESSION_REGION_NAME is not None:
                    region = ArnGenerator.BOTO_SESSION_REGION_NAME
                else:
>                   raise NoRegionFound("AWS Region cannot be found")
E                   samtranslator.translator.arn_generator.NoRegionFound: AWS Region cannot be found

samtranslator/region_configuration.py:50: NoRegionFound
_________________________________________ TestServerlessAppPlugin_on_before_transform_template_translate.test_unexpected_sar_error_stops_processing _________________________________________

self = <tests.plugins.application.test_serverless_app_plugin.TestServerlessAppPlugin_on_before_transform_template_translate testMethod=test_unexpected_sar_error_stops_processing>
SamTemplateMock = <MagicMock name='SamTemplate' id='139904526523344'>

    @patch("samtranslator.plugins.application.serverless_app_plugin.SamTemplate")
    def test_unexpected_sar_error_stops_processing(self, SamTemplateMock):
        template_dict = {"a": "b"}
        app_resources = [
            ("id1", ApplicationResource(app_id="id1", semver="1.0.0", location=True)),
        ]

        sam_template = Mock()
        SamTemplateMock.return_value = sam_template
        sam_template.iterate = Mock()
        sam_template.iterate.return_value = app_resources

        client = Mock()
        client.create_cloud_formation_template.side_effect = ClientError(
            {"Error": {"Code": "BadBadError"}}, "CreateCloudFormationTemplate"
        )
        self.plugin = ServerlessAppPlugin(sar_client=client)
        self.plugin._can_process_application = Mock()
        self.plugin._can_process_application.return_value = True

        with self.assertRaises(ClientError):
>           self.plugin.on_before_transform_template(template_dict)

tests/plugins/application/test_serverless_app_plugin.py:291:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
samtranslator/metrics/method_decorator.py:117: in wrapper_cw_timer
    exec_result = func(*args, **kwargs)
samtranslator/plugins/application/serverless_app_plugin.py:150: in on_before_transform_template
    if not RegionConfiguration.is_service_supported("serverlessrepo"):  # type: ignore[no-untyped-call]
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

    @classmethod
    def is_service_supported(cls, service, region=None):  # type: ignore[no-untyped-def]
        """
        Not all services are supported in all regions.  This method returns whether a given
        service is supported in a given region.  If no region is specified, the current region
        (as identified by boto3) is used.
        https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/

        :param service: service code (string used to obtain a boto3 client for the service)
        :param region: region identifier (e.g., us-east-1)
        :return: True, if the service is supported in the region
        """

        # Attempt to re-use an existing session if present.
        session = boto3.Session() if not boto3.DEFAULT_SESSION else boto3.DEFAULT_SESSION

        if not region:
            # get the current region
            region = session.region_name

            # need to handle when region is None so that it won't break
            if region is None:
                if ArnGenerator.BOTO_SESSION_REGION_NAME is not None:
                    region = ArnGenerator.BOTO_SESSION_REGION_NAME
                else:
>                   raise NoRegionFound("AWS Region cannot be found")
E                   samtranslator.translator.arn_generator.NoRegionFound: AWS Region cannot be found

samtranslator/region_configuration.py:50: NoRegionFound
___________________________________ TestServerlessAppPlugin_on_before_and_on_after_transform_template.test_time_limit_exceeds_between_combined_sar_calls ____________________________________

self = <tests.plugins.application.test_serverless_app_plugin.TestServerlessAppPlugin_on_before_and_on_after_transform_template testMethod=test_time_limit_exceeds_between_combined_sar_calls>
SamTemplateMock = <MagicMock name='SamTemplate' id='139904526268592'>

    @patch("samtranslator.plugins.application.serverless_app_plugin.SamTemplate")
    def test_time_limit_exceeds_between_combined_sar_calls(self, SamTemplateMock):
        template_dict = {"a": "b"}
        app_resources = [
            ("id1", ApplicationResource(app_id="id1", semver="1.0.0", location=True)),
        ]

        sam_template = Mock()
        SamTemplateMock.return_value = sam_template
        sam_template.iterate = Mock()
        sam_template.iterate.return_value = app_resources

        client = Mock()
        client.get_cloud_formation_template = Mock()
        client.get_cloud_formation_template.side_effect = [
            ClientError({"Error": {"Code": "TooManyRequestsException"}}, "GetCloudFormationTemplate"),
            {"Status": STATUS_ACTIVE},
        ]
        client.create_cloud_formation_template = Mock()
        client.create_cloud_formation_template.side_effect = [
            ClientError({"Error": {"Code": "TooManyRequestsException"}}, "CreateCloudFormationTemplate"),
            {"TemplateUrl": "/URL", "Status": STATUS_ACTIVE},
        ]
        plugin = ServerlessAppPlugin(sar_client=client, wait_for_template_active_status=True, validate_only=False)
        plugin._get_sleep_time_sec = Mock()
        plugin._get_sleep_time_sec.return_value = 0.04
        plugin._in_progress_templates = [("appid", "template"), ("appid2", "template2")]
        plugin.TEMPLATE_WAIT_TIMEOUT_SECONDS = 0.08

>       plugin.on_before_transform_template(template_dict)

tests/plugins/application/test_serverless_app_plugin.py:487:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
samtranslator/metrics/method_decorator.py:117: in wrapper_cw_timer
    exec_result = func(*args, **kwargs)
samtranslator/plugins/application/serverless_app_plugin.py:150: in on_before_transform_template
    if not RegionConfiguration.is_service_supported("serverlessrepo"):  # type: ignore[no-untyped-call]
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

cls = <class 'samtranslator.region_configuration.RegionConfiguration'>, service = 'serverlessrepo', region = None

    @classmethod
    def is_service_supported(cls, service, region=None):  # type: ignore[no-untyped-def]
        """
        Not all services are supported in all regions.  This method returns whether a given
        service is supported in a given region.  If no region is specified, the current region
        (as identified by boto3) is used.
        https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/

        :param service: service code (string used to obtain a boto3 client for the service)
        :param region: region identifier (e.g., us-east-1)
        :return: True, if the service is supported in the region
        """

        # Attempt to re-use an existing session if present.
        session = boto3.Session() if not boto3.DEFAULT_SESSION else boto3.DEFAULT_SESSION

        if not region:
            # get the current region
            region = session.region_name

            # need to handle when region is None so that it won't break
            if region is None:
                if ArnGenerator.BOTO_SESSION_REGION_NAME is not None:
                    region = ArnGenerator.BOTO_SESSION_REGION_NAME
                else:
>                   raise NoRegionFound("AWS Region cannot be found")
E                   samtranslator.translator.arn_generator.NoRegionFound: AWS Region cannot be found

samtranslator/region_configuration.py:50: NoRegionFound
_____________________________________________________________ TestRegionConfiguration.test_is_service_supported_positive_4_ec2 ______________________________________________________________

a = (<test_region_configuration.TestRegionConfiguration testMethod=test_is_service_supported_positive_4_ec2>,), kw = {}

    @wraps(func)
    def standalone_func(*a, **kw):
>       return func(*(a + p.args), **p.kwargs, **kw)

/usr/lib/python3.10/site-packages/parameterized/parameterized.py:544:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
tests/unit/test_region_configuration.py:46: in test_is_service_supported_positive
    self.assertTrue(RegionConfiguration.is_service_supported(service, region))
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

cls = <class 'samtranslator.region_configuration.RegionConfiguration'>, service = 'ec2', region = None

    @classmethod
    def is_service_supported(cls, service, region=None):  # type: ignore[no-untyped-def]
        """
        Not all services are supported in all regions.  This method returns whether a given
        service is supported in a given region.  If no region is specified, the current region
        (as identified by boto3) is used.
        https://aws.amazon.com/about-aws/global-infrastructure/regional-product-services/

        :param service: service code (string used to obtain a boto3 client for the service)
        :param region: region identifier (e.g., us-east-1)
        :return: True, if the service is supported in the region
        """

        # Attempt to re-use an existing session if present.
        session = boto3.Session() if not boto3.DEFAULT_SESSION else boto3.DEFAULT_SESSION

        if not region:
            # get the current region
            region = session.region_name

            # need to handle when region is None so that it won't break
            if region is None:
                if ArnGenerator.BOTO_SESSION_REGION_NAME is not None:
                    region = ArnGenerator.BOTO_SESSION_REGION_NAME
                else:
>                   raise NoRegionFound("AWS Region cannot be found")
E                   samtranslator.translator.arn_generator.NoRegionFound: AWS Region cannot be found

samtranslator/region_configuration.py:50: NoRegionFound
================================================================================== short test summary info ==================================================================================
FAILED tests/plugins/application/test_serverless_app_plugin.py::TestServerlessAppPlugin_on_before_transform_template_translate::test_sar_success_one_app - samtranslator.translator.arn_generator.NoRegionFound: AWS Region cannot be found
FAILED tests/plugins/application/test_serverless_app_plugin.py::TestServerlessAppPlugin_on_before_transform_template_translate::test_sar_throttling_doesnt_stop_processing - samtranslator.translator.arn_generator.NoRegionFound: AWS Region cannot be found
FAILED tests/plugins/application/test_serverless_app_plugin.py::TestServerlessAppPlugin_on_before_transform_template_translate::test_sleep_between_sar_checks - samtranslator.translator.arn_generator.NoRegionFound: AWS Region cannot be found
FAILED tests/plugins/application/test_serverless_app_plugin.py::TestServerlessAppPlugin_on_before_transform_template_translate::test_unexpected_sar_error_stops_processing - samtranslator.translator.arn_generator.NoRegionFound: AWS Region cannot be found
FAILED tests/plugins/application/test_serverless_app_plugin.py::TestServerlessAppPlugin_on_before_and_on_after_transform_template::test_time_limit_exceeds_between_combined_sar_calls - samtranslator.translator.arn_generator.NoRegionFound: AWS Region cannot be found
FAILED tests/unit/test_region_configuration.py::TestRegionConfiguration::test_is_service_supported_positive_4_ec2 - samtranslator.translator.arn_generator.NoRegionFound: AWS Region cannot be found
======================================================================== 6 failed, 3978 passed in 339.30s (0:05:39) =========================================================================

Expected result

pytest should not fail.

Additional environment details

List of installed modules in build env:
Package                       Version
----------------------------- -----------
alabaster                     0.7.16
annotated-types               0.7.0
attrs                         24.2.0
babel                         2.16.0
boto3                         1.35.56
botocore                      1.35.56
build                         1.2.2.post1
charset-normalizer            3.4.0
defusedxml                    0.7.1
distro                        1.9.0
docutils                      0.21.2
exceptiongroup                1.1.3
imagesize                     1.4.1
importlib_metadata            8.5.0
iniconfig                     2.0.0
installer                     0.7.0
Jinja2                        3.1.4
jmespath                      1.0.1
jsonschema                    4.20.0
jsonschema-specifications     2024.10.1
MarkupSafe                    3.0.2
packaging                     24.0
parameterized                 0.9.0
pluggy                        1.5.0
pydantic                      2.9.2
pydantic_core                 2.23.4
Pygments                      2.18.0
pyproject_hooks               1.2.0
pytest                        8.2.2
python-dateutil               2.9.0.post0
PyYAML                        6.0.2
referencing                   0.32.0
requests                      2.32.3
rpds-py                       0.21.0
s3transfer                    0.10.3
setuptools                    75.1.0
snowballstemmer               2.2.0
Sphinx                        8.1.3
sphinxcontrib-applehelp       2.0.0
sphinxcontrib-devhelp         1.0.6
sphinxcontrib-htmlhelp        2.1.0
sphinxcontrib-jsmath          1.0.1
sphinxcontrib-qthelp          2.0.0
sphinxcontrib-serializinghtml 2.0.0
tokenize_rt                   6.1.0
tomli                         2.0.1
typing_extensions             4.12.2
urllib3                       2.2.2
wheel                         0.45.0
zipp                          3.20.2

Please let me know if you need more details or want me to perform some diagnostics.

@kloczek kloczek added the stage/needs-triage Automatically applied to new issues and PRs, indicating they haven't been looked at. label Nov 9, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
stage/needs-triage Automatically applied to new issues and PRs, indicating they haven't been looked at.
Projects
None yet
Development

No branches or pull requests

1 participant