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.groupbasedpolicy.renderer.ios_xe_provider.impl.listener;
11 import java.util.Collections;
12 import org.junit.After;
13 import org.junit.Before;
14 import org.junit.Test;
15 import org.junit.runner.RunWith;
16 import org.mockito.Matchers;
17 import org.mockito.Mock;
18 import org.mockito.Mockito;
19 import org.mockito.runners.MockitoJUnitRunner;
20 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
21 import org.opendaylight.controller.md.sal.binding.api.DataObjectModification;
22 import org.opendaylight.controller.md.sal.binding.api.DataTreeIdentifier;
23 import org.opendaylight.controller.md.sal.binding.api.DataTreeModification;
24 import org.opendaylight.groupbasedpolicy.renderer.ios_xe_provider.api.cache.DSTreeBasedCache;
25 import org.opendaylight.groupbasedpolicy.renderer.ios_xe_provider.impl.cache.EpPolicyTemplateCacheKey;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.RendererName;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.RendererPolicy;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.RendererPolicyBuilder;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.groupbasedpolicy.sxp.mapper.model.rev160302.sxp.mapper.EndpointPolicyTemplateBySgt;
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.sxp.database.rev160308.Sgt;
31 import org.opendaylight.yangtools.concepts.ListenerRegistration;
34 * Test for {@link RendererConfigurationListenerImpl}.
36 @RunWith(MockitoJUnitRunner.class)
37 public class RendererConfigurationListenerImplTest {
39 private static final RendererName RENDERER_NAME = new RendererName("renderer1");
40 private final RendererPolicy policy1;
42 private DataBroker dataBroker;
44 private DSTreeBasedCache<EndpointPolicyTemplateBySgt, EpPolicyTemplateCacheKey, Sgt> cache;
46 private ListenerRegistration<RendererConfigurationListenerImpl> listenerRegistration;
48 private DataTreeModification<RendererPolicy> dataTreeModification;
50 private DataObjectModification<RendererPolicy> rootNode;
52 private RendererConfigurationListenerImpl listener;
54 public RendererConfigurationListenerImplTest() {
55 policy1 = new RendererPolicyBuilder().build();
59 public void setUp() throws Exception {
60 Mockito.when(dataBroker.registerDataTreeChangeListener(
61 Matchers.<DataTreeIdentifier<RendererPolicy>>any(),
62 Matchers.<RendererConfigurationListenerImpl>any()))
63 .thenReturn(listenerRegistration);
64 listener = new RendererConfigurationListenerImpl(dataBroker, RENDERER_NAME, cache);
68 public void tearDown() throws Exception {
69 Mockito.verifyNoMoreInteractions(listenerRegistration);
73 public void testOnDataTreeChanged_add() throws Exception {
74 Mockito.when(rootNode.getDataAfter()).thenReturn(policy1);
75 Mockito.when(rootNode.getModificationType()).thenReturn(DataObjectModification.ModificationType.WRITE);
76 Mockito.when(dataTreeModification.getRootNode()).thenReturn(rootNode);
78 listener.onDataTreeChanged(Collections.singleton(dataTreeModification));
79 //TODO: verify on policy manager
83 public void testClose() throws Exception {
84 Mockito.verify(listenerRegistration, Mockito.never()).close();
86 Mockito.verify(listenerRegistration).close();
88 Mockito.verify(listenerRegistration, Mockito.times(2)).close();