2 * Copyright (c) 2014 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.protocol.bgp.rib.spi;
10 import static org.junit.Assert.assertNotNull;
11 import static org.junit.Assert.assertNull;
12 import static org.mockito.Mockito.doReturn;
13 import static org.mockito.Mockito.mock;
14 import static org.opendaylight.protocol.bgp.rib.spi.RIBQNames.AFI_QNAME;
15 import static org.opendaylight.protocol.bgp.rib.spi.RIBQNames.SAFI_QNAME;
17 import java.util.List;
19 import org.junit.Test;
20 import org.opendaylight.mdsal.binding.dom.adapter.AdapterContext;
21 import org.opendaylight.mdsal.binding.dom.adapter.test.AbstractConcurrentDataBrokerTest;
22 import org.opendaylight.mdsal.binding.dom.adapter.test.AbstractDataBrokerTestCustomizer;
23 import org.opendaylight.mdsal.binding.dom.codec.api.BindingNormalizedNodeSerializer;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev180329.Route;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev180329.rib.Tables;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.rib.rev180329.rib.TablesKey;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev200120.Ipv4AddressFamily;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev200120.UnicastSubsequentAddressFamily;
29 import org.opendaylight.yangtools.concepts.Registration;
30 import org.opendaylight.yangtools.yang.binding.DataObject;
31 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates;
33 public class SimpleRIBExtensionTest extends AbstractConcurrentDataBrokerTest {
34 private AdapterContext adapter;
37 protected final AbstractDataBrokerTestCustomizer createDataBrokerTestCustomizer() {
38 final AbstractDataBrokerTestCustomizer customizer = super.createDataBrokerTestCustomizer();
39 adapter = customizer.getAdapterContext();
44 public void testExtensionProvider() {
45 final var codec = adapter.currentSerializer();
46 var ctx = new DefaultRIBExtensionConsumerContext(codec);
47 assertNull(ctx.getRIBSupport(Ipv4AddressFamily.VALUE, UnicastSubsequentAddressFamily.VALUE));
49 ctx = new DefaultRIBExtensionConsumerContext(codec, new TestActivator());
50 assertNotNull(ctx.getRIBSupport(Ipv4AddressFamily.VALUE, UnicastSubsequentAddressFamily.VALUE));
53 private static final class TestActivator implements RIBExtensionProviderActivator {
55 public List<Registration> startRIBExtensionProvider(final RIBExtensionProviderContext context,
56 final BindingNormalizedNodeSerializer mappingService) {
57 final var support = mock(RIBSupport.class);
58 doReturn(Route.class).when(support).routesListClass();
59 doReturn(DataObject.class).when(support).routesContainerClass();
60 doReturn(DataObject.class).when(support).routesCaseClass();
61 doReturn(new TablesKey(Ipv4AddressFamily.VALUE, UnicastSubsequentAddressFamily.VALUE)).when(support)
63 doReturn(NodeIdentifierWithPredicates.of(Tables.QNAME,
64 Map.of(AFI_QNAME, Ipv4AddressFamily.QNAME, SAFI_QNAME, UnicastSubsequentAddressFamily.QNAME)))
65 .when(support).tablesKey();
66 return List.of(context.registerRIBSupport(support));