ed7f56f4b109d9a26a5e8a93f143a87f83821e8b
[ccsdk/features.git] /
1 /*
2  * ============LICENSE_START=======================================================
3  * ONAP : ccsdk feature sdnr wt
4  *  ================================================================================
5  * Copyright (C) 2019 highstreet technologies GmbH Intellectual Property.
6  * All rights reserved.
7  * ================================================================================
8  * Licensed under the Apache License, Version 2.0 (the "License");
9  * you may not use this file except in compliance with the License.
10  * You may obtain a copy of the License at
11  *
12  *      http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing, software
15  * distributed under the License is distributed on an "AS IS" BASIS,
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * See the License for the specific language governing permissions and
18  * limitations under the License.
19  * ============LICENSE_END=========================================================
20  */
21 package org.onap.ccsdk.features.sdnr.wt.devicemanager.test;
22
23 import static org.junit.Assert.assertTrue;
24 import java.util.Arrays;
25 import org.junit.AfterClass;
26 import org.junit.BeforeClass;
27 import org.junit.Test;
28 import org.mockito.Mockito;
29 import org.onap.ccsdk.features.sdnr.wt.dataprovider.model.DataProvider;
30 import org.onap.ccsdk.features.sdnr.wt.dataprovider.model.HtDatabaseMaintenance;
31 import org.onap.ccsdk.features.sdnr.wt.dataprovider.model.IEntityDataProvider;
32 import org.onap.ccsdk.features.sdnr.wt.dataprovider.model.IEsConfig;
33 import org.onap.ccsdk.features.sdnr.wt.dataprovider.model.types.NetconfTimeStampImpl;
34 import org.onap.ccsdk.features.sdnr.wt.devicemanager.impl.DeviceManagerImpl;
35 import org.onap.ccsdk.features.sdnr.wt.devicemanager.impl.util.InternalDateAndTime;
36 import org.onap.ccsdk.features.sdnr.wt.devicemanager.service.FaultService;
37 import org.onap.ccsdk.features.sdnr.wt.devicemanager.service.NotificationService;
38 import org.onap.ccsdk.features.sdnr.wt.devicemanager.test.mock.RpcProviderServiceMock;
39 import org.onap.ccsdk.features.sdnr.wt.netconfnodestateservice.NetconfNodeConnectListener;
40 import org.onap.ccsdk.features.sdnr.wt.netconfnodestateservice.NetconfNodeStateListener;
41 import org.onap.ccsdk.features.sdnr.wt.netconfnodestateservice.NetconfNodeStateService;
42 import org.onap.ccsdk.features.sdnr.wt.websocketmanager.model.WebsocketManagerService;
43 import org.opendaylight.mdsal.binding.api.DataBroker;
44 import org.opendaylight.mdsal.binding.api.MountPointService;
45 import org.opendaylight.mdsal.binding.api.NotificationPublishService;
46 import org.opendaylight.mdsal.singleton.common.api.ClusterSingletonServiceProvider;
47 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.DateAndTime;
48 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.FaultlogBuilder;
49 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.MaintenanceBuilder;
50 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.SeverityType;
51 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.devicemanager.rev190109.ClearCurrentFaultByNodenameInputBuilder;
52 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.devicemanager.rev190109.DevicemanagerService;
53 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.devicemanager.rev190109.GetRequiredNetworkElementKeysInputBuilder;
54 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.devicemanager.rev190109.PushAttributeChangeNotificationInputBuilder;
55 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.devicemanager.rev190109.PushFaultNotificationInputBuilder;
56 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.devicemanager.rev190109.ShowRequiredNetworkElementInputBuilder;
57 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId;
58 import org.opendaylight.yangtools.concepts.ListenerRegistration;
59 import org.slf4j.Logger;
60 import org.slf4j.LoggerFactory;
61
62 @SuppressWarnings("deprecation")
63 public class TestDevicemanager extends Mockito {
64
65     private static final Logger log = LoggerFactory.getLogger(TestDevicemanager.class);
66
67     private static DeviceManagerImpl deviceManager = new DeviceManagerImpl();
68     private static DevicemanagerService apiService;
69     private static HtDatabaseMaintenance htDataBaseMaintenance = mock(HtDatabaseMaintenance.class);
70
71     @BeforeClass
72     public static void before() throws Exception {
73
74         DataBroker dataBroker = mock(DataBroker.class);
75         RpcProviderServiceMock rpcProviderRegistry = new RpcProviderServiceMock();
76         NotificationPublishService notificationPublishService = mock(NotificationPublishService.class);
77         MountPointService mountPointService = mock(MountPointService.class);
78         ClusterSingletonServiceProvider clusterSingletonService = mock(ClusterSingletonServiceProvider.class);
79         NetconfNodeStateService netconfNodeStateService = mock(NetconfNodeStateService.class);
80
81         @SuppressWarnings("unchecked")
82         ListenerRegistration<NetconfNodeConnectListener> lr1 = mock(ListenerRegistration.class);
83         //doNothing().when(lr1).close();
84         when(netconfNodeStateService.registerNetconfNodeConnectListener(mock(NetconfNodeConnectListener.class)))
85                 .thenReturn(lr1);
86
87         @SuppressWarnings("unchecked")
88         ListenerRegistration<NetconfNodeStateListener> lr2 = mock(ListenerRegistration.class);
89         //doNothing().when(lr2).close();
90         when(netconfNodeStateService.registerNetconfNodeStateListener(mock(NetconfNodeStateListener.class)))
91                 .thenReturn(lr2);
92
93         WebsocketManagerService websocketmanagerService = mock(WebsocketManagerService.class);
94
95         IEntityDataProvider iEntityDataProvider = mock(IEntityDataProvider.class);
96         doNothing().when(iEntityDataProvider).setReadyStatus(isA(Boolean.class));
97
98         DataProvider dataProvider = mock(DataProvider.class);
99         when(iEntityDataProvider.getDataProvider()).thenReturn(dataProvider);
100
101         when(iEntityDataProvider.getHtDatabaseMaintenance()).thenReturn(htDataBaseMaintenance);
102
103
104         IEsConfig esConfig = mock(IEsConfig.class);
105         when(iEntityDataProvider.getEsConfig()).thenReturn(esConfig);
106
107
108         deviceManager.setDataBroker(dataBroker);
109         deviceManager.setRpcProviderRegistry(rpcProviderRegistry);
110         deviceManager.setNotificationPublishService(notificationPublishService);
111         deviceManager.setMountPointService(mountPointService);
112         deviceManager.setClusterSingletonService(clusterSingletonService);
113         deviceManager.setNetconfNodeStateService(netconfNodeStateService);
114         deviceManager.setWebsocketmanagerService(websocketmanagerService);
115         deviceManager.setEntityDataProvider(iEntityDataProvider);
116
117         deviceManager.init();
118
119         apiService = rpcProviderRegistry.getDeviceManagerApiService();
120
121     }
122
123
124     @Test
125     public void testInit() {
126         assertTrue(deviceManager.isDevicemanagerInitializationOk());
127     }
128
129     @Test
130     public void testMapping() {
131
132     }
133
134     @Test
135     public void testChangeNotification() {
136         NotificationService n = deviceManager.getNotificationService();
137
138         n.creationNotification(new NodeId("NodeTest1"), 1, InternalDateAndTime.getTestpatternDateAndTime(), "ObjTest1");
139
140         n.changeNotification(new NodeId("NodeTest1"), 2, InternalDateAndTime.getTestpatternDateAndTime(), "ObjTest1",
141                 "AtrributeTest1", "NewTest1");
142
143         n.deletionNotification(new NodeId("NodeTest1"), 3, InternalDateAndTime.getTestpatternDateAndTime(), "ObjTest1");
144
145     }
146
147     @Test
148     public void testFaultNotification() {
149         log.info("testFaultNotification");
150
151         MaintenanceBuilder mb = new MaintenanceBuilder();
152         when(htDataBaseMaintenance.getMaintenance("")).thenReturn(mb.build());
153
154         FaultService n = deviceManager.getFaultService();
155         FaultlogBuilder faultLogEntityBuilder = new FaultlogBuilder();
156         n.faultNotification(faultLogEntityBuilder.setNodeId("node1").setSeverity(SeverityType.Critical)
157                 .setTimestamp(NetconfTimeStampImpl.getTestpatternDateAndTime()).build());
158
159     }
160
161     @Test
162     public void testGet() {
163         log.info("testGet");
164         GetRequiredNetworkElementKeysInputBuilder inputBuilder = new GetRequiredNetworkElementKeysInputBuilder();
165         apiService.getRequiredNetworkElementKeys(inputBuilder.build());
166
167     }
168
169     @Test
170     public void testShow() {
171         log.info("testShow");
172         ShowRequiredNetworkElementInputBuilder inputBuilder = new ShowRequiredNetworkElementInputBuilder();
173         inputBuilder.setMountpointName("test");
174         apiService.showRequiredNetworkElement(inputBuilder.build());
175
176     }
177
178     @Test
179     public void testResync() {
180         log.info("testResync");
181
182         ClearCurrentFaultByNodenameInputBuilder inputBuilder = new ClearCurrentFaultByNodenameInputBuilder();
183         inputBuilder.setNodenames(Arrays.asList("test1", "test2"));
184         apiService.clearCurrentFaultByNodename(inputBuilder.build());
185
186     }
187
188     @Test
189     public void testPushFault() {
190         log.info("testPushFault");
191
192         PushFaultNotificationInputBuilder inputBuilder = new PushFaultNotificationInputBuilder();
193         inputBuilder.setNodeId("NodeTest23");
194         inputBuilder.setTimestamp(new DateAndTime("2020-01-01T01:02:03.4Z"));
195         apiService.pushFaultNotification(inputBuilder.build());
196
197     }
198
199     @Test
200     public void testPushChange() {
201         log.info("testPushChange");
202
203         PushAttributeChangeNotificationInputBuilder inputBuilder = new PushAttributeChangeNotificationInputBuilder();
204         inputBuilder.setNodeId("NodeTest24");
205         apiService.pushAttributeChangeNotification(inputBuilder.build());
206
207     }
208
209
210     @AfterClass
211     public static void after() {
212         deviceManager.close();
213     }
214
215 }