* org.opendaylight.openflowplugin.applications.frm
*
* ForwardingRulesCommiter
- * It represent a contract between DataStore DataChangeEvent and relevant
+ * It represent a contract between DataStore DataTreeModification and relevant
* SalRpcService for device. Every implementation has to be registered for
* Configurational/DS tree path.
- *
*/
public interface ForwardingRulesCommiter <D extends DataObject> extends AutoCloseable, ClusteredDataTreeChangeListener<D> {
import java.util.Collection;
import org.opendaylight.controller.md.sal.binding.api.DataObjectModification;
import org.opendaylight.controller.md.sal.binding.api.DataTreeModification;
-import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeEvent;
import org.opendaylight.openflowplugin.applications.frm.ForwardingRulesCommiter;
import org.opendaylight.openflowplugin.applications.frm.ForwardingRulesManager;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNode;
import org.slf4j.LoggerFactory;
/**
- * AbstractChangeListner implemented basic {@link AsyncDataChangeEvent} processing for
- * flow node subDataObject (flows, groups and meters).
- *
- * @author <a href="mailto:vdemcak@cisco.com">Vaclav Demcak</a>
- *
+ * AbstractChangeListner implemented basic {@link org.opendaylight.controller.md.sal.binding.api.DataTreeModification}
+ * processing for flow node subDataObject (flows, groups and meters).
*/
public abstract class AbstractListeningCommiter <T extends DataObject> implements ForwardingRulesCommiter<T> {
private static final Logger LOG = LoggerFactory.getLogger(AbstractListeningCommiter.class);
-
ForwardingRulesManager provider;
-
private final Class<T> clazz;
public AbstractListeningCommiter (ForwardingRulesManager provider, Class<T> clazz) {
/**
* FlowForwarder
- * It implements {@link org.opendaylight.controller.md.sal.binding.api.DataTreeChangeListener}}
+ * It implements {@link org.opendaylight.controller.md.sal.binding.api.DataTreeChangeListener}
* for WildCardedPath to {@link Flow} and ForwardingRulesCommiter interface for methods:
- * add, update and remove {@link Flow} processing for
- * {@link org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeEvent}.
+ * add, update and remove {@link Flow} processing for
+ * {@link org.opendaylight.controller.md.sal.binding.api.DataTreeModification}.
*/
public class FlowForwarder extends AbstractListeningCommiter<Flow> {
private static final Logger LOG = LoggerFactory.getLogger(FlowForwarder.class);
-
private final DataBroker dataBroker;
-
private ListenerRegistration<FlowForwarder> listenerRegistration;
public FlowForwarder (final ForwardingRulesManager manager, final DataBroker db) {
});
} catch (final Exception e) {
LOG.warn(" FlowNodeConnectorInventoryTranslatorImpl listener registration fail!");
- LOG.debug("FlowNodeConnectorInventoryTranslatorImpl DataChange listener registration fail ..", e);
+ LOG.debug("FlowNodeConnectorInventoryTranslatorImpl DataTreeChangeListener registration fail ..", e);
throw new IllegalStateException("FlowNodeConnectorInventoryTranslatorImpl startup fail! System needs restart.", e);
}
}
/**
* GroupForwarder
- * It implements {@link org.opendaylight.controller.md.sal.binding.api.DataTreeChangeListener}}
+ * It implements {@link org.opendaylight.controller.md.sal.binding.api.DataTreeChangeListener}
* for WildCardedPath to {@link Group} and ForwardingRulesCommiter interface for methods:
- * add, update and remove {@link Group} processing for
- * {@link org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeEvent}.
- *
+ * add, update and remove {@link Group} processing for
+ * {@link org.opendaylight.controller.md.sal.binding.api.DataTreeModification}.
*/
public class GroupForwarder extends AbstractListeningCommiter<Group> {
private static final Logger LOG = LoggerFactory.getLogger(GroupForwarder.class);
-
private final DataBroker dataBroker;
-
private ListenerRegistration<GroupForwarder> listenerRegistration;
public GroupForwarder (final ForwardingRulesManager manager, final DataBroker db) {
/**
* MeterForwarder
- * It implements {@link org.opendaylight.controller.md.sal.binding.api.DataTreeChangeListener}}
+ * It implements {@link org.opendaylight.controller.md.sal.binding.api.DataTreeChangeListener}
* for WildCardedPath to {@link Meter} and ForwardingRulesCommiter interface for methods:
- * add, update and remove {@link Meter} processing for
- * {@link org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeEvent}.
+ * add, update and remove {@link Meter} processing for
+ * {@link org.opendaylight.controller.md.sal.binding.api.DataTreeModification}.
*
*/
public class MeterForwarder extends AbstractListeningCommiter<Meter> {
private static final Logger LOG = LoggerFactory.getLogger(MeterForwarder.class);
-
private final DataBroker dataBroker;
-
private ListenerRegistration<MeterForwarder> listenerRegistration;
public MeterForwarder (final ForwardingRulesManager manager, final DataBroker db) {
import com.google.common.base.Preconditions;
import com.google.common.util.concurrent.Futures;
import java.util.Collections;
-import java.util.concurrent.Callable;
import java.util.concurrent.Future;
import org.opendaylight.controller.md.sal.binding.api.DataBroker;
import org.opendaylight.controller.md.sal.binding.api.DataTreeIdentifier;
public class TableForwarder extends AbstractListeningCommiter<TableFeatures> {
private static final Logger LOG = LoggerFactory.getLogger(TableForwarder.class);
-
private ListenerRegistration<TableForwarder> listenerRegistration;
public TableForwarder(final ForwardingRulesManager manager, final DataBroker db) {
ForwardingRulesManagerImpl.STARTUP_LOOP_MAX_RETRIES);
listenerRegistration = looper.loopUntilNoException(() -> db.registerDataTreeChangeListener(treeId, TableForwarder.this));
} catch (final Exception e) {
- LOG.warn("FRM Table DataChange listener registration fail!");
- LOG.debug("FRM Table DataChange listener registration fail ..", e);
+ LOG.warn("FRM Table DataTreeChangeListener registration fail!");
+ LOG.debug("FRM Table DataTreeChangeListener registration fail ..", e);
throw new IllegalStateException("TableForwarder startup fail! System needs restart.", e);
}
}
/**
* Test that checks if {@link NodeConnectorEventsObserver#nodeConnectorAdded} is called
- * for each FlowCapableNodeConnector item that @{AsyncDataChangeEvent#getCreatedData} return.
+ * for each FlowCapableNodeConnector item added in
+ * {@link org.opendaylight.controller.md.sal.binding.api.DataTreeModification}.
*/
@Test
public void testNodeConnectorCreation() {
/**
* Test that checks if {@link NodeConnectorEventsObserver#nodeConnectorRemoved} is called
- * for each FlowCapableNodeConnector item inside @{AsyncDataChangeEvent#getUpdatedData}
- * that have link down state.
+ * for each FlowCapableNodeConnector item that have link down state removed in
+ * {@link org.opendaylight.controller.md.sal.binding.api.DataTreeModification}.
*/
@Test
public void testNodeConnectorUpdateToLinkDown() {
/**
* Test that checks if {@link NodeConnectorEventsObserver#nodeConnectorRemoved} is called
- * for each FlowCapableNodeConnector item inside @{AsyncDataChangeEvent#getUpdatedData}
- * that have administrative down state.
+ * for each FlowCapableNodeConnector item with administrative down state removed in
+ * {@link org.opendaylight.controller.md.sal.binding.api.DataTreeModification}.
*/
@Test
public void testNodeConnectorUpdateToAdminDown() {
/**
* Test that checks if {@link NodeConnectorEventsObserver#nodeConnectorAdded} is called
- * for each FlowCapableNodeConnector item inside @{AsyncDataChangeEvent#getUpdatedData}
- * that have administrative up and link up state.
+ * for each FlowCapableNodeConnector item with administrative up and link up state added in
+ * {@link org.opendaylight.controller.md.sal.binding.api.DataTreeModification}.
*/
@Test
public void testNodeConnectorUpdateToUp() {
/**
* Test that checks if {@link NodeConnectorEventsObserver#nodeConnectorRemoved} is called
- * for each FlowCapableNodeConnector path that @{AsyncDataChangeEvent#getRemovedPaths} return.
+ * for each FlowCapableNodeConnector path that
+ * {@link org.opendaylight.controller.md.sal.binding.api.DataTreeModification} return.
*/
@Test
public void testNodeConnectorRemoval() {
List<DataTreeModification> modifications = new ArrayList();
modifications.add(setupDataTreeChange(WRITE, iiToConnector, fcnc));
modifications.add(setupDataTreeChange(DELETE, iiToConnector2, null));
- // Invoke onDataChanged and check that both observers notified
+ // Invoke onDataTreeChanged and check that both observers notified
translator.onDataTreeChanged(modifications);
verify(eventsObserver).nodeConnectorAdded(id, fcnc);
verify(eventsObserver).nodeConnectorRemoved(id2);
}
private <T extends DataObject> DataTreeModification setupDataTreeChange(final ModificationType type,
- final InstanceIdentifier<T> ii,
- final FlowCapableNodeConnector connector) {
+ final InstanceIdentifier<T> ii,
+ final FlowCapableNodeConnector connector) {
final DataTreeModification dataTreeModification = mock(DataTreeModification.class);
when(dataTreeModification.getRootNode()).thenReturn(mock(DataObjectModification.class));
DataTreeIdentifier<T> identifier = new DataTreeIdentifier(LogicalDatastoreType.OPERATIONAL, ii);
}
});
}catch(final Exception ex){
- LOG.debug(" AbstractNotificationSupplierBase DataChange listener registration fail ..{}", ex.getMessage());
+ LOG.debug("AbstractNotificationSupplierBase DataTreeChange listener registration fail ..{}", ex.getMessage());
throw new IllegalStateException("Notification supplier startup fail! System needs restart.", ex);
}
}
package org.opendaylight.openflowplugin.applications.notification.supplier.impl;
import com.google.common.base.Preconditions;
-
import java.util.Collection;
-import java.util.Map.Entry;
import org.opendaylight.controller.md.sal.binding.api.DataBroker;
import org.opendaylight.controller.md.sal.binding.api.DataObjectModification;
import org.opendaylight.controller.md.sal.binding.api.DataTreeModification;
-import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeEvent;
import org.opendaylight.controller.sal.binding.api.NotificationProviderService;
import org.opendaylight.openflowplugin.applications.notification.supplier.NotificationSupplierForItemRoot;
import org.opendaylight.yangtools.yang.binding.DataObject;
* Default constructor for all Root Item Notification Supplier implementation
*
* @param notificationProviderService - notification publisher
- * @param db - DataBroker for DataChangeEvent registration
+ * @param db - DataBroker for DataTreeChangeListener registration
* @param clazz - Statistics Notification Class
*/
- public AbstractNotificationSupplierForItemRoot(final NotificationProviderService notificationProviderService, final DataBroker db,
- final Class<O> clazz) {
+ public AbstractNotificationSupplierForItemRoot(final NotificationProviderService notificationProviderService,
+ final DataBroker db,
+ final Class<O> clazz) {
super(db, clazz);
this.notificationProviderService = Preconditions.checkNotNull(notificationProviderService);
}
private static final InstanceIdentifier<FlowCapableNodeConnector> wildCardedInstanceIdent = getNodeWildII().child(NodeConnector.class).augmentation(FlowCapableNodeConnector.class);
/**
- * Constructor register supplier as DataChangeLister and create wildCarded InstanceIdentifier.
+ * Constructor register supplier as DataTreeChangeListener and create wildCarded InstanceIdentifier.
*
* @param notifProviderService - {@link NotificationProviderService}
* @param db - {@link DataBroker}
private static final InstanceIdentifier<FlowCapableNode> wildCardedInstanceIdent = getNodeWildII().augmentation(FlowCapableNode.class);
/**
- * Constructor register supplier as DataChangeLister and create wildCarded InstanceIdentifier.
+ * Constructor register supplier as DataTreeChangeListener and create wildCarded InstanceIdentifier.
*
* @param notifProviderService - {@link NotificationProviderService}
* @param db - {@link DataBroker}
package org.opendaylight.openflowplugin.applications.notification.supplier.impl.item;
import com.google.common.base.Preconditions;
-
import java.util.Collection;
-import java.util.Map.Entry;
import org.opendaylight.controller.md.sal.binding.api.DataBroker;
import org.opendaylight.controller.md.sal.binding.api.DataObjectModification;
import org.opendaylight.controller.md.sal.binding.api.DataTreeModification;
-import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeEvent;
import org.opendaylight.controller.sal.binding.api.NotificationProviderService;
import org.opendaylight.openflowplugin.applications.notification.supplier.NotificationSupplierForItem;
import org.opendaylight.openflowplugin.applications.notification.supplier.impl.AbstractNotificationSupplierBase;
* Default constructor for all item Notification Supplier implementation
*
* @param notifProviderService - notification publisher
- * @param db - DataBroker for DataChangeEvent registration
+ * @param db - DataBroker for DataTreeChangeListener registration
* @param clazz - Statistics Notification Class
*/
public AbstractNotificationSupplierForItem(final NotificationProviderService notifProviderService, final DataBroker db,
private static final InstanceIdentifier<Flow> wildCardedInstanceIdent = getNodeWildII().augmentation(FlowCapableNode.class).child(Table.class).child(Flow.class);
/**
- * Constructor register supplier as DataChangeLister and create wildCarded InstanceIdentifier.
+ * Constructor register supplier as DataTreeChangeListener and create wildCarded InstanceIdentifier.
*
* @param notifProviderService - {@link NotificationProviderService}
* @param db - {@link DataBroker}
private static final InstanceIdentifier<Group> wildCardedInstanceIdent = getNodeWildII().augmentation(FlowCapableNode.class).child(Group.class);
/**
- * Constructor register supplier as DataChangeLister and create wildCarded InstanceIdentifier.
+ * Constructor register supplier as DataTreeChangeListener and create wildCarded InstanceIdentifier.
*
* @param notifProviderService - {@link NotificationProviderService}
* @param db - {@link DataBroker}
private static final InstanceIdentifier<Meter> wildCardedInstanceIdent = getNodeWildII().augmentation(FlowCapableNode.class).child(Meter.class);
/**
- * Constructor register supplier as DataChangeLister and create wildCarded InstanceIdentifier.
+ * Constructor register supplier as DataTreeChangeListener and create wildCarded InstanceIdentifier.
*
* @param notifProviderService - {@link NotificationProviderService}
* @param db - {@link DataBroker}
package org.opendaylight.openflowplugin.applications.notification.supplier.impl.item.stat;
import com.google.common.base.Preconditions;
-
import java.util.Collection;
-import java.util.Map.Entry;
import org.opendaylight.controller.md.sal.binding.api.DataBroker;
import org.opendaylight.controller.md.sal.binding.api.DataObjectModification;
import org.opendaylight.controller.md.sal.binding.api.DataTreeModification;
-import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeEvent;
import org.opendaylight.controller.sal.binding.api.NotificationProviderService;
import org.opendaylight.openflowplugin.applications.notification.supplier.NotificationSupplierForItemStat;
import org.opendaylight.openflowplugin.applications.notification.supplier.impl.AbstractNotificationSupplierBase;
* Default constructor for all Statistic Notification Supplier implementation
*
* @param notifProviderService - notification publisher
- * @param db - DataBroker for DataChangeEvent registration
+ * @param db - DataBroker for DataTreeChangeListener registration
* @param clazz - Statistics Notification Class
*/
public AbstractNotificationSupplierForItemStat(final NotificationProviderService notifProviderService,
.child(Flow.class).augmentation(FlowStatisticsData.class).child(FlowStatistics.class);
/**
- * Constructor register supplier as DataChangeLister and create wildCarded InstanceIdentifier.
+ * Constructor register supplier as DataTreeChangeListener and create wildCarded InstanceIdentifier.
*
* @param notifProviderService - {@link NotificationProviderService}
* @param db - {@link DataBroker}
.augmentation(FlowTableStatisticsData.class).child(FlowTableStatistics.class);
/**
- * Constructor register supplier as DataChangeLister and create wildCarded InstanceIdentifier.
+ * Constructor register supplier as DataTreeChangeListener and create wildCarded InstanceIdentifier.
*
* @param notifProviderService - {@link NotificationProviderService}
* @param db - {@link DataBroker}
.augmentation(NodeGroupStatistics.class).child(GroupStatistics.class);
/**
- * Constructor register supplier as DataChangeLister and create wildCarded InstanceIdentifier.
+ * Constructor register supplier as DataTreeChangeListener and create wildCarded InstanceIdentifier.
*
* @param notifProviderService - {@link NotificationProviderService}
* @param db - {@link DataBroker}
.augmentation(NodeMeterStatistics.class).child(MeterStatistics.class);
/**
- * Constructor register supplier as DataChangeLister and create wildCarded InstanceIdentifier.
+ * Constructor register supplier as DataTreeChangeListener and create wildCarded InstanceIdentifier.
*
* @param notifProviderService - {@link NotificationProviderService}
* @param db - {@link DataBroker}
.child(FlowCapableNodeConnectorStatistics.class);
/**
- * Constructor register supplier as DataChangeLister and create wildCarded InstanceIdentifier.
+ * Constructor register supplier as DataTreeChangeListener and create wildCarded InstanceIdentifier.
*
* @param notifProviderService - {@link NotificationProviderService}
* @param db - {@link DataBroker}
.augmentation(FlowCapableNodeConnectorQueueStatisticsData.class);
/**
- * Constructor register supplier as DataChangeLister and create wildCarded InstanceIdentifier.
+ * Constructor register supplier as DataTreeChangeListener and create wildCarded InstanceIdentifier.
*
* @param notifProviderService - {@link NotificationProviderService}
* @param db - {@link DataBroker}
import opendaylight-md-sal-binding { prefix mdsal; revision-date 2013-10-28;}
description
- "Translator tool for relevant wildcard path DataChangeEvent to Notifications.";
+ "Translator tool for relevant wildcard path DataTreeModification to Notifications.";
revision "2015-08-20" {
description
import java.util.ArrayList;
import java.util.Collection;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
import org.junit.Before;
import org.junit.Test;
import org.opendaylight.openflowplugin.applications.notification.supplier.impl.helper.TestSupplierVerifyHelper;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNodeConnector;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNodeConnectorBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.Flow;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorRemoved;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorUpdated;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.NodeConnectorKey;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey;
-import org.opendaylight.yangtools.yang.binding.DataObject;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
/**
notifProviderService = mock(NotificationProviderService.class);
dataBroker = mock(DataBroker.class);
notifSupplierImpl = new NodeConnectorNotificationSupplierImpl(notifProviderService, dataBroker);
- TestSupplierVerifyHelper.verifyDataChangeRegistration(dataBroker);
+ TestSupplierVerifyHelper.verifyDataTreeChangeListenerRegistration(dataBroker);
}
@Test(expected = NullPointerException.class)
import java.util.ArrayList;
import java.util.Collection;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
import org.junit.Before;
import org.junit.Test;
import org.opendaylight.openflowplugin.applications.notification.supplier.impl.helper.TestChangeEventBuildHelper;
import org.opendaylight.openflowplugin.applications.notification.supplier.impl.helper.TestData;
import org.opendaylight.openflowplugin.applications.notification.supplier.impl.helper.TestSupplierVerifyHelper;
-import org.opendaylight.openflowplugin.applications.notification.supplier.impl.helper.TestSupplierVerifyHelper;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNode;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNodeBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNodeConnector;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeRemoved;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeUpdated;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey;
-import org.opendaylight.yangtools.yang.binding.DataObject;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
/**
notifProviderService = mock(NotificationProviderService.class);
dataBroker = mock(DataBroker.class);
notifSupplierImpl = new NodeNotificationSupplierImpl(notifProviderService, dataBroker);
- TestSupplierVerifyHelper.verifyDataChangeRegistration(dataBroker);
+ TestSupplierVerifyHelper.verifyDataTreeChangeListenerRegistration(dataBroker);
}
@Test(expected = NullPointerException.class)
package org.opendaylight.openflowplugin.applications.notification.supplier.impl.helper;
-import static org.mockito.Mockito.mock;
import java.util.Collection;
import java.util.Collections;
-import java.util.Map;
-import java.util.Set;
-import org.opendaylight.controller.md.sal.binding.api.DataTreeModification;
-import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeEvent;
-import org.opendaylight.yangtools.yang.binding.DataObject;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-
-/**
- *
- */
public class TestChangeEventBuildHelper {
private TestChangeEventBuildHelper() {
throw new UnsupportedOperationException("Test utility class");
}
- public static void verifyDataChangeRegistration(DataBroker dataBroker) {
+ public static void verifyDataTreeChangeListenerRegistration(DataBroker dataBroker) {
Mockito.verify(dataBroker).registerDataTreeChangeListener(
Matchers.<DataTreeIdentifier>any(),
import java.util.ArrayList;
import java.util.Collection;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Matchers;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey;
-import org.opendaylight.yangtools.yang.binding.DataObject;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
/**
- *
+ * Test for {@link org.opendaylight.openflowplugin.applications.notification.supplier.impl.item.FlowNotificationSupplierImpl}.
*/
public class FlowNotificationSupplierImplTest {
notifProviderService = mock(NotificationProviderService.class);
dataBroker = mock(DataBroker.class);
notifSupplierImpl = new FlowNotificationSupplierImpl(notifProviderService, dataBroker);
- TestSupplierVerifyHelper.verifyDataChangeRegistration(dataBroker);
+ TestSupplierVerifyHelper.verifyDataTreeChangeListenerRegistration(dataBroker);
}
@Test(expected = NullPointerException.class)
import java.util.ArrayList;
import java.util.Collection;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Matchers;
import org.opendaylight.openflowplugin.applications.notification.supplier.impl.helper.TestData;
import org.opendaylight.openflowplugin.applications.notification.supplier.impl.helper.TestSupplierVerifyHelper;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNode;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.Flow;
import org.opendaylight.yang.gen.v1.urn.opendaylight.group.service.rev130918.GroupAdded;
import org.opendaylight.yang.gen.v1.urn.opendaylight.group.service.rev130918.GroupRemoved;
import org.opendaylight.yang.gen.v1.urn.opendaylight.group.service.rev130918.GroupUpdated;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey;
-import org.opendaylight.yangtools.yang.binding.DataObject;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
/**
- *
+ * Test for {@link org.opendaylight.openflowplugin.applications.notification.supplier.impl.item.GroupNotificationSupplierImpl}.
*/
public class GroupNotificationSupplierImplTest {
notifProviderService = mock(NotificationProviderService.class);
dataBroker = mock(DataBroker.class);
notifSupplierImpl = new GroupNotificationSupplierImpl(notifProviderService, dataBroker);
- TestSupplierVerifyHelper.verifyDataChangeRegistration(dataBroker);
+ TestSupplierVerifyHelper.verifyDataTreeChangeListenerRegistration(dataBroker);
}
@Test(expected = NullPointerException.class)
import java.util.ArrayList;
import java.util.Collection;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
import org.junit.Before;
import org.junit.Test;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.meters.Meter;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.meters.MeterBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.meters.MeterKey;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.group.service.rev130918.GroupUpdated;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.groups.Group;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node;
import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.service.rev130918.MeterRemoved;
import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.service.rev130918.MeterUpdated;
import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.MeterId;
-import org.opendaylight.yangtools.yang.binding.DataObject;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
/**
- *
+ * Test for {@link org.opendaylight.openflowplugin.applications.notification.supplier.impl.item.MeterNotificationSupplierImpl}.
*/
public class MeterNotificationSupplierImplTest {
notifProviderService = mock(NotificationProviderService.class);
dataBroker = mock(DataBroker.class);
notifSupplierImpl = new MeterNotificationSupplierImpl(notifProviderService, dataBroker);
- TestSupplierVerifyHelper.verifyDataChangeRegistration(dataBroker);
+ TestSupplierVerifyHelper.verifyDataTreeChangeListenerRegistration(dataBroker);
}
@Test(expected = NullPointerException.class)
import java.util.ArrayList;
import java.util.Collection;
-import java.util.HashMap;
-import java.util.Map;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Matchers;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey;
-import org.opendaylight.yangtools.yang.binding.DataObject;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
public class FlowStatNotificationSupplierImplTest {
notifProviderService = mock(NotificationProviderService.class);
dataBroker = mock(DataBroker.class);
notifSupplierImpl = new FlowStatNotificationSupplierImpl(notifProviderService, dataBroker);
- TestSupplierVerifyHelper.verifyDataChangeRegistration(dataBroker);
+ TestSupplierVerifyHelper.verifyDataTreeChangeListenerRegistration(dataBroker);
}
@Test(expected = NullPointerException.class)
import java.util.ArrayList;
import java.util.Collection;
-import java.util.HashMap;
-import java.util.Map;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Matchers;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNode;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.Table;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.TableKey;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.Flow;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.table.statistics.rev131215.FlowTableStatisticsData;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.table.statistics.rev131215.FlowTableStatisticsUpdate;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.table.statistics.rev131215.flow.table.statistics.FlowTableStatistics;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey;
-import org.opendaylight.yangtools.yang.binding.DataObject;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
public class FlowTableStatNotificationSupplierImplTest {
notifProviderService = mock(NotificationProviderService.class);
dataBroker = mock(DataBroker.class);
notifSupplierImpl = new FlowTableStatNotificationSupplierImpl(notifProviderService, dataBroker);
- TestSupplierVerifyHelper.verifyDataChangeRegistration(dataBroker);
+ TestSupplierVerifyHelper.verifyDataTreeChangeListenerRegistration(dataBroker);
}
@Test(expected = NullPointerException.class)
import java.util.ArrayList;
import java.util.Collection;
-import java.util.HashMap;
-import java.util.Map;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Matchers;
import org.opendaylight.openflowplugin.applications.notification.supplier.impl.helper.TestData;
import org.opendaylight.openflowplugin.applications.notification.supplier.impl.helper.TestSupplierVerifyHelper;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNode;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.Flow;
import org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.GroupStatisticsUpdated;
import org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.NodeGroupStatistics;
import org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.group.statistics.GroupStatistics;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey;
-import org.opendaylight.yangtools.yang.binding.DataObject;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
public class GroupStatNotificationSupplierImplTest {
notifProviderService = mock(NotificationProviderService.class);
dataBroker = mock(DataBroker.class);
notifSupplierImpl = new GroupStatNotificationSupplierImpl(notifProviderService, dataBroker);
- TestSupplierVerifyHelper.verifyDataChangeRegistration(dataBroker);
+ TestSupplierVerifyHelper.verifyDataTreeChangeListenerRegistration(dataBroker);
}
@Test(expected = NullPointerException.class)
import java.util.ArrayList;
import java.util.Collection;
-import java.util.HashMap;
-import java.util.Map;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Matchers;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNode;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.meters.Meter;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.meters.MeterKey;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.Flow;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node;
import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.nodes.node.meter.MeterStatistics;
import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.nodes.node.meter.MeterStatisticsBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.MeterId;
-import org.opendaylight.yangtools.yang.binding.DataObject;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
public class MeterStatNotificationSupplierImplTest {
notifProviderService = mock(NotificationProviderService.class);
dataBroker = mock(DataBroker.class);
notifSupplierImpl = new MeterStatNotificationSupplierImpl(notifProviderService, dataBroker);
- TestSupplierVerifyHelper.verifyDataChangeRegistration(dataBroker);
+ TestSupplierVerifyHelper.verifyDataTreeChangeListenerRegistration(dataBroker);
}
@Test(expected = NullPointerException.class)
import java.util.ArrayList;
import java.util.Collection;
-import java.util.HashMap;
-import java.util.Map;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Matchers;
import org.opendaylight.openflowplugin.applications.notification.supplier.impl.helper.TestChangeEventBuildHelper;
import org.opendaylight.openflowplugin.applications.notification.supplier.impl.helper.TestData;
import org.opendaylight.openflowplugin.applications.notification.supplier.impl.helper.TestSupplierVerifyHelper;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.Flow;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.NodeConnectorKey;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.model.statistics.types.rev130925.NodeConnectorStatistics;
import org.opendaylight.yang.gen.v1.urn.opendaylight.port.statistics.rev131214.FlowCapableNodeConnectorStatisticsData;
import org.opendaylight.yang.gen.v1.urn.opendaylight.port.statistics.rev131214.NodeConnectorStatisticsUpdate;
import org.opendaylight.yang.gen.v1.urn.opendaylight.port.statistics.rev131214.flow.capable.node.connector.statistics.FlowCapableNodeConnectorStatistics;
import org.opendaylight.yang.gen.v1.urn.opendaylight.port.statistics.rev131214.flow.capable.node.connector.statistics.FlowCapableNodeConnectorStatisticsBuilder;
-import org.opendaylight.yangtools.yang.binding.DataObject;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
public class NodeConnectorStatNotificationSupplierImplTest {
notifProviderService = mock(NotificationProviderService.class);
dataBroker = mock(DataBroker.class);
notifSupplierImpl = new NodeConnectorStatNotificationSupplierImpl(notifProviderService, dataBroker);
- TestSupplierVerifyHelper.verifyDataChangeRegistration(dataBroker);
+ TestSupplierVerifyHelper.verifyDataTreeChangeListenerRegistration(dataBroker);
}
@Test(expected = NullPointerException.class)
import java.util.ArrayList;
import java.util.Collection;
-import java.util.HashMap;
-import java.util.Map;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Matchers;
import org.opendaylight.openflowplugin.applications.notification.supplier.impl.helper.TestData;
import org.opendaylight.openflowplugin.applications.notification.supplier.impl.helper.TestSupplierVerifyHelper;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNodeConnector;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.table.Flow;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.port.rev130925.queues.Queue;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.queue.statistics.rev131216.FlowCapableNodeConnectorQueueStatisticsData;
import org.opendaylight.yang.gen.v1.urn.opendaylight.queue.statistics.rev131216.FlowCapableNodeConnectorQueueStatisticsDataBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.queue.statistics.rev131216.QueueStatisticsUpdate;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.queue.statistics.rev131216.flow.capable.node.connector.queue.statistics.FlowCapableNodeConnectorQueueStatistics;
import org.opendaylight.yang.gen.v1.urn.opendaylight.queue.statistics.rev131216.flow.capable.node.connector.queue.statistics.FlowCapableNodeConnectorQueueStatisticsBuilder;
-import org.opendaylight.yangtools.yang.binding.DataObject;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
/**
notifProviderService = mock(NotificationProviderService.class);
dataBroker = mock(DataBroker.class);
notifSupplierImpl = new QueueStatNotificationSupplierImpl(notifProviderService, dataBroker);
- TestSupplierVerifyHelper.verifyDataChangeRegistration(dataBroker);
+ TestSupplierVerifyHelper.verifyDataTreeChangeListenerRegistration(dataBroker);
}
@Test(expected = NullPointerException.class)
}
@Test
- public void testOnDataChanged() {
+ public void testOnDataTreeChanged() {
defaultConfigPusher.onDataTreeChanged(Collections.singleton(dataTreeModification));
Mockito.verify(nodeConfigService).setConfig(setConfigInputCaptor.capture());
final SetConfigInput captured = setConfigInputCaptor.getValue();
import com.google.common.base.Optional;
import com.google.common.base.Preconditions;
-
import java.util.Collection;
import java.util.Map;
import java.util.concurrent.Callable;
import java.util.concurrent.ConcurrentHashMap;
-
-import org.opendaylight.controller.md.sal.binding.api.*;
+import org.opendaylight.controller.md.sal.binding.api.DataBroker;
+import org.opendaylight.controller.md.sal.binding.api.DataTreeIdentifier;
+import org.opendaylight.controller.md.sal.binding.api.DataTreeModification;
+import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;
import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException;
import org.opendaylight.controller.sal.binding.api.NotificationProviderService;
import org.opendaylight.openflowplugin.applications.statistics.manager.StatNodeRegistration;
import org.opendaylight.openflowplugin.applications.statistics.manager.StatisticsManager;
import org.opendaylight.openflowplugin.common.wait.SimpleTaskRetryLooper;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node;
import org.opendaylight.yangtools.concepts.ListenerRegistration;
import org.opendaylight.yangtools.yang.binding.DataObject;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
import org.opendaylight.yangtools.yang.binding.NotificationListener;
-
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
* org.opendaylight.openflowplugin.applications.statistics.manager.impl
*
* StatAbstractListeneningCommiter
- * Class is abstract implementation for all Configuration/DataStore DataChange
+ * Class is abstract implementation for all Configuration/DataStore DataTreeModification
* listenable DataObjects like flows, groups, meters. It is a holder for common
- * functionality needed by construction/destruction class and for DataChange
+ * functionality needed by construction/destruction class and for DataTreeModification
* event processing.
- *
*/
public abstract class StatAbstractListenCommit<T extends DataObject, N extends NotificationListener>
extends StatAbstractNotifyCommit<N> implements StatListeningCommiter<T,N> {
this.nodeRegistrationManager = nodeRegistrationManager;
SimpleTaskRetryLooper looper = new SimpleTaskRetryLooper(STARTUP_LOOP_TICK, STARTUP_LOOP_MAX_RETRIES);
- try{
+ try {
listenerRegistration = looper.loopUntilNoException(new Callable<ListenerRegistration<StatAbstractListenCommit<T, N>>>() {
@Override
public ListenerRegistration<StatAbstractListenCommit<T, N>> call() throws Exception {
return db.registerDataTreeChangeListener(treeId,StatAbstractListenCommit.this);
}
});
- }catch(final Exception ex){
- LOG.debug(" StatAbstractListenCommit DataChange listener registration failed {}", ex.getMessage());
+ } catch (final Exception ex) {
+ LOG.debug(" StatAbstractListenCommit DataTreeChangeListener registration failed {}", ex.getMessage());
throw new IllegalStateException("Notification supplier startup fail! System needs restart.", ex);
}
}
try {
listenerRegistration.close();
} catch (final Exception e) {
- LOG.error("Error by stop {} DataChange StatListeningCommiter.", clazz.getSimpleName(), e);
+ LOG.error("Error by stop {} DataTreeChangeListener StatListeningCommiter.", clazz.getSimpleName(), e);
}
listenerRegistration = null;
}
* StatListenCommitFlow
* Class is a NotifyListener for FlowStatistics and DataTreeChangeListener for Config/DataStore for Flow node.
* All expected (registered) FlowStatistics will be builded and commit to Operational/DataStore.
- * DataChangeEven should call create/delete Flow in Operational/DS create process needs to pair
+ * DataTreeModification should call create/delete Flow in Operational/DS create process needs to pair
* Device Flow HashCode and FlowId from Config/DS
- *
- * @author <a href="mailto:vdemcak@cisco.com">Vaclav Demcak</a>
- *
*/
public class StatListenCommitFlow extends StatAbstractListenCommit<Flow, OpendaylightFlowStatisticsListener>
implements OpendaylightFlowStatisticsListener {
* StatListenCommitGroup
* Class is a NotifyListener for GroupStatistics and DataTreeChangeListener for Config/DataStore for Group node.
* All expected (registered) GroupStatistics will be builded and commit to Operational/DataStore.
- * DataChangeEven should call create/delete Group in Operational/DS
- *
- * @author <a href="mailto:vdemcak@cisco.com">Vaclav Demcak</a>
- *
+ * DataTreeModification should call create/delete Group in Operational/DS
*/
public class StatListenCommitGroup extends StatAbstractListenCommit<Group, OpendaylightGroupStatisticsListener>
implements OpendaylightGroupStatisticsListener {
package org.opendaylight.openflowplugin.applications.statistics.manager.impl;
+import com.google.common.base.Optional;
+import com.google.common.base.Preconditions;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
-
import java.util.UUID;
import org.opendaylight.controller.md.sal.binding.api.DataBroker;
import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev150304.TransactionAware;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.transaction.rev150304.TransactionId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeRef;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import com.google.common.base.Optional;
-import com.google.common.base.Preconditions;
-
/**
* statistics-manager
* org.opendaylight.openflowplugin.applications.statistics.manager.impl
* StatListenCommitMeter
* Class is a NotifyListener for MeterStatistics and DataTreeChangeListener for Config/DataStore for Meter node.
* All expected (registered) MeterStatistics will be builded and commit to Operational/DataStore.
- * DataChangeEven should call create/delete Meter in Operational/DS
- *
+ * DataTreeModification should call create/delete Meter in Operational/DS
*/
public class StatListenCommitMeter extends StatAbstractListenCommit<Meter, OpendaylightMeterStatisticsListener>
implements OpendaylightMeterStatisticsListener {
@SuppressWarnings("unchecked")
@Test
- public void testReadLatestConfigurationWithInterveningOnDataChanged() {
+ public void testReadLatestConfigurationWithInterveningOnDataTreeChanged() {
InstanceIdentifier<DataObject> path = InstanceIdentifier.create(DataObject.class);