From: Robert Varga Date: Tue, 21 Jan 2020 22:31:31 +0000 (+0100) Subject: Cache full datastore context X-Git-Tag: release/magnesium~5 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=commitdiff_plain;h=da1c4f4a024472c0e8c340ba78d104a72f39785f Cache full datastore context While the context is small, it is also invariant across a number of test cases, each of which is instantiating it. Just share one instance across all tests to speed them up. While we are at it, we switch to using EffectiveModelContext to ease our future migration. Change-Id: I29a89e93903e7582bde4984828405aa2a8e45c27 Signed-off-by: Robert Varga --- diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/md/cluster/datastore/model/SchemaContextHelper.java b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/md/cluster/datastore/model/SchemaContextHelper.java index c98044af32..0e421b1bc6 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/md/cluster/datastore/model/SchemaContextHelper.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/test/java/org/opendaylight/controller/md/cluster/datastore/model/SchemaContextHelper.java @@ -8,7 +8,7 @@ package org.opendaylight.controller.md.cluster.datastore.model; import java.io.InputStream; -import org.opendaylight.yangtools.yang.model.api.SchemaContext; +import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext; import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils; public final class SchemaContextHelper { @@ -17,6 +17,8 @@ public final class SchemaContextHelper { public static final String PEOPLE_YANG = "/people.yang"; public static final String CARS_YANG = "/cars.yang"; + private static volatile EffectiveModelContext FULL; + private SchemaContextHelper() { } @@ -25,15 +27,25 @@ public final class SchemaContextHelper { return SchemaContextHelper.class.getResourceAsStream(yangFileName); } - public static SchemaContext full() { - return select(ODL_DATASTORE_TEST_YANG, PEOPLE_YANG, CARS_YANG); + public static EffectiveModelContext full() { + EffectiveModelContext ret = FULL; + if (ret == null) { + synchronized (SchemaContextHelper.class) { + ret = FULL; + if (ret == null) { + ret = FULL = select(ODL_DATASTORE_TEST_YANG, PEOPLE_YANG, CARS_YANG); + } + } + } + + return ret; } - public static SchemaContext select(final String... schemaFiles) { + public static EffectiveModelContext select(final String... schemaFiles) { return YangParserTestUtils.parseYangResources(SchemaContextHelper.class, schemaFiles); } - public static SchemaContext distributedShardedDOMDataTreeSchemaContext() { + public static EffectiveModelContext distributedShardedDOMDataTreeSchemaContext() { // we need prefix-shard-configuration and odl-datastore-test models // for DistributedShardedDOMDataTree tests return YangParserTestUtils.parseYangResources(SchemaContextHelper.class, ODL_DATASTORE_TEST_YANG,