Bharat saraswal
Committed by bharat saraswal-huawei

[ONOS-3116] Port Chain manager test case fixed

Change-Id: I1772cff0e33fff4f2ece43aea737f51408efdb74
...@@ -30,6 +30,8 @@ import org.onlab.util.KryoNamespace; ...@@ -30,6 +30,8 @@ import org.onlab.util.KryoNamespace;
30 import org.onosproject.event.AbstractListenerManager; 30 import org.onosproject.event.AbstractListenerManager;
31 import org.onosproject.store.serializers.KryoNamespaces; 31 import org.onosproject.store.serializers.KryoNamespaces;
32 import org.onosproject.store.service.EventuallyConsistentMap; 32 import org.onosproject.store.service.EventuallyConsistentMap;
33 +import org.onosproject.store.service.EventuallyConsistentMapEvent;
34 +import org.onosproject.store.service.EventuallyConsistentMapListener;
33 import org.onosproject.store.service.MultiValuedTimestamp; 35 import org.onosproject.store.service.MultiValuedTimestamp;
34 import org.onosproject.store.service.StorageService; 36 import org.onosproject.store.service.StorageService;
35 import org.onosproject.store.service.WallClockTimestamp; 37 import org.onosproject.store.service.WallClockTimestamp;
...@@ -50,17 +52,22 @@ public class PortChainManager extends AbstractListenerManager<PortChainEvent, Po ...@@ -50,17 +52,22 @@ public class PortChainManager extends AbstractListenerManager<PortChainEvent, Po
50 52
51 private static final String PORT_CHAIN_ID_NULL = "PortChain ID cannot be null"; 53 private static final String PORT_CHAIN_ID_NULL = "PortChain ID cannot be null";
52 private static final String PORT_CHAIN_NULL = "PortChain cannot be null"; 54 private static final String PORT_CHAIN_NULL = "PortChain cannot be null";
53 - private static final String LISTENER_NOT_NULL = "Listener cannot be null"; 55 + private static final String EVENT_NOT_NULL = "event cannot be null";
54 56
55 private final Logger log = getLogger(getClass()); 57 private final Logger log = getLogger(getClass());
56 private EventuallyConsistentMap<PortChainId, PortChain> portChainStore; 58 private EventuallyConsistentMap<PortChainId, PortChain> portChainStore;
57 59
60 + private EventuallyConsistentMapListener<PortChainId, PortChain> portChainListener =
61 + new InnerPortChainStoreListener();
62 +
58 @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY) 63 @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
59 protected StorageService storageService; 64 protected StorageService storageService;
60 65
61 @Activate 66 @Activate
62 public void activate() { 67 public void activate() {
63 68
69 + eventDispatcher.addSink(PortChainEvent.class, listenerRegistry);
70 +
64 KryoNamespace.Builder serializer = KryoNamespace.newBuilder() 71 KryoNamespace.Builder serializer = KryoNamespace.newBuilder()
65 .register(KryoNamespaces.API) 72 .register(KryoNamespaces.API)
66 .register(MultiValuedTimestamp.class) 73 .register(MultiValuedTimestamp.class)
...@@ -71,11 +78,14 @@ public class PortChainManager extends AbstractListenerManager<PortChainEvent, Po ...@@ -71,11 +78,14 @@ public class PortChainManager extends AbstractListenerManager<PortChainEvent, Po
71 .withName("portchainstore").withSerializer(serializer) 78 .withName("portchainstore").withSerializer(serializer)
72 .withTimestampProvider((k, v) -> new WallClockTimestamp()).build(); 79 .withTimestampProvider((k, v) -> new WallClockTimestamp()).build();
73 80
81 + portChainStore.addListener(portChainListener);
82 +
74 log.info("Started"); 83 log.info("Started");
75 } 84 }
76 85
77 @Deactivate 86 @Deactivate
78 public void deactivate() { 87 public void deactivate() {
88 + eventDispatcher.removeSink(PortChainEvent.class);
79 portChainStore.destroy(); 89 portChainStore.destroy();
80 log.info("Stopped"); 90 log.info("Stopped");
81 } 91 }
...@@ -147,4 +157,35 @@ public class PortChainManager extends AbstractListenerManager<PortChainEvent, Po ...@@ -147,4 +157,35 @@ public class PortChainManager extends AbstractListenerManager<PortChainEvent, Po
147 } 157 }
148 return true; 158 return true;
149 } 159 }
160 +
161 + private class InnerPortChainStoreListener
162 + implements
163 + EventuallyConsistentMapListener<PortChainId, PortChain> {
164 +
165 + @Override
166 + public void event(EventuallyConsistentMapEvent<PortChainId, PortChain> event) {
167 + checkNotNull(event, EVENT_NOT_NULL);
168 + PortChain portChain = event.value();
169 + if (EventuallyConsistentMapEvent.Type.PUT == event.type()) {
170 + notifyListeners(new PortChainEvent(
171 + PortChainEvent.Type.PORT_CHAIN_PUT,
172 + portChain));
173 + }
174 + if (EventuallyConsistentMapEvent.Type.REMOVE == event.type()) {
175 + notifyListeners(new PortChainEvent(
176 + PortChainEvent.Type.PORT_CHAIN_DELETE,
177 + portChain));
178 + }
179 + }
180 + }
181 +
182 + /**
183 + * Notifies specify event to all listeners.
184 + *
185 + * @param event port chain event
186 + */
187 + private void notifyListeners(PortChainEvent event) {
188 + checkNotNull(event, EVENT_NOT_NULL);
189 + post(event);
190 + }
150 } 191 }
......
...@@ -31,6 +31,9 @@ import org.onosproject.vtnrsc.PortChain; ...@@ -31,6 +31,9 @@ import org.onosproject.vtnrsc.PortChain;
31 import org.onosproject.vtnrsc.DefaultPortChain; 31 import org.onosproject.vtnrsc.DefaultPortChain;
32 import org.onosproject.vtnrsc.DefaultFlowClassifier; 32 import org.onosproject.vtnrsc.DefaultFlowClassifier;
33 import org.onosproject.vtnrsc.util.VtnStorageServiceTest; 33 import org.onosproject.vtnrsc.util.VtnStorageServiceTest;
34 +import org.onosproject.common.event.impl.TestEventDispatcher;
35 +
36 +import static org.onosproject.net.NetTestTools.injectEventDispatcher;
34 37
35 /** 38 /**
36 * Unit tests for PortChainManager class. 39 * Unit tests for PortChainManager class.
...@@ -55,6 +58,7 @@ public class PortChainManagerTest { ...@@ -55,6 +58,7 @@ public class PortChainManagerTest {
55 public void testCreatePortChain() { 58 public void testCreatePortChain() {
56 // initialize port chain manager 59 // initialize port chain manager
57 portChainMgr.storageService = storageService; 60 portChainMgr.storageService = storageService;
61 + injectEventDispatcher(portChainMgr, new TestEventDispatcher());
58 portChainMgr.activate(); 62 portChainMgr.activate();
59 63
60 // create list of Port Pair Groups. 64 // create list of Port Pair Groups.
......