X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-binding-broker%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fmd%2Fsal%2Fbinding%2Fimpl%2Ftest%2FBug1418AugmentationTest.java;fp=opendaylight%2Fmd-sal%2Fsal-binding-broker%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fmd%2Fsal%2Fbinding%2Fimpl%2Ftest%2FBug1418AugmentationTest.java;h=6b5c825b83fa21a35353fdbfc79c41979ad6d54d;hb=79e71e14c10670696b93807657411ab969edae26;hp=0000000000000000000000000000000000000000;hpb=1bf9f8c060f6adf32f527f6efe82f78f774ffd8d;p=controller.git diff --git a/opendaylight/md-sal/sal-binding-broker/src/test/java/org/opendaylight/controller/md/sal/binding/impl/test/Bug1418AugmentationTest.java b/opendaylight/md-sal/sal-binding-broker/src/test/java/org/opendaylight/controller/md/sal/binding/impl/test/Bug1418AugmentationTest.java new file mode 100644 index 0000000000..6b5c825b83 --- /dev/null +++ b/opendaylight/md-sal/sal-binding-broker/src/test/java/org/opendaylight/controller/md/sal/binding/impl/test/Bug1418AugmentationTest.java @@ -0,0 +1,135 @@ +package org.opendaylight.controller.md.sal.binding.impl.test; + +import org.junit.Test; +import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; +import org.opendaylight.controller.md.sal.binding.test.AbstractDataChangeListenerTest; +import org.opendaylight.controller.md.sal.common.api.data.AsyncDataBroker; +import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeEvent; +import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.test.augment.rev140709.TreeComplexUsesAugment; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.test.augment.rev140709.TreeLeafOnlyUsesAugment; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.test.augment.rev140709.complex.from.grouping.ListViaUses; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.test.augment.rev140709.complex.from.grouping.ListViaUsesKey; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.test.list.rev140701.Top; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.test.list.rev140701.two.level.list.TopLevelList; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.md.sal.test.list.rev140701.two.level.list.TopLevelListKey; +import org.opendaylight.yangtools.yang.binding.DataObject; +import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; + +import static org.junit.Assert.assertTrue; +import static org.opendaylight.controller.md.sal.binding.test.AssertCollections.assertContains; +import static org.opendaylight.controller.md.sal.binding.test.AssertCollections.assertEmpty; +import static org.opendaylight.controller.md.sal.test.model.util.ListsBindingUtils.top; +import static org.opendaylight.controller.md.sal.test.model.util.ListsBindingUtils.TOP_FOO_KEY; +import static org.opendaylight.controller.md.sal.test.model.util.ListsBindingUtils.topLevelList; +import static org.opendaylight.controller.md.sal.test.model.util.ListsBindingUtils.leafOnlyUsesAugment; +import static org.opendaylight.controller.md.sal.test.model.util.ListsBindingUtils.complexUsesAugment; + +public class Bug1418AugmentationTest extends AbstractDataChangeListenerTest{ + private static final InstanceIdentifier TOP = InstanceIdentifier.create(Top.class); + private static final InstanceIdentifier TOP_FOO = TOP.child(TopLevelList.class, TOP_FOO_KEY); + private static final InstanceIdentifier SIMPLE_AUGMENT = + TOP.child(TopLevelList.class, TOP_FOO_KEY).augmentation(TreeLeafOnlyUsesAugment.class); + private static final InstanceIdentifier COMPLEX_AUGMENT = + TOP.child(TopLevelList.class, TOP_FOO_KEY).augmentation(TreeComplexUsesAugment.class); + private static final ListViaUsesKey LIST_VIA_USES_KEY = + new ListViaUsesKey("list key"); + private static final ListViaUsesKey LIST_VIA_USES_KEY_MOD = + new ListViaUsesKey("list key modified"); + + @Test + public void leafOnlyAugmentationCreatedTest() { + TestListener listener = createListener(LogicalDatastoreType.CONFIGURATION, SIMPLE_AUGMENT, + AsyncDataBroker.DataChangeScope.SUBTREE); + WriteTransaction writeTx = getDataBroker().newWriteOnlyTransaction(); + writeTx.put(LogicalDatastoreType.CONFIGURATION, TOP, top()); + writeTx.put(LogicalDatastoreType.CONFIGURATION, TOP_FOO, topLevelList(new TopLevelListKey(TOP_FOO_KEY))); + writeTx.put(LogicalDatastoreType.CONFIGURATION, SIMPLE_AUGMENT, leafOnlyUsesAugment("test leaf")); + assertCommit(writeTx.submit()); + assertTrue(listener.hasEvent()); + AsyncDataChangeEvent, DataObject> event = listener.event(); + assertContains(event.getCreatedData(), SIMPLE_AUGMENT); + assertEmpty(event.getUpdatedData()); + assertEmpty(event.getOriginalData()); + assertEmpty(event.getRemovedPaths()); + } + + @Test + public void leafOnlyAugmentationUpdatedTest() { + WriteTransaction writeTx = getDataBroker().newWriteOnlyTransaction(); + writeTx.put(LogicalDatastoreType.CONFIGURATION, TOP, top()); + writeTx.put(LogicalDatastoreType.CONFIGURATION, TOP_FOO, topLevelList(new TopLevelListKey(TOP_FOO_KEY))); + writeTx.put(LogicalDatastoreType.CONFIGURATION, SIMPLE_AUGMENT, leafOnlyUsesAugment("test leaf")); + assertCommit(writeTx.submit()); + TestListener listener = createListener(LogicalDatastoreType.CONFIGURATION, SIMPLE_AUGMENT, + AsyncDataBroker.DataChangeScope.SUBTREE); + writeTx = getDataBroker().newWriteOnlyTransaction(); + writeTx.put(LogicalDatastoreType.CONFIGURATION, SIMPLE_AUGMENT, leafOnlyUsesAugment("test leaf changed")); + assertCommit(writeTx.submit()); + assertTrue(listener.hasEvent()); + AsyncDataChangeEvent, DataObject> event = listener.event(); + assertContains(event.getUpdatedData(), SIMPLE_AUGMENT); + assertContains(event.getOriginalData(), SIMPLE_AUGMENT); + assertEmpty(event.getCreatedData()); + assertEmpty(event.getRemovedPaths()); + } + + @Test + public void leafOnlyAugmentationDeletedTest() { + WriteTransaction writeTx = getDataBroker().newWriteOnlyTransaction(); + writeTx.put(LogicalDatastoreType.CONFIGURATION, TOP, top()); + writeTx.put(LogicalDatastoreType.CONFIGURATION, TOP_FOO, topLevelList(new TopLevelListKey(TOP_FOO_KEY))); + writeTx.put(LogicalDatastoreType.CONFIGURATION, SIMPLE_AUGMENT, leafOnlyUsesAugment("test leaf")); + assertCommit(writeTx.submit()); + TestListener listener = createListener(LogicalDatastoreType.CONFIGURATION, SIMPLE_AUGMENT, + AsyncDataBroker.DataChangeScope.SUBTREE); + writeTx = getDataBroker().newWriteOnlyTransaction(); + writeTx.delete(LogicalDatastoreType.CONFIGURATION, SIMPLE_AUGMENT); + assertCommit(writeTx.submit()); + assertTrue(listener.hasEvent()); + AsyncDataChangeEvent, DataObject> event = listener.event(); + assertContains(event.getRemovedPaths(), SIMPLE_AUGMENT); + assertContains(event.getOriginalData(), SIMPLE_AUGMENT); + assertEmpty(event.getCreatedData()); + assertEmpty(event.getUpdatedData()); + } + + @Test + public void complexAugmentationCreatedTest() { + TestListener listener = createListener(LogicalDatastoreType.CONFIGURATION, COMPLEX_AUGMENT, + AsyncDataBroker.DataChangeScope.SUBTREE); + WriteTransaction writeTx = getDataBroker().newWriteOnlyTransaction(); + writeTx.put(LogicalDatastoreType.CONFIGURATION, TOP, top()); + writeTx.put(LogicalDatastoreType.CONFIGURATION, TOP_FOO, topLevelList(new TopLevelListKey(TOP_FOO_KEY))); + writeTx.put(LogicalDatastoreType.CONFIGURATION, COMPLEX_AUGMENT, complexUsesAugment(LIST_VIA_USES_KEY)); + assertCommit(writeTx.submit()); + assertTrue(listener.hasEvent()); + AsyncDataChangeEvent, DataObject> event = listener.event(); + assertContains(event.getCreatedData(), COMPLEX_AUGMENT); + assertContains(event.getCreatedData(), COMPLEX_AUGMENT.child(ListViaUses.class, LIST_VIA_USES_KEY)); + assertEmpty(event.getUpdatedData()); + assertEmpty(event.getOriginalData()); + assertEmpty(event.getRemovedPaths()); + } + + @Test + public void complexAugmentationUpdatedTest() { + WriteTransaction writeTx = getDataBroker().newWriteOnlyTransaction(); + writeTx.put(LogicalDatastoreType.CONFIGURATION, TOP, top()); + writeTx.put(LogicalDatastoreType.CONFIGURATION, TOP_FOO, topLevelList(new TopLevelListKey(TOP_FOO_KEY))); + writeTx.put(LogicalDatastoreType.CONFIGURATION, COMPLEX_AUGMENT, complexUsesAugment(LIST_VIA_USES_KEY)); + assertCommit(writeTx.submit()); + TestListener listener = createListener(LogicalDatastoreType.CONFIGURATION, COMPLEX_AUGMENT, + AsyncDataBroker.DataChangeScope.SUBTREE); + writeTx = getDataBroker().newWriteOnlyTransaction(); + writeTx.put(LogicalDatastoreType.CONFIGURATION, COMPLEX_AUGMENT, complexUsesAugment(LIST_VIA_USES_KEY_MOD)); + assertCommit(writeTx.submit()); + assertTrue(listener.hasEvent()); + AsyncDataChangeEvent, DataObject> event = listener.event(); + assertContains(event.getUpdatedData(), COMPLEX_AUGMENT); + assertContains(event.getCreatedData(), COMPLEX_AUGMENT.child(ListViaUses.class, LIST_VIA_USES_KEY_MOD)); + assertContains(event.getRemovedPaths(), COMPLEX_AUGMENT.child(ListViaUses.class, LIST_VIA_USES_KEY)); + assertContains(event.getOriginalData(), COMPLEX_AUGMENT); + assertContains(event.getOriginalData(), COMPLEX_AUGMENT.child(ListViaUses.class, LIST_VIA_USES_KEY)); + } +}