Merge "Unit test instability fix"
[integration.git] / test / mocks / mass-pnf-sim / pnf-sim-lightweight / src / test / java / org / onap / pnfsimulator / simulator / SimulatorTest.java
1 /*
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
10  *
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  *
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=========================================================
19  */
20
21 package org.onap.pnfsimulator.simulator;
22
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;
51
52 public class SimulatorTest {
53
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);
57
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");
62
63         try {
64             doReturn(fileList).when(fileProvider).getFiles();
65         } catch (NoRopFilesException e) {
66             e.printStackTrace();
67         }
68     }
69
70     @Test
71     void builder_should_create_endless_simulator_when_duration_not_specified() {
72         Simulator simulator = Simulator
73             .builder()
74             .withDuration(Duration.ofSeconds(1))
75             .withVesUrl(TEST_VES_URL).build();
76
77         assertFalse(simulator.isEndless());
78
79         simulator = Simulator
80             .builder()
81             .withVesUrl(TEST_VES_URL).build();
82
83         assertTrue(simulator.isEndless());
84     }
85
86     @Test
87     void simulator_should_stop_when_interrupted() {
88         createSampleFileList();
89
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();
101
102         simulator.start();
103         simulator.interrupt();
104
105         assertTimeout(Duration.ofSeconds(1), (Executable) simulator::join);
106     }
107
108     @Test
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();
119         simulator.run();
120         Exception e = simulator.getThrownException();
121         assertTrue(e instanceof NoRopFilesException);
122     }
123
124     @Test
125     void should_throw_validation_exception_given_invalid_params() {
126         createSampleFileList();
127
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();
137         simulator.run();
138         Exception e = simulator.getThrownException();
139         assertTrue(e instanceof ValidationException);
140
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();
150         simulator.run();
151         e = simulator.getThrownException();
152         assertTrue(e instanceof ValidationException);
153
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();
163         simulator.run();
164         e = simulator.getThrownException();
165         assertTrue(e instanceof ValidationException);
166
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();
176         simulator.run();
177         e = simulator.getThrownException();
178         assertTrue(e instanceof ValidationException);
179     }
180
181     @Test
182     void simulator_should_send_fileready_message() {
183         createSampleFileList();
184
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();
196         simulator.run();
197         Exception e = simulator.getThrownException();
198         assertNull(e);
199
200         assertTimeout(Duration.ofMillis(150), (Executable) simulator::join);
201         verify(httpClientMock, times(1)).send(anyString(), eq(TEST_VES_URL));
202     }
203 }
204