[ONOS-5833] (vCore) Refactor vnet services
to enable event delivery mechanism
Changes
1. Abstact Vnet Listener Manager is added
2. Refactor Vnet services to use it
Change-Id: I178342bfc882c0739f216960358a281903e1385a
diff --git a/incubator/api/src/test/java/org/onosproject/incubator/net/virtual/event/AbstractVirtualListenerManagerTest.java b/incubator/api/src/test/java/org/onosproject/incubator/net/virtual/event/AbstractVirtualListenerManagerTest.java
index 87b3fc0..33fce56 100644
--- a/incubator/api/src/test/java/org/onosproject/incubator/net/virtual/event/AbstractVirtualListenerManagerTest.java
+++ b/incubator/api/src/test/java/org/onosproject/incubator/net/virtual/event/AbstractVirtualListenerManagerTest.java
@@ -16,15 +16,26 @@
package org.onosproject.incubator.net.virtual.event;
+import com.google.common.collect.ClassToInstanceMap;
+import com.google.common.collect.MutableClassToInstanceMap;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
+import org.onlab.osgi.ServiceDirectory;
import org.onosproject.event.AbstractEvent;
import org.onosproject.event.Event;
import org.onosproject.event.EventDeliveryService;
import org.onosproject.event.EventListener;
import org.onosproject.event.EventSink;
import org.onosproject.incubator.net.virtual.NetworkId;
+import org.onosproject.incubator.net.virtual.TenantId;
+import org.onosproject.incubator.net.virtual.VirtualDevice;
+import org.onosproject.incubator.net.virtual.VirtualHost;
+import org.onosproject.incubator.net.virtual.VirtualLink;
+import org.onosproject.incubator.net.virtual.VirtualNetwork;
+import org.onosproject.incubator.net.virtual.VirtualNetworkService;
+import org.onosproject.incubator.net.virtual.VirtualPort;
+import org.onosproject.net.DeviceId;
import java.util.ArrayList;
import java.util.List;
@@ -39,6 +50,8 @@
*/
public class AbstractVirtualListenerManagerTest {
+ private VirtualNetworkService manager;
+
TestEventDispatcher dispatcher = new TestEventDispatcher();
VirtualListenerRegistryManager listenerRegistryManager =
VirtualListenerRegistryManager.getInstance();
@@ -54,21 +67,20 @@
@Before
public void setUp() {
+ manager = new TestVirtualNetworkManager();
+
dispatcher.addSink(VirtualEvent.class, listenerRegistryManager);
prickleListener = new PrickleListener();
- prickleManager = new PrickleManager(NetworkId.networkId(1));
- prickleManager.eventDispatcher = dispatcher;
+ prickleManager = new PrickleManager(manager, NetworkId.networkId(1));
prickleManager.addListener(prickleListener);
gooListener = new GooListener();
- gooManager = new GooManager(NetworkId.networkId(1));
- gooManager.eventDispatcher = dispatcher;
+ gooManager = new GooManager(manager, NetworkId.networkId(1));
gooManager.addListener(gooListener);
barListener = new BarListener();
- barManager = new BarManager(NetworkId.networkId(2));
- barManager.eventDispatcher = dispatcher;
+ barManager = new BarManager(manager, NetworkId.networkId(2));
barManager.addListener(barListener);
}
@@ -168,7 +180,6 @@
@Override
public void event(E event) {
- System.out.println(this.getClass().toString());
events.add(event);
latch.countDown();
}
@@ -184,20 +195,20 @@
}
private class PrickleManager extends AbstractVirtualListenerManager<Prickle, PrickleListener> {
- public PrickleManager(NetworkId networkId) {
- super(networkId);
+ public PrickleManager(VirtualNetworkService service, NetworkId networkId) {
+ super(service, networkId);
}
}
private class GooManager extends AbstractVirtualListenerManager<Goo, GooListener> {
- public GooManager(NetworkId networkId) {
- super(networkId);
+ public GooManager(VirtualNetworkService service, NetworkId networkId) {
+ super(service, networkId);
}
}
private class BarManager extends AbstractVirtualListenerManager<Bar, BarListener> {
- public BarManager(NetworkId networkId) {
- super(networkId);
+ public BarManager(VirtualNetworkService service, NetworkId networkId) {
+ super(service, networkId);
}
}
@@ -242,4 +253,70 @@
}
}
}
+
+ private class TestVirtualNetworkManager implements VirtualNetworkService {
+ TestServiceDirectory serviceDirectory = new TestServiceDirectory();
+
+ public TestVirtualNetworkManager() {
+ serviceDirectory.add(EventDeliveryService.class, dispatcher);
+ }
+
+ @Override
+ public Set<VirtualNetwork> getVirtualNetworks(TenantId tenantId) {
+ return null;
+ }
+
+ @Override
+ public Set<VirtualDevice> getVirtualDevices(NetworkId networkId) {
+ return null;
+ }
+
+ @Override
+ public Set<VirtualHost> getVirtualHosts(NetworkId networkId) {
+ return null;
+ }
+
+ @Override
+ public Set<VirtualLink> getVirtualLinks(NetworkId networkId) {
+ return null;
+ }
+
+ @Override
+ public Set<VirtualPort> getVirtualPorts(NetworkId networkId, DeviceId deviceId) {
+ return null;
+ }
+
+ @Override
+ public <T> T get(NetworkId networkId, Class<T> serviceClass) {
+ return null;
+ }
+
+ @Override
+ public ServiceDirectory getServiceDirectory() {
+ return serviceDirectory;
+ }
+ }
+
+ private class TestServiceDirectory implements ServiceDirectory {
+
+ private ClassToInstanceMap<Object> services = MutableClassToInstanceMap.create();
+
+ @Override
+ public <T> T get(Class<T> serviceClass) {
+ return services.getInstance(serviceClass);
+ }
+
+ /**
+ * Adds a new service to the directory.
+ *
+ * @param serviceClass service class
+ * @param service service instance
+ * @return self
+ */
+ public TestServiceDirectory add(Class serviceClass, Object service) {
+ services.putInstance(serviceClass, service);
+ return this;
+ }
+
+ }
}
\ No newline at end of file