Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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"));
        }
Ejemplo n.º 3
0
        // 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();
        }
Ejemplo n.º 4
0
        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)));
        }
Ejemplo n.º 6
0
        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);
        }
Ejemplo n.º 7
0
        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);
        }
Ejemplo n.º 8
0
        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)));
        }
Ejemplo n.º 9
0
        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"));
        }