From 40872e15cf7dc1872305da1cdf1c2243fc8d6438 Mon Sep 17 00:00:00 2001 From: MyronFanQiu Date: Mon, 25 May 2020 13:30:38 +0800 Subject: [PATCH 01/10] test --- .../azure/cli/testsdk/patches.py | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/azure-cli-testsdk/azure/cli/testsdk/patches.py b/src/azure-cli-testsdk/azure/cli/testsdk/patches.py index bb7dd880a41..77889c8032c 100644 --- a/src/azure-cli-testsdk/azure/cli/testsdk/patches.py +++ b/src/azure-cli-testsdk/azure/cli/testsdk/patches.py @@ -3,8 +3,8 @@ # Licensed under the MIT License. See License.txt in the project root for license information. # -------------------------------------------------------------------------------------------- -from azure_devtools.scenario_tests import mock_in_unit_test from azure_devtools.scenario_tests.const import MOCKED_SUBSCRIPTION_ID, MOCKED_TENANT_ID +from azure_devtools.scenario_tests.exceptions import AzureTestError from .exceptions import CliExecutionError @@ -95,3 +95,18 @@ def _get_current_system_username(*args, **kwargs): # pylint: disable=unused-arg return create_random_name(prefix='example_') mock_in_unit_test(unit_test, 'azure.cli.core.local_context._get_current_system_username', _get_current_system_username) + + +def mock_in_unit_test(unit_test, target, replacement): + try: + import unittest.mock as mock + except ImportError: + import mock + import unittest + + if not isinstance(unit_test, unittest.TestCase): + raise AzureTestError('Patches can be only called from a unit test') + + mp = mock.patch(target, replacement) + mp.__enter__() + unit_test.addCleanup(mp.__exit__, None, None, None) From 398a3271bd44abfff92f0d582fd2d5c767a01f71 Mon Sep 17 00:00:00 2001 From: MyronFanQiu Date: Mon, 25 May 2020 15:16:18 +0800 Subject: [PATCH 02/10] fix to 3.8.2 --- azure-pipelines.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 3f67f07261a..83095acb1a1 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -369,7 +369,7 @@ jobs: python.version: '3.6' tox_env: 'py36' Python38: - python.version: '3.8' + python.version: '3.8.2' tox_env: 'py38' steps: - task: UsePythonVersion@0 @@ -396,7 +396,7 @@ jobs: Python36: python.version: '3.6' Python38: - python.version: '3.8' + python.version: '3.8.2' steps: - task: UsePythonVersion@0 displayName: 'Use Python $(python.version)' @@ -417,7 +417,7 @@ jobs: Python36: python.version: '3.6' Python38: - python.version: '3.8' + python.version: '3.8.2' steps: - template: .azure-pipelines/templates/automation_test.yml parameters: @@ -434,7 +434,7 @@ jobs: Python36: python.version: '3.6' Python38: - python.version: '3.8' + python.version: '3.8.2' steps: - template: .azure-pipelines/templates/automation_test.yml parameters: @@ -451,7 +451,7 @@ jobs: Python36: python.version: '3.6' Python38: - python.version: '3.8' + python.version: '3.8.2' steps: - template: .azure-pipelines/templates/automation_test.yml parameters: @@ -468,7 +468,7 @@ jobs: Python36: python.version: '3.6' Python38: - python.version: '3.8' + python.version: '3.8.2' steps: - template: .azure-pipelines/templates/automation_test.yml parameters: From 303f9a81270747cf8cf36ad3e39c36996bb92c2a Mon Sep 17 00:00:00 2001 From: MyronFanQiu Date: Tue, 26 May 2020 10:24:10 +0800 Subject: [PATCH 03/10] tests --- src/azure-cli-testsdk/azure/cli/testsdk/base.py | 4 ++-- src/azure-cli-testsdk/azure/cli/testsdk/patches.py | 7 +++++++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/azure-cli-testsdk/azure/cli/testsdk/base.py b/src/azure-cli-testsdk/azure/cli/testsdk/base.py index 62685d62613..0d15b1cc39e 100644 --- a/src/azure-cli-testsdk/azure/cli/testsdk/base.py +++ b/src/azure-cli-testsdk/azure/cli/testsdk/base.py @@ -14,13 +14,13 @@ from azure_devtools.scenario_tests import (IntegrationTestBase, ReplayableTest, SubscriptionRecordingProcessor, OAuthRequestResponsesFilter, LargeRequestBodyProcessor, LargeResponseBodyProcessor, LargeResponseBodyReplacer, RequestUrlNormalizer, - live_only, DeploymentNameReplacer, patch_time_sleep_api, create_random_name) + live_only, DeploymentNameReplacer, create_random_name) from azure_devtools.scenario_tests.const import MOCKED_SUBSCRIPTION_ID, ENV_SKIP_ASSERT from .patches import (patch_load_cached_subscriptions, patch_main_exception_handler, patch_retrieve_token_for_user, patch_long_run_operation_delay, - patch_progress_controller, patch_get_current_system_username) + patch_progress_controller, patch_get_current_system_username, patch_time_sleep_api) from .exceptions import CliExecutionError from .utilities import find_recording_dir, StorageAccountKeyReplacer, GraphClientPasswordReplacer, GeneralNameReplacer from .reverse_dependency import get_dummy_cli diff --git a/src/azure-cli-testsdk/azure/cli/testsdk/patches.py b/src/azure-cli-testsdk/azure/cli/testsdk/patches.py index 77889c8032c..8a86858937f 100644 --- a/src/azure-cli-testsdk/azure/cli/testsdk/patches.py +++ b/src/azure-cli-testsdk/azure/cli/testsdk/patches.py @@ -11,6 +11,13 @@ MOCKED_USER_NAME = 'example@example.com' +def patch_time_sleep_api(unit_test): + def _time_sleep_skip(*_): + return + + mock_in_unit_test(unit_test, 'time.sleep', _time_sleep_skip) + + def patch_progress_controller(unit_test): def _mock_pass(*args, **kwargs): # pylint: disable=unused-argument pass From c38bf4489b41ce28c9b6a5a932dd76ea6b44d2bf Mon Sep 17 00:00:00 2001 From: MyronFanQiu Date: Tue, 26 May 2020 14:33:34 +0800 Subject: [PATCH 04/10] hack setup --- .../azure/cli/testsdk/base.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/azure-cli-testsdk/azure/cli/testsdk/base.py b/src/azure-cli-testsdk/azure/cli/testsdk/base.py index 0d15b1cc39e..fcdb0899a09 100644 --- a/src/azure-cli-testsdk/azure/cli/testsdk/base.py +++ b/src/azure-cli-testsdk/azure/cli/testsdk/base.py @@ -136,6 +136,24 @@ def tearDown(self): processor.reset() super(ScenarioTest, self).tearDown() + + def setUp(self): + super(ReplayableTest, self).setUp() + + # set up cassette + cm = self.vcr.use_cassette(self.recording_file) + self.cassette = cm.__enter__() + self.addCleanup(cm.__exit__, None, None, None) + + # set up mock patches + if self.in_recording: + for patch in self.recording_patches: + patch(self) + else: + for patch in self.replay_patches: + patch(self) + + def create_random_name(self, prefix, length): self.test_resources_count += 1 moniker = '{}{:06}'.format(prefix, self.test_resources_count) From 4bb5c468fcaf1e62337b397b860663eddf674cb8 Mon Sep 17 00:00:00 2001 From: MyronFanQiu Date: Tue, 26 May 2020 14:35:49 +0800 Subject: [PATCH 05/10] revert --- azure-pipelines.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 83095acb1a1..3f67f07261a 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -369,7 +369,7 @@ jobs: python.version: '3.6' tox_env: 'py36' Python38: - python.version: '3.8.2' + python.version: '3.8' tox_env: 'py38' steps: - task: UsePythonVersion@0 @@ -396,7 +396,7 @@ jobs: Python36: python.version: '3.6' Python38: - python.version: '3.8.2' + python.version: '3.8' steps: - task: UsePythonVersion@0 displayName: 'Use Python $(python.version)' @@ -417,7 +417,7 @@ jobs: Python36: python.version: '3.6' Python38: - python.version: '3.8.2' + python.version: '3.8' steps: - template: .azure-pipelines/templates/automation_test.yml parameters: @@ -434,7 +434,7 @@ jobs: Python36: python.version: '3.6' Python38: - python.version: '3.8.2' + python.version: '3.8' steps: - template: .azure-pipelines/templates/automation_test.yml parameters: @@ -451,7 +451,7 @@ jobs: Python36: python.version: '3.6' Python38: - python.version: '3.8.2' + python.version: '3.8' steps: - template: .azure-pipelines/templates/automation_test.yml parameters: @@ -468,7 +468,7 @@ jobs: Python36: python.version: '3.6' Python38: - python.version: '3.8.2' + python.version: '3.8' steps: - template: .azure-pipelines/templates/automation_test.yml parameters: From b31aec911dac67bbafd6c95fb897cb5225d47f2a Mon Sep 17 00:00:00 2001 From: MyronFanQiu Date: Tue, 26 May 2020 15:09:13 +0800 Subject: [PATCH 06/10] fix style --- src/azure-cli-testsdk/azure/cli/testsdk/base.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/azure-cli-testsdk/azure/cli/testsdk/base.py b/src/azure-cli-testsdk/azure/cli/testsdk/base.py index fcdb0899a09..111a24e3647 100644 --- a/src/azure-cli-testsdk/azure/cli/testsdk/base.py +++ b/src/azure-cli-testsdk/azure/cli/testsdk/base.py @@ -136,7 +136,6 @@ def tearDown(self): processor.reset() super(ScenarioTest, self).tearDown() - def setUp(self): super(ReplayableTest, self).setUp() @@ -153,7 +152,6 @@ def setUp(self): for patch in self.replay_patches: patch(self) - def create_random_name(self, prefix, length): self.test_resources_count += 1 moniker = '{}{:06}'.format(prefix, self.test_resources_count) From 2ed5bb848e62a16a11538a02fa5d8fe755b8d3af Mon Sep 17 00:00:00 2001 From: MyronFanQiu Date: Tue, 26 May 2020 16:04:25 +0800 Subject: [PATCH 07/10] remove this one --- src/azure-cli-testsdk/azure/cli/testsdk/base.py | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/src/azure-cli-testsdk/azure/cli/testsdk/base.py b/src/azure-cli-testsdk/azure/cli/testsdk/base.py index 111a24e3647..0d15b1cc39e 100644 --- a/src/azure-cli-testsdk/azure/cli/testsdk/base.py +++ b/src/azure-cli-testsdk/azure/cli/testsdk/base.py @@ -136,22 +136,6 @@ def tearDown(self): processor.reset() super(ScenarioTest, self).tearDown() - def setUp(self): - super(ReplayableTest, self).setUp() - - # set up cassette - cm = self.vcr.use_cassette(self.recording_file) - self.cassette = cm.__enter__() - self.addCleanup(cm.__exit__, None, None, None) - - # set up mock patches - if self.in_recording: - for patch in self.recording_patches: - patch(self) - else: - for patch in self.replay_patches: - patch(self) - def create_random_name(self, prefix, length): self.test_resources_count += 1 moniker = '{}{:06}'.format(prefix, self.test_resources_count) From 233ec4fb079f823dff5bf8d2333e4807a035c4e0 Mon Sep 17 00:00:00 2001 From: MyronFanQiu Date: Tue, 26 May 2020 16:56:01 +0800 Subject: [PATCH 08/10] fix dls test --- .../cli/command_modules/dls/tests/latest/test_dls_commands.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/azure-cli/azure/cli/command_modules/dls/tests/latest/test_dls_commands.py b/src/azure-cli/azure/cli/command_modules/dls/tests/latest/test_dls_commands.py index 89a24a4e9d0..9abbf6a9a06 100644 --- a/src/azure-cli/azure/cli/command_modules/dls/tests/latest/test_dls_commands.py +++ b/src/azure-cli/azure/cli/command_modules/dls/tests/latest/test_dls_commands.py @@ -138,7 +138,7 @@ def tearDown(self): local_folder = self.kwargs.get('local_folder', None) if local_folder and os.path.exists(local_folder): rmtree(local_folder) - self.mp.__exit__() + self.mp.__exit__(None, None, None) return super(DataLakeStoreFileScenarioTest, self).tearDown() @ResourceGroupPreparer(name_prefix='cls_test_adls_file') From e515157ab28ef9c18d9a5b5eec02552f0ffb22cc Mon Sep 17 00:00:00 2001 From: MyronFanQiu Date: Tue, 26 May 2020 18:02:26 +0800 Subject: [PATCH 09/10] lock version --- src/azure-cli/setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/azure-cli/setup.py b/src/azure-cli/setup.py index d913286f613..8a6786a7a2b 100644 --- a/src/azure-cli/setup.py +++ b/src/azure-cli/setup.py @@ -74,7 +74,7 @@ 'azure-mgmt-compute~=12.0', 'azure-mgmt-consumption~=2.0', 'azure-mgmt-containerinstance~=1.4', - 'azure-mgmt-containerregistry~=3.0.0rc12', + 'azure-mgmt-containerregistry==3.0.0rc12', 'azure-mgmt-containerservice~=9.0.1', 'azure-mgmt-cosmosdb~=0.14.0', 'azure-mgmt-datalake-analytics~=0.2.1', From ae0ffc4adf95170c54f732bd7b22edfef610b5f0 Mon Sep 17 00:00:00 2001 From: MyronFanQiu Date: Tue, 26 May 2020 18:07:05 +0800 Subject: [PATCH 10/10] fix dla --- .../command_modules/dla/tests/latest/recording_processors.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/azure-cli/azure/cli/command_modules/dla/tests/latest/recording_processors.py b/src/azure-cli/azure/cli/command_modules/dla/tests/latest/recording_processors.py index 5c598a9fea1..955c6bedadf 100644 --- a/src/azure-cli/azure/cli/command_modules/dla/tests/latest/recording_processors.py +++ b/src/azure-cli/azure/cli/command_modules/dla/tests/latest/recording_processors.py @@ -3,7 +3,8 @@ # Licensed under the MIT License. See License.txt in the project root for license information. # -------------------------------------------------------------------------------------------- -from azure_devtools.scenario_tests import RecordingProcessor, mock_in_unit_test +from azure_devtools.scenario_tests import RecordingProcessor +from azure.cli.testsdk.patches import mock_in_unit_test MOCK_JOB_ID = '00000000-0000-0000-0000-000000000000'