public async Task VerifyOverrideEnumVersionUsed() { ResourceGroupVersionTracker tracker1 = new ResourceGroupVersionTracker(); ResourceGroupVersionTracker tracker2 = new ResourceGroupVersionTracker(); ArmClientOptions options1 = new ArmClientOptions(); string versionOverride = "2021-01-01"; options1.SetApiVersion(ResourceGroup.ResourceType, versionOverride); ArmClientOptions options2 = new ArmClientOptions(); options1.AddPolicy(tracker1, HttpPipelinePosition.PerCall); options2.AddPolicy(tracker2, HttpPipelinePosition.PerCall); var client1 = GetArmClient(options1); var client2 = GetArmClient(options2); var subscription1 = await client1.GetDefaultSubscriptionAsync(); var subscription2 = await client2.GetDefaultSubscriptionAsync(); var rgCollection1 = subscription1.GetResourceGroups(); var rgCollection2 = subscription2.GetResourceGroups(); _ = await rgCollection1.CreateOrUpdateAsync(true, Recording.GenerateAssetName("testRg-"), new ResourceGroupData(AzureLocation.WestUS)); _ = await rgCollection2.CreateOrUpdateAsync(true, Recording.GenerateAssetName("testRg-"), new ResourceGroupData(AzureLocation.WestUS)); Assert.AreEqual(versionOverride, tracker1.VersionUsed); Assert.AreEqual(GetDefaultResourceGroupVersion(rgCollection2), tracker2.VersionUsed); }
public async Task GetUsedResourceApiVersionWithOverride() { ProviderCounterPolicy policy = new ProviderCounterPolicy(); ArmClientOptions options = new ArmClientOptions(); options.AddPolicy(policy, HttpPipelinePosition.PerCall); string expectedVersion = "myVersion"; var computeResourceType = new ResourceType("Microsoft.Compute/virtualMachines"); options.SetApiVersion(computeResourceType, expectedVersion); var client = GetArmClient(options); var subscription = await client.GetDefaultSubscriptionAsync(); var version = await subscription.GetProviders().GetApiVersionAsync(computeResourceType); Assert.AreEqual(expectedVersion, version); Assert.AreEqual(0, policy.GetCount("Microsoft.Compute")); Assert.AreEqual(0, policy.GetCount("Microsoft.Network")); policy = new ProviderCounterPolicy(); options = new ArmClientOptions(); options.AddPolicy(policy, HttpPipelinePosition.PerCall); client = GetArmClient(options); subscription = await client.GetDefaultSubscriptionAsync(); version = await subscription.GetProviders().GetApiVersionAsync(computeResourceType); Assert.AreNotEqual(expectedVersion, version); Assert.AreEqual(1, policy.GetCount("Microsoft.Compute")); Assert.AreEqual(0, policy.GetCount("Microsoft.Network")); }
// The Service Linker provider need user token in a separated header in the following scenarios. // * The target resource is Key Vault // * SecretStore is used to store secret in Key Vault protected async Task InitializeUserTokenClients() { UserTokenPolicy userTokenPolicy = new UserTokenPolicy(TestEnvironment.Credential, TestEnvironment.ResourceManagerUrl + "/.default"); ArmClientOptions options = new ArmClientOptions(); options.AddPolicy(userTokenPolicy, HttpPipelinePosition.PerRetry); Client = GetArmClient(options); Subscription = await Client.GetDefaultSubscriptionAsync().ConfigureAwait(false); ResourceGroups = Subscription.GetResourceGroups(); }
public async Task TestClientContextPolicy() { ArmClientOptions options1 = new ArmClientOptions(); var dummyPolicy1 = new dummyPolicy(); var dummyPolicy2 = new dummyPolicy2(); options1.AddPolicy(dummyPolicy1, HttpPipelinePosition.PerCall); var client1 = GetArmClient(options1); Console.WriteLine("-----Client 1-----"); _ = await(await client1.GetDefaultSubscriptionAsync().ConfigureAwait(false)).GetResourceGroups().Construct(AzureLocation.WestUS2).CreateOrUpdateAsync(Recording.GenerateAssetName("testrg")); Assert.AreEqual(2, dummyPolicy1.numMsgGot); options1.AddPolicy(dummyPolicy2, HttpPipelinePosition.PerCall); _ = await(await client1.GetDefaultSubscriptionAsync().ConfigureAwait(false)).GetResourceGroups().Construct(AzureLocation.WestUS2).CreateOrUpdateAsync(Recording.GenerateAssetName("test2Rg-")); Assert.AreEqual(3, dummyPolicy1.numMsgGot); Assert.AreEqual(0, dummyPolicy2.numMsgGot); }
public void AddPerCallPolicy() { var options = new ArmClientOptions(); var dummyPolicy = new DummyPolicy(); options.AddPolicy(dummyPolicy, HttpPipelinePosition.PerCall); var pipeline = HttpPipelineBuilder.Build(options, new BearerTokenAuthenticationPolicy(new MockCredential(), "http://foo.com/.default")); var perCallPolicyField = pipeline.GetType().GetField("_pipeline", BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.GetField); var policies = (ReadOnlyMemory <HttpPipelinePolicy>)perCallPolicyField.GetValue(pipeline); Assert.IsNotNull(policies.ToArray().FirstOrDefault(p => p.GetType() == typeof(DummyPolicy))); }
public async Task VerifyDefaultEnumVersionUsed() { ResourceGroupVersionTracker tracker = new ResourceGroupVersionTracker(); ArmClientOptions options = new ArmClientOptions(); options.AddPolicy(tracker, HttpPipelinePosition.PerCall); var client = GetArmClient(options); var subscription = await client.GetDefaultSubscriptionAsync(); var rgCollection = subscription.GetResourceGroups(); _ = await rgCollection.CreateOrUpdateAsync(WaitUntil.Completed, Recording.GenerateAssetName("testRg-"), new ResourceGroupData(AzureLocation.WestUS)); Assert.AreEqual(GetDefaultResourceGroupVersion(rgCollection), tracker.VersionUsed); }
public async Task AddPolicy_Percall() { var options = new ArmClientOptions(); RequestTimesTracker tracker = new RequestTimesTracker(); options.AddPolicy(tracker, HttpPipelinePosition.PerCall); var client = GetArmClient(options); var subscription = await client.GetDefaultSubscriptionAsync(); Assert.AreEqual(1, tracker.Times); var rgCollection = subscription.GetResourceGroups(); _ = await rgCollection.GetAsync(_rgName); Assert.AreEqual(2, tracker.Times); }
public void AddPerCallPolicyViaClient() { var options = new ArmClientOptions(); var dummyPolicy = new DummyPolicy(); options.AddPolicy(dummyPolicy, HttpPipelinePosition.PerCall); var client = new ArmClient(Guid.NewGuid().ToString(), new MockCredential(), options); var pipelineProperty = client.GetType().GetProperty("Pipeline", BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.GetProperty); var pipeline = pipelineProperty.GetValue(client) as HttpPipeline; var perCallPolicyField = pipeline.GetType().GetField("_pipeline", BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.GetField); var policies = (ReadOnlyMemory <HttpPipelinePolicy>)perCallPolicyField.GetValue(pipeline); Assert.IsNotNull(policies.ToArray().FirstOrDefault(p => p.GetType() == typeof(DummyPolicy))); }
public void AddPolicy_PerRetry() { var retryResponse = new MockResponse(408); // Request Timeout var mockTransport = new MockTransport(retryResponse, retryResponse, new MockResponse(200)); var options = new ArmClientOptions() { Transport = mockTransport, }; options.Retry.Delay = TimeSpan.FromMilliseconds(100); RequestTimesTracker tracker = new RequestTimesTracker(); options.AddPolicy(tracker, HttpPipelinePosition.PerRetry); var client = GetArmClient(options); Assert.ThrowsAsync <ArgumentNullException>(async() => _ = await client.GetDefaultSubscriptionAsync()); Assert.AreEqual(options.Retry.MaxRetries, tracker.Times); }
public async Task GetUsedResourceApiVersion() { ProviderCounterPolicy policy = new ProviderCounterPolicy(); ArmClientOptions options = new ArmClientOptions(); options.AddPolicy(policy, HttpPipelinePosition.PerCall); var client = GetArmClient(options); var subscription = await client.GetDefaultSubscriptionAsync(); var version = await subscription.GetProviders().TryGetApiVersionAsync(new ResourceType("Microsoft.Compute/virtualMachines")); Assert.NotNull(version); Assert.AreEqual(1, policy.GetCount("Microsoft.Compute")); Assert.AreEqual(0, policy.GetCount("Microsoft.Network")); version = await subscription.GetProviders().TryGetApiVersionAsync(new ResourceType("Microsoft.Compute/availabilitySets")); Assert.NotNull(version); Assert.AreEqual(1, policy.GetCount("Microsoft.Compute")); Assert.AreEqual(0, policy.GetCount("Microsoft.Network")); }