From 43aab07cdbc80eda69e84a26085afe1b37f4002e Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Fri, 13 Nov 2015 13:02:33 +0100 Subject: [PATCH] BUG-1014: expose a proper ShardDataTree constructor This patch exposes the proper constructor, deprecating the previous one (which defaults to TreeType.OPERATIONAL). Furthermore convert all tests to explicitly use OPERATIONAL tree. The final bit which remains to be figured out is instantiation inside a Shard instance, which is marked with a FIXME. Change-Id: Ic8941c8fa5782b162e6faed7bc2d34920debc46e Signed-off-by: Robert Varga --- .../controller/cluster/datastore/Shard.java | 1 + .../controller/cluster/datastore/ShardDataTree.java | 12 ++++++++++-- .../datastore/utils/NormalizedNodeAggregator.java | 1 + .../cluster/datastore/ShardDataTreeTest.java | 9 +++++---- .../datastore/ShardRecoveryCoordinatorTest.java | 2 +- .../datastore/ShardTransactionFailureTest.java | 3 ++- .../cluster/datastore/ShardTransactionTest.java | 3 ++- .../CandidateListChangeListenerTest.java | 4 +++- .../DistributedEntityOwnershipServiceTest.java | 3 ++- .../EntityOwnerChangeListenerTest.java | 4 +++- .../EntityOwnershipStatisticsTest.java | 4 +++- 11 files changed, 33 insertions(+), 13 deletions(-) diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/Shard.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/Shard.java index e4cab8d4a6..0bb886a12d 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/Shard.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/Shard.java @@ -134,6 +134,7 @@ public class Shard extends RaftActor { LOG.info("Shard created : {}, persistent : {}", name, datastoreContext.isPersistent()); + // FIXME: BUG-1014: pass down the proper TreeType store = new ShardDataTree(builder.getSchemaContext()); shardMBean = ShardMBeanFactory.getShardStatsMBean(name.toString(), diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardDataTree.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardDataTree.java index abe106170b..be2e6d47fb 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardDataTree.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardDataTree.java @@ -31,6 +31,7 @@ import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeModification import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeSnapshot; import org.opendaylight.yangtools.yang.data.api.schema.tree.DataValidationFailedException; import org.opendaylight.yangtools.yang.data.api.schema.tree.TipProducingDataTree; +import org.opendaylight.yangtools.yang.data.api.schema.tree.TreeType; import org.opendaylight.yangtools.yang.data.impl.schema.tree.InMemoryDataTreeFactory; import org.opendaylight.yangtools.yang.model.api.SchemaContext; import org.slf4j.Logger; @@ -54,10 +55,17 @@ public class ShardDataTree extends ShardDataTreeTransactionParent { private final TipProducingDataTree dataTree; private SchemaContext schemaContext; - public ShardDataTree(final SchemaContext schemaContext) { - dataTree = InMemoryDataTreeFactory.getInstance().create(); + public ShardDataTree(final SchemaContext schemaContext, final TreeType treeType) { + dataTree = InMemoryDataTreeFactory.getInstance().create(treeType); updateSchemaContext(schemaContext); + } + /** + * @deprecated Use {@link #ShardDataTree(SchemaContext, TreeType)} instead. + */ + @Deprecated + public ShardDataTree(final SchemaContext schemaContext) { + this(schemaContext, TreeType.OPERATIONAL); } public TipProducingDataTree getDataTree() { diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/utils/NormalizedNodeAggregator.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/utils/NormalizedNodeAggregator.java index efb14971bb..18604587f1 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/utils/NormalizedNodeAggregator.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/utils/NormalizedNodeAggregator.java @@ -27,6 +27,7 @@ public class NormalizedNodeAggregator { final SchemaContext schemaContext) { this.rootIdentifier = rootIdentifier; this.nodes = nodes; + // FIXME: BUG-1014: pass down proper DataTree this.dataTree = InMemoryDataTreeFactory.getInstance().create(); this.dataTree.setSchemaContext(schemaContext); } diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ShardDataTreeTest.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ShardDataTreeTest.java index 4064dd07e9..c31db3205f 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ShardDataTreeTest.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ShardDataTreeTest.java @@ -25,6 +25,7 @@ import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidateTip import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeCandidates; import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeModification; import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeSnapshot; +import org.opendaylight.yangtools.yang.data.api.schema.tree.TreeType; import org.opendaylight.yangtools.yang.model.api.SchemaContext; public class ShardDataTreeTest { @@ -38,12 +39,12 @@ public class ShardDataTreeTest { @Test public void testWrite() throws ExecutionException, InterruptedException { - modify(new ShardDataTree(fullSchema), false, true, true); + modify(new ShardDataTree(fullSchema, TreeType.OPERATIONAL), false, true, true); } @Test public void testMerge() throws ExecutionException, InterruptedException { - modify(new ShardDataTree(fullSchema), true, true, true); + modify(new ShardDataTree(fullSchema, TreeType.OPERATIONAL), true, true, true); } @@ -87,7 +88,7 @@ public class ShardDataTreeTest { @Test public void bug4359AddRemoveCarOnce() throws ExecutionException, InterruptedException { - ShardDataTree shardDataTree = new ShardDataTree(fullSchema); + ShardDataTree shardDataTree = new ShardDataTree(fullSchema, TreeType.OPERATIONAL); List candidates = new ArrayList<>(); candidates.add(addCar(shardDataTree)); @@ -104,7 +105,7 @@ public class ShardDataTreeTest { @Test public void bug4359AddRemoveCarTwice() throws ExecutionException, InterruptedException { - ShardDataTree shardDataTree = new ShardDataTree(fullSchema); + ShardDataTree shardDataTree = new ShardDataTree(fullSchema, TreeType.OPERATIONAL); List candidates = new ArrayList<>(); candidates.add(addCar(shardDataTree)); diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ShardRecoveryCoordinatorTest.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ShardRecoveryCoordinatorTest.java index bbcda6ddb7..b730150668 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ShardRecoveryCoordinatorTest.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ShardRecoveryCoordinatorTest.java @@ -46,7 +46,7 @@ public class ShardRecoveryCoordinatorTest { peopleSchemaContext = SchemaContextHelper.select(SchemaContextHelper.PEOPLE_YANG); carsSchemaContext = SchemaContextHelper.select(SchemaContextHelper.CARS_YANG); - peopleDataTree = new ShardDataTree(peopleSchemaContext); + peopleDataTree = new ShardDataTree(peopleSchemaContext, TreeType.OPERATIONAL); } @Test diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ShardTransactionFailureTest.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ShardTransactionFailureTest.java index c3f66fb8e3..fc1af285b5 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ShardTransactionFailureTest.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ShardTransactionFailureTest.java @@ -22,6 +22,7 @@ import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException; import org.opendaylight.controller.protobuff.messages.common.NormalizedNodeMessages; import org.opendaylight.controller.protobuff.messages.transaction.ShardTransactionMessages; import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; +import org.opendaylight.yangtools.yang.data.api.schema.tree.TreeType; import org.opendaylight.yangtools.yang.data.impl.schema.Builders; import org.opendaylight.yangtools.yang.model.api.SchemaContext; import scala.concurrent.Await; @@ -40,7 +41,7 @@ public class ShardTransactionFailureTest extends AbstractActorTest { private static final TransactionType RW = TransactionType.READ_WRITE; private static final TransactionType WO = TransactionType.WRITE_ONLY; - private static final ShardDataTree store = new ShardDataTree(testSchemaContext); + private static final ShardDataTree store = new ShardDataTree(testSchemaContext, TreeType.OPERATIONAL); private static final ShardIdentifier SHARD_IDENTIFIER = ShardIdentifier.builder().memberName("member-1") diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ShardTransactionTest.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ShardTransactionTest.java index ab695f90cd..8d8db5e5d8 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ShardTransactionTest.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/ShardTransactionTest.java @@ -60,6 +60,7 @@ import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; import org.opendaylight.yangtools.yang.data.api.schema.tree.DataTreeModification; +import org.opendaylight.yangtools.yang.data.api.schema.tree.TreeType; import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes; import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableContainerNodeBuilder; import org.opendaylight.yangtools.yang.model.api.SchemaContext; @@ -79,7 +80,7 @@ public class ShardTransactionTest extends AbstractActorTest { private final ShardStats shardStats = new ShardStats(SHARD_IDENTIFIER.toString(), "DataStore"); - private final ShardDataTree store = new ShardDataTree(testSchemaContext); + private final ShardDataTree store = new ShardDataTree(testSchemaContext, TreeType.OPERATIONAL); private int txCounter = 0; diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/entityownership/CandidateListChangeListenerTest.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/entityownership/CandidateListChangeListenerTest.java index 7516242223..33fb4e3ddd 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/entityownership/CandidateListChangeListenerTest.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/entityownership/CandidateListChangeListenerTest.java @@ -25,6 +25,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; +import org.opendaylight.yangtools.yang.data.api.schema.tree.TreeType; import scala.concurrent.duration.FiniteDuration; /** @@ -39,7 +40,8 @@ public class CandidateListChangeListenerTest extends AbstractActorTest { private static final YangInstanceIdentifier ENTITY_ID2 = YangInstanceIdentifier.of(QName.create("test", "2015-08-14", "entity2")); - private final ShardDataTree shardDataTree = new ShardDataTree(SchemaContextHelper.entityOwners()); + private final ShardDataTree shardDataTree = new ShardDataTree(SchemaContextHelper.entityOwners(), + TreeType.OPERATIONAL); @Test public void testOnDataTreeChanged() throws Exception { diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/entityownership/DistributedEntityOwnershipServiceTest.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/entityownership/DistributedEntityOwnershipServiceTest.java index cedd942219..31accd12ee 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/entityownership/DistributedEntityOwnershipServiceTest.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/entityownership/DistributedEntityOwnershipServiceTest.java @@ -61,6 +61,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.DataTree; +import org.opendaylight.yangtools.yang.data.api.schema.tree.TreeType; import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes; import scala.concurrent.Await; import scala.concurrent.Future; @@ -263,7 +264,7 @@ public class DistributedEntityOwnershipServiceTest extends AbstractEntityOwnersh service.start(); - ShardDataTree shardDataTree = new ShardDataTree(SchemaContextHelper.entityOwners()); + ShardDataTree shardDataTree = new ShardDataTree(SchemaContextHelper.entityOwners(), TreeType.OPERATIONAL); shardBuilder.setDataTree(shardDataTree.getDataTree()); Entity entity1 = new Entity(ENTITY_TYPE, "one"); 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 e13f45640c..cc228a4c71 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; +import org.opendaylight.yangtools.yang.data.api.schema.tree.TreeType; ; /** @@ -45,7 +46,8 @@ public class EntityOwnerChangeListenerTest { private static final Entity ENTITY1 = new Entity(ENTITY_TYPE, ENTITY_ID1); private static final Entity ENTITY2 = new Entity(ENTITY_TYPE, ENTITY_ID2); - private final ShardDataTree shardDataTree = new ShardDataTree(SchemaContextHelper.entityOwners()); + private final ShardDataTree shardDataTree = new ShardDataTree(SchemaContextHelper.entityOwners(), + TreeType.OPERATIONAL); private final EntityOwnershipListenerSupport mockListenerSupport = mock(EntityOwnershipListenerSupport.class); private EntityOwnerChangeListener listener; diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/entityownership/EntityOwnershipStatisticsTest.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/entityownership/EntityOwnershipStatisticsTest.java index de299c99f7..a621ac65ab 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/entityownership/EntityOwnershipStatisticsTest.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/cluster/datastore/entityownership/EntityOwnershipStatisticsTest.java @@ -23,6 +23,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; +import org.opendaylight.yangtools.yang.data.api.schema.tree.TreeType; public class EntityOwnershipStatisticsTest extends AbstractActorTest { private static final String LOCAL_MEMBER_NAME = "member-1"; @@ -34,7 +35,8 @@ public class EntityOwnershipStatisticsTest extends AbstractActorTest { private static final YangInstanceIdentifier ENTITY_ID2 = YangInstanceIdentifier.of(QName.create("test", "2015-08-14", "entity2")); - private final ShardDataTree shardDataTree = new ShardDataTree(SchemaContextHelper.entityOwners()); + private final ShardDataTree shardDataTree = new ShardDataTree(SchemaContextHelper.entityOwners(), + TreeType.OPERATIONAL); private EntityOwnershipStatistics ownershipStatistics; @Before -- 2.36.6