[ONOS-3111] Port pair group manager test case fixed
Change-Id: I790efe18ef4c536f09e3b315c65d866ee558049d
diff --git a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpairgroup/impl/PortPairGroupManager.java b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpairgroup/impl/PortPairGroupManager.java
index fd38cd9..1e03092 100644
--- a/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpairgroup/impl/PortPairGroupManager.java
+++ b/apps/vtn/vtnrsc/src/main/java/org/onosproject/vtnrsc/portpairgroup/impl/PortPairGroupManager.java
@@ -30,6 +30,8 @@
import org.onosproject.event.AbstractListenerManager;
import org.onosproject.store.serializers.KryoNamespaces;
import org.onosproject.store.service.EventuallyConsistentMap;
+import org.onosproject.store.service.EventuallyConsistentMapEvent;
+import org.onosproject.store.service.EventuallyConsistentMapListener;
import org.onosproject.store.service.MultiValuedTimestamp;
import org.onosproject.store.service.StorageService;
import org.onosproject.store.service.WallClockTimestamp;
@@ -51,17 +53,21 @@
private static final String PORT_PAIR_GROUP_ID_NULL = "PortPairGroup ID cannot be null";
private static final String PORT_PAIR_GROUP_NULL = "PortPairGroup cannot be null";
private static final String LISTENER_NOT_NULL = "Listener cannot be null";
+ private static final String EVENT_NOT_NULL = "event cannot be null";
private final Logger log = getLogger(getClass());
private EventuallyConsistentMap<PortPairGroupId, PortPairGroup> portPairGroupStore;
+ private EventuallyConsistentMapListener<PortPairGroupId, PortPairGroup> portPairGroupListener =
+ new InnerPortPairGroupStoreListener();
+
@Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
protected StorageService storageService;
@Activate
public void activate() {
-
+ eventDispatcher.addSink(PortPairGroupEvent.class, listenerRegistry);
KryoNamespace.Builder serializer = KryoNamespace.newBuilder()
.register(KryoNamespaces.API)
.register(MultiValuedTimestamp.class)
@@ -72,11 +78,14 @@
.withName("portpairgroupstore").withSerializer(serializer)
.withTimestampProvider((k, v) -> new WallClockTimestamp()).build();
+ portPairGroupStore.addListener(portPairGroupListener);
+
log.info("Started");
}
@Deactivate
public void deactivate() {
+ eventDispatcher.removeSink(PortPairGroupEvent.class);
portPairGroupStore.destroy();
log.info("Stopped");
}
@@ -148,4 +157,36 @@
}
return true;
}
+
+
+ private class InnerPortPairGroupStoreListener
+ implements
+ EventuallyConsistentMapListener<PortPairGroupId, PortPairGroup> {
+
+ @Override
+ public void event(EventuallyConsistentMapEvent<PortPairGroupId, PortPairGroup> event) {
+ checkNotNull(event, EVENT_NOT_NULL);
+ PortPairGroup portPairGroup = event.value();
+ if (EventuallyConsistentMapEvent.Type.PUT == event.type()) {
+ notifyListeners(new PortPairGroupEvent(
+ PortPairGroupEvent.Type.PORT_PAIR_GROUP_PUT,
+ portPairGroup));
+ }
+ if (EventuallyConsistentMapEvent.Type.REMOVE == event.type()) {
+ notifyListeners(new PortPairGroupEvent(
+ PortPairGroupEvent.Type.PORT_PAIR_GROUP_DELETE,
+ portPairGroup));
+ }
+ }
+ }
+
+ /**
+ * Notifies specify event to all listeners.
+ *
+ * @param event PortPairGroup event
+ */
+ private void notifyListeners(PortPairGroupEvent event) {
+ checkNotNull(event, EVENT_NOT_NULL);
+ post(event);
+ }
}
diff --git a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/portpairgroup/impl/PortPairGroupManagerTest.java b/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/portpairgroup/impl/PortPairGroupManagerTest.java
index 95bcd09..18a8d17 100644
--- a/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/portpairgroup/impl/PortPairGroupManagerTest.java
+++ b/apps/vtn/vtnrsc/src/test/java/org/onosproject/vtnrsc/portpairgroup/impl/PortPairGroupManagerTest.java
@@ -29,6 +29,9 @@
import org.onosproject.vtnrsc.TenantId;
import org.onosproject.vtnrsc.DefaultPortPairGroup;
import org.onosproject.vtnrsc.util.VtnStorageServiceTest;
+import org.onosproject.common.event.impl.TestEventDispatcher;
+
+import static org.onosproject.net.NetTestTools.injectEventDispatcher;
/**
* Unit tests for PortPairGroupManager class.
@@ -51,6 +54,7 @@
public void testCreatePortPairGroup() {
// initialize port pair group manager
portPairGroupMgr.storageService = storageService;
+ injectEventDispatcher(portPairGroupMgr, new TestEventDispatcher());
portPairGroupMgr.activate();
// create port-pair-id list