[ONOS-3538] Implement control metrics distribution logic
- Revise getLoad method to getLocalLoad
- Add new getRemoteLoad methods
- Add the capability to query remote control load
CLI and REST will be implemented in a separated patch
Change-Id: I62d4f4ab891d6d3e95cedd5af9e4ab71949c05ec
diff --git a/apps/cpman/app/src/test/java/org/onosproject/cpman/impl/ControlPlaneMonitorTest.java b/apps/cpman/app/src/test/java/org/onosproject/cpman/impl/ControlPlaneMonitorTest.java
index 1ec963d..189ca0b 100644
--- a/apps/cpman/app/src/test/java/org/onosproject/cpman/impl/ControlPlaneMonitorTest.java
+++ b/apps/cpman/app/src/test/java/org/onosproject/cpman/impl/ControlPlaneMonitorTest.java
@@ -26,6 +26,8 @@
import org.onosproject.cpman.ControlMetricType;
import org.onosproject.cpman.MetricValue;
import org.onosproject.net.DeviceId;
+import org.onosproject.store.cluster.messaging.ClusterCommunicationService;
+import org.onosproject.store.cluster.messaging.ClusterCommunicationServiceAdapter;
import java.util.Optional;
import java.util.Set;
@@ -36,8 +38,12 @@
import static org.easymock.EasyMock.replay;
import static org.hamcrest.Matchers.is;
import static org.junit.Assert.assertThat;
-
-import static org.onosproject.cpman.ControlResource.*;
+import static org.onosproject.cpman.ControlResource.CONTROL_MESSAGE_METRICS;
+import static org.onosproject.cpman.ControlResource.CPU_METRICS;
+import static org.onosproject.cpman.ControlResource.DISK_METRICS;
+import static org.onosproject.cpman.ControlResource.MEMORY_METRICS;
+import static org.onosproject.cpman.ControlResource.NETWORK_METRICS;
+import static org.onosproject.cpman.ControlResource.Type;
/**
* Unit test of control plane monitoring service.
@@ -48,6 +54,7 @@
private static final Integer UPDATE_INTERVAL = 1;
private ClusterService mockClusterService;
private ControllerNode mockControllerNode;
+ private ClusterCommunicationService mockCommunicationService;
private NodeId nodeId;
/**
@@ -56,7 +63,9 @@
@Before
public void setup() {
monitor = new ControlPlaneMonitor();
- monitor.activate();
+
+ mockCommunicationService = new ClusterCommunicationServiceAdapter();
+ monitor.communicationService = mockCommunicationService;
nodeId = new NodeId("1");
mockControllerNode = new MockControllerNode(nodeId);
@@ -68,6 +77,8 @@
expect(mockClusterService.getLocalNode())
.andReturn(mockControllerNode).anyTimes();
replay(mockClusterService);
+
+ monitor.activate();
}
/**
@@ -102,7 +113,7 @@
}
private void testLoadMetricWithoutId(ControlMetricType cmt, MetricValue mv) {
- assertThat(monitor.getLoad(nodeId, cmt, Optional.ofNullable(null)).latest(), is(mv.getLoad()));
+ assertThat(monitor.getLocalLoad(cmt, Optional.ofNullable(null)).latest(), is(mv.getLoad()));
}
private void testUpdateMetricWithResource(ControlMetricType cmt, MetricValue mv, String resourceName) {
@@ -111,7 +122,7 @@
}
private void testLoadMetricWithResource(ControlMetricType cmt, MetricValue mv, String resourceName) {
- assertThat(monitor.getLoad(nodeId, cmt, resourceName).latest(), is(mv.getLoad()));
+ assertThat(monitor.getLocalLoad(cmt, resourceName).latest(), is(mv.getLoad()));
}
private void testUpdateMetricWithId(ControlMetricType cmt, MetricValue mv, DeviceId did) {
@@ -120,7 +131,7 @@
}
private void testLoadMetricWithId(ControlMetricType cmt, MetricValue mv, DeviceId did) {
- assertThat(monitor.getLoad(nodeId, cmt, Optional.of(did)).latest(), is(mv.getLoad()));
+ assertThat(monitor.getLocalLoad(cmt, Optional.of(did)).latest(), is(mv.getLoad()));
}
/**
diff --git a/apps/cpman/app/src/test/java/org/onosproject/cpman/impl/message/ControlPlaneMonitorServiceAdaptor.java b/apps/cpman/app/src/test/java/org/onosproject/cpman/impl/message/ControlPlaneMonitorServiceAdaptor.java
index 85b361c..80946bb 100644
--- a/apps/cpman/app/src/test/java/org/onosproject/cpman/impl/message/ControlPlaneMonitorServiceAdaptor.java
+++ b/apps/cpman/app/src/test/java/org/onosproject/cpman/impl/message/ControlPlaneMonitorServiceAdaptor.java
@@ -25,6 +25,7 @@
import java.util.Optional;
import java.util.Set;
+import java.util.concurrent.CompletableFuture;
/**
* Test adapter control plane monitoring service.
@@ -32,23 +33,38 @@
public class ControlPlaneMonitorServiceAdaptor implements ControlPlaneMonitorService {
@Override
public void updateMetric(ControlMetric controlMetric,
- int updateIntervalInMinutes, Optional<DeviceId> deviceId) {
+ int updateIntervalInMinutes,
+ Optional<DeviceId> deviceId) {
}
@Override
public void updateMetric(ControlMetric controlMetric,
- int updateIntervalInMinutes, String resourceName) {
+ int updateIntervalInMinutes,
+ String resourceName) {
}
@Override
- public ControlLoad getLoad(NodeId nodeId,
- ControlMetricType type, Optional<DeviceId> deviceId) {
+ public ControlLoad getLocalLoad(ControlMetricType type,
+ Optional<DeviceId> deviceId) {
return null;
}
@Override
- public ControlLoad getLoad(NodeId nodeId,
- ControlMetricType type, String resourceName) {
+ public ControlLoad getLocalLoad(ControlMetricType type, String resourceName) {
+ return null;
+ }
+
+ @Override
+ public CompletableFuture<ControlLoad> getRemoteLoad(NodeId nodeId,
+ ControlMetricType type,
+ Optional<DeviceId> deviceId) {
+ return null;
+ }
+
+ @Override
+ public CompletableFuture<ControlLoad> getRemoteLoad(NodeId nodeId,
+ ControlMetricType type,
+ String resourceName) {
return null;
}
diff --git a/apps/cpman/app/src/test/java/org/onosproject/cpman/rest/ControlMetricsResourceTest.java b/apps/cpman/app/src/test/java/org/onosproject/cpman/rest/ControlMetricsResourceTest.java
index f8d6c7d..62e5924 100644
--- a/apps/cpman/app/src/test/java/org/onosproject/cpman/rest/ControlMetricsResourceTest.java
+++ b/apps/cpman/app/src/test/java/org/onosproject/cpman/rest/ControlMetricsResourceTest.java
@@ -182,8 +182,8 @@
public void testResourcePopulatedArray() {
expect(mockControlPlaneMonitorService.availableResources(anyObject()))
.andReturn(resourceSet).once();
- expect(mockControlPlaneMonitorService.getLoad(anyObject(), anyObject(),
- anyString())).andReturn(null).times(4);
+ expect(mockControlPlaneMonitorService.getLocalLoad(anyObject(),
+ anyString())).andReturn(null).times(4);
replay(mockControlPlaneMonitorService);
final WebTarget wt = target();