diff --git a/src/DataMigration/DataMigration.Test/ScenarioTests/DataMigrationTestController.cs b/src/DataMigration/DataMigration.Test/ScenarioTests/DataMigrationTestController.cs deleted file mode 100644 index 88e2b4fd3546..000000000000 --- a/src/DataMigration/DataMigration.Test/ScenarioTests/DataMigrationTestController.cs +++ /dev/null @@ -1,152 +0,0 @@ -// ---------------------------------------------------------------------------------- -// -// Copyright Microsoft Corporation -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// http://www.apache.org/licenses/LICENSE-2.0 -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// ---------------------------------------------------------------------------------- - -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.IO; -using System.Linq; -using Microsoft.Azure.Commands.Common.Authentication; -using Microsoft.Azure.Commands.DataMigration.Test; -using Microsoft.Azure.Management.DataMigration; -using Microsoft.Azure.Management.Internal.Resources; -using Microsoft.Azure.Test.HttpRecorder; -using Microsoft.Rest.ClientRuntime.Azure.TestFramework; -using Microsoft.WindowsAzure.Commands.ScenarioTest; -using Microsoft.WindowsAzure.Commands.Test.Utilities.Common; -using Microsoft.Azure.ServiceManagement.Common.Models; - -namespace Microsoft.Azure.Commands.ScenarioTest.DmsTest -{ - - public class DataMigrationTestController : RMTestBase - { - private int _defaultTimeOut = 60; - private readonly EnvironmentSetupHelper _helper; - - public static DataMigrationTestController NewInstance => new DataMigrationTestController(); - - public DataMigrationTestController() - { - _helper = new EnvironmentSetupHelper(); - var settings = DataMigrationAppSettings.Instance; - if (settings == null) - { - throw new ArgumentException("DMS Config File Appsettings.json not loaded properly"); - } - } - - public void RunPsTest(XunitTracingInterceptor logger, params string[] scripts) - { - var sf = new StackTrace().GetFrame(1); - var callingClassType = sf.GetMethod().ReflectedType?.ToString(); - var mockName = sf.GetMethod().Name; - - _helper.TracingInterceptor = logger; - - RunPsTestWorkflow( - () => scripts, - // no custom cleanup - null, - callingClassType, - mockName); - } - - public void RunPsTestWorkflow( - Func scriptBuilder, - Action cleanup, - string callingClassType, - string mockName) - { - var d = new Dictionary - { - {"Microsoft.Resources", null}, - {"Microsoft.Features", null}, - {"Microsoft.Authorization", null}, - {"Microsoft.Compute", null} - }; - var providersToIgnore = new Dictionary - { - {"Microsoft.Azure.Management.Resources.ResourceManagementClient", "2016-02-01"} - }; - HttpMockServer.Matcher = new PermissiveRecordMatcherWithApiExclusion(true, d, providersToIgnore); - - HttpMockServer.RecordsDirectory = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "SessionRecords"); - using (var context = MockContext.Start(callingClassType, mockName)) - { - SetupManagementClients(context); - - _helper.SetupEnvironment(AzureModule.AzureResourceManager); - - var callingClassName = callingClassType.Split(new[] { "." }, StringSplitOptions.RemoveEmptyEntries).Last(); - _helper.SetupModules(AzureModule.AzureResourceManager, - "ScenarioTests\\Common.ps1", - "ScenarioTests\\" + callingClassName + ".ps1", - _helper.RMProfileModule, - _helper.GetRMModulePath(@"AzureRM.DataMigration.psd1"), - "AzureRM.Resources.ps1" - ); - - try - { - var psScripts = scriptBuilder?.Invoke(); - - if (psScripts != null) - { - _helper.RunPowerShellTest(psScripts); - } - } - finally - { - cleanup?.Invoke(); - } - } - } - - private void SetupManagementClients(MockContext context) - { - _helper.SetupManagementClients( - GetResourceManagementClient(context), - GetDmsClient(context)); - } - - private DataMigrationServiceClient GetDmsClient(MockContext context) - { - var client = context.GetServiceClient(TestEnvironmentFactory.GetTestEnvironment()); - - client.LongRunningOperationRetryTimeout = DefaultTimeOut; - - return client; - } - - private static ResourceManagementClient GetResourceManagementClient(MockContext context) - { - return context.GetServiceClient(TestEnvironmentFactory.GetTestEnvironment()); - } - - private int DefaultTimeOut - { - get - { - if (HttpMockServer.Mode == HttpRecorderMode.Playback) - { - _defaultTimeOut = 0; - } - - return _defaultTimeOut; - } - } - - } -} diff --git a/src/DataMigration/DataMigration.Test/ScenarioTests/DataMigrationTestRunner.cs b/src/DataMigration/DataMigration.Test/ScenarioTests/DataMigrationTestRunner.cs new file mode 100644 index 000000000000..051a3a1d08e3 --- /dev/null +++ b/src/DataMigration/DataMigration.Test/ScenarioTests/DataMigrationTestRunner.cs @@ -0,0 +1,56 @@ +// ---------------------------------------------------------------------------------- +// +// Copyright Microsoft Corporation +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// ---------------------------------------------------------------------------------- + +using System.Collections.Generic; +using Microsoft.Azure.Commands.TestFx; +using Xunit.Abstractions; + +namespace Microsoft.Azure.Commands.ScenarioTest.DmsTest +{ + public class DataMigrationTestRunner + { + protected readonly ITestRunner TestRunner; + + protected DataMigrationTestRunner(ITestOutputHelper output) + { + TestRunner = TestManager.CreateInstance(output) + .WithNewPsScriptFilename($"{GetType().Name}.ps1") + .WithProjectSubfolderForTests("ScenarioTests") + .WithCommonPsScripts(new[] + { + @"Common.ps1", + @"../AzureRM.Resources.ps1" + }) + .WithNewRmModules(helper => new[] + { + helper.RMProfileModule, + helper.GetRMModulePath("Az.DataMigration.psd1") + }) + .WithNewRecordMatcherArguments( + userAgentsToIgnore: new Dictionary + { + {"Microsoft.Azure.Management.Resources.ResourceManagementClient", "2016-02-01"} + }, + resourceProviders: new Dictionary + { + {"Microsoft.Resources", null}, + {"Microsoft.Features", null}, + {"Microsoft.Authorization", null}, + {"Microsoft.Compute", null} + } + ) + .Build(); + } + } +} diff --git a/src/DataMigration/DataMigration.Test/ScenarioTests/ServiceTests.cs b/src/DataMigration/DataMigration.Test/ScenarioTests/ServiceTests.cs index a48f68c72489..f002b6ab1963 100644 --- a/src/DataMigration/DataMigration.Test/ScenarioTests/ServiceTests.cs +++ b/src/DataMigration/DataMigration.Test/ScenarioTests/ServiceTests.cs @@ -12,147 +12,141 @@ // limitations under the License. // ---------------------------------------------------------------------------------- -using Microsoft.Azure.ServiceManagement.Common.Models; using Microsoft.WindowsAzure.Commands.ScenarioTest; using Xunit; -using Xunit.Abstractions; namespace Microsoft.Azure.Commands.ScenarioTest.DmsTest { - public class ServiceTests + public class ServiceTests : DataMigrationTestRunner { - public XunitTracingInterceptor _logger; - - public ServiceTests(Xunit.Abstractions.ITestOutputHelper output) + public ServiceTests(Xunit.Abstractions.ITestOutputHelper output) : base(output) { - _logger = new XunitTracingInterceptor(output); - XunitTracingInterceptor.AddToContext(_logger); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestCreateAndGetService() { - DataMigrationTestController.NewInstance.RunPsTest(_logger, "Test-CreateAndGetService"); + TestRunner.RunTestScript("Test-CreateAndGetService"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestCreateAndGetProjectSqlSqlDb() { - DataMigrationTestController.NewInstance.RunPsTest(_logger, "Test-CreateAndGetProjectSqlSqlDb"); + TestRunner.RunTestScript("Test-CreateAndGetProjectSqlSqlDb"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestRemoveService() { - DataMigrationTestController.NewInstance.RunPsTest(_logger, "Test-RemoveService"); + TestRunner.RunTestScript("Test-RemoveService"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestRemoveProject() { - DataMigrationTestController.NewInstance.RunPsTest(_logger, "Test-RemoveProject"); + TestRunner.RunTestScript("Test-RemoveProject"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestStopStartService() { - DataMigrationTestController.NewInstance.RunPsTest(_logger, "Test-StopStartDataMigrationService"); + TestRunner.RunTestScript("Test-StopStartDataMigrationService"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestConnectToSourceSqlServer() { - DataMigrationTestController.NewInstance.RunPsTest(_logger, "Test-ConnectToSourceSqlServer"); + TestRunner.RunTestScript("Test-ConnectToSourceSqlServer"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestConnectToTargetSqlDb() { - DataMigrationTestController.NewInstance.RunPsTest(_logger, "Test-ConnectToTargetSqlDb"); + TestRunner.RunTestScript("Test-ConnectToTargetSqlDb"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestGetUserTableTask() { - DataMigrationTestController.NewInstance.RunPsTest(_logger, "Test-GetUserTableTask"); + TestRunner.RunTestScript("Test-GetUserTableTask"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestMigrateSqlSqlDb() { - DataMigrationTestController.NewInstance.RunPsTest(_logger, "Test-MigrateSqlSqlDB"); + TestRunner.RunTestScript("Test-MigrateSqlSqlDB"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestConnectToTargetSqlDbMi() { - DataMigrationTestController.NewInstance.RunPsTest(_logger, "Test-ConnectToTargetSqlDbMi"); + TestRunner.RunTestScript("Test-ConnectToTargetSqlDbMi"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestMigrateSqlSqlDbMi() { - DataMigrationTestController.NewInstance.RunPsTest(_logger, "Test-MigrateSqlSqlDbMi"); + TestRunner.RunTestScript("Test-MigrateSqlSqlDbMi"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestValidateMigrationInputSqlSqlDbMi() { - DataMigrationTestController.NewInstance.RunPsTest(_logger, "Test-ValidateMigrationInputSqlSqlDbMi"); + TestRunner.RunTestScript("Test-ValidateMigrationInputSqlSqlDbMi"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestConnectToSourceSqlServerSync() { - DataMigrationTestController.NewInstance.RunPsTest(_logger, "Test-ConnectToSourceSqlServerSync"); + TestRunner.RunTestScript("Test-ConnectToSourceSqlServerSync"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestConnectToTargetSqlDbSync() { - DataMigrationTestController.NewInstance.RunPsTest(_logger, "Test-ConnectToTargetSqlDbSync"); + TestRunner.RunTestScript("Test-ConnectToTargetSqlDbSync"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestGetUserTableSyncTask() { - DataMigrationTestController.NewInstance.RunPsTest(_logger, "Test-GetUserTableSyncTask"); + TestRunner.RunTestScript("Test-GetUserTableSyncTask"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestValidateMigrationInputSqlSqlDbSync() { - DataMigrationTestController.NewInstance.RunPsTest(_logger, "Test-ValidateMigrationInputSqlSqlDbSync"); + TestRunner.RunTestScript("Test-ValidateMigrationInputSqlSqlDbSync"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestMigrateSqlSqlDBSync() { - DataMigrationTestController.NewInstance.RunPsTest(_logger, "Test-MigrateSqlSqlDBSync"); + TestRunner.RunTestScript("Test-MigrateSqlSqlDBSync"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestConnectToSourceMongoDb() { - DataMigrationTestController.NewInstance.RunPsTest(_logger, "Test-ConnectToSourceMongoDb"); + TestRunner.RunTestScript("Test-ConnectToSourceMongoDb"); } @@ -160,35 +154,35 @@ public void TestConnectToSourceMongoDb() [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestConnectToTargetCosmosDb() { - DataMigrationTestController.NewInstance.RunPsTest(_logger, "Test-ConnectToTargetCosmosDb"); + TestRunner.RunTestScript("Test-ConnectToTargetCosmosDb"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestMigrateMongoDb() { - DataMigrationTestController.NewInstance.RunPsTest(_logger, "Test-MigrateMongoDb"); + TestRunner.RunTestScript("Test-MigrateMongoDb"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestConnectToTargetSqlDbMiSync() { - DataMigrationTestController.NewInstance.RunPsTest(_logger, "Test-ConnectToTargetSqlDbMiSync"); + TestRunner.RunTestScript("Test-ConnectToTargetSqlDbMiSync"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestValidateMigrationInputSqlSqlDbMiSync() { - DataMigrationTestController.NewInstance.RunPsTest(_logger, "Test-ValidateMigrationInputSqlSqlDbMiSync"); + TestRunner.RunTestScript("Test-ValidateMigrationInputSqlSqlDbMiSync"); } [Fact] [Trait(Category.AcceptanceType, Category.CheckIn)] public void TestMigrateSqlSqlDbMiSync() { - DataMigrationTestController.NewInstance.RunPsTest(_logger, "Test-MigrateSqlSqlDbMiSync"); + TestRunner.RunTestScript("Test-MigrateSqlSqlDbMiSync"); } } } \ No newline at end of file