ios-xe renderer - listeners+cache
[groupbasedpolicy.git] / renderers / ios-xe / src / test / java / org / opendaylight / groupbasedpolicy / renderer / ios_xe_provider / impl / listener / RendererConfigurationListenerImplTest.java
1 /*
2  * Copyright (c) 2016 Cisco Systems, Inc. and others.  All rights reserved.
3  *
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
7  */
8
9 package org.opendaylight.groupbasedpolicy.renderer.ios_xe_provider.impl.listener;
10
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;
32
33 /**
34  * Test for {@link RendererConfigurationListenerImpl}.
35  */
36 @RunWith(MockitoJUnitRunner.class)
37 public class RendererConfigurationListenerImplTest {
38
39     private static final RendererName RENDERER_NAME = new RendererName("renderer1");
40     private final RendererPolicy policy1;
41     @Mock
42     private DataBroker dataBroker;
43     @Mock
44     private DSTreeBasedCache<EndpointPolicyTemplateBySgt, EpPolicyTemplateCacheKey, Sgt> cache;
45     @Mock
46     private ListenerRegistration<RendererConfigurationListenerImpl> listenerRegistration;
47     @Mock
48     private DataTreeModification<RendererPolicy> dataTreeModification;
49     @Mock
50     private DataObjectModification<RendererPolicy> rootNode;
51
52     private RendererConfigurationListenerImpl listener;
53
54     public RendererConfigurationListenerImplTest() {
55         policy1 = new RendererPolicyBuilder().build();
56     }
57
58     @Before
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);
65     }
66
67     @After
68     public void tearDown() throws Exception {
69         Mockito.verifyNoMoreInteractions(listenerRegistration);
70     }
71
72     @Test
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);
77
78         listener.onDataTreeChanged(Collections.singleton(dataTreeModification));
79         //TODO: verify on policy manager
80     }
81
82     @Test
83     public void testClose() throws Exception {
84         Mockito.verify(listenerRegistration, Mockito.never()).close();
85         listener.close();
86         Mockito.verify(listenerRegistration).close();
87         listener.close();
88         Mockito.verify(listenerRegistration, Mockito.times(2)).close();
89     }
90 }