From f906799317ebed22774179e57b7b3b3c1f0a167c Mon Sep 17 00:00:00 2001 From: Tom Klinovsky Date: Mon, 27 Feb 2023 17:35:11 +0200 Subject: [PATCH 1/6] fix(stackdriver): read INT64 metrics correctly --- .../metrics/StackdriverMetricsService.java | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/kayenta-stackdriver/src/main/java/com/netflix/kayenta/stackdriver/metrics/StackdriverMetricsService.java b/kayenta-stackdriver/src/main/java/com/netflix/kayenta/stackdriver/metrics/StackdriverMetricsService.java index f7254ff6a..4438df65d 100644 --- a/kayenta-stackdriver/src/main/java/com/netflix/kayenta/stackdriver/metrics/StackdriverMetricsService.java +++ b/kayenta-stackdriver/src/main/java/com/netflix/kayenta/stackdriver/metrics/StackdriverMetricsService.java @@ -399,10 +399,22 @@ public List queryMetrics( : stackdriverCanaryScope.getEnd(); // TODO(duftler): What if there are no data points? - List pointValues = - points.stream() + List pointValues; + + if(timeSeries.getValueType().equals("INT64")) { + pointValues = points.stream() + .map(point -> (double) point.getValue().getInt64Value()) + .collect(Collectors.toList()); + } else if(timeSeries.getValueType().equals("DOUBLE")) { + pointValues = points.stream() .map(point -> point.getValue().getDoubleValue()) .collect(Collectors.toList()); + } else { + log.warn("expected timeSeries value type to be either DOUBLE or INT64. Got {}.", timeSeries.getValueType()); + pointValues = points.stream() + .map(point -> point.getValue().getDoubleValue()) + .collect(Collectors.toList()); + } MetricSet.MetricSetBuilder metricSetBuilder = MetricSet.builder() From 8664bc0a42f25f4c43b1dac5414c6a6257071479 Mon Sep 17 00:00:00 2001 From: Tom Klinovsky Date: Sat, 11 Mar 2023 01:16:09 +0200 Subject: [PATCH 2/6] WIP: added template for stackdriverMetricServiceTest --- .../StackdriverMetricsServiceTest.java | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 kayenta-stackdriver/src/test/java/com/netflix/kayenta/stackdriver/metrics/StackdriverMetricsServiceTest.java diff --git a/kayenta-stackdriver/src/test/java/com/netflix/kayenta/stackdriver/metrics/StackdriverMetricsServiceTest.java b/kayenta-stackdriver/src/test/java/com/netflix/kayenta/stackdriver/metrics/StackdriverMetricsServiceTest.java new file mode 100644 index 000000000..f1678e888 --- /dev/null +++ b/kayenta-stackdriver/src/test/java/com/netflix/kayenta/stackdriver/metrics/StackdriverMetricsServiceTest.java @@ -0,0 +1,45 @@ +package com.netflix.kayenta.stackdriver.metrics; + +import static org.hamcrest.CoreMatchers.is; +import static org.junit.Assert.assertThat; + +import com.netflix.kayenta.canary.CanaryMetricConfig; +import com.netflix.kayenta.canary.CanaryScope; +import com.netflix.kayenta.canary.providers.metrics.StackdriverCanaryMetricSetQueryConfig; +import com.netflix.kayenta.stackdriver.canary.StackdriverCanaryScope; +import com.google.api.services.monitoring.v3.model.TimeSeries; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.junit.MockitoJUnitRunner; + +@RunWith(MockitoJUnitRunner.class) +public class StackdriverMetricsServiceTest { + private static final String METRIC_NAME = "example.metric.name"; + private static final String SCOPE = "env=test"; + private static final String AGGREGATE = "avg"; + + @Mock ListTimeSeriesResponse response; + + @InjectMocs StackdriverMetricsService stackdriverMetricsService; + + @Test + public void testDummy() { + assertThat("dummy", is("dummy")); + } + + @Test + public void returnsMetricSetValuesFromDouble() { + when(response.getTimeSeries()) + .thenReturn( + // TODO construct List that returns points with double values + ); + + List metricSetList = stackdriverMetricsService.queryMetrics(/*TODO which args?*/); + + assertThat(metricSetList, is(/*TODO expected metricSetList*/) + } +} + From 34ed6b2c8995073cc325fe606fa3809c3fd624b9 Mon Sep 17 00:00:00 2001 From: Tom Klinovsky Date: Sat, 18 Mar 2023 15:34:24 +0200 Subject: [PATCH 3/6] WIP: adding tests to StackdriverMetricsService --- .../StackdriverMetricsServiceTest.java | 50 ++++++++++++++----- 1 file changed, 37 insertions(+), 13 deletions(-) diff --git a/kayenta-stackdriver/src/test/java/com/netflix/kayenta/stackdriver/metrics/StackdriverMetricsServiceTest.java b/kayenta-stackdriver/src/test/java/com/netflix/kayenta/stackdriver/metrics/StackdriverMetricsServiceTest.java index f1678e888..198a1168b 100644 --- a/kayenta-stackdriver/src/test/java/com/netflix/kayenta/stackdriver/metrics/StackdriverMetricsServiceTest.java +++ b/kayenta-stackdriver/src/test/java/com/netflix/kayenta/stackdriver/metrics/StackdriverMetricsServiceTest.java @@ -1,14 +1,20 @@ package com.netflix.kayenta.stackdriver.metrics; +import static org.hamcrest.CoreMatchers.hasItem; import static org.hamcrest.CoreMatchers.is; import static org.junit.Assert.assertThat; +import static org.mockito.Mockito.when; +import com.google.api.services.monitoring.v3.model.ListTimeSeriesResponse; +import com.google.api.services.monitoring.v3.model.Point; +import com.google.api.services.monitoring.v3.model.TimeSeries; +import com.google.api.services.monitoring.v3.model.TypedValue; +import com.netflix.kayenta.canary.CanaryConfig; import com.netflix.kayenta.canary.CanaryMetricConfig; -import com.netflix.kayenta.canary.CanaryScope; -import com.netflix.kayenta.canary.providers.metrics.StackdriverCanaryMetricSetQueryConfig; +import com.netflix.kayenta.metrics.MetricSet; import com.netflix.kayenta.stackdriver.canary.StackdriverCanaryScope; -import com.google.api.services.monitoring.v3.model.TimeSeries; - +import java.util.ArrayList; +import java.util.List; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.InjectMocks; @@ -17,13 +23,13 @@ @RunWith(MockitoJUnitRunner.class) public class StackdriverMetricsServiceTest { - private static final String METRIC_NAME = "example.metric.name"; + private static final String ACCOUNT_NAME = "some-stackdriver-account"; private static final String SCOPE = "env=test"; - private static final String AGGREGATE = "avg"; + private static final double testDoubleValue = 12.3d; @Mock ListTimeSeriesResponse response; - @InjectMocs StackdriverMetricsService stackdriverMetricsService; + @InjectMocks StackdriverMetricsService stackdriverMetricsService; @Test public void testDummy() { @@ -32,14 +38,32 @@ public void testDummy() { @Test public void returnsMetricSetValuesFromDouble() { + TimeSeries singleDoublePointTimeSeries = + new TimeSeries() + .setValueType("DOUBLE") + .setPoints( + new ArrayList() { + { + add((new Point()).setValue((new TypedValue()).setDoubleValue(testDoubleValue))); + } + }); + when(response.getTimeSeries()) - .thenReturn( - // TODO construct List that returns points with double values - ); + .thenReturn( + new ArrayList() { + { + add(singleDoublePointTimeSeries); + } + }); + + CanaryConfig canaryConfig = new CanaryConfig(); + CanaryMetricConfig canaryMetricConfig = CanaryMetricConfig.builder().name("some-name").build(); + StackdriverCanaryScope experimentScope = new StackdriverCanaryScope(); - List metricSetList = stackdriverMetricsService.queryMetrics(/*TODO which args?*/); + List metricSetList = + stackdriverMetricsService.queryMetrics( + ACCOUNT_NAME, canaryConfig, canaryMetricConfig, experimentScope); - assertThat(metricSetList, is(/*TODO expected metricSetList*/) + assertThat(metricSetList.get(0).getValues(), hasItem(testDoubleValue)); } } - From 5f995706c5d8f2d56281300acd5f6810e80fd3c8 Mon Sep 17 00:00:00 2001 From: Tom Klinovsky Date: Sat, 18 Mar 2023 15:34:43 +0200 Subject: [PATCH 4/6] WIP: adding tests to StackdriverMetricsService --- .../metrics/StackdriverMetricsService.java | 29 +++++++++++-------- 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/kayenta-stackdriver/src/main/java/com/netflix/kayenta/stackdriver/metrics/StackdriverMetricsService.java b/kayenta-stackdriver/src/main/java/com/netflix/kayenta/stackdriver/metrics/StackdriverMetricsService.java index 4438df65d..8502b6c4b 100644 --- a/kayenta-stackdriver/src/main/java/com/netflix/kayenta/stackdriver/metrics/StackdriverMetricsService.java +++ b/kayenta-stackdriver/src/main/java/com/netflix/kayenta/stackdriver/metrics/StackdriverMetricsService.java @@ -401,19 +401,24 @@ public List queryMetrics( // TODO(duftler): What if there are no data points? List pointValues; - if(timeSeries.getValueType().equals("INT64")) { - pointValues = points.stream() - .map(point -> (double) point.getValue().getInt64Value()) - .collect(Collectors.toList()); - } else if(timeSeries.getValueType().equals("DOUBLE")) { - pointValues = points.stream() - .map(point -> point.getValue().getDoubleValue()) - .collect(Collectors.toList()); + if (timeSeries.getValueType().equals("INT64")) { + pointValues = + points.stream() + .map(point -> (double) point.getValue().getInt64Value()) + .collect(Collectors.toList()); + } else if (timeSeries.getValueType().equals("DOUBLE")) { + pointValues = + points.stream() + .map(point -> point.getValue().getDoubleValue()) + .collect(Collectors.toList()); } else { - log.warn("expected timeSeries value type to be either DOUBLE or INT64. Got {}.", timeSeries.getValueType()); - pointValues = points.stream() - .map(point -> point.getValue().getDoubleValue()) - .collect(Collectors.toList()); + log.warn( + "expected timeSeries value type to be either DOUBLE or INT64. Got {}.", + timeSeries.getValueType()); + pointValues = + points.stream() + .map(point -> point.getValue().getDoubleValue()) + .collect(Collectors.toList()); } MetricSet.MetricSetBuilder metricSetBuilder = From d29fff98aeacdfa3846e335a84f1e247f921dcf5 Mon Sep 17 00:00:00 2001 From: Tom Klinovsky Date: Tue, 26 Dec 2023 00:10:38 +0200 Subject: [PATCH 5/6] added tests for stackdriverMetricService --- .../kayenta-stackdriver.gradle | 2 + .../StackdriverMetricsServiceTest.java | 160 +++++++++++++----- 2 files changed, 124 insertions(+), 38 deletions(-) diff --git a/kayenta-stackdriver/kayenta-stackdriver.gradle b/kayenta-stackdriver/kayenta-stackdriver.gradle index 86ec59f9a..3667da5bb 100644 --- a/kayenta-stackdriver/kayenta-stackdriver.gradle +++ b/kayenta-stackdriver/kayenta-stackdriver.gradle @@ -2,4 +2,6 @@ dependencies { implementation project(":kayenta-core") implementation project(":kayenta-google") api "com.google.apis:google-api-services-monitoring" + + testImplementation 'org.mockito:mockito-inline:2.13.0' } diff --git a/kayenta-stackdriver/src/test/java/com/netflix/kayenta/stackdriver/metrics/StackdriverMetricsServiceTest.java b/kayenta-stackdriver/src/test/java/com/netflix/kayenta/stackdriver/metrics/StackdriverMetricsServiceTest.java index 198a1168b..2cbaacad4 100644 --- a/kayenta-stackdriver/src/test/java/com/netflix/kayenta/stackdriver/metrics/StackdriverMetricsServiceTest.java +++ b/kayenta-stackdriver/src/test/java/com/netflix/kayenta/stackdriver/metrics/StackdriverMetricsServiceTest.java @@ -1,69 +1,153 @@ package com.netflix.kayenta.stackdriver.metrics; -import static org.hamcrest.CoreMatchers.hasItem; -import static org.hamcrest.CoreMatchers.is; -import static org.junit.Assert.assertThat; +import static org.assertj.core.api.Assertions.*; +import static org.mockito.Answers.RETURNS_DEEP_STUBS; +import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.Mockito.when; +import com.google.api.services.monitoring.v3.Monitoring; +import com.google.api.services.monitoring.v3.model.ListMetricDescriptorsResponse; import com.google.api.services.monitoring.v3.model.ListTimeSeriesResponse; +import com.google.api.services.monitoring.v3.model.MetricDescriptor; import com.google.api.services.monitoring.v3.model.Point; +import com.google.api.services.monitoring.v3.model.TimeInterval; import com.google.api.services.monitoring.v3.model.TimeSeries; import com.google.api.services.monitoring.v3.model.TypedValue; import com.netflix.kayenta.canary.CanaryConfig; import com.netflix.kayenta.canary.CanaryMetricConfig; +import com.netflix.kayenta.canary.CanaryScope; +import com.netflix.kayenta.canary.providers.metrics.StackdriverCanaryMetricSetQueryConfig; +import com.netflix.kayenta.google.security.GoogleNamedAccountCredentials; import com.netflix.kayenta.metrics.MetricSet; +import com.netflix.kayenta.security.AccountCredentials; +import com.netflix.kayenta.security.AccountCredentialsRepository; import com.netflix.kayenta.stackdriver.canary.StackdriverCanaryScope; +import com.netflix.spectator.api.Registry; +import java.io.IOException; +import java.time.Instant; import java.util.ArrayList; +import java.util.HashSet; import java.util.List; -import org.junit.Test; -import org.junit.runner.RunWith; +import java.util.Map; +import java.util.Set; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.InjectMocks; import org.mockito.Mock; -import org.mockito.junit.MockitoJUnitRunner; +import org.mockito.junit.jupiter.MockitoExtension; -@RunWith(MockitoJUnitRunner.class) +@ExtendWith(MockitoExtension.class) public class StackdriverMetricsServiceTest { - private static final String ACCOUNT_NAME = "some-stackdriver-account"; - private static final String SCOPE = "env=test"; - private static final double testDoubleValue = 12.3d; - @Mock ListTimeSeriesResponse response; + private static final String ACCOUNT = "test-account"; + + @Mock AccountCredentialsRepository accountCredentialsRepoMock; + + @Mock(answer = RETURNS_DEEP_STUBS) + GoogleNamedAccountCredentials googleAccountCredentialsMock; + + @Mock GoogleNamedAccountCredentials stackdriverCredentialsMock; + @Mock ListMetricDescriptorsResponse listMetricDescriptorsResponseMock; + @Mock StackdriverCanaryScope canaryScopeMock; + + @Mock(answer = RETURNS_DEEP_STUBS) + Monitoring monitoringMock; + + @Mock Monitoring.Projects.TimeSeries.List timeSeriesListMock; + @Mock ListTimeSeriesResponse responseMock; + + @Mock(answer = RETURNS_DEEP_STUBS) + Registry registry; @InjectMocks StackdriverMetricsService stackdriverMetricsService; @Test - public void testDummy() { - assertThat("dummy", is("dummy")); - } + public void readsInt64Metrics() throws IOException { + when(accountCredentialsRepoMock.getRequiredOne(ACCOUNT)).thenReturn(stackdriverCredentialsMock); - @Test - public void returnsMetricSetValuesFromDouble() { - TimeSeries singleDoublePointTimeSeries = - new TimeSeries() - .setValueType("DOUBLE") - .setPoints( - new ArrayList() { - { - add((new Point()).setValue((new TypedValue()).setDoubleValue(testDoubleValue))); - } - }); - - when(response.getTimeSeries()) - .thenReturn( - new ArrayList() { - { - add(singleDoublePointTimeSeries); - } - }); + when(stackdriverCredentialsMock.getMonitoring()).thenReturn(monitoringMock); + + when(monitoringMock + .projects() + .timeSeries() + .list(anyString()) + .setAggregationAlignmentPeriod(anyString()) + .setAggregationCrossSeriesReducer(anyString()) + .setAggregationPerSeriesAligner(anyString()) + .setFilter(anyString()) + .setIntervalStartTime(anyString()) + .setIntervalEndTime(anyString())) + .thenReturn(timeSeriesListMock); + + when(timeSeriesListMock.execute()).thenReturn(responseMock); + + List timeSeriesListWithInt64Points = new ArrayList(); + + // Create a time series with INT64 points + List int64Points = new ArrayList(); + int64Points.add( + new Point() + .setValue(new TypedValue().setInt64Value((Long) 64l)) + .setInterval( + new TimeInterval() + .setStartTime("1970-01-01T00:00:00.00Z") + .setEndTime("1970-01-01T00:00:01.00Z"))); + TimeSeries timeSeriesWithInt64Points = + new TimeSeries().setValueType("INT64").setPoints(int64Points); + timeSeriesListWithInt64Points.add(timeSeriesWithInt64Points); + + when(responseMock.getTimeSeries()).thenReturn(timeSeriesListWithInt64Points); CanaryConfig canaryConfig = new CanaryConfig(); - CanaryMetricConfig canaryMetricConfig = CanaryMetricConfig.builder().name("some-name").build(); - StackdriverCanaryScope experimentScope = new StackdriverCanaryScope(); + CanaryMetricConfig canaryMetricConfig = + CanaryMetricConfig.builder() + .name("metricConfig") + .query( + StackdriverCanaryMetricSetQueryConfig.builder() + .resourceType("global") + .metricType("instance") + .build()) + .build(); - List metricSetList = + CanaryScope canaryScope = + new StackdriverCanaryScope() + .setStart(Instant.EPOCH) + .setEnd(Instant.EPOCH.plusSeconds(1)) + .setStep(1l); + List queriedMetrics = stackdriverMetricsService.queryMetrics( - ACCOUNT_NAME, canaryConfig, canaryMetricConfig, experimentScope); + ACCOUNT, canaryConfig, canaryMetricConfig, canaryScope); + + assertThat(queriedMetrics.get(0).getValues()).contains(64d); + } + + @Test + public void returnsSingleMetricDescriptorInCache() throws IOException { + Set accountCredentialsSetMock = new HashSet<>(); + accountCredentialsSetMock.add(googleAccountCredentialsMock); + + when(accountCredentialsRepoMock.getAllOf(AccountCredentials.Type.METRICS_STORE)) + .thenReturn(accountCredentialsSetMock); + + when(googleAccountCredentialsMock + .getMonitoring() + .projects() + .metricDescriptors() + .list(anyString()) + .execute()) + .thenReturn(listMetricDescriptorsResponseMock); + + List metricDesciprtorMockList = new ArrayList(); + + MetricDescriptor exampleMetricDescriptor = new MetricDescriptor(); + metricDesciprtorMockList.add(exampleMetricDescriptor); + when(listMetricDescriptorsResponseMock.getMetricDescriptors()) + .thenReturn(metricDesciprtorMockList); + + stackdriverMetricsService.updateMetricDescriptorsCache(); + + List metadata = stackdriverMetricsService.getMetadata(ACCOUNT, ""); - assertThat(metricSetList.get(0).getValues(), hasItem(testDoubleValue)); + assertThat(metadata).containsOnly(exampleMetricDescriptor); } } From 9c90e9c7826caeb57cc619da1de471f388598265 Mon Sep 17 00:00:00 2001 From: Tom Klinovsky Date: Mon, 8 Jan 2024 14:59:10 +0200 Subject: [PATCH 6/6] adding tests to StackdriverMetricsService --- .../kayenta-stackdriver.gradle | 2 +- .../StackdriverMetricsServiceTest.java | 67 ++++++++++--------- 2 files changed, 35 insertions(+), 34 deletions(-) diff --git a/kayenta-stackdriver/kayenta-stackdriver.gradle b/kayenta-stackdriver/kayenta-stackdriver.gradle index 3667da5bb..3ca3f3866 100644 --- a/kayenta-stackdriver/kayenta-stackdriver.gradle +++ b/kayenta-stackdriver/kayenta-stackdriver.gradle @@ -3,5 +3,5 @@ dependencies { implementation project(":kayenta-google") api "com.google.apis:google-api-services-monitoring" - testImplementation 'org.mockito:mockito-inline:2.13.0' + testImplementation 'org.mockito:mockito-inline' } diff --git a/kayenta-stackdriver/src/test/java/com/netflix/kayenta/stackdriver/metrics/StackdriverMetricsServiceTest.java b/kayenta-stackdriver/src/test/java/com/netflix/kayenta/stackdriver/metrics/StackdriverMetricsServiceTest.java index 2cbaacad4..e0b58eb07 100644 --- a/kayenta-stackdriver/src/test/java/com/netflix/kayenta/stackdriver/metrics/StackdriverMetricsServiceTest.java +++ b/kayenta-stackdriver/src/test/java/com/netflix/kayenta/stackdriver/metrics/StackdriverMetricsServiceTest.java @@ -1,8 +1,8 @@ package com.netflix.kayenta.stackdriver.metrics; -import static org.assertj.core.api.Assertions.*; -import static org.mockito.Answers.RETURNS_DEEP_STUBS; +import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import com.google.api.services.monitoring.v3.Monitoring; @@ -15,14 +15,13 @@ import com.google.api.services.monitoring.v3.model.TypedValue; import com.netflix.kayenta.canary.CanaryConfig; import com.netflix.kayenta.canary.CanaryMetricConfig; -import com.netflix.kayenta.canary.CanaryScope; import com.netflix.kayenta.canary.providers.metrics.StackdriverCanaryMetricSetQueryConfig; import com.netflix.kayenta.google.security.GoogleNamedAccountCredentials; import com.netflix.kayenta.metrics.MetricSet; import com.netflix.kayenta.security.AccountCredentials; import com.netflix.kayenta.security.AccountCredentialsRepository; import com.netflix.kayenta.stackdriver.canary.StackdriverCanaryScope; -import com.netflix.spectator.api.Registry; +import com.netflix.spectator.api.DefaultRegistry; import java.io.IOException; import java.time.Instant; import java.util.ArrayList; @@ -30,43 +29,41 @@ import java.util.List; import java.util.Map; import java.util.Set; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; -import org.mockito.InjectMocks; -import org.mockito.Mock; -import org.mockito.junit.jupiter.MockitoExtension; +import org.mockito.Mockito; -@ExtendWith(MockitoExtension.class) public class StackdriverMetricsServiceTest { private static final String ACCOUNT = "test-account"; - @Mock AccountCredentialsRepository accountCredentialsRepoMock; + private AccountCredentialsRepository accountCredentialsRepoMock; - @Mock(answer = RETURNS_DEEP_STUBS) - GoogleNamedAccountCredentials googleAccountCredentialsMock; + private StackdriverMetricsService stackdriverMetricsService; - @Mock GoogleNamedAccountCredentials stackdriverCredentialsMock; - @Mock ListMetricDescriptorsResponse listMetricDescriptorsResponseMock; - @Mock StackdriverCanaryScope canaryScopeMock; - - @Mock(answer = RETURNS_DEEP_STUBS) - Monitoring monitoringMock; - - @Mock Monitoring.Projects.TimeSeries.List timeSeriesListMock; - @Mock ListTimeSeriesResponse responseMock; - - @Mock(answer = RETURNS_DEEP_STUBS) - Registry registry; - - @InjectMocks StackdriverMetricsService stackdriverMetricsService; + @BeforeEach + void setup() { + StackdriverMetricsService.StackdriverMetricsServiceBuilder stackdriverMetricsServiceBuilder = + StackdriverMetricsService.builder(); + accountCredentialsRepoMock = mock(AccountCredentialsRepository.class); + stackdriverMetricsServiceBuilder + .accountCredentialsRepository(accountCredentialsRepoMock) + .registry(new DefaultRegistry()); + stackdriverMetricsService = stackdriverMetricsServiceBuilder.build(); + } @Test - public void readsInt64Metrics() throws IOException { + void readsInt64Metrics() throws IOException { + GoogleNamedAccountCredentials stackdriverCredentialsMock = + mock(GoogleNamedAccountCredentials.class); when(accountCredentialsRepoMock.getRequiredOne(ACCOUNT)).thenReturn(stackdriverCredentialsMock); + Monitoring monitoringMock = mock(Monitoring.class, Mockito.RETURNS_DEEP_STUBS); when(stackdriverCredentialsMock.getMonitoring()).thenReturn(monitoringMock); + Monitoring.Projects.TimeSeries.List timeSeriesListMock = + mock(Monitoring.Projects.TimeSeries.List.class); + when(monitoringMock .projects() .timeSeries() @@ -79,6 +76,7 @@ public void readsInt64Metrics() throws IOException { .setIntervalEndTime(anyString())) .thenReturn(timeSeriesListMock); + ListTimeSeriesResponse responseMock = mock(ListTimeSeriesResponse.class); when(timeSeriesListMock.execute()).thenReturn(responseMock); List timeSeriesListWithInt64Points = new ArrayList(); @@ -109,11 +107,9 @@ public void readsInt64Metrics() throws IOException { .build()) .build(); - CanaryScope canaryScope = - new StackdriverCanaryScope() - .setStart(Instant.EPOCH) - .setEnd(Instant.EPOCH.plusSeconds(1)) - .setStep(1l); + StackdriverCanaryScope canaryScope = new StackdriverCanaryScope(); + canaryScope.setStart(Instant.EPOCH).setEnd(Instant.EPOCH.plusSeconds(1)).setStep(1l); + canaryScope.setProject("my-project"); List queriedMetrics = stackdriverMetricsService.queryMetrics( ACCOUNT, canaryConfig, canaryMetricConfig, canaryScope); @@ -122,13 +118,18 @@ public void readsInt64Metrics() throws IOException { } @Test - public void returnsSingleMetricDescriptorInCache() throws IOException { + void returnsSingleMetricDescriptorInCache() throws IOException { + GoogleNamedAccountCredentials googleAccountCredentialsMock = + mock(GoogleNamedAccountCredentials.class, Mockito.RETURNS_DEEP_STUBS); + Set accountCredentialsSetMock = new HashSet<>(); accountCredentialsSetMock.add(googleAccountCredentialsMock); when(accountCredentialsRepoMock.getAllOf(AccountCredentials.Type.METRICS_STORE)) .thenReturn(accountCredentialsSetMock); + ListMetricDescriptorsResponse listMetricDescriptorsResponseMock = + mock(ListMetricDescriptorsResponse.class); when(googleAccountCredentialsMock .getMonitoring() .projects()