HONEYCOMB-106 - Support for generic cache management
[honeycomb.git] / v3po / notification / impl / src / test / java / io / fd / honeycomb / v3po / notification / impl / NotificationProducerTrackerTest.java
1 /*
2  * Copyright (c) 2016 Cisco and/or its affiliates.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at:
7  *
8  *     http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 package io.fd.honeycomb.v3po.notification.impl;
17
18 import static org.mockito.Mockito.doReturn;
19 import static org.mockito.Mockito.verify;
20
21 import com.google.common.collect.Lists;
22 import com.google.common.collect.Sets;
23 import io.fd.honeycomb.v3po.notification.ManagedNotificationProducer;
24 import io.fd.honeycomb.v3po.notification.NotificationCollector;
25 import java.util.Collections;
26 import java.util.Set;
27 import org.junit.Before;
28 import org.junit.Test;
29 import org.mockito.Mock;
30 import org.mockito.MockitoAnnotations;
31 import org.opendaylight.controller.md.sal.dom.spi.DOMNotificationSubscriptionListenerRegistry;
32 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.netconf.notifications.rev120206.NetconfSessionStart;
33 import org.opendaylight.yangtools.yang.model.api.SchemaPath;
34
35 public class NotificationProducerTrackerTest {
36
37     private NotificationProducerRegistry registry;
38     @Mock
39     private DOMNotificationSubscriptionListenerRegistry subscriptionRegistry;
40     @Mock
41     private NotificationCollector collector;
42     @Mock
43     private ManagedNotificationProducer producer;
44
45     @Before
46     public void setUp() throws Exception {
47         MockitoAnnotations.initMocks(this);
48         doReturn(Collections.singleton(NetconfSessionStart.class)).when(producer).getNotificationTypes();
49         registry = new NotificationProducerRegistry(Lists.newArrayList(producer));
50     }
51
52     @Test
53     public void name() throws Exception {
54         final NotificationProducerTracker notificationProducerTracker =
55             new NotificationProducerTracker(registry, collector, subscriptionRegistry);
56         verify(subscriptionRegistry).registerSubscriptionListener(notificationProducerTracker);
57
58         final Set<SchemaPath> subscriptions = Sets.newHashSet();
59         subscriptions.add(SchemaPath.create(true, NetconfSessionStart.QNAME));
60         notificationProducerTracker.onSubscriptionChanged(subscriptions);
61
62         verify(producer).start(collector);
63
64         notificationProducerTracker.onSubscriptionChanged(Sets.newHashSet());
65         verify(producer).stop();
66     }
67 }