aboutsummaryrefslogtreecommitdiffstats
path: root/controller-server/src/test
diff options
context:
space:
mode:
authorMartin Polden <mpolden@mpolden.no>2019-09-09 13:05:10 +0200
committerMartin Polden <mpolden@mpolden.no>2019-09-09 14:46:09 +0200
commit46708d8c64baea341aa332f18d026dd7936bc745 (patch)
tree490489429d4e92cf6be6ccc8eaf769c50873ffa2 /controller-server/src/test
parentdd25c2a3c4c16ba96eda61e996f5347f1f8eaa9c (diff)
Move config server metrics fetching to controller-server
`MetricsService` interface and component setup is no longer needed.
Diffstat (limited to 'controller-server/src/test')
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/ControllerTester.java28
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ConfigServerMock.java11
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/MetricsServiceMock.java39
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/DeploymentMetricsMaintainerTest.java56
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/metric/ConfigServerMetricsTest.java78
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/ApplicationSerializerTest.java4
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/ControllerContainerTest.java1
-rw-r--r--controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiTest.java2
8 files changed, 136 insertions, 83 deletions
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/ControllerTester.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/ControllerTester.java
index f8bd1343436..29a00784e6d 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/ControllerTester.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/ControllerTester.java
@@ -25,14 +25,12 @@ import com.yahoo.vespa.hosted.controller.api.integration.dns.MemoryNameService;
import com.yahoo.vespa.hosted.controller.api.integration.dns.Record;
import com.yahoo.vespa.hosted.controller.api.integration.dns.RecordName;
import com.yahoo.vespa.hosted.controller.api.integration.organization.Contact;
-import com.yahoo.vespa.hosted.controller.api.integration.stubs.MockBuildService;
import com.yahoo.vespa.hosted.controller.api.integration.stubs.MockMavenRepository;
import com.yahoo.vespa.hosted.controller.application.ApplicationPackage;
import com.yahoo.vespa.hosted.controller.athenz.impl.AthenzFacade;
import com.yahoo.vespa.hosted.controller.athenz.mock.AthenzClientFactoryMock;
import com.yahoo.vespa.hosted.controller.athenz.mock.AthenzDbMock;
import com.yahoo.vespa.hosted.controller.integration.ConfigServerMock;
-import com.yahoo.vespa.hosted.controller.integration.MetricsServiceMock;
import com.yahoo.vespa.hosted.controller.integration.ServiceRegistryMock;
import com.yahoo.vespa.hosted.controller.integration.ZoneRegistryMock;
import com.yahoo.vespa.hosted.controller.persistence.ApplicationSerializer;
@@ -72,33 +70,28 @@ public final class ControllerTester {
private final ServiceRegistryMock serviceRegistry;
private final CuratorDb curator;
private final RotationsConfig rotationsConfig;
- private final MockBuildService buildService;
- private final MetricsServiceMock metricsService;
private Controller controller;
- public ControllerTester(ManualClock clock, RotationsConfig rotationsConfig, MockCuratorDb curatorDb,
- MetricsServiceMock metricsService) {
+ public ControllerTester(ManualClock clock, RotationsConfig rotationsConfig, MockCuratorDb curatorDb) {
this(new AthenzDbMock(),
clock,
new ZoneRegistryMock(),
curatorDb,
rotationsConfig,
- new MockBuildService(),
- metricsService,
new ServiceRegistryMock());
}
public ControllerTester(ManualClock clock) {
- this(clock, defaultRotationsConfig(), new MockCuratorDb(), new MetricsServiceMock());
+ this(clock, defaultRotationsConfig(), new MockCuratorDb());
}
public ControllerTester(RotationsConfig rotationsConfig) {
- this(new ManualClock(), rotationsConfig, new MockCuratorDb(), new MetricsServiceMock());
+ this(new ManualClock(), rotationsConfig, new MockCuratorDb());
}
public ControllerTester(MockCuratorDb curatorDb) {
- this(new ManualClock(), defaultRotationsConfig(), curatorDb, new MetricsServiceMock());
+ this(new ManualClock(), defaultRotationsConfig(), curatorDb);
}
public ControllerTester() {
@@ -108,8 +101,6 @@ public final class ControllerTester {
private ControllerTester(AthenzDbMock athenzDb, ManualClock clock,
ZoneRegistryMock zoneRegistry,
CuratorDb curator, RotationsConfig rotationsConfig,
- MockBuildService buildService,
- MetricsServiceMock metricsService,
ServiceRegistryMock serviceRegistry) {
this.athenzDb = athenzDb;
this.clock = clock;
@@ -117,11 +108,7 @@ public final class ControllerTester {
this.serviceRegistry = serviceRegistry;
this.curator = curator;
this.rotationsConfig = rotationsConfig;
- this.buildService = buildService;
- this.metricsService = metricsService;
- this.controller = createController(curator, rotationsConfig, clock, zoneRegistry,
- athenzDb,
- metricsService, serviceRegistry);
+ this.controller = createController(curator, rotationsConfig, clock, zoneRegistry, athenzDb, serviceRegistry);
// Make root logger use time from manual clock
configureDefaultLogHandler(handler -> handler.setFilter(
@@ -159,8 +146,6 @@ public final class ControllerTester {
public ServiceRegistryMock serviceRegistry() { return serviceRegistry; }
- public MetricsServiceMock metricsService() { return metricsService; }
-
public Optional<Record> findCname(String name) {
return serviceRegistry.nameService().findRecords(Record.Type.CNAME, RecordName.from(name)).stream().findFirst();
}
@@ -168,7 +153,6 @@ public final class ControllerTester {
/** Create a new controller instance. Useful to verify that controller state is rebuilt from persistence */
public final void createNewController() {
controller = createController(curator, rotationsConfig, clock, zoneRegistry, athenzDb,
- metricsService,
serviceRegistry);
}
@@ -305,12 +289,10 @@ public final class ControllerTester {
ManualClock clock,
ZoneRegistryMock zoneRegistryMock,
AthenzDbMock athensDb,
- MetricsServiceMock metricsService,
ServiceRegistryMock serviceRegistry) {
Controller controller = new Controller(curator,
rotationsConfig,
zoneRegistryMock,
- metricsService,
clock,
new AthenzFacade(new AthenzClientFactoryMock(athensDb)),
() -> "test-controller",
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ConfigServerMock.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ConfigServerMock.java
index 4d16b546d6b..4a7ee8bcb63 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ConfigServerMock.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/ConfigServerMock.java
@@ -64,6 +64,7 @@ public class ConfigServerMock extends AbstractComponent implements ConfigServer
private final Map<ZoneId, List<LoadBalancer>> loadBalancers = new HashMap<>();
private final Map<DeploymentId, List<Log>> warnings = new HashMap<>();
private final Map<DeploymentId, Set<String>> rotationNames = new HashMap<>();
+ private final Map<DeploymentId, List<ClusterMetrics>> clusterMetrics = new HashMap<>();
private Version lastPrepareVersion = null;
private RuntimeException prepareException = null;
@@ -188,6 +189,14 @@ public class ConfigServerMock extends AbstractComponent implements ConfigServer
return Collections.unmodifiableMap(rotationNames);
}
+ public void setMetrics(DeploymentId deployment, ClusterMetrics clusterMetrics) {
+ setMetrics(deployment, List.of(clusterMetrics));
+ }
+
+ public void setMetrics(DeploymentId deployment, List<ClusterMetrics> clusterMetrics) {
+ this.clusterMetrics.put(deployment, clusterMetrics);
+ }
+
@Override
public NodeRepositoryMock nodeRepository() {
return nodeRepository;
@@ -336,7 +345,7 @@ public class ConfigServerMock extends AbstractComponent implements ConfigServer
@Override
public List<ClusterMetrics> getMetrics(DeploymentId deployment) {
- return List.of();
+ return Collections.unmodifiableList(clusterMetrics.getOrDefault(deployment, List.of()));
}
// Returns a canned example response
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/MetricsServiceMock.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/MetricsServiceMock.java
deleted file mode 100644
index 2eae50cbf9f..00000000000
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/integration/MetricsServiceMock.java
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright 2018 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.vespa.hosted.controller.integration;
-
-import com.yahoo.component.AbstractComponent;
-import com.yahoo.config.provision.ApplicationId;
-import com.yahoo.config.provision.zone.ZoneId;
-import com.yahoo.vespa.hosted.controller.api.integration.metrics.MetricsService;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * @author bratseth
- */
-public class MetricsServiceMock extends AbstractComponent implements MetricsService {
-
- private final Map<String, Double> metrics = new HashMap<>();
-
- public MetricsServiceMock setMetric(String key, Double value) {
- metrics.put(key, value);
- return this;
- }
-
- @Override
- public ApplicationMetrics getApplicationMetrics(ApplicationId application) {
- return new ApplicationMetrics(metrics.getOrDefault("queryServiceQuality", 0.5),
- metrics.getOrDefault("writeServiceQuality", 0.7));
- }
-
- @Override
- public DeploymentMetrics getDeploymentMetrics(ApplicationId application, ZoneId zone) {
- return new DeploymentMetrics(metrics.getOrDefault("queriesPerSecond", 1D),
- metrics.getOrDefault("writesPerSecond", 2D),
- metrics.getOrDefault("docoumentCount", 3D).longValue(),
- metrics.getOrDefault("queryLatencyMillis", 4D),
- metrics.getOrDefault("writeLatencyMillis", 5D));
- }
-
-}
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/DeploymentMetricsMaintainerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/DeploymentMetricsMaintainerTest.java
index 424cb05ebef..c8b3cd01fe8 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/DeploymentMetricsMaintainerTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/maintenance/DeploymentMetricsMaintainerTest.java
@@ -8,13 +8,17 @@ import com.yahoo.config.provision.RegionName;
import com.yahoo.config.provision.zone.ZoneId;
import com.yahoo.vespa.hosted.controller.Application;
import com.yahoo.vespa.hosted.controller.Controller;
-import com.yahoo.vespa.hosted.controller.ControllerTester;
+import com.yahoo.vespa.hosted.controller.api.application.v4.model.ClusterMetrics;
+import com.yahoo.vespa.hosted.controller.api.identifiers.DeploymentId;
import com.yahoo.vespa.hosted.controller.application.ApplicationPackage;
import com.yahoo.vespa.hosted.controller.application.Deployment;
+import com.yahoo.vespa.hosted.controller.deployment.DeploymentTester;
import org.junit.Test;
import java.time.Duration;
import java.time.Instant;
+import java.util.HashMap;
+import java.util.Map;
import java.util.Optional;
import java.util.function.Supplier;
@@ -28,14 +32,15 @@ import static org.junit.Assert.assertFalse;
*/
public class DeploymentMetricsMaintainerTest {
- ControllerTester tester = new ControllerTester();
+ private final DeploymentTester tester = new DeploymentTester();
@Test
public void updates_metrics() {
- ApplicationId appId = tester.createAndDeploy("tenant1", "domain1", "app1",
- Environment.dev, 123).id();
+ var application = tester.createApplication("app1", "tenant1", 123L, 1L);
+ deploy(application, Version.fromString("7.1"));
+
DeploymentMetricsMaintainer maintainer = maintainer(tester.controller());
- Supplier<Application> app = tester.application(appId);
+ Supplier<Application> app = () -> tester.application(application.id());
Supplier<Deployment> deployment = () -> app.get().deployments().values().stream().findFirst().get();
// No metrics gathered yet
@@ -48,7 +53,7 @@ public class DeploymentMetricsMaintainerTest {
// Only get application metrics for old version
deploy(app.get(), Version.fromString("6.3.3"));
maintainer.maintain();
- assertEquals(0.5, app.get().metrics().queryServiceQuality(), 0);
+ assertEquals(0, app.get().metrics().queryServiceQuality(), 0);
assertEquals(0, deployment.get().metrics().documentCount(), 0);
assertFalse("No timestamp set", deployment.get().metrics().instant().isPresent());
assertFalse("Never received any queries", deployment.get().activity().lastQueried().isPresent());
@@ -56,10 +61,16 @@ public class DeploymentMetricsMaintainerTest {
// Metrics are gathered and saved to application
deploy(app.get(), Version.fromString("7.5.5"));
+ var metrics0 = Map.of(ClusterMetrics.QUERIES_PER_SECOND, 1D,
+ ClusterMetrics.FEED_PER_SECOND, 2D,
+ ClusterMetrics.DOCUMENT_COUNT, 3D,
+ ClusterMetrics.QUERY_LATENCY, 4D,
+ ClusterMetrics.FEED_LATENCY, 5D);
+ setMetrics(application.id(), metrics0);
maintainer.maintain();
Instant t1 = tester.clock().instant().truncatedTo(MILLIS);
- assertEquals(0.5, app.get().metrics().queryServiceQuality(), Double.MIN_VALUE);
- assertEquals(0.7, app.get().metrics().writeServiceQuality(), Double.MIN_VALUE);
+ assertEquals(0.0, app.get().metrics().queryServiceQuality(), Double.MIN_VALUE);
+ assertEquals(0.0, app.get().metrics().writeServiceQuality(), Double.MIN_VALUE);
assertEquals(1, deployment.get().metrics().queriesPerSecond(), Double.MIN_VALUE);
assertEquals(2, deployment.get().metrics().writesPerSecond(), Double.MIN_VALUE);
assertEquals(3, deployment.get().metrics().documentCount(), Double.MIN_VALUE);
@@ -82,8 +93,10 @@ public class DeploymentMetricsMaintainerTest {
// Query traffic disappears. Query activity stops updating
tester.clock().advance(Duration.ofHours(1));
Instant t3 = tester.clock().instant().truncatedTo(MILLIS);
- tester.metricsService().setMetric("queriesPerSecond", 0D);
- tester.metricsService().setMetric("writesPerSecond", 5D);
+ var metrics1 = new HashMap<>(metrics0);
+ metrics1.put(ClusterMetrics.QUERIES_PER_SECOND, 0D);
+ metrics1.put(ClusterMetrics.FEED_PER_SECOND, 5D);
+ setMetrics(application.id(), metrics1);
maintainer.maintain();
assertEquals(t2, deployment.get().activity().lastQueried().get());
assertEquals(t3, deployment.get().activity().lastWritten().get());
@@ -92,7 +105,9 @@ public class DeploymentMetricsMaintainerTest {
// Feed traffic disappears. Feed activity stops updating
tester.clock().advance(Duration.ofHours(1));
- tester.metricsService().setMetric("writesPerSecond", 0D);
+ var metrics2 = new HashMap<>(metrics1);
+ metrics2.put(ClusterMetrics.FEED_PER_SECOND, 0D);
+ setMetrics(application.id(), metrics2);
maintainer.maintain();
assertEquals(t2, deployment.get().activity().lastQueried().get());
assertEquals(t3, deployment.get().activity().lastWritten().get());
@@ -100,15 +115,24 @@ public class DeploymentMetricsMaintainerTest {
assertEquals(5, deployment.get().activity().lastWritesPerSecond().getAsDouble(), Double.MIN_VALUE);
}
+ private void setMetrics(ApplicationId application, Map<String, Double> metrics) {
+ var clusterMetrics = new ClusterMetrics("default", ClusterMetrics.ClusterType.container);
+ for (var kv : metrics.entrySet()) {
+ clusterMetrics = clusterMetrics.addMetric(kv.getKey(), kv.getValue());
+ }
+ tester.controllerTester().serviceRegistry().configServerMock().setMetrics(new DeploymentId(application, ZoneId.from("dev", "us-east-1")), clusterMetrics);
+ }
+
private static DeploymentMetricsMaintainer maintainer(Controller controller) {
return new DeploymentMetricsMaintainer(controller, Duration.ofDays(1), new JobControl(controller.curator()));
}
private void deploy(Application application, Version version) {
- tester.deploy(application,
- ZoneId.from(Environment.dev, RegionName.from("us-east-1")),
- Optional.of(new ApplicationPackage(new byte[0])),
- false,
- Optional.of(version));
+ tester.controllerTester().deploy(application,
+ ZoneId.from(Environment.dev, RegionName.from("us-east-1")),
+ Optional.of(new ApplicationPackage(new byte[0])),
+ false,
+ Optional.of(version));
}
+
}
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/metric/ConfigServerMetricsTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/metric/ConfigServerMetricsTest.java
new file mode 100644
index 00000000000..23a6c6286c0
--- /dev/null
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/metric/ConfigServerMetricsTest.java
@@ -0,0 +1,78 @@
+package com.yahoo.vespa.hosted.controller.metric;
+
+import com.yahoo.config.provision.ApplicationId;
+import com.yahoo.config.provision.zone.ZoneId;
+import com.yahoo.vespa.hosted.controller.api.application.v4.model.ClusterMetrics;
+import com.yahoo.vespa.hosted.controller.api.identifiers.DeploymentId;
+import com.yahoo.vespa.hosted.controller.integration.ConfigServerMock;
+import com.yahoo.vespa.hosted.controller.integration.ZoneRegistryMock;
+import org.junit.Before;
+import org.junit.Test;
+
+import java.util.List;
+
+import static org.junit.Assert.assertEquals;
+
+/**
+ * @author olaa
+ */
+public class ConfigServerMetricsTest {
+
+ private final ApplicationId applicationId = new ApplicationId.Builder()
+ .tenant("foo")
+ .applicationName("bar")
+ .instanceName("default")
+ .build();
+
+ private final ZoneId zoneId = ZoneId.from("prod", "us-west-1");
+
+ private ConfigServerMock configServer;
+ private ConfigServerMetrics service;
+
+ @Before
+ public void before() {
+ configServer = new ConfigServerMock(new ZoneRegistryMock());
+ service = new ConfigServerMetrics(configServer);
+ }
+
+ @Test
+ public void test_returning_metrics() {
+ //
+ // Wire up the test
+ //
+ var deploymentId = new DeploymentId(applicationId, zoneId);
+
+ var clusterMetrics1 = new ClusterMetrics("niceCluster", ClusterMetrics.ClusterType.container) {{
+ addMetric("queriesPerSecond", 23.0);
+ addMetric("queryLatency", 1337.0);
+ }};
+
+ var clusterMetrics2 = new ClusterMetrics("alsoNiceCluster", ClusterMetrics.ClusterType.container) {{
+ addMetric("queriesPerSecond", 11.0);
+ addMetric("queryLatency", 12.0);
+ }};
+
+ var response = List.of(clusterMetrics1, clusterMetrics2);
+
+ configServer.setMetrics(deploymentId, response);
+
+ //
+ // Now we can actually test stuff :(
+ //
+ var deploymentMetrics = service.getDeploymentMetrics(applicationId, zoneId);
+
+ assertEquals(23.0 + 11.0, deploymentMetrics.queriesPerSecond(), 0.001);
+ assertEquals(908.323, deploymentMetrics.queryLatencyMillis(), 0.001);
+ assertEquals(0, deploymentMetrics.documentCount());
+ assertEquals(0.0, deploymentMetrics.writeLatencyMillis(), 0.001);
+ assertEquals(0.0, deploymentMetrics.writesPerSecond(), 0.001);
+ }
+
+ @Test
+ public void test_not_implemented_application_metrics() {
+ var applicationMetrics = service.getApplicationMetrics(applicationId);
+ assertEquals(0.0, applicationMetrics.queryServiceQuality(), 0.001);
+ assertEquals(0.0, applicationMetrics.writeServiceQuality(), 0.001);
+ }
+
+}
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/ApplicationSerializerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/ApplicationSerializerTest.java
index d0e18be270a..16f57a61916 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/ApplicationSerializerTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/persistence/ApplicationSerializerTest.java
@@ -12,7 +12,6 @@ import com.yahoo.vespa.hosted.controller.Application;
import com.yahoo.vespa.hosted.controller.api.integration.deployment.ApplicationVersion;
import com.yahoo.vespa.hosted.controller.api.integration.deployment.JobType;
import com.yahoo.vespa.hosted.controller.api.integration.deployment.SourceRevision;
-import com.yahoo.vespa.hosted.controller.api.integration.metrics.MetricsService;
import com.yahoo.vespa.hosted.controller.api.integration.organization.IssueId;
import com.yahoo.vespa.hosted.controller.api.integration.organization.User;
import com.yahoo.vespa.hosted.controller.application.AssignedRotation;
@@ -25,6 +24,7 @@ import com.yahoo.vespa.hosted.controller.application.DeploymentJobs;
import com.yahoo.vespa.hosted.controller.application.DeploymentJobs.JobError;
import com.yahoo.vespa.hosted.controller.application.DeploymentMetrics;
import com.yahoo.vespa.hosted.controller.application.JobStatus;
+import com.yahoo.vespa.hosted.controller.metric.ApplicationMetrics;
import com.yahoo.vespa.hosted.controller.rotation.RotationId;
import com.yahoo.vespa.hosted.controller.rotation.RotationState;
import com.yahoo.vespa.hosted.controller.rotation.RotationStatus;
@@ -114,7 +114,7 @@ public class ApplicationSerializerTest {
Optional.of(IssueId.from("1234")),
Optional.of(User.from("by-username")),
OptionalInt.of(7),
- new MetricsService.ApplicationMetrics(0.5, 0.9),
+ new ApplicationMetrics(0.5, 0.9),
Optional.of("-----BEGIN PUBLIC KEY-----\n∠( ᐛ 」∠)_\n-----END PUBLIC KEY-----"),
List.of(AssignedRotation.fromStrings("foo", "default", "my-rotation", Set.of())),
rotationStatus);
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/ControllerContainerTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/ControllerContainerTest.java
index 0fc7bcfc76f..0cfb79a0743 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/ControllerContainerTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/ControllerContainerTest.java
@@ -68,7 +68,6 @@ public class ControllerContainerTest {
" <component id='com.yahoo.vespa.hosted.controller.integration.ServiceRegistryMock'/>\n" +
" <component id='com.yahoo.vespa.hosted.controller.Controller'/>\n" +
" <component id='com.yahoo.vespa.hosted.controller.integration.ConfigServerProxyMock'/>\n" +
- " <component id='com.yahoo.vespa.hosted.controller.integration.MetricsServiceMock'/>\n" +
" <component id='com.yahoo.vespa.hosted.controller.maintenance.ControllerMaintenance'/>\n" +
" <component id='com.yahoo.vespa.hosted.controller.maintenance.JobControl'/>\n" +
" <component id='com.yahoo.vespa.hosted.controller.api.integration.stubs.MockMavenRepository'/>\n" +
diff --git a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiTest.java b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiTest.java
index ec6c905b7e7..c6cd388d75f 100644
--- a/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiTest.java
+++ b/controller-server/src/test/java/com/yahoo/vespa/hosted/controller/restapi/application/ApplicationApiTest.java
@@ -31,7 +31,6 @@ import com.yahoo.vespa.hosted.controller.api.identifiers.UserId;
import com.yahoo.vespa.hosted.controller.api.integration.configserver.ConfigServerException;
import com.yahoo.vespa.hosted.controller.api.integration.deployment.ApplicationVersion;
import com.yahoo.vespa.hosted.controller.api.integration.deployment.JobType;
-import com.yahoo.vespa.hosted.controller.api.integration.metrics.MetricsService.ApplicationMetrics;
import com.yahoo.vespa.hosted.controller.api.integration.organization.Contact;
import com.yahoo.vespa.hosted.controller.api.integration.organization.IssueId;
import com.yahoo.vespa.hosted.controller.api.integration.organization.User;
@@ -60,6 +59,7 @@ import com.yahoo.vespa.hosted.controller.integration.ConfigServerMock;
import com.yahoo.vespa.hosted.controller.integration.ServiceRegistryMock;
import com.yahoo.vespa.hosted.controller.maintenance.JobControl;
import com.yahoo.vespa.hosted.controller.maintenance.RotationStatusUpdater;
+import com.yahoo.vespa.hosted.controller.metric.ApplicationMetrics;
import com.yahoo.vespa.hosted.controller.restapi.ContainerControllerTester;
import com.yahoo.vespa.hosted.controller.restapi.ContainerTester;
import com.yahoo.vespa.hosted.controller.restapi.ControllerContainerTest;