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
9 package org.opendaylight.yangtools.yang.parser.repo;
11 import static org.junit.Assert.assertEquals;
12 import static org.junit.Assert.assertNotNull;
13 import static org.junit.Assert.assertTrue;
15 import com.google.common.collect.ImmutableList;
16 import com.google.common.util.concurrent.ListenableFuture;
17 import org.junit.Test;
18 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
19 import org.opendaylight.yangtools.yang.model.repo.api.SchemaContextFactory;
20 import org.opendaylight.yangtools.yang.model.repo.api.SchemaSourceFilter;
21 import org.opendaylight.yangtools.yang.model.repo.api.StatementParserMode;
22 import org.opendaylight.yangtools.yang.model.repo.api.YangTextSchemaSource;
23 import org.opendaylight.yangtools.yang.parser.rfc6020.repo.ASTSchemaSource;
24 import org.opendaylight.yangtools.yang.parser.rfc6020.repo.TextToASTTransformer;
26 public class OpenconfigVerSharedSchemaRepositoryTest {
29 public void testSemVerSharedSchemaRepository() throws Exception {
30 final SharedSchemaRepository sharedSchemaRepository = new SharedSchemaRepository(
31 "openconfig-ver-shared-schema-repo-test");
33 final SettableSchemaProvider<ASTSchemaSource> bar = getImmediateYangSourceProviderFromResource(
34 "/openconfig-version/openconfigver-shared-schema-repository/bar@2016-01-01.yang");
35 bar.register(sharedSchemaRepository);
37 final SettableSchemaProvider<ASTSchemaSource> foo = getImmediateYangSourceProviderFromResource(
38 "/openconfig-version/openconfigver-shared-schema-repository/foo.yang");
39 foo.register(sharedSchemaRepository);
41 final SettableSchemaProvider<ASTSchemaSource> semVer = getImmediateYangSourceProviderFromResource(
42 "/openconfig-version/openconfigver-shared-schema-repository/openconfig-extensions.yang");
43 semVer.register(sharedSchemaRepository);
46 final SchemaContextFactory fact = sharedSchemaRepository
47 .createSchemaContextFactory(SchemaSourceFilter.ALWAYS_ACCEPT);
49 final ListenableFuture<SchemaContext> inetAndTopologySchemaContextFuture =
50 fact.createSchemaContext(ImmutableList.of(bar.getId(), foo.getId(), semVer.getId()),
51 StatementParserMode.SEMVER_MODE);
52 assertTrue(inetAndTopologySchemaContextFuture.isDone());
53 assertSchemaContext(inetAndTopologySchemaContextFuture.get(), 3);
55 final ListenableFuture<SchemaContext> barSchemaContextFuture = fact
56 .createSchemaContext(ImmutableList.of(bar.getId(), semVer.getId()), StatementParserMode.SEMVER_MODE);
57 assertTrue(barSchemaContextFuture.isDone());
58 assertSchemaContext(barSchemaContextFuture.get(), 2);
62 public void testSharedSchemaRepository() throws Exception {
63 final SharedSchemaRepository sharedSchemaRepository = new SharedSchemaRepository("shared-schema-repo-test");
65 final SettableSchemaProvider<ASTSchemaSource> bar = getImmediateYangSourceProviderFromResource(
66 "/openconfig-version/shared-schema-repository/bar@2016-01-01.yang");
67 bar.register(sharedSchemaRepository);
69 final SettableSchemaProvider<ASTSchemaSource> foo = getImmediateYangSourceProviderFromResource(
70 "/openconfig-version/shared-schema-repository/foo.yang");
71 foo.register(sharedSchemaRepository);
73 final SettableSchemaProvider<ASTSchemaSource> semVer = getImmediateYangSourceProviderFromResource(
74 "/openconfig-version/shared-schema-repository/openconfig-extensions.yang");
75 semVer.register(sharedSchemaRepository);
78 final SchemaContextFactory fact = sharedSchemaRepository
79 .createSchemaContextFactory(SchemaSourceFilter.ALWAYS_ACCEPT);
81 final ListenableFuture<SchemaContext> inetAndTopologySchemaContextFuture =
82 fact.createSchemaContext(ImmutableList.of(bar.getId(), foo.getId(), semVer.getId()));
83 assertTrue(inetAndTopologySchemaContextFuture.isDone());
84 assertSchemaContext(inetAndTopologySchemaContextFuture.get(), 3);
86 final ListenableFuture<SchemaContext> barSchemaContextFuture =
87 fact.createSchemaContext(ImmutableList.of(bar.getId(), semVer.getId()));
88 assertTrue(barSchemaContextFuture.isDone());
89 assertSchemaContext(barSchemaContextFuture.get(), 2);
92 private static void assertSchemaContext(final SchemaContext schemaContext, final int moduleSize) {
93 assertNotNull(schemaContext);
94 assertEquals(moduleSize, schemaContext.getModules().size());
97 static SettableSchemaProvider<ASTSchemaSource> getImmediateYangSourceProviderFromResource(final String resourceName)
99 final YangTextSchemaSource yangSource = YangTextSchemaSource.forResource(resourceName);
100 return SettableSchemaProvider.createImmediate(TextToASTTransformer.transformText(yangSource),
101 ASTSchemaSource.class);