Add bounds to sphinx requirement
[ccsdk/features.git] / sdnr / wt / devicemanager-o-ran-sc / o-ran / ru-fh / provider / src / test / java / org / onap / ccsdk / features / sdnr / wt / devicemanager / oran / impl / binding / TestORanFaultNotificationListener.java
1 /*
2  * ============LICENSE_START========================================================================
3  * ONAP : ccsdk feature sdnr wt
4  * =================================================================================================
5  * Copyright (C) 2020 highstreet technologies GmbH Intellectual Property. All rights reserved.
6  * =================================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
8  * in compliance with the License. You may obtain a copy of the License at
9  *
10  * http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software distributed under the License
13  * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
14  * or implied. See the License for the specific language governing permissions and limitations under
15  * the License.
16  * ============LICENSE_END==========================================================================
17  */
18 package org.onap.ccsdk.features.sdnr.wt.devicemanager.oran.impl.binding;
19
20 import static org.mockito.Mockito.verify;
21 import static org.mockito.Mockito.when;
22 import com.google.common.io.Files;
23 import java.io.File;
24 import java.io.IOException;
25 import java.nio.charset.StandardCharsets;
26 import org.junit.After;
27 import org.junit.Before;
28 import org.junit.Test;
29 import org.junit.runner.RunWith;
30 import org.mockito.Mock;
31 import org.mockito.junit.MockitoJUnitRunner;
32 import org.onap.ccsdk.features.sdnr.wt.common.configuration.ConfigurationFileRepresentation;
33 import org.onap.ccsdk.features.sdnr.wt.dataprovider.model.DataProvider;
34 import org.onap.ccsdk.features.sdnr.wt.devicemanager.oran.impl.binding.ORanFaultNotificationListener;
35 import org.onap.ccsdk.features.sdnr.wt.devicemanager.service.DeviceManagerServiceProvider;
36 import org.onap.ccsdk.features.sdnr.wt.devicemanager.service.FaultService;
37 import org.onap.ccsdk.features.sdnr.wt.devicemanager.service.VESCollectorService;
38 import org.onap.ccsdk.features.sdnr.wt.devicemanager.vescollectorconnector.impl.VESCollectorServiceImpl;
39 import org.onap.ccsdk.features.sdnr.wt.netconfnodestateservice.NetconfBindingAccessor;
40 import org.onap.ccsdk.features.sdnr.wt.websocketmanager.model.WebsocketManagerService;
41 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.DateAndTime;
42 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.FaultlogBuilder;
43 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.FaultlogEntity;
44 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.SeverityType;
45 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.data.provider.rev201110.SourceType;
46 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId;
47 import org.slf4j.Logger;
48 import org.slf4j.LoggerFactory;
49
50 @RunWith(MockitoJUnitRunner.class)
51 public class TestORanFaultNotificationListener {
52
53     private static final Logger LOG = LoggerFactory.getLogger(TestORanFaultNotificationListener.class);
54     private static final String TESTFILENAME = "configFile.txt";
55
56     // @formatter:off
57     private static final String TESTCONFIG_CONTENT = "[VESCollector]\n"
58             + "VES_COLLECTOR_ENABLED=true\n"
59             + "VES_COLLECTOR_TLS_ENABLED=true\n"
60             + "VES_COLLECTOR_TRUST_ALL_CERTS=true\n"
61             + "VES_COLLECTOR_USERNAME=sample1\n"
62             + "VES_COLLECTOR_PASSWORD=sample1\n"
63             + "VES_COLLECTOR_IP=[2001:db8:1:1::1]\n"
64             + "VES_COLLECTOR_PORT=8443\n"
65             + "VES_COLLECTOR_VERSION=v7\n"
66             + "REPORTING_ENTITY_NAME=ONAP SDN-R\n"
67             + "EVENTLOG_MSG_DETAIL=SHORT\n"
68             + "";
69     // @formatter:on
70
71     @Mock NetconfBindingAccessor bindingAccessor;
72     @Mock DataProvider dataProvider;
73     @Mock FaultService faultService;
74     @Mock DeviceManagerServiceProvider serviceProvider;
75     @Mock WebsocketManagerService websocketManagerService;
76     @Mock DataProvider databaseService;
77     VESCollectorService vesCollectorService;
78
79     @After
80     @Before
81     public void afterAndBefore() {
82         File f = new File(TESTFILENAME);
83         if (f.exists()) {
84             LOG.info("Remove {}", f.getAbsolutePath());
85             f.delete();
86         }
87     }
88
89     @Test
90     public void test() throws IOException {
91         Files.asCharSink(new File(TESTFILENAME), StandardCharsets.UTF_8).write(TESTCONFIG_CONTENT);
92         vesCollectorService =
93                 new VESCollectorServiceImpl(new ConfigurationFileRepresentation(TESTFILENAME));
94         when(bindingAccessor.getNodeId()).thenReturn(new NodeId("nSky"));
95         ORanFaultNotificationListener faultListener = new ORanFaultNotificationListener(bindingAccessor,
96                 vesCollectorService, faultService, websocketManagerService, databaseService);
97         faultListener.onAlarmNotif(new TestAlarmNotif());
98
99         verify(faultService).faultNotification(getFaultLog());
100     }
101
102     private FaultlogEntity getFaultLog() {
103         FaultlogBuilder faultAlarm = new FaultlogBuilder();
104         faultAlarm.setNodeId("nSky");
105         faultAlarm.setObjectId("ORAN-RU-FH");
106         faultAlarm.setProblem("CPRI Port Down");
107         faultAlarm.setSeverity(SeverityType.NonAlarmed);
108         faultAlarm.setCounter(1);
109         faultAlarm.setId("123");
110         faultAlarm.setSourceType(SourceType.Netconf);
111         faultAlarm.setTimestamp(new DateAndTime("2021-03-23T18:19:42.326144Z"));
112         return faultAlarm.build();
113     }
114
115 }