2 * ============LICENSE_START=======================================================
3 * PNF-REGISTRATION-HANDLER
4 * ================================================================================
5 * Copyright (C) 2018 NOKIA Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ============LICENSE_END=========================================================
21 package org.onap.pnfsimulator.simulator;
23 import static org.junit.Assert.assertNull;
24 import static org.junit.jupiter.api.Assertions.assertFalse;
25 import static org.junit.jupiter.api.Assertions.assertTimeout;
26 import static org.junit.jupiter.api.Assertions.assertTrue;
27 import static org.mockito.ArgumentMatchers.anyString;
28 import static org.mockito.ArgumentMatchers.eq;
29 import static org.mockito.Mockito.doReturn;
30 import static org.mockito.Mockito.mock;
31 import static org.mockito.Mockito.times;
32 import static org.mockito.Mockito.verify;
33 import static org.onap.pnfsimulator.simulator.TestMessages.INVALID_NOTIFICATION_PARAMS;
34 import static org.onap.pnfsimulator.simulator.TestMessages.INVALID_PNF_REGISTRATION_PARAMS_1;
35 import static org.onap.pnfsimulator.simulator.TestMessages.INVALID_PNF_REGISTRATION_PARAMS_2;
36 import static org.onap.pnfsimulator.simulator.TestMessages.INVALID_PNF_REGISTRATION_PARAMS_3;
37 import static org.onap.pnfsimulator.simulator.TestMessages.VALID_COMMON_EVENT_HEADER_PARAMS;
38 import static org.onap.pnfsimulator.simulator.TestMessages.VALID_NOTIFICATION_PARAMS;
39 import static org.onap.pnfsimulator.simulator.TestMessages.VALID_PNF_REGISTRATION_PARAMS;
40 import java.time.Duration;
41 import java.util.ArrayList;
42 import java.util.List;
43 import java.util.Optional;
44 import org.junit.jupiter.api.Test;
45 import org.junit.jupiter.api.function.Executable;
46 import org.mockito.Mockito;
47 import org.onap.pnfsimulator.FileProvider;
48 import org.onap.pnfsimulator.simulator.client.HttpClientAdapter;
49 import org.onap.pnfsimulator.simulator.validation.NoRopFilesException;
50 import org.onap.pnfsimulator.simulator.validation.ValidationException;
52 public class SimulatorTest {
54 private static final String TEST_VES_URL = "http://localhost:10000/eventListener/v7";
55 private static final String TEST_XNF_URL = "sftp://onap:pano@10.11.0.68" + "/";
56 private FileProvider fileProvider = mock(FileProvider.class);
58 private void createSampleFileList() {
59 List<String> fileList = new ArrayList<>();
60 fileList.add("A20190401.1608+0000-1622+0000_excl-eeiwbue-perf-large-pnf-sim-lw-1.xml.gz");
61 fileList.add("A20190401.1623+0000-1637+0000_excl-eeiwbue-perf-large-pnf-sim-lw-1.xml.gz");
64 doReturn(fileList).when(fileProvider).getFiles();
65 } catch (NoRopFilesException e) {
71 void builder_should_create_endless_simulator_when_duration_not_specified() {
72 Simulator simulator = Simulator
74 .withDuration(Duration.ofSeconds(1))
75 .withVesUrl(TEST_VES_URL).build();
77 assertFalse(simulator.isEndless());
81 .withVesUrl(TEST_VES_URL).build();
83 assertTrue(simulator.isEndless());
87 void simulator_should_stop_when_interrupted() {
88 createSampleFileList();
90 HttpClientAdapter httpClientMock = Mockito.mock(HttpClientAdapter.class);
91 Simulator simulator = Simulator.builder()
92 .withInterval(Duration.ofSeconds(1))
93 .withCustomHttpClientAdapter(httpClientMock)
94 .withCommonEventHeaderParams(VALID_COMMON_EVENT_HEADER_PARAMS)
95 .withPnfRegistrationParams(Optional.empty())
96 .withNotificationParams(VALID_NOTIFICATION_PARAMS)
97 .withVesUrl(TEST_VES_URL)
98 .withXnfUrl(TEST_XNF_URL)
99 .withCustomHttpClientAdapter(httpClientMock)
100 .withFileProvider(fileProvider).build();
103 simulator.interrupt();
105 assertTimeout(Duration.ofSeconds(1), (Executable) simulator::join);
109 void should_throw_noropfiles_exception_given_empty_filelist() {
110 Simulator simulator = Simulator.builder()
111 .withDuration(Duration.ofMillis(100))
112 .withInterval(Duration.ofMillis(100))
113 .withCommonEventHeaderParams(VALID_COMMON_EVENT_HEADER_PARAMS)
114 .withPnfRegistrationParams(VALID_PNF_REGISTRATION_PARAMS)
115 .withNotificationParams(Optional.empty())
116 .withVesUrl(TEST_VES_URL)
117 .withXnfUrl(TEST_XNF_URL)
118 .withFileProvider(new FileProvider()).build();
120 Exception e = simulator.getThrownException();
121 assertTrue(e instanceof NoRopFilesException);
125 void should_throw_validation_exception_given_invalid_params() {
126 createSampleFileList();
128 Simulator simulator = Simulator.builder()
129 .withDuration(Duration.ofMillis(100))
130 .withInterval(Duration.ofMillis(100))
131 .withCommonEventHeaderParams(VALID_COMMON_EVENT_HEADER_PARAMS)
132 .withPnfRegistrationParams(INVALID_PNF_REGISTRATION_PARAMS_1)
133 .withNotificationParams(Optional.empty())
134 .withVesUrl(TEST_VES_URL)
135 .withXnfUrl(TEST_XNF_URL)
136 .withFileProvider(fileProvider).build();
138 Exception e = simulator.getThrownException();
139 assertTrue(e instanceof ValidationException);
141 simulator = Simulator.builder()
142 .withDuration(Duration.ofMillis(100))
143 .withInterval(Duration.ofMillis(100))
144 .withCommonEventHeaderParams(VALID_COMMON_EVENT_HEADER_PARAMS)
145 .withPnfRegistrationParams(INVALID_PNF_REGISTRATION_PARAMS_2)
146 .withNotificationParams(Optional.empty())
147 .withVesUrl(TEST_VES_URL)
148 .withXnfUrl(TEST_XNF_URL)
149 .withFileProvider(fileProvider).build();
151 e = simulator.getThrownException();
152 assertTrue(e instanceof ValidationException);
154 simulator = Simulator.builder()
155 .withDuration(Duration.ofMillis(100))
156 .withInterval(Duration.ofMillis(100))
157 .withCommonEventHeaderParams(VALID_COMMON_EVENT_HEADER_PARAMS)
158 .withPnfRegistrationParams(INVALID_PNF_REGISTRATION_PARAMS_3)
159 .withNotificationParams(Optional.empty())
160 .withVesUrl(TEST_VES_URL)
161 .withXnfUrl(TEST_XNF_URL)
162 .withFileProvider(fileProvider).build();
164 e = simulator.getThrownException();
165 assertTrue(e instanceof ValidationException);
167 simulator = Simulator.builder()
168 .withDuration(Duration.ofMillis(100))
169 .withInterval(Duration.ofMillis(100))
170 .withCommonEventHeaderParams(VALID_COMMON_EVENT_HEADER_PARAMS)
171 .withPnfRegistrationParams(VALID_PNF_REGISTRATION_PARAMS)
172 .withNotificationParams(INVALID_NOTIFICATION_PARAMS)
173 .withVesUrl(TEST_VES_URL)
174 .withXnfUrl(TEST_XNF_URL)
175 .withFileProvider(fileProvider).build();
177 e = simulator.getThrownException();
178 assertTrue(e instanceof ValidationException);
182 void simulator_should_send_fileready_message() {
183 createSampleFileList();
185 HttpClientAdapter httpClientMock = Mockito.mock(HttpClientAdapter.class);
186 Simulator simulator = Simulator.builder()
187 .withDuration(Duration.ofMillis(100))
188 .withInterval(Duration.ofMillis(100))
189 .withCommonEventHeaderParams(VALID_COMMON_EVENT_HEADER_PARAMS)
190 .withPnfRegistrationParams(Optional.empty())
191 .withNotificationParams(VALID_NOTIFICATION_PARAMS)
192 .withVesUrl(TEST_VES_URL)
193 .withXnfUrl(TEST_XNF_URL)
194 .withCustomHttpClientAdapter(httpClientMock)
195 .withFileProvider(fileProvider).build();
197 Exception e = simulator.getThrownException();
200 assertTimeout(Duration.ofMillis(150), (Executable) simulator::join);
201 verify(httpClientMock, times(1)).send(anyString(), eq(TEST_VES_URL));