internal static MigrationConfigListResult DeserializeMigrationConfigListResult(JsonElement element) { Optional <IReadOnlyList <MigrationConfigPropertiesData> > value = default; Optional <string> nextLink = default; foreach (var property in element.EnumerateObject()) { if (property.NameEquals("value")) { if (property.Value.ValueKind == JsonValueKind.Null) { property.ThrowNonNullablePropertyIsNull(); continue; } List <MigrationConfigPropertiesData> array = new List <MigrationConfigPropertiesData>(); foreach (var item in property.Value.EnumerateArray()) { array.Add(MigrationConfigPropertiesData.DeserializeMigrationConfigPropertiesData(item)); } value = array; continue; } if (property.NameEquals("nextLink")) { nextLink = property.Value.GetString(); continue; } } return(new MigrationConfigListResult(Optional.ToList(value), nextLink.Value)); }
MigrationConfigProperties IOperationSource <MigrationConfigProperties> .CreateResult(Response response, CancellationToken cancellationToken) { using var document = JsonDocument.Parse(response.ContentStream); var data = MigrationConfigPropertiesData.DeserializeMigrationConfigPropertiesData(document.RootElement); return(new MigrationConfigProperties(_armClient, data)); }
public async Task StandardToPremiumMigration() { IgnoreTestInLiveMode(); //create namespace with premium _resourceGroup = await CreateResourceGroupAsync(); ServiceBusNamespaceCollection namespaceCollection = _resourceGroup.GetServiceBusNamespaces(); string namespaceName1 = await CreateValidNamespaceName(namespacePrefix); ServiceBusNamespaceData createParameters1 = new ServiceBusNamespaceData(DefaultLocation); createParameters1.Sku = new ServiceBusSku(ServiceBusSkuName.Premium) { Tier = ServiceBusSkuTier.Premium }; ServiceBusNamespaceResource serviceBusNamespace1 = (await namespaceCollection.CreateOrUpdateAsync(WaitUntil.Completed, namespaceName1, createParameters1)).Value; //create namespace with standard string namespaceName2 = await CreateValidNamespaceName(namespacePrefix); ServiceBusNamespaceData createParameters2 = new ServiceBusNamespaceData(AzureLocation.EastUS); createParameters2.Sku = new ServiceBusSku(ServiceBusSkuName.Standard) { Tier = ServiceBusSkuTier.Standard }; ServiceBusNamespaceResource serviceBusNamespace2 = (await namespaceCollection.CreateOrUpdateAsync(WaitUntil.Completed, namespaceName2, createParameters2)).Value; //add 10 queues to standard namespace for (int i = 0; i < 10; i++) { string queueName = Recording.GenerateAssetName("queue" + i); _ = await serviceBusNamespace2.GetServiceBusQueues().CreateOrUpdateAsync(WaitUntil.Completed, queueName, new ServiceBusQueueData()); } //add 10 topics to standard namespace for (int i = 0; i < 10; i++) { string topicName = Recording.GenerateAssetName("topic" + i); _ = await serviceBusNamespace2.GetServiceBusTopics().CreateOrUpdateAsync(WaitUntil.Completed, topicName, new ServiceBusTopicData()); } //create the migration config, it's name should always be $default string postMigrationName = Recording.GenerateAssetName("postmigration"); var migrationParameters = new MigrationConfigPropertiesData() { PostMigrationName = postMigrationName, TargetNamespace = serviceBusNamespace1.Id.ToString() }; _ = await serviceBusNamespace2.GetMigrationConfigProperties().CreateOrUpdateAsync(WaitUntil.Completed, MigrationConfigurationName.Default, migrationParameters); //wait for migration state MigrationConfigPropertiesResource migrationConfig = await serviceBusNamespace2.GetMigrationConfigProperties().GetAsync(MigrationConfigurationName.Default); int count = 0; while (count < 100 && (migrationConfig.Data.MigrationState != "Active" || (migrationConfig.Data.PendingReplicationOperationsCount.HasValue && migrationConfig.Data.PendingReplicationOperationsCount != 0))) { if (Mode != RecordedTestMode.Playback) { await Task.Delay(30000); } migrationConfig = await serviceBusNamespace2.GetMigrationConfigProperties().GetAsync(MigrationConfigurationName.Default); count++; } Assert.NotNull(migrationConfig); List <MigrationConfigPropertiesResource> migrationConfigs = await serviceBusNamespace2.GetMigrationConfigProperties().GetAllAsync().ToEnumerableAsync(); Assert.AreEqual(1, migrationConfigs.Count); //complete migration await migrationConfig.CompleteMigrationAsync(); //validate migration List <ServiceBusTopicResource> topics = await serviceBusNamespace1.GetServiceBusTopics().GetAllAsync().ToEnumerableAsync(); Assert.AreEqual(10, topics.Count); List <ServiceBusQueueResource> queues = await serviceBusNamespace1.GetServiceBusQueues().GetAllAsync().ToEnumerableAsync(); Assert.AreEqual(10, queues.Count); //wait for migration config and premium namespace migrationConfig = await serviceBusNamespace2.GetMigrationConfigProperties().GetAsync(MigrationConfigurationName.Default); count = 0; while (count < 100 && migrationConfig.Data.MigrationState != "Active") { if (Mode != RecordedTestMode.Playback) { await Task.Delay(30000); } migrationConfig = await serviceBusNamespace2.GetMigrationConfigProperties().GetAsync(MigrationConfigurationName.Default); count++; } await GetSucceededNamespace(serviceBusNamespace1); }