2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 AT&T 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.so.apihandlerinfra.tenantisolation.process;
23 import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;
24 import static com.github.tomakehurst.wiremock.client.WireMock.containing;
25 import static com.github.tomakehurst.wiremock.client.WireMock.equalTo;
26 import static com.github.tomakehurst.wiremock.client.WireMock.get;
27 import static com.github.tomakehurst.wiremock.client.WireMock.post;
28 import static com.github.tomakehurst.wiremock.client.WireMock.put;
29 import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo;
30 import static com.github.tomakehurst.wiremock.client.WireMock.urlPathMatching;
31 import static org.hamcrest.Matchers.startsWith;
32 import static org.junit.Assert.assertEquals;
33 import static org.junit.Assert.assertThat;
34 import javax.ws.rs.core.HttpHeaders;
35 import javax.ws.rs.core.MediaType;
36 import org.apache.http.HttpStatus;
37 import org.json.JSONObject;
38 import org.junit.Ignore;
39 import org.junit.Rule;
40 import org.junit.Test;
41 import org.junit.rules.ExpectedException;
42 import org.onap.so.apihandler.common.ErrorNumbers;
43 import org.onap.so.apihandlerinfra.BaseTest;
44 import org.onap.so.apihandlerinfra.exceptions.ApiException;
45 import org.onap.so.apihandlerinfra.tenantisolation.CloudOrchestrationRequest;
46 import org.onap.so.apihandlerinfra.tenantisolationbeans.Distribution;
47 import org.onap.so.apihandlerinfra.tenantisolationbeans.DistributionStatus;
48 import org.onap.so.apihandlerinfra.tenantisolationbeans.Status;
49 import org.onap.so.client.aai.AAIVersion;
50 import org.onap.so.db.request.beans.InfraActiveRequests;
51 import org.onap.so.db.request.beans.OperationalEnvDistributionStatus;
52 import org.onap.so.db.request.beans.OperationalEnvServiceModelStatus;
53 import org.springframework.beans.factory.annotation.Autowired;
54 import com.fasterxml.jackson.core.JsonProcessingException;
55 import com.fasterxml.jackson.databind.ObjectMapper;
57 public class ActivateVnfStatusOperationalEnvironmentTest extends BaseTest {
60 private ActivateVnfStatusOperationalEnvironment activateVnfStatus;
62 public ExpectedException thrown = ExpectedException.none();
64 private final String requestId = "TEST_requestId";
65 private final String requestIdOrig = "TEST_requestIdOrig";
66 private final String operationalEnvironmentId = "TEST_operationalEnvironmentId";
67 private final String vnfOperationalEnvironmentId = "VNF_operationalEnvironmentId";
68 private final CloudOrchestrationRequest request = new CloudOrchestrationRequest();
69 private final String workloadContext = "TEST_workloadContext";
70 private final String recoveryActionRetry = "RETRY";
71 private final String recoveryActionAbort = "ABORT";
72 private final String recoveryActionSkip = "SKIP";
73 private final String serviceModelVersionId = "TEST_serviceModelVersionId";
74 private final String serviceModelVersionId1 = "TEST_serviceModelVersionId1";
75 private final int retryCountThree = 3;
76 private final int retryCountTwo = 2;
77 private final int retryCountZero = 0;
78 private final String sdcDistributionId1 = "TEST_distributionId1";
79 private final String sdcDistributionId = "TEST_distributionId";
80 private final String statusOk = Status.DISTRIBUTION_COMPLETE_OK.toString();
81 private final String statusError = DistributionStatus.DISTRIBUTION_COMPLETE_ERROR.toString();
82 private final String statusSent = "SENT";
83 String json = "{\"operational-environment-status\" : \"INACTIVE\"}";
85 private final ObjectMapper mapper = new ObjectMapper();
88 public void checkOrUpdateOverallStatusTest_Ok() throws Exception {
90 // two entries, both status Ok & retry 0
91 OperationalEnvServiceModelStatus serviceModelDb = new OperationalEnvServiceModelStatus();
92 serviceModelDb.setRequestId(requestIdOrig);
93 serviceModelDb.setServiceModelVersionId(serviceModelVersionId);
94 serviceModelDb.setWorkloadContext(workloadContext);
95 serviceModelDb.setRecoveryAction(recoveryActionRetry);
96 serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
97 serviceModelDb.setRetryCount(retryCountZero);
98 serviceModelDb.setServiceModelVersionDistrStatus(statusOk);
99 serviceModelDb.setVnfOperationalEnvId(vnfOperationalEnvironmentId);
101 serviceModelDb.setRequestId(requestIdOrig);
102 serviceModelDb.setServiceModelVersionId(serviceModelVersionId1);
103 serviceModelDb.setWorkloadContext(workloadContext);
104 serviceModelDb.setRecoveryAction(recoveryActionRetry);
105 serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
106 serviceModelDb.setRetryCount(retryCountZero);
107 serviceModelDb.setServiceModelVersionDistrStatus(statusOk);
108 serviceModelDb.setVnfOperationalEnvId(vnfOperationalEnvironmentId);
110 InfraActiveRequests iar = new InfraActiveRequests();
111 iar.setRequestId(requestIdOrig);
112 iar.setRequestStatus("PENDING");
114 wireMockServer.stubFor(get(urlPathEqualTo(
115 "/operationalEnvServiceModelStatus/search/findOneByOperationalEnvIdAndServiceModelVersionIdAndRequestId"))
116 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
117 .withBody(mapper.writeValueAsString(serviceModelDb)).withStatus(HttpStatus.SC_OK)));
118 wireMockServer.stubFor(get(urlPathEqualTo("/infraActiveRequests/" + requestIdOrig))
119 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
120 .withBody(mapper.writeValueAsString(iar)).withStatus(HttpStatus.SC_OK)));
122 activateVnfStatus.checkOrUpdateOverallStatus(operationalEnvironmentId, requestIdOrig);
124 // overall is success
128 public void checkOrUpdateOverallStatusTest_Error() throws JsonProcessingException {
130 OperationalEnvServiceModelStatus serviceModelDb = new OperationalEnvServiceModelStatus();
131 serviceModelDb.setRequestId(requestIdOrig);
132 serviceModelDb.setServiceModelVersionId(serviceModelVersionId);
133 serviceModelDb.setWorkloadContext(workloadContext);
134 serviceModelDb.setRecoveryAction(recoveryActionRetry);
135 serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
136 serviceModelDb.setRetryCount(retryCountZero);
137 serviceModelDb.setServiceModelVersionDistrStatus(statusError);
138 serviceModelDb.setVnfOperationalEnvId(vnfOperationalEnvironmentId);
139 wireMockServer.stubFor(get(urlPathEqualTo(
140 "/operationalEnvServiceModelStatus/search/findOneByOperationalEnvIdAndServiceModelVersionIdAndRequestId"))
141 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
142 .withBody(mapper.writeValueAsString(serviceModelDb)).withStatus(HttpStatus.SC_OK)));
144 InfraActiveRequests iar = new InfraActiveRequests();
145 iar.setRequestId(requestIdOrig);
146 iar.setRequestStatus("PENDING");
148 wireMockServer.stubFor(get(urlPathEqualTo("/infraActiveRequests/" + requestIdOrig))
149 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
150 .withBody(mapper.writeValueAsString(iar)).withStatus(HttpStatus.SC_OK)));
153 activateVnfStatus.checkOrUpdateOverallStatus(operationalEnvironmentId, requestIdOrig);
154 } catch (ApiException e) {
155 assertThat(e.getMessage(), startsWith("Overall Activation process is a Failure. "));
156 assertEquals(e.getHttpResponseCode(), HttpStatus.SC_BAD_REQUEST);
157 assertEquals(e.getMessageID(), ErrorNumbers.SVC_DETAILED_SERVICE_ERROR);
163 public void checkOrUpdateOverallStatusTest_Waiting() throws Exception {
165 OperationalEnvServiceModelStatus serviceModelDb = new OperationalEnvServiceModelStatus();
166 serviceModelDb.setRequestId(requestIdOrig);
167 serviceModelDb.setServiceModelVersionId(serviceModelVersionId);
168 serviceModelDb.setWorkloadContext(workloadContext);
169 serviceModelDb.setRecoveryAction(recoveryActionRetry);
170 serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
171 serviceModelDb.setRetryCount(retryCountTwo);
172 serviceModelDb.setServiceModelVersionDistrStatus(statusError);
173 serviceModelDb.setVnfOperationalEnvId(vnfOperationalEnvironmentId);
174 wireMockServer.stubFor(get(urlPathEqualTo(
175 "/operationalEnvServiceModelStatus/search/findOneByOperationalEnvIdAndServiceModelVersionIdAndRequestId"))
176 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
177 .withBody(mapper.writeValueAsString(serviceModelDb)).withStatus(HttpStatus.SC_OK)));
179 activateVnfStatus.checkOrUpdateOverallStatus(operationalEnvironmentId, requestIdOrig);
183 public void executionTest_Ok() throws Exception {
185 OperationalEnvServiceModelStatus serviceModelDb = new OperationalEnvServiceModelStatus();
186 serviceModelDb.setRequestId(requestIdOrig);
187 serviceModelDb.setServiceModelVersionId(serviceModelVersionId);
188 serviceModelDb.setWorkloadContext(workloadContext);
189 serviceModelDb.setRecoveryAction(recoveryActionRetry);
190 serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
191 serviceModelDb.setRetryCount(retryCountThree);
192 serviceModelDb.setServiceModelVersionDistrStatus(statusSent);
193 serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
194 serviceModelDb.setVnfOperationalEnvId(vnfOperationalEnvironmentId);
196 OperationalEnvDistributionStatus distributionDb = new OperationalEnvDistributionStatus();
197 distributionDb.setDistributionId(sdcDistributionId);
198 distributionDb.setRequestId(requestIdOrig);
199 distributionDb.setOperationalEnvId(operationalEnvironmentId);
200 distributionDb.setDistributionIdStatus(statusSent);
201 distributionDb.setServiceModelVersionId(serviceModelVersionId);
202 distributionDb.setDistributionIdErrorReason(null);
204 // prepare distribution obj
205 Distribution distribution = new Distribution();
206 distribution.setStatus(Status.DISTRIBUTION_COMPLETE_OK);
207 request.setDistribution(distribution);
208 request.setDistributionId(sdcDistributionId);
209 request.setOperationalEnvironmentId(operationalEnvironmentId);
211 InfraActiveRequests iar = new InfraActiveRequests();
212 iar.setRequestId(requestIdOrig);
213 iar.setRequestStatus("PENDING");
215 wireMockServer.stubFor(get(urlPathEqualTo(
216 "/operationalEnvServiceModelStatus/search/findOneByOperationalEnvIdAndServiceModelVersionIdAndRequestId"))
217 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
218 .withBody(mapper.writeValueAsString(serviceModelDb)).withStatus(HttpStatus.SC_OK)));
219 wireMockServer.stubFor(get(urlPathEqualTo("/operationalEnvDistributionStatus/" + sdcDistributionId))
220 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
221 .withBody(mapper.writeValueAsString(distributionDb)).withStatus(HttpStatus.SC_OK)));
222 wireMockServer.stubFor(get(urlPathEqualTo("/infraActiveRequests/" + requestIdOrig))
223 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
224 .withBody(mapper.writeValueAsString(iar)).withStatus(HttpStatus.SC_OK)));
225 wireMockServer.stubFor(post(urlPathEqualTo("/operationalEnvServiceModelStatus/")).withRequestBody(equalTo(
226 "{\"requestId\":\"TEST_requestIdOrig\",\"operationalEnvId\":\"TEST_operationalEnvironmentId\",\"serviceModelVersionId\":\"TEST_serviceModelVersionId\",\"serviceModelVersionDistrStatus\":\"DISTRIBUTION_COMPLETE_OK\",\"recoveryAction\":\"RETRY\",\"retryCount\":0,\"workloadContext\":\"TEST_workloadContext\",\"createTime\":null,\"modifyTime\":null,\"vnfOperationalEnvId\":\"VNF_operationalEnvironmentId\"}"))
227 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
228 .withStatus(HttpStatus.SC_OK)));
230 wireMockServer.stubFor(post(urlPathEqualTo("/operationalEnvDistributionStatus/")).withRequestBody(equalTo(
231 "{\"distributionId\":\"TEST_distributionId\",\"operationalEnvId\":\"TEST_operationalEnvironmentId\",\"serviceModelVersionId\":\"TEST_serviceModelVersionId\",\"requestId\":\"TEST_requestIdOrig\",\"distributionIdStatus\":\"DISTRIBUTION_COMPLETE_OK\",\"distributionIdErrorReason\":\"\",\"createTime\":null,\"modifyTime\":null}"))
232 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
233 .withStatus(HttpStatus.SC_OK)));
235 wireMockServer.stubFor(get(urlPathEqualTo("/aai/" + AAIVersion.LATEST
236 + "/cloud-infrastructure/operational-environments/operational-environment/VNF_operationalEnvironmentId"))
237 .willReturn(aResponse().withHeader("Content-Type", "application/json").withBody(json)
238 .withStatus(HttpStatus.SC_ACCEPTED)));
239 wireMockServer.stubFor(put(urlPathEqualTo("/aai/" + AAIVersion.LATEST
240 + "/cloud-infrastructure/operational-environments/operational-environment/VNF_operationalEnvironmentId"))
241 .willReturn(aResponse().withHeader("Content-Type", "application/json")
242 .withStatus(HttpStatus.SC_ACCEPTED)));
244 activateVnfStatus.execute(requestId, request);
248 public void executionTest_ERROR_Status_And_RETRY() throws Exception {
250 OperationalEnvServiceModelStatus serviceModelDb = new OperationalEnvServiceModelStatus();
251 serviceModelDb.setRequestId(requestIdOrig);
252 serviceModelDb.setServiceModelVersionId(serviceModelVersionId);
253 serviceModelDb.setWorkloadContext(workloadContext);
254 serviceModelDb.setRecoveryAction(recoveryActionRetry);
255 serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
256 serviceModelDb.setRetryCount(retryCountThree);
257 serviceModelDb.setServiceModelVersionDistrStatus(statusError);
258 serviceModelDb.setVnfOperationalEnvId(vnfOperationalEnvironmentId);
259 wireMockServer.stubFor(get(urlPathEqualTo(
260 "/operationalEnvServiceModelStatus/search/findOneByOperationalEnvIdAndServiceModelVersionIdAndRequestId"))
261 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
262 .withBody(mapper.writeValueAsString(serviceModelDb)).withStatus(HttpStatus.SC_OK)));
264 OperationalEnvDistributionStatus distributionDb = new OperationalEnvDistributionStatus();
265 distributionDb.setDistributionId(sdcDistributionId);
266 distributionDb.setRequestId(requestIdOrig);
267 distributionDb.setOperationalEnvId(operationalEnvironmentId);
268 distributionDb.setDistributionIdStatus(statusError);
269 distributionDb.setServiceModelVersionId(serviceModelVersionId);
270 distributionDb.setDistributionIdErrorReason(null);
274 // prepare new distribution obj
275 Distribution distribution = new Distribution();
276 distribution.setStatus(Status.DISTRIBUTION_COMPLETE_ERROR);
277 distribution.setErrorReason("Unable to process.");
278 request.setDistribution(distribution);
279 request.setDistributionId(sdcDistributionId);
280 request.setOperationalEnvironmentId(operationalEnvironmentId);
282 // prepare sdc return data
283 JSONObject jsonObject = new JSONObject();
284 jsonObject.put("statusCode", "202");
285 jsonObject.put("message", "Success");
286 jsonObject.put("distributionId", sdcDistributionId1);
288 wireMockServer.stubFor(post(urlPathMatching("/sdc/v1/catalog/services/.*"))
289 .willReturn(aResponse().withHeader("Content-Type", "application/json").withBody(jsonObject.toString())
290 .withStatus(HttpStatus.SC_ACCEPTED)));
291 wireMockServer.stubFor(get(urlPathEqualTo(
292 "/operationalEnvServiceModelStatus/search/findOneByOperationalEnvIdAndServiceModelVersionIdAndRequestId"))
293 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
294 .withBody(mapper.writeValueAsString(serviceModelDb)).withStatus(HttpStatus.SC_OK)));
295 wireMockServer.stubFor(get(urlPathEqualTo("/operationalEnvDistributionStatus/" + sdcDistributionId))
296 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
297 .withBody(mapper.writeValueAsString(distributionDb)).withStatus(HttpStatus.SC_OK)));
298 wireMockServer.stubFor(post(urlPathEqualTo("/operationalEnvDistributionStatus/")).withRequestBody(equalTo(
299 "{\"distributionId\":\"TEST_distributionId\",\"operationalEnvId\":\"TEST_operationalEnvironmentId\",\"serviceModelVersionId\":\"TEST_serviceModelVersionId\",\"requestId\":\"TEST_requestIdOrig\",\"distributionIdStatus\":\"DISTRIBUTION_COMPLETE_ERROR\",\"distributionIdErrorReason\":\"Unable to process.\",\"createTime\":null,\"modifyTime\":null,\"handler\":{}}"))
300 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
301 .withStatus(HttpStatus.SC_OK)));
303 wireMockServer.stubFor(post(urlPathEqualTo("/operationalEnvDistributionStatus/")).willReturn(aResponse()
304 .withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON).withStatus(HttpStatus.SC_OK)));
306 wireMockServer.stubFor(post(urlPathEqualTo("/operationalEnvServiceModelStatus/")).withRequestBody(equalTo(
307 "{\"requestId\":\"TEST_requestIdOrig\",\"operationalEnvId\":\"TEST_operationalEnvironmentId\",\"serviceModelVersionId\":\"TEST_serviceModelVersionId\",\"serviceModelVersionDistrStatus\":\"SENT\",\"recoveryAction\":\"RETRY\",\"retryCount\":2,\"workloadContext\":\"TEST_workloadContext\",\"createTime\":null,\"modifyTime\":null,\"vnfOperationalEnvId\":\"VNF_operationalEnvironmentId\"}"))
308 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
309 .withStatus(HttpStatus.SC_OK)));
311 wireMockServer.stubFor(
312 get(urlPathMatching("/aai/" + AAIVersion.LATEST + "/cloud-infrastructure/operational-environments/.*"))
313 .willReturn(aResponse().withHeader("Content-Type", "application/json").withBody(json)
314 .withStatus(HttpStatus.SC_ACCEPTED)));
315 wireMockServer.stubFor(
316 put(urlPathMatching("/aai/" + AAIVersion.LATEST + "/cloud-infrastructure/operational-environments/.*"))
317 .willReturn(aResponse().withHeader("Content-Type", "application/json")
318 .withStatus(HttpStatus.SC_ACCEPTED)));
320 activateVnfStatus.execute(requestId, request);
324 public void executionTest_ERROR_Status_And_RETRY_And_RetryZero() throws JsonProcessingException {
326 OperationalEnvServiceModelStatus serviceModelDb = new OperationalEnvServiceModelStatus();
327 serviceModelDb.setRequestId(requestIdOrig);
328 serviceModelDb.setServiceModelVersionId(serviceModelVersionId);
329 serviceModelDb.setWorkloadContext(workloadContext);
330 serviceModelDb.setRecoveryAction(recoveryActionRetry);
331 serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
332 serviceModelDb.setRetryCount(retryCountZero);
333 serviceModelDb.setServiceModelVersionDistrStatus(statusError);
334 serviceModelDb.setVnfOperationalEnvId(vnfOperationalEnvironmentId);
336 OperationalEnvDistributionStatus distributionDb = new OperationalEnvDistributionStatus();
337 distributionDb.setDistributionId(sdcDistributionId);
338 distributionDb.setRequestId(requestIdOrig);
339 distributionDb.setOperationalEnvId(operationalEnvironmentId);
340 distributionDb.setDistributionIdStatus(statusError);
341 distributionDb.setServiceModelVersionId(serviceModelVersionId);
342 distributionDb.setDistributionIdErrorReason(null);
346 // prepare distribution obj
347 Distribution distribution = new Distribution();
348 distribution.setStatus(Status.DISTRIBUTION_COMPLETE_ERROR);
349 request.setDistribution(distribution);
350 request.setDistributionId(sdcDistributionId);
351 request.setOperationalEnvironmentId(operationalEnvironmentId);
353 JSONObject jsonObject = new JSONObject();
354 jsonObject.put("statusCode", "202");
355 jsonObject.put("message", "Success");
356 jsonObject.put("distributionId", sdcDistributionId);
358 InfraActiveRequests iar = new InfraActiveRequests();
359 iar.setRequestId(requestIdOrig);
360 iar.setRequestStatus("PENDING");
362 wireMockServer.stubFor(get(urlPathEqualTo(
363 "/operationalEnvServiceModelStatus/search/findOneByOperationalEnvIdAndServiceModelVersionIdAndRequestId"))
364 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
365 .withBody(mapper.writeValueAsString(serviceModelDb)).withStatus(HttpStatus.SC_OK)));
366 wireMockServer.stubFor(get(urlPathEqualTo("/operationalEnvDistributionStatus/" + sdcDistributionId))
367 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
368 .withBody(mapper.writeValueAsString(distributionDb)).withStatus(HttpStatus.SC_OK)));
369 wireMockServer.stubFor(get(urlPathEqualTo("/infraActiveRequests/" + requestIdOrig))
370 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
371 .withBody(mapper.writeValueAsString(iar)).withStatus(HttpStatus.SC_OK)));
373 wireMockServer.stubFor(post(urlPathMatching("/sdc/v1/catalog/services/.*"))
374 .willReturn(aResponse().withHeader("Content-Type", "application/json").withBody(jsonObject.toString())
375 .withStatus(HttpStatus.SC_ACCEPTED)));
377 wireMockServer.stubFor(post(urlPathEqualTo("/operationalEnvServiceModelStatus/")).withRequestBody(equalTo(
378 "{\"requestId\":\"TEST_requestIdOrig\",\"operationalEnvId\":\"TEST_operationalEnvironmentId\",\"serviceModelVersionId\":\"TEST_serviceModelVersionId\",\"serviceModelVersionDistrStatus\":\"SENT\",\"recoveryAction\":\"RETRY\",\"retryCount\":2,\"workloadContext\":\"TEST_workloadContext\",\"createTime\":null,\"modifyTime\":null,\"handler\":{}}"))
379 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
380 .withStatus(HttpStatus.SC_OK)));
382 wireMockServer.stubFor(
383 get(urlPathMatching("/aai/" + AAIVersion.LATEST + "/cloud-infrastructure/operational-environments/.*"))
384 .willReturn(aResponse().withHeader("Content-Type", "application/json").withBody(json)
385 .withStatus(HttpStatus.SC_ACCEPTED)));
386 wireMockServer.stubFor(
387 put(urlPathMatching("/aai/" + AAIVersion.LATEST + "/cloud-infrastructure/operational-environments/.*"))
388 .willReturn(aResponse().withHeader("Content-Type", "application/json")
389 .withStatus(HttpStatus.SC_ACCEPTED)));
392 activateVnfStatus.execute(requestId, request);
393 } catch (ApiException e) {
394 assertThat(e.getMessage(), startsWith("Overall Activation process is a Failure. "));
395 assertEquals(e.getHttpResponseCode(), HttpStatus.SC_BAD_REQUEST);
396 assertEquals(e.getMessageID(), ErrorNumbers.SVC_DETAILED_SERVICE_ERROR);
403 public void executionTest_ERROR_Status_And_RETRY_And_ErrorSdc() throws JsonProcessingException {
405 OperationalEnvServiceModelStatus serviceModelDb = new OperationalEnvServiceModelStatus();
406 serviceModelDb.setRequestId(requestIdOrig);
407 serviceModelDb.setServiceModelVersionId(serviceModelVersionId);
408 serviceModelDb.setWorkloadContext(workloadContext);
409 serviceModelDb.setRecoveryAction(recoveryActionRetry);
410 serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
411 serviceModelDb.setRetryCount(retryCountThree);
412 serviceModelDb.setServiceModelVersionDistrStatus(statusError);
413 serviceModelDb.setVnfOperationalEnvId(vnfOperationalEnvironmentId);
415 OperationalEnvDistributionStatus distributionDb = new OperationalEnvDistributionStatus();
416 distributionDb.setDistributionId(sdcDistributionId);
417 distributionDb.setRequestId(requestIdOrig);
418 distributionDb.setOperationalEnvId(operationalEnvironmentId);
419 distributionDb.setDistributionIdStatus(statusError);
420 distributionDb.setServiceModelVersionId(serviceModelVersionId);
421 distributionDb.setDistributionIdErrorReason(null);
423 // prepare distribution obj
424 Distribution distribution = new Distribution();
425 distribution.setStatus(Status.DISTRIBUTION_COMPLETE_ERROR);
426 distribution.setErrorReason("Unable to process.");
427 request.setDistribution(distribution);
428 request.setDistributionId(sdcDistributionId);
429 request.setOperationalEnvironmentId(operationalEnvironmentId);
432 JSONObject jsonMessages = new JSONObject();
433 jsonMessages.put("statusCode", "409");
434 jsonMessages.put("message", "Undefined Error Message!");
435 jsonMessages.put("messageId", "SVC4675");
436 jsonMessages.put("text", "Error: Service state is invalid for this action.");
437 JSONObject jsonServException = new JSONObject();
438 jsonServException.put("serviceException", jsonMessages);
439 JSONObject jsonErrorRequest = new JSONObject();
440 jsonErrorRequest.put("requestError", jsonServException);
442 InfraActiveRequests iar = new InfraActiveRequests();
443 iar.setRequestId(requestIdOrig);
444 iar.setRequestStatus("PENDING");
445 wireMockServer.stubFor(get(urlPathEqualTo(
446 "/operationalEnvServiceModelStatus/search/findOneByOperationalEnvIdAndServiceModelVersionIdAndRequestId"))
447 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
448 .withBody(mapper.writeValueAsString(serviceModelDb)).withStatus(HttpStatus.SC_OK)));
449 wireMockServer.stubFor(get(urlPathEqualTo("/operationalEnvDistributionStatus/" + sdcDistributionId))
450 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
451 .withBody(mapper.writeValueAsString(distributionDb)).withStatus(HttpStatus.SC_OK)));
452 wireMockServer.stubFor(get(urlPathEqualTo("/infraActiveRequests/" + requestIdOrig))
453 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
454 .withBody(mapper.writeValueAsString(iar)).withStatus(HttpStatus.SC_OK)));
455 wireMockServer.stubFor(post(urlPathEqualTo("/infraActiveRequests/"))
456 .withRequestBody(containing("operationalEnvId\":\"VNF_operationalEnvironmentId\""))
457 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
458 .withStatus(HttpStatus.SC_OK)));
460 wireMockServer.stubFor(post(urlPathMatching("/sdc/v1/catalog/services/.*"))
461 .willReturn(aResponse().withHeader("Content-Type", "application/json").withBody(jsonMessages.toString())
462 .withStatus(HttpStatus.SC_CONFLICT)));
464 wireMockServer.stubFor(
465 get(urlPathMatching("/aai/" + AAIVersion.LATEST + "/cloud-infrastructure/operational-environments/.*"))
466 .willReturn(aResponse().withHeader("Content-Type", "application/json").withBody(json)
467 .withStatus(HttpStatus.SC_ACCEPTED)));
468 wireMockServer.stubFor(
469 put(urlPathMatching("/aai/" + AAIVersion.LATEST + "/cloud-infrastructure/operational-environments/.*"))
470 .willReturn(aResponse().withHeader("Content-Type", "application/json")
471 .withStatus(HttpStatus.SC_ACCEPTED)));
474 activateVnfStatus.execute(requestId, request);
475 } catch (ApiException e) {
476 assertThat(e.getMessage(), startsWith("Failure calling SDC: statusCode: "));
477 assertEquals(e.getHttpResponseCode(), HttpStatus.SC_BAD_REQUEST);
478 assertEquals(e.getMessageID(), ErrorNumbers.SVC_DETAILED_SERVICE_ERROR);
483 public void executionTest_ERROR_Status_And_SKIP() throws Exception {
485 OperationalEnvServiceModelStatus serviceModelDb = new OperationalEnvServiceModelStatus();
486 serviceModelDb.setRequestId(requestIdOrig);
487 serviceModelDb.setServiceModelVersionId(serviceModelVersionId);
488 serviceModelDb.setWorkloadContext(workloadContext);
489 serviceModelDb.setRecoveryAction(recoveryActionSkip);
490 serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
491 serviceModelDb.setRetryCount(retryCountThree);
492 serviceModelDb.setServiceModelVersionDistrStatus(statusError);
493 serviceModelDb.setVnfOperationalEnvId(vnfOperationalEnvironmentId);
495 OperationalEnvDistributionStatus distributionDb = new OperationalEnvDistributionStatus();
496 distributionDb.setDistributionId(sdcDistributionId);
497 distributionDb.setRequestId(requestIdOrig);
498 distributionDb.setOperationalEnvId(operationalEnvironmentId);
499 distributionDb.setDistributionIdStatus(statusError);
500 distributionDb.setServiceModelVersionId(serviceModelVersionId);
501 distributionDb.setDistributionIdErrorReason(null);
503 // prepare distribution obj
504 OperationalEnvDistributionStatus distributionStatus = new OperationalEnvDistributionStatus(sdcDistributionId,
505 operationalEnvironmentId, serviceModelVersionId);
506 distributionStatus.setDistributionIdStatus(Status.DISTRIBUTION_COMPLETE_ERROR.name());
508 Distribution distribution = new Distribution();
509 distribution.setStatus(Status.DISTRIBUTION_COMPLETE_ERROR);
510 request.setDistribution(distribution);
511 request.setDistributionId(sdcDistributionId);
512 request.setOperationalEnvironmentId(operationalEnvironmentId);
513 InfraActiveRequests iar = new InfraActiveRequests();
514 iar.setRequestId(requestIdOrig);
515 iar.setRequestStatus("PENDING");
517 wireMockServer.stubFor(get(urlPathEqualTo(
518 "/operationalEnvServiceModelStatus/search/findOneByOperationalEnvIdAndServiceModelVersionIdAndRequestId"))
519 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
520 .withBody(mapper.writeValueAsString(serviceModelDb)).withStatus(HttpStatus.SC_OK)));
521 wireMockServer.stubFor(get(urlPathEqualTo("/operationalEnvDistributionStatus/" + sdcDistributionId))
522 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
523 .withBody(mapper.writeValueAsString(distributionDb)).withStatus(HttpStatus.SC_OK)));
524 wireMockServer.stubFor(get(urlPathEqualTo("/infraActiveRequests/" + requestIdOrig))
525 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
526 .withBody(mapper.writeValueAsString(iar)).withStatus(HttpStatus.SC_OK)));
527 wireMockServer.stubFor(post(urlPathEqualTo("/operationalEnvServiceModelStatus/")).withRequestBody(equalTo(
528 "{\"requestId\":\"TEST_requestIdOrig\",\"operationalEnvId\":\"TEST_operationalEnvironmentId\",\"serviceModelVersionId\":\"TEST_serviceModelVersionId\",\"serviceModelVersionDistrStatus\":\"DISTRIBUTION_COMPLETE_OK\",\"recoveryAction\":\"SKIP\",\"retryCount\":0,\"workloadContext\":\"TEST_workloadContext\",\"createTime\":null,\"modifyTime\":null,\"vnfOperationalEnvId\":\"VNF_operationalEnvironmentId\"}"))
529 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
530 .withStatus(HttpStatus.SC_OK)));
532 wireMockServer.stubFor(post(urlPathEqualTo("/operationalEnvDistributionStatus/")).withRequestBody(equalTo(
533 "{\"distributionId\":\"TEST_distributionId\",\"operationalEnvId\":\"TEST_operationalEnvironmentId\",\"serviceModelVersionId\":\"TEST_serviceModelVersionId\",\"requestId\":\"TEST_requestIdOrig\",\"distributionIdStatus\":\"DISTRIBUTION_COMPLETE_OK\",\"distributionIdErrorReason\":\"\",\"createTime\":null,\"modifyTime\":null}"))
534 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
535 .withStatus(HttpStatus.SC_OK)));
537 wireMockServer.stubFor(
538 get(urlPathMatching("/aai/" + AAIVersion.LATEST + "/cloud-infrastructure/operational-environments/.*"))
539 .willReturn(aResponse().withHeader("Content-Type", "application/json").withBody(json)
540 .withStatus(HttpStatus.SC_ACCEPTED)));
541 wireMockServer.stubFor(
542 put(urlPathMatching("/aai/" + AAIVersion.LATEST + "/cloud-infrastructure/operational-environments/.*"))
543 .willReturn(aResponse().withHeader("Content-Type", "application/json")
544 .withStatus(HttpStatus.SC_ACCEPTED)));
546 activateVnfStatus.execute(requestId, request);
551 public void executionTest_ERROR_Status_And_ABORT() throws JsonProcessingException {
553 OperationalEnvServiceModelStatus serviceModelDb = new OperationalEnvServiceModelStatus();
554 serviceModelDb.setRequestId(requestIdOrig);
555 serviceModelDb.setServiceModelVersionId(serviceModelVersionId);
556 serviceModelDb.setWorkloadContext(workloadContext);
557 serviceModelDb.setRecoveryAction(recoveryActionAbort);
558 serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
559 serviceModelDb.setRetryCount(retryCountThree);
560 serviceModelDb.setServiceModelVersionDistrStatus(statusError);
561 serviceModelDb.setVnfOperationalEnvId(vnfOperationalEnvironmentId);
563 OperationalEnvDistributionStatus distributionDb = new OperationalEnvDistributionStatus();
564 distributionDb.setDistributionId(sdcDistributionId);
565 distributionDb.setRequestId(requestIdOrig);
566 distributionDb.setOperationalEnvId(operationalEnvironmentId);
567 distributionDb.setDistributionIdStatus(statusError);
568 distributionDb.setServiceModelVersionId(serviceModelVersionId);
569 distributionDb.setDistributionIdErrorReason(null);
573 // prepare distribution obj
574 Distribution distribution = new Distribution();
575 distribution.setStatus(Status.DISTRIBUTION_COMPLETE_ERROR);
576 request.setDistribution(distribution);
577 request.setDistributionId(sdcDistributionId);
578 request.setOperationalEnvironmentId(operationalEnvironmentId);
580 InfraActiveRequests iar = new InfraActiveRequests();
581 iar.setRequestId(requestIdOrig);
582 iar.setRequestStatus("PENDING");
584 wireMockServer.stubFor(get(urlPathEqualTo(
585 "/operationalEnvServiceModelStatus/search/findOneByOperationalEnvIdAndServiceModelVersionIdAndRequestId"))
586 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
587 .withBody(mapper.writeValueAsString(serviceModelDb)).withStatus(HttpStatus.SC_OK)));
588 wireMockServer.stubFor(get(urlPathEqualTo("/operationalEnvDistributionStatus/" + sdcDistributionId))
589 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
590 .withBody(mapper.writeValueAsString(distributionDb)).withStatus(HttpStatus.SC_OK)));
591 wireMockServer.stubFor(get(urlPathEqualTo("/infraActiveRequests/" + requestIdOrig))
592 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
593 .withBody(mapper.writeValueAsString(iar)).withStatus(HttpStatus.SC_OK)));
595 wireMockServer.stubFor(post(urlPathEqualTo("/operationalEnvDistributionStatus/")).withRequestBody(containing(
596 "{\"distributionId\":\"TEST_distributionId\",\"operationalEnvId\":\"TEST_operationalEnvironmentId\",\"serviceModelVersionId\":\"TEST_serviceModelVersionId\",\"requestId\":\"TEST_requestIdOrig\",\"distributionIdStatus\":\"DISTRIBUTION_COMPLETE_ERROR\""))
597 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
598 .withStatus(HttpStatus.SC_OK)));
600 wireMockServer.stubFor(post(urlPathEqualTo("/operationalEnvServiceModelStatus/")).withRequestBody(containing(
601 "{\"requestId\":\"TEST_requestIdOrig\",\"operationalEnvId\":\"TEST_operationalEnvironmentId\",\"serviceModelVersionId\":\"TEST_serviceModelVersionId\",\"serviceModelVersionDistrStatus\":\"DISTRIBUTION_COMPLETE_ERROR\""))
602 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
603 .withStatus(HttpStatus.SC_OK)));
605 wireMockServer.stubFor(
606 get(urlPathMatching("/aai/" + AAIVersion.LATEST + "/cloud-infrastructure/operational-environments/.*"))
607 .willReturn(aResponse().withHeader("Content-Type", "application/json").withBody(json)
608 .withStatus(HttpStatus.SC_ACCEPTED)));
609 wireMockServer.stubFor(
610 put(urlPathMatching("/aai/" + AAIVersion.LATEST + "/cloud-infrastructure/operational-environments/.*"))
611 .willReturn(aResponse().withHeader("Content-Type", "application/json")
612 .withStatus(HttpStatus.SC_ACCEPTED)));
615 activateVnfStatus.execute(requestId, request);
616 } catch (ApiException e) {
617 assertThat(e.getMessage(), startsWith("Overall Activation process is a Failure. "));
618 assertEquals(e.getHttpResponseCode(), HttpStatus.SC_BAD_REQUEST);
619 assertEquals(e.getMessageID(), ErrorNumbers.SVC_DETAILED_SERVICE_ERROR);
626 public void callSDClientForRetryTest_202() throws Exception {
627 OperationalEnvServiceModelStatus serviceModelDb = new OperationalEnvServiceModelStatus();
628 serviceModelDb.setRequestId(requestIdOrig);
629 serviceModelDb.setServiceModelVersionId(serviceModelVersionId);
630 serviceModelDb.setWorkloadContext(workloadContext);
631 serviceModelDb.setRecoveryAction(recoveryActionRetry);
632 serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
633 serviceModelDb.setRetryCount(retryCountThree);
634 serviceModelDb.setServiceModelVersionDistrStatus(statusSent);
636 OperationalEnvDistributionStatus distributionDb = new OperationalEnvDistributionStatus();
637 distributionDb.setDistributionId(sdcDistributionId);
638 distributionDb.setRequestId(requestIdOrig);
639 distributionDb.setOperationalEnvId(operationalEnvironmentId);
640 distributionDb.setDistributionIdStatus(statusSent);
641 distributionDb.setServiceModelVersionId(serviceModelVersionId);
642 distributionDb.setDistributionIdErrorReason(null);
646 JSONObject jsonObject = new JSONObject();
647 jsonObject.put("statusCode", "202");
648 jsonObject.put("message", "Success");
649 jsonObject.put("distributionId", sdcDistributionId1);
651 // prepare distribution obj
652 Distribution distribution = new Distribution();
653 distribution.setStatus(Status.DISTRIBUTION_COMPLETE_OK);
654 request.setDistribution(distribution);
655 request.setDistributionId(sdcDistributionId);
656 request.setOperationalEnvironmentId(operationalEnvironmentId);
658 wireMockServer.stubFor(post(urlPathMatching("/sdc/v1/catalog/services/TEST_serviceModelVersionId/distr.*"))
659 .willReturn(aResponse().withHeader("Content-Type", "application/json").withBody(jsonObject.toString())
660 .withStatus(HttpStatus.SC_ACCEPTED)));
662 JSONObject jsonResponse = activateVnfStatus.callSDClientForRetry(distributionDb, serviceModelDb, distribution);
664 assertEquals("TEST_distributionId1", jsonResponse.get("distributionId"));
665 assertEquals("Success", jsonResponse.get("message"));
666 assertEquals("202", jsonResponse.get("statusCode"));