public async Task ResourceDiscoveryV1_GetAllPerResourceTypeWithoutFilters_ReturnsExpectedAmountThroughPagingInHeaders()
        {
            // Arrange
            const string resourceDiscoveryGroupName = "logic-apps-unfiltered";
            const int    pageSize = 1000;
            const int    expectedTotalResourceCount = 1018;
            var          resourceDiscoveryClient    = new ResourceDiscoveryClient(Configuration, Logger);

            // Act & Assert
            var  currentPage = 1;
            bool hasMore;

            do
            {
                Logger.LogInformation("Discovering resources with page size for page {CurrentPage}", currentPage);

                var response = await resourceDiscoveryClient.GetDiscoveredResourcesV1WithResponseAsync(resourceDiscoveryGroupName, currentPage : currentPage);

                Assert.Equal(HttpStatusCode.OK, response.StatusCode);
                var rawResponseBody = await response.Content.ReadAsStringAsync();

                Assert.NotEmpty(rawResponseBody);
                var resources = DeserializeRawV1Response(rawResponseBody);
                Assert.NotNull(resources);

                var delta = expectedTotalResourceCount - ((currentPage - 1) * pageSize);
                var amountOfExpectedResults = delta > pageSize ? pageSize : delta;
                Assert.Equal(amountOfExpectedResults, resources.Count);
                var totalRecordsInResponse = AssertAndGetHeaderValue("X-Paging-Total", response);
                Assert.Equal(expectedTotalResourceCount, totalRecordsInResponse);

                hasMore = resources.Count == pageSize;
                currentPage++;
            }while (hasMore);
        }
        public async Task ResourceDiscoveryV2_GetAllPerResourceTypeWithoutFilters_ReturnsExpectedAmountThroughPaging()
        {
            // Arrange
            const string resourceDiscoveryGroupName = "logic-apps-unfiltered";
            const int    pageSize = 1000;
            const int    expectedTotalResourceCount = 1018;
            var          resourceDiscoveryClient    = new ResourceDiscoveryClient(Configuration, Logger);

            // Act & Assert
            var  currentPage = 1;
            bool hasMore;

            do
            {
                Logger.LogInformation("Discovering resources with page size for page {CurrentPage}", currentPage);

                var response = await resourceDiscoveryClient.GetDiscoveredResourcesV2WithResponseAsync(resourceDiscoveryGroupName, currentPage : currentPage);

                var resources = await AssertAndGetPagedResult(response);

                Assert.NotNull(resources);
                Assert.NotNull(resources.PageInformation);

                var delta = expectedTotalResourceCount - ((currentPage - 1) * pageSize);
                var amountOfExpectedResults = delta > pageSize ? pageSize : delta;
                Assert.Equal(amountOfExpectedResults, resources.Result.Count);
                Assert.Equal(expectedTotalResourceCount, resources.PageInformation.TotalRecords);

                hasMore = resources.HasMore;
                currentPage++;
            }while (hasMore);
        }
예제 #3
0
        public AvailableMetricsTestInputGenerator()
        {
            var logger        = NullLogger <AvailableMetricsTestInputGenerator> .Instance;
            var configuration = ConfigurationFactory.Create();

            _scraperClient           = new ScraperClient(configuration, logger);
            _resourceDiscoveryClient = new ResourceDiscoveryClient(configuration, logger);
        }
예제 #4
0
        public async Task Health_Get_ReturnsValidList()
        {
            // Arrange
            var resourceDiscoveryClient = new ResourceDiscoveryClient(Configuration, Logger);

            // Act
            var response = await resourceDiscoveryClient.GetHealthAsync();

            // Assert
            Assert.Equal(HttpStatusCode.OK, response.StatusCode);
        }
        public async Task ResourceDiscovery_SuccessfulCallWithInvalidPageSize_ReturnsBadRequest(string apiVersion, int pageSize)
        {
            // Arrange
            const string resourceDiscoveryGroupName = "logic-apps-unfiltered";
            var          resourceDiscoveryClient    = new ResourceDiscoveryClient(Configuration, Logger);

            // Act
            var response = await resourceDiscoveryClient.GetDiscoveredResourcesWithResponseAsync(apiVersion, resourceDiscoveryGroupName, pageSize : pageSize);

            // Assert
            Assert.Equal(HttpStatusCode.BadRequest, response.StatusCode);
        }
        public async Task ResourceDiscovery_GetForUnexistingResourceCollection_ReturnsNotFound()
        {
            // Arrange
            string resourceCollectionName  = _bogusGenerator.Lorem.Word();
            var    resourceDiscoveryClient = new ResourceDiscoveryClient(Configuration, Logger);

            // Act
            var response = await resourceDiscoveryClient.GetDiscoveredResourcesAsync(resourceCollectionName);

            // Assert
            Assert.Equal(HttpStatusCode.NotFound, response.StatusCode);
        }
        public async Task ResourceDiscoveryV1_GetWithFilterOnMultipleValueInstanceTag_ReturnsExpectedAmount()
        {
            // Arrange
            const string resourceDiscoveryGroupName = "one-instance-tag-with-multi-value-scenario";
            const int    expectedResourceCount      = 409;
            var          resourceDiscoveryClient    = new ResourceDiscoveryClient(Configuration, Logger);

            // Act
            var response = await resourceDiscoveryClient.GetDiscoveredResourcesV1WithResponseAsync(resourceDiscoveryGroupName);

            // Assert
            await AssertV1PagedResult(response, expectedResourceCount);
        }
        public async Task ResourceDiscoveryV1_GetWithFilterOnOneSubscription_ReturnsExpectedAmount()
        {
            // Arrange
            const string resourceDiscoveryGroupName = "one-subscriptions-scenario";
            const int    expectedResourceCount      = 1000; // This should be more but is a known bug, see https://github.com/tomkerkhove/promitor/issues/1828
            var          resourceDiscoveryClient    = new ResourceDiscoveryClient(Configuration, Logger);

            // Act
            var response = await resourceDiscoveryClient.GetDiscoveredResourcesV1WithResponseAsync(resourceDiscoveryGroupName);

            // Assert
            await AssertV1PagedResult(response, expectedResourceCount);
        }
        public async Task ResourceDiscoveryV1_GetWithFilterOnOneResourceGroupWithDifferentCasing_ReturnsExpectedAmount()
        {
            // Arrange
            const string resourceDiscoveryGroupName = "one-resource-group-scenario-with-other-casing";
            const int    expectedResourceCount      = 6;
            var          resourceDiscoveryClient    = new ResourceDiscoveryClient(Configuration, Logger);

            // Act
            var response = await resourceDiscoveryClient.GetDiscoveredResourcesV1WithResponseAsync(resourceDiscoveryGroupName);

            // Assert
            await AssertV1PagedResult(response, expectedResourceCount);
        }
예제 #10
0
        public async Task ResourceDiscoveryV2_GetWithFilterOnAppTag_ReturnsExpectedAmount()
        {
            // Arrange
            const string resourceDiscoveryGroupName = "one-tag-scenario";
            const int    expectedResourceCount      = 9;
            var          resourceDiscoveryClient    = new ResourceDiscoveryClient(Configuration, Logger);

            // Act
            var response = await resourceDiscoveryClient.GetDiscoveredResourcesV2WithResponseAsync(resourceDiscoveryGroupName);

            // Assert
            await AssertV2PagedResult(response, expectedResourceCount);
        }
예제 #11
0
        public async Task ResourceDiscoveryV1_GetWithFilterOnTwoRegions_ReturnsExpectedAmount()
        {
            // Arrange
            const string resourceDiscoveryGroupName = "two-region-scenario";
            const int    expectedResourceCount      = 415;
            var          resourceDiscoveryClient    = new ResourceDiscoveryClient(Configuration, Logger);

            // Act
            var response = await resourceDiscoveryClient.GetDiscoveredResourcesV1WithResponseAsync(resourceDiscoveryGroupName);

            // Assert
            await AssertV1PagedResult(response, expectedResourceCount);
        }
예제 #12
0
        public async Task ResourceDiscoveryGroup_SuccessfulCall_ReturnsVersionHeader()
        {
            // Arrange
            var resourceDiscoveryClient = new ResourceDiscoveryClient(Configuration, Logger);

            // Act
            var response = await resourceDiscoveryClient.GetResourceDiscoveryGroupsAsync();

            // Assert
            Assert.Equal(HttpStatusCode.OK, response.StatusCode);
            Assert.True(response.Headers.Contains(HttpHeaders.AgentVersion));
            Assert.Equal(ExpectedVersion, response.Headers.GetFirstOrDefaultHeaderValue(HttpHeaders.AgentVersion));
        }
예제 #13
0
        public async Task ResourceDiscovery_GetForUnexistingResourceDiscoveryGroup_ReturnsNotFound()
        {
            // Arrange
            string resourceDiscoveryGroupName = _bogusGenerator.Lorem.Word();
            var    resourceDiscoveryClient    = new ResourceDiscoveryClient(Configuration, Logger);

            // Act
            var response = await resourceDiscoveryClient.GetDiscoveredResourcesAsync(resourceDiscoveryGroupName);

            // Assert
            Assert.Equal(HttpStatusCode.NotFound, response.StatusCode);
            Assert.True(response.Headers.Contains(HttpHeaders.AgentVersion));
            Assert.Equal(ExpectedVersion, response.Headers.GetFirstOrDefaultHeaderValue(HttpHeaders.AgentVersion));
        }
예제 #14
0
        public async Task ResourceDiscovery_SuccessfulCall_ReturnsVersionHeader(string apiVersion)
        {
            // Arrange
            const string resourceDiscoveryGroupName = "logic-apps-unfiltered";
            var          resourceDiscoveryClient    = new ResourceDiscoveryClient(Configuration, Logger);

            // Act
            var response = await resourceDiscoveryClient.GetDiscoveredResourcesWithResponseAsync(apiVersion, resourceDiscoveryGroupName);

            // Assert
            Assert.Equal(HttpStatusCode.OK, response.StatusCode);
            Assert.True(response.Headers.Contains(HttpHeaders.AgentVersion));
            Assert.Equal(ExpectedVersion, response.Headers.GetFirstOrDefaultHeaderValue(HttpHeaders.AgentVersion));
        }
예제 #15
0
        public async Task ResourceDiscoveryV1_GetAllPerResourceTypeWithoutFiltersAndSpecificPageSize_ReturnsExpectedAmount()
        {
            // Arrange
            const string resourceDiscoveryGroupName = "logic-apps-unfiltered";
            const int    expectedTotalAmount        = 1018;
            const int    pageSize = 500;
            var          expectedResourceCount   = pageSize;
            var          resourceDiscoveryClient = new ResourceDiscoveryClient(Configuration, Logger);

            // Act
            var response = await resourceDiscoveryClient.GetDiscoveredResourcesV1WithResponseAsync(resourceDiscoveryGroupName, pageSize : pageSize);

            // Assert
            await AssertV1PagedResult(response, expectedResourceCount, pageSize, expectedTotalAmount);
        }
예제 #16
0
        public async Task ResourceCollection_GetAll_ReturnsValidList()
        {
            // Arrange
            var resourceDiscoveryClient = new ResourceDiscoveryClient(Configuration, Logger);

            // Act
            var response = await resourceDiscoveryClient.GetResourceCollectionsAsync();

            // Assert
            Assert.Equal(HttpStatusCode.OK, response.StatusCode);
            var rawResponseBody = await response.Content.ReadAsStringAsync();

            Assert.NotEmpty(rawResponseBody);
            var resourceCollections = JsonConvert.DeserializeObject <List <ResourceCollection> >(rawResponseBody);

            Assert.NotNull(resourceCollections);
            Assert.NotEmpty(resourceCollections);
        }
예제 #17
0
        public async Task System_GetInfo_ReturnsOk()
        {
            // Arrange
            var expectedVersion         = Configuration["Agents:ResourceDiscovery:Expectations:Version"];
            var resourceDiscoveryClient = new ResourceDiscoveryClient(Configuration, Logger);

            // Act
            var response = await resourceDiscoveryClient.GetSystemInfoAsync();

            // Assert
            Assert.Equal(HttpStatusCode.OK, response.StatusCode);
            var rawPayload = await response.Content.ReadAsStringAsync();

            Assert.NotEmpty(rawPayload);
            var systemInfo = JsonConvert.DeserializeObject <SystemInfo>(rawPayload);

            Assert.NotNull(systemInfo);
            Assert.Equal(expectedVersion, systemInfo.Version);
        }
        public async Task ResourceDiscovery_GetWithFilterOnTwoResourceGroups_ReturnsExpectedAmount()
        {
            // Arrange
            const string resourceCollectionName  = "two-resource-group-scenario";
            const int    expectedResourceCount   = 4;
            var          resourceDiscoveryClient = new ResourceDiscoveryClient(Configuration, Logger);

            // Act
            var response = await resourceDiscoveryClient.GetDiscoveredResourcesAsync(resourceCollectionName);

            // Assert
            Assert.Equal(HttpStatusCode.OK, response.StatusCode);
            var rawResponseBody = await response.Content.ReadAsStringAsync();

            Assert.NotEmpty(rawResponseBody);
            var resources = JsonConvert.DeserializeObject <List <Resource> >(rawResponseBody);

            Assert.NotNull(resources);
            Assert.Equal(expectedResourceCount, resources.Count);
        }
예제 #19
0
        public async Task ResourceDiscovery_GetAllPerResourceTypeWithoutFilters_ReturnsExpectedAmount()
        {
            // Arrange
            const string resourceDiscoveryGroupName = "logic-apps-unfiltered";
            const int    expectedResourceCount      = 22;
            var          resourceDiscoveryClient    = new ResourceDiscoveryClient(Configuration, Logger);

            // Act
            var response = await resourceDiscoveryClient.GetDiscoveredResourcesAsync(resourceDiscoveryGroupName);

            // Assert
            Assert.Equal(HttpStatusCode.OK, response.StatusCode);
            var rawResponseBody = await response.Content.ReadAsStringAsync();

            Assert.NotEmpty(rawResponseBody);
            var resources = JsonConvert.DeserializeObject <List <Resource> >(rawResponseBody);

            Assert.NotNull(resources);
            Assert.Equal(expectedResourceCount, resources.Count);
        }
예제 #20
0
        public async Task System_GetInfo_ReturnsOk()
        {
            // Arrange
            var resourceDiscoveryClient = new ResourceDiscoveryClient(Configuration, Logger);

            // Act
            var response = await resourceDiscoveryClient.GetSystemInfoAsync();

            // Assert
            Assert.Equal(HttpStatusCode.OK, response.StatusCode);
            var rawPayload = await response.Content.ReadAsStringAsync();

            Assert.NotEmpty(rawPayload);
            var systemInfo = JsonConvert.DeserializeObject <SystemInfo>(rawPayload);

            Assert.NotNull(systemInfo);
            Assert.Equal(ExpectedVersion, systemInfo.Version);
            Assert.True(response.Headers.Contains(HttpHeaders.AgentVersion));
            Assert.Equal(ExpectedVersion, response.Headers.GetFirstOrDefaultHeaderValue(HttpHeaders.AgentVersion));
        }
        public ResourceDiscoveryHealthCheck(ResourceDiscoveryClient resourceDiscoveryClient)
        {
            Guard.NotNull(resourceDiscoveryClient, nameof(resourceDiscoveryClient));

            _resourceDiscoveryClient = resourceDiscoveryClient;
        }