--- /dev/null
+/*
+ * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+
+package org.opendaylight.protocol.bgp.rib.impl;
+
+import static junit.framework.TestCase.assertNotNull;
+import static org.junit.Assert.assertEquals;
+import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.doNothing;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+
+import com.google.common.collect.Lists;
+import java.util.List;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.Mock;
+import org.opendaylight.protocol.bgp.config.loader.impl.AbstractConfigLoader;
+import org.opendaylight.protocol.bgp.rib.impl.spi.BgpDeployer;
+import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.network.instance.rev151018.network.instance.top.NetworkInstances;
+import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.network.instance.rev151018.network.instance.top.network.instances.NetworkInstance;
+import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.network.instance.rev151018.network.instance.top.network.instances.NetworkInstanceKey;
+import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.network.instance.rev151018.network.instance.top.network.instances.network.instance.Protocols;
+import org.opendaylight.yang.gen.v1.http.openconfig.net.yang.network.instance.rev151018.network.instance.top.network.instances.network.instance.protocols.Protocol;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.openconfig.extensions.rev160614.Protocol1;
+import org.opendaylight.yangtools.sal.binding.generator.impl.ModuleInfoBackedContext;
+import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
+import org.opendaylight.yangtools.yang.binding.util.BindingReflections;
+import org.opendaylight.yangtools.yang.model.api.SchemaPath;
+
+public class ProtocolsConfigFileProcessorTest extends AbstractConfigLoader {
+ private static final InstanceIdentifier<NetworkInstance> NETWORK_INSTANCE_IID = InstanceIdentifier.create(NetworkInstances.class)
+ .child(NetworkInstance.class, new NetworkInstanceKey("GLOBAL"));
+ @Mock
+ private BgpDeployer bgpDeployer;
+
+ @Override
+ @Before
+ public void setUp() throws Exception {
+ super.setUp();
+ doReturn(NETWORK_INSTANCE_IID).when(this.bgpDeployer).getInstanceIdentifier();
+ doNothing().when(this.bgpDeployer).onGlobalModified(any(), any(), any());
+ doNothing().when(this.bgpDeployer).onNeighborModified(any(), any(), any());
+ }
+
+ @Override
+ protected String getResourceFolder() {
+ return ClassLoader.getSystemClassLoader().getResource("initial").getPath();
+ }
+
+ @Override
+ protected void registerModules(final ModuleInfoBackedContext moduleInfoBackedContext) throws Exception {
+ moduleInfoBackedContext.registerModuleInfo(BindingReflections.getModuleInfo(NetworkInstances.class));
+ moduleInfoBackedContext.registerModuleInfo(BindingReflections.getModuleInfo(Protocols.class));
+ moduleInfoBackedContext.registerModuleInfo(BindingReflections.getModuleInfo(Protocol.class));
+ moduleInfoBackedContext.registerModuleInfo(BindingReflections.getModuleInfo(Protocol1.class));
+ }
+
+ @Override
+ protected List<String> getYangModelsPaths() {
+ final List<String> paths = Lists.newArrayList(
+ "/META-INF/yang/openconfig-extensions.yang",
+ "/META-INF/yang/bgp-openconfig-extensions.yang",
+ "/META-INF/yang/ietf-interfaces.yang",
+ "/META-INF/yang/openconfig-network-instance-types.yang",
+ "/META-INF/yang/openconfig-interfaces.yang",
+ "/META-INF/yang/openconfig-network-instance.yang",
+ "/META-INF/yang/openconfig-routing-policy.yang",
+ "/META-INF/yang/openconfig-policy-types.yang",
+ "/META-INF/yang/openconfig-routing-policy.yang",
+ "/META-INF/yang/openconfig-local-routing.yang",
+ "/META-INF/yang/openconfig-bgp-operational.yang",
+ "/META-INF/yang/openconfig-bgp-types.yang",
+ "/META-INF/yang/openconfig-types.yang",
+ "/META-INF/yang/openconfig-bgp-multiprotocol.yang",
+ "/META-INF/yang/openconfig-bgp.yang",
+ "/META-INF/yang/bgp-rib.yang",
+ "/META-INF/yang/ietf-inet-types@2013-07-15.yang",
+ "/META-INF/yang/bgp-message.yang",
+ "/META-INF/yang/bgp-multiprotocol.yang",
+ "/META-INF/yang/bgp-types.yang",
+ "/META-INF/yang/network-concepts.yang",
+ "/META-INF/yang/ieee754.yang",
+ "/META-INF/yang/ietf-yang-types@2013-07-15.yang",
+ "/META-INF/yang/yang-ext.yang"
+ );
+ return paths;
+ }
+
+ @Test
+ public void configFileTest() throws Exception {
+ assertNotNull(ClassLoader.getSystemClassLoader().getResource("initial/protocols-config.xml"));
+ verify(this.bgpDeployer, never()).onGlobalModified(any(), any(), any());
+ verify(this.bgpDeployer, never()).onNeighborModified(any(), any(), any());
+
+ final ProtocolsConfigFileProcessor processor = new ProtocolsConfigFileProcessor(this.configLoader, this.bgpDeployer);
+ assertEquals(SchemaPath.create(true, NetworkInstances.QNAME, NetworkInstance.QNAME, Protocols.QNAME), processor.getSchemaPath());
+
+ verify(this.bgpDeployer).onGlobalModified(any(), any(), any());
+ verify(this.bgpDeployer, times(2)).onNeighborModified(any(), any(), any());
+ processor.close();
+ }
+}
\ No newline at end of file