X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-distributed-datastore%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fdatastore%2Fentityownership%2FEntityOwnerChangeListenerTest.java;h=e13f45640cc73287338b52a3e46007c3f17510e4;hb=91063c9926e732ac41b29cf24c43c2c22fb93e43;hp=9bd0ccf2c0e4715e8530038007e18a50adf7a27b;hpb=a785966182ba80592f99be5a27a9af1d4c2ac37f;p=controller.git diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/entityownership/EntityOwnerChangeListenerTest.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/entityownership/EntityOwnerChangeListenerTest.java index 9bd0ccf2c0..e13f45640c 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/entityownership/EntityOwnerChangeListenerTest.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/entityownership/EntityOwnerChangeListenerTest.java @@ -26,6 +26,7 @@ import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; import org.opendaylight.yangtools.yang.data.api.schema.tree.DataValidationFailedException; +; /** * Unit tests for EntityOwnerChangeListener. @@ -58,33 +59,75 @@ public class EntityOwnerChangeListenerTest { public void testOnDataTreeChanged() throws Exception { writeNode(ENTITY_OWNERS_PATH, entityOwnersWithCandidate(ENTITY_TYPE, ENTITY_ID1, LOCAL_MEMBER_NAME)); writeNode(ENTITY_OWNERS_PATH, entityOwnersWithCandidate(ENTITY_TYPE, ENTITY_ID2, LOCAL_MEMBER_NAME)); - verify(mockListenerSupport, never()).notifyEntityOwnershipListeners(any(Entity.class), anyBoolean(), anyBoolean()); + verify(mockListenerSupport, never()).notifyEntityOwnershipListeners(any(Entity.class), anyBoolean(), + anyBoolean(), anyBoolean()); + + // Write local member as owner for entity 1 writeNode(entityPath(ENTITY_TYPE, ENTITY_ID1), entityEntryWithOwner(ENTITY_ID1, LOCAL_MEMBER_NAME)); - verify(mockListenerSupport).notifyEntityOwnershipListeners(ENTITY1, false, true); + verify(mockListenerSupport).notifyEntityOwnershipListeners(ENTITY1, false, true, true); + + // Add remote member 1 as candidate for entity 1 - listener support should not get notified reset(mockListenerSupport); writeNode(ENTITY_OWNERS_PATH, entityOwnersWithCandidate(ENTITY_TYPE, ENTITY_ID1, REMOTE_MEMBER_NAME1)); - verify(mockListenerSupport, never()).notifyEntityOwnershipListeners(any(Entity.class), anyBoolean(), anyBoolean()); + verify(mockListenerSupport, never()).notifyEntityOwnershipListeners(any(Entity.class), anyBoolean(), + anyBoolean(), anyBoolean()); + + // Change owner to remote member 1 for entity 1 reset(mockListenerSupport); writeNode(entityPath(ENTITY_TYPE, ENTITY_ID1), entityEntryWithOwner(ENTITY_ID1, REMOTE_MEMBER_NAME1)); - verify(mockListenerSupport).notifyEntityOwnershipListeners(ENTITY1, true, false); + verify(mockListenerSupport).notifyEntityOwnershipListeners(ENTITY1, true, false, true); + + // Change owner to remote member 2 for entity 1 reset(mockListenerSupport); writeNode(entityPath(ENTITY_TYPE, ENTITY_ID1), entityEntryWithOwner(ENTITY_ID1, REMOTE_MEMBER_NAME2)); - verify(mockListenerSupport, never()).notifyEntityOwnershipListeners(any(Entity.class), anyBoolean(), anyBoolean()); + verify(mockListenerSupport).notifyEntityOwnershipListeners(ENTITY1, false, false, true); + + // Clear the owner for entity 1 + + reset(mockListenerSupport); + writeNode(entityPath(ENTITY_TYPE, ENTITY_ID1), entityEntryWithOwner(ENTITY_ID1, "")); + verify(mockListenerSupport).notifyEntityOwnershipListeners(ENTITY1, false, false, false); + + // Change owner to the local member for entity 1 writeNode(entityPath(ENTITY_TYPE, ENTITY_ID1), entityEntryWithOwner(ENTITY_ID1, LOCAL_MEMBER_NAME)); - verify(mockListenerSupport).notifyEntityOwnershipListeners(ENTITY1, false, true); + verify(mockListenerSupport).notifyEntityOwnershipListeners(ENTITY1, false, true, true); + + // Change owner to remote member 2 for entity 2 reset(mockListenerSupport); writeNode(entityPath(ENTITY_TYPE, ENTITY_ID2), entityEntryWithOwner(ENTITY_ID2, REMOTE_MEMBER_NAME1)); - verify(mockListenerSupport, never()).notifyEntityOwnershipListeners(any(Entity.class), anyBoolean(), anyBoolean()); + verify(mockListenerSupport).notifyEntityOwnershipListeners(ENTITY2, false, false, true); + + // Change owner to the local member for entity 2 reset(mockListenerSupport); writeNode(entityPath(ENTITY_TYPE, ENTITY_ID2), entityEntryWithOwner(ENTITY_ID2, LOCAL_MEMBER_NAME)); - verify(mockListenerSupport).notifyEntityOwnershipListeners(ENTITY2, false, true); + verify(mockListenerSupport).notifyEntityOwnershipListeners(ENTITY2, false, true, true); + + // Write local member owner for entity 2 again - expect no change + + reset(mockListenerSupport); + writeNode(entityPath(ENTITY_TYPE, ENTITY_ID2), entityEntryWithOwner(ENTITY_ID2, LOCAL_MEMBER_NAME)); + verify(mockListenerSupport, never()).notifyEntityOwnershipListeners(any(Entity.class), anyBoolean(), + anyBoolean(), anyBoolean()); + + // Clear the owner for entity 2 + + reset(mockListenerSupport); + writeNode(entityPath(ENTITY_TYPE, ENTITY_ID2), entityEntryWithOwner(ENTITY_ID2, null)); + verify(mockListenerSupport).notifyEntityOwnershipListeners(ENTITY2, true, false, false); + + // Clear the owner for entity 2 again - expect no change + + reset(mockListenerSupport); + writeNode(entityPath(ENTITY_TYPE, ENTITY_ID2), entityEntryWithOwner(ENTITY_ID2, null)); + verify(mockListenerSupport, never()).notifyEntityOwnershipListeners(any(Entity.class), anyBoolean(), + anyBoolean(), anyBoolean()); } private void writeNode(YangInstanceIdentifier path, NormalizedNode node) throws DataValidationFailedException {