[ONOS-2233] Implement of Tunnel monitoring, measurement and observation
1. add a tunnel statistics interface.
2. add a pcep tunnel statistics interface.
3. add a tunnelStatsCollector to poll statistic request ,The polling interval can be configurable.
4. extend the pcepTunnelProvider to handle tunnel statistic message
Change-Id: I1187d586a1833ca4bee55529a65cd61eff0e612d
diff --git a/providers/pcep/tunnel/src/test/java/org/onosproject/provider/pcep/tunnel/impl/PcepControllerAdapter.java b/providers/pcep/tunnel/src/test/java/org/onosproject/provider/pcep/tunnel/impl/PcepControllerAdapter.java
index 6aa81f7..6526611 100644
--- a/providers/pcep/tunnel/src/test/java/org/onosproject/provider/pcep/tunnel/impl/PcepControllerAdapter.java
+++ b/providers/pcep/tunnel/src/test/java/org/onosproject/provider/pcep/tunnel/impl/PcepControllerAdapter.java
@@ -77,4 +77,9 @@
public Boolean updateTunnelBandwidth(String id, long bandwidth) {
return null;
}
+
+ @Override
+ public void getTunnelStatistics(String pcepTunnelId) {
+
+ }
}
diff --git a/providers/pcep/tunnel/src/test/java/org/onosproject/provider/pcep/tunnel/impl/PcepReleaseTunnelProviderTest.java b/providers/pcep/tunnel/src/test/java/org/onosproject/provider/pcep/tunnel/impl/PcepReleaseTunnelProviderTest.java
index c728aad..e386138 100644
--- a/providers/pcep/tunnel/src/test/java/org/onosproject/provider/pcep/tunnel/impl/PcepReleaseTunnelProviderTest.java
+++ b/providers/pcep/tunnel/src/test/java/org/onosproject/provider/pcep/tunnel/impl/PcepReleaseTunnelProviderTest.java
@@ -24,6 +24,7 @@
import org.junit.After;
import org.junit.Test;
import org.onlab.packet.IpAddress;
+import org.onosproject.cfg.ComponentConfigAdapter;
import org.onosproject.core.DefaultGroupId;
import org.onosproject.incubator.net.tunnel.DefaultTunnel;
import org.onosproject.incubator.net.tunnel.IpTunnelEndPoint;
@@ -49,13 +50,16 @@
private final PcepClientControllerAdapter controller = new PcepClientControllerAdapter();
private final PcepControllerAdapter ctl = new PcepControllerAdapter();
private final PcepTunnelApiMapper pcepTunnelAPIMapper = new PcepTunnelApiMapper();
+ private final TunnelServiceAdapter tunnelService = new TunnelServiceAdapter();
@Test
public void testCasePcepReleaseTunnel() {
tunnelProvider.tunnelProviderRegistry = registry;
tunnelProvider.pcepClientController = controller;
tunnelProvider.controller = ctl;
+ tunnelProvider.tunnelService = tunnelService;
tunnelProvider.pcepTunnelAPIMapper = pcepTunnelAPIMapper;
+ tunnelProvider.cfgService = new ComponentConfigAdapter();
tunnelProvider.activate();
Tunnel tunnel;
diff --git a/providers/pcep/tunnel/src/test/java/org/onosproject/provider/pcep/tunnel/impl/PcepSetupTunnelProviderTest.java b/providers/pcep/tunnel/src/test/java/org/onosproject/provider/pcep/tunnel/impl/PcepSetupTunnelProviderTest.java
index e419e22..ef4816e 100644
--- a/providers/pcep/tunnel/src/test/java/org/onosproject/provider/pcep/tunnel/impl/PcepSetupTunnelProviderTest.java
+++ b/providers/pcep/tunnel/src/test/java/org/onosproject/provider/pcep/tunnel/impl/PcepSetupTunnelProviderTest.java
@@ -24,6 +24,7 @@
import org.junit.After;
import org.junit.Test;
import org.onlab.packet.IpAddress;
+import org.onosproject.cfg.ComponentConfigAdapter;
import org.onosproject.core.DefaultGroupId;
import org.onosproject.incubator.net.tunnel.DefaultTunnel;
import org.onosproject.incubator.net.tunnel.IpTunnelEndPoint;
@@ -46,6 +47,7 @@
private final TunnelProviderRegistryAdapter registry = new TunnelProviderRegistryAdapter();
private final PcepClientControllerAdapter controller = new PcepClientControllerAdapter();
private final PcepControllerAdapter ctl = new PcepControllerAdapter();
+ private final TunnelServiceAdapter tunnelService = new TunnelServiceAdapter();
@Test
public void testCasePcepSetupTunnel() {
@@ -53,6 +55,8 @@
tunnelProvider.tunnelProviderRegistry = registry;
tunnelProvider.pcepClientController = controller;
tunnelProvider.controller = ctl;
+ tunnelProvider.cfgService = new ComponentConfigAdapter();
+ tunnelProvider.tunnelService = tunnelService;
tunnelProvider.activate();
diff --git a/providers/pcep/tunnel/src/test/java/org/onosproject/provider/pcep/tunnel/impl/PcepTunnelProviderTest.java b/providers/pcep/tunnel/src/test/java/org/onosproject/provider/pcep/tunnel/impl/PcepTunnelProviderTest.java
index 7a61bb2..0fcd144 100644
--- a/providers/pcep/tunnel/src/test/java/org/onosproject/provider/pcep/tunnel/impl/PcepTunnelProviderTest.java
+++ b/providers/pcep/tunnel/src/test/java/org/onosproject/provider/pcep/tunnel/impl/PcepTunnelProviderTest.java
@@ -38,6 +38,7 @@
import org.onosproject.net.Path;
import org.onosproject.net.PortNumber;
import org.onosproject.net.provider.ProviderId;
+import org.onosproject.cfg.ComponentConfigAdapter;
public class PcepTunnelProviderTest {
@@ -46,6 +47,7 @@
private final TunnelProviderRegistryAdapter registry = new TunnelProviderRegistryAdapter();
private final PcepClientControllerAdapter controller = new PcepClientControllerAdapter();
private final PcepControllerAdapter ctl = new PcepControllerAdapter();
+ private final TunnelServiceAdapter tunnelService = new TunnelServiceAdapter();
@Test
public void testCasePcepSetupTunnel() {
@@ -53,6 +55,8 @@
tunnelProvider.tunnelProviderRegistry = registry;
tunnelProvider.pcepClientController = controller;
tunnelProvider.controller = ctl;
+ tunnelProvider.cfgService = new ComponentConfigAdapter();
+ tunnelProvider.tunnelService = tunnelService;
tunnelProvider.activate();
Tunnel tunnel;
diff --git a/providers/pcep/tunnel/src/test/java/org/onosproject/provider/pcep/tunnel/impl/PcepUpdateTunnelProviderTest.java b/providers/pcep/tunnel/src/test/java/org/onosproject/provider/pcep/tunnel/impl/PcepUpdateTunnelProviderTest.java
index a27ba76..1bcf99d 100644
--- a/providers/pcep/tunnel/src/test/java/org/onosproject/provider/pcep/tunnel/impl/PcepUpdateTunnelProviderTest.java
+++ b/providers/pcep/tunnel/src/test/java/org/onosproject/provider/pcep/tunnel/impl/PcepUpdateTunnelProviderTest.java
@@ -24,6 +24,7 @@
import org.junit.After;
import org.junit.Test;
import org.onlab.packet.IpAddress;
+import org.onosproject.cfg.ComponentConfigAdapter;
import org.onosproject.core.DefaultGroupId;
import org.onosproject.incubator.net.tunnel.DefaultTunnel;
import org.onosproject.incubator.net.tunnel.IpTunnelEndPoint;
@@ -49,6 +50,8 @@
private final PcepClientControllerAdapter controller = new PcepClientControllerAdapter();
private final PcepControllerAdapter ctl = new PcepControllerAdapter();
private final PcepTunnelApiMapper pcepTunnelAPIMapper = new PcepTunnelApiMapper();
+ private final TunnelServiceAdapter tunnelService = new TunnelServiceAdapter();
+
@Test
public void testCasePcepUpdateTunnel() {
@@ -56,6 +59,8 @@
tunnelProvider.pcepClientController = controller;
tunnelProvider.controller = ctl;
tunnelProvider.pcepTunnelAPIMapper = pcepTunnelAPIMapper;
+ tunnelProvider.cfgService = new ComponentConfigAdapter();
+ tunnelProvider.tunnelService = tunnelService;
tunnelProvider.activate();
Tunnel tunnel;
diff --git a/providers/pcep/tunnel/src/test/java/org/onosproject/provider/pcep/tunnel/impl/TunnelServiceAdapter.java b/providers/pcep/tunnel/src/test/java/org/onosproject/provider/pcep/tunnel/impl/TunnelServiceAdapter.java
new file mode 100644
index 0000000..1dd7733
--- /dev/null
+++ b/providers/pcep/tunnel/src/test/java/org/onosproject/provider/pcep/tunnel/impl/TunnelServiceAdapter.java
@@ -0,0 +1,107 @@
+package org.onosproject.provider.pcep.tunnel.impl;
+
+import org.onosproject.core.ApplicationId;
+import org.onosproject.incubator.net.tunnel.Tunnel;
+import org.onosproject.incubator.net.tunnel.TunnelEndPoint;
+import org.onosproject.incubator.net.tunnel.TunnelId;
+import org.onosproject.incubator.net.tunnel.TunnelListener;
+import org.onosproject.incubator.net.tunnel.TunnelName;
+import org.onosproject.incubator.net.tunnel.TunnelService;
+import org.onosproject.incubator.net.tunnel.TunnelSubscription;
+import org.onosproject.net.Annotations;
+import org.onosproject.net.DeviceId;
+
+import java.util.Collection;
+import java.util.Collections;
+
+public class TunnelServiceAdapter implements TunnelService {
+ @Override
+ public Tunnel borrowTunnel(ApplicationId consumerId, TunnelId tunnelId, Annotations... annotations) {
+ return null;
+ }
+
+ @Override
+ public Collection<Tunnel> borrowTunnel(ApplicationId consumerId, TunnelName tunnelName,
+ Annotations... annotations) {
+ return null;
+ }
+
+ @Override
+ public Collection<Tunnel> borrowTunnel(ApplicationId consumerId, TunnelEndPoint src, TunnelEndPoint dst,
+ Annotations... annotations) {
+ return null;
+ }
+
+ @Override
+ public Collection<Tunnel> borrowTunnel(ApplicationId consumerId, TunnelEndPoint src, TunnelEndPoint dst,
+ Tunnel.Type type, Annotations... annotations) {
+ return null;
+ }
+
+ @Override
+ public boolean returnTunnel(ApplicationId consumerId, TunnelId tunnelId, Annotations... annotations) {
+ return false;
+ }
+
+ @Override
+ public boolean returnTunnel(ApplicationId consumerId, TunnelName tunnelName, Annotations... annotations) {
+ return false;
+ }
+
+ @Override
+ public boolean returnTunnel(ApplicationId consumerId, TunnelEndPoint src, TunnelEndPoint dst,
+ Tunnel.Type type, Annotations... annotations) {
+ return false;
+ }
+
+ @Override
+ public boolean returnTunnel(ApplicationId consumerId, TunnelEndPoint src, TunnelEndPoint dst,
+ Annotations... annotations) {
+ return false;
+ }
+
+ @Override
+ public Tunnel queryTunnel(TunnelId tunnelId) {
+ return null;
+ }
+
+ @Override
+ public Collection<TunnelSubscription> queryTunnelSubscription(ApplicationId consumerId) {
+ return null;
+ }
+
+ @Override
+ public Collection<Tunnel> queryTunnel(Tunnel.Type type) {
+ return null;
+ }
+
+ @Override
+ public Collection<Tunnel> queryTunnel(TunnelEndPoint src, TunnelEndPoint dst) {
+ return null;
+ }
+
+ @Override
+ public Collection<Tunnel> queryAllTunnels() {
+ return Collections.emptyList();
+ }
+
+ @Override
+ public int tunnelCount() {
+ return 0;
+ }
+
+ @Override
+ public Iterable<Tunnel> getTunnels(DeviceId deviceId) {
+ return null;
+ }
+
+ @Override
+ public void addListener(TunnelListener listener) {
+
+ }
+
+ @Override
+ public void removeListener(TunnelListener listener) {
+
+ }
+}