2 * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.yangtools.yang.parser.repo;
10 import static org.junit.Assert.assertEquals;
11 import static org.junit.Assert.assertNotNull;
12 import static org.junit.Assert.assertTrue;
14 import com.google.common.util.concurrent.ListenableFuture;
15 import org.junit.Test;
16 import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
17 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
18 import org.opendaylight.yangtools.yang.model.repo.api.EffectiveModelContextFactory;
19 import org.opendaylight.yangtools.yang.model.repo.api.YangTextSchemaSource;
20 import org.opendaylight.yangtools.yang.parser.rfc7950.ir.IRSchemaSource;
21 import org.opendaylight.yangtools.yang.parser.rfc7950.repo.TextToIRTransformer;
23 public class OpenconfigVerSharedSchemaRepositoryTest {
25 public void testSharedSchemaRepository() throws Exception {
26 final SharedSchemaRepository sharedSchemaRepository = new SharedSchemaRepository("shared-schema-repo-test");
28 final SettableSchemaProvider<IRSchemaSource> bar = getImmediateYangSourceProviderFromResource(
29 "/openconfig-version/shared-schema-repository/bar@2016-01-01.yang");
30 bar.register(sharedSchemaRepository);
32 final SettableSchemaProvider<IRSchemaSource> foo = getImmediateYangSourceProviderFromResource(
33 "/openconfig-version/shared-schema-repository/foo.yang");
34 foo.register(sharedSchemaRepository);
36 final SettableSchemaProvider<IRSchemaSource> semVer = getImmediateYangSourceProviderFromResource(
37 "/openconfig-version/shared-schema-repository/openconfig-extensions.yang");
38 semVer.register(sharedSchemaRepository);
41 final EffectiveModelContextFactory fact = sharedSchemaRepository.createEffectiveModelContextFactory();
42 final ListenableFuture<EffectiveModelContext> inetAndTopologySchemaContextFuture =
43 fact.createEffectiveModelContext(bar.getId(), foo.getId(), semVer.getId());
44 assertTrue(inetAndTopologySchemaContextFuture.isDone());
45 assertSchemaContext(inetAndTopologySchemaContextFuture.get(), 3);
47 final ListenableFuture<EffectiveModelContext> barSchemaContextFuture =
48 fact.createEffectiveModelContext(bar.getId(), semVer.getId());
49 assertTrue(barSchemaContextFuture.isDone());
50 assertSchemaContext(barSchemaContextFuture.get(), 2);
53 private static void assertSchemaContext(final SchemaContext schemaContext, final int moduleSize) {
54 assertNotNull(schemaContext);
55 assertEquals(moduleSize, schemaContext.getModules().size());
58 static SettableSchemaProvider<IRSchemaSource> getImmediateYangSourceProviderFromResource(final String resourceName)
60 final YangTextSchemaSource yangSource = YangTextSchemaSource.forResource(resourceName);
61 return SettableSchemaProvider.createImmediate(TextToIRTransformer.transformText(yangSource),
62 IRSchemaSource.class);