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;
35 import javax.ws.rs.core.HttpHeaders;
36 import javax.ws.rs.core.MediaType;
38 import org.apache.http.HttpStatus;
39 import org.json.JSONObject;
40 import org.junit.Ignore;
41 import org.junit.Rule;
42 import org.junit.Test;
43 import org.junit.rules.ExpectedException;
44 import org.onap.so.apihandler.common.ErrorNumbers;
45 import org.onap.so.apihandlerinfra.BaseTest;
46 import org.onap.so.apihandlerinfra.exceptions.ApiException;
47 import org.onap.so.apihandlerinfra.tenantisolation.CloudOrchestrationRequest;
48 import org.onap.so.apihandlerinfra.tenantisolationbeans.Distribution;
49 import org.onap.so.apihandlerinfra.tenantisolationbeans.DistributionStatus;
50 import org.onap.so.apihandlerinfra.tenantisolationbeans.Status;
51 import org.onap.so.client.aai.AAIVersion;
52 import org.onap.so.db.request.beans.InfraActiveRequests;
53 import org.onap.so.db.request.beans.OperationalEnvDistributionStatus;
54 import org.onap.so.db.request.beans.OperationalEnvServiceModelStatus;
55 import org.springframework.beans.factory.annotation.Autowired;
57 import com.fasterxml.jackson.core.JsonProcessingException;
58 import com.fasterxml.jackson.databind.ObjectMapper;
60 public class ActivateVnfStatusOperationalEnvironmentTest extends BaseTest{
63 private ActivateVnfStatusOperationalEnvironment activateVnfStatus;
65 public ExpectedException thrown = ExpectedException.none();
67 private final String requestId = "TEST_requestId";
68 private final String requestIdOrig = "TEST_requestIdOrig";
69 private final String operationalEnvironmentId = "TEST_operationalEnvironmentId";
70 private final String vnfOperationalEnvironmentId = "VNF_operationalEnvironmentId";
71 private final CloudOrchestrationRequest request = new CloudOrchestrationRequest();
72 private final String workloadContext = "TEST_workloadContext";
73 private final String recoveryActionRetry = "RETRY";
74 private final String recoveryActionAbort = "ABORT";
75 private final String recoveryActionSkip = "SKIP";
76 private final String serviceModelVersionId = "TEST_serviceModelVersionId";
77 private final String serviceModelVersionId1 = "TEST_serviceModelVersionId1";
78 private final int retryCountThree = 3;
79 private final int retryCountTwo = 2;
80 private final int retryCountZero = 0;
81 private final String sdcDistributionId1 = "TEST_distributionId1";
82 private final String sdcDistributionId = "TEST_distributionId";
83 private final String statusOk = Status.DISTRIBUTION_COMPLETE_OK.toString();
84 private final String statusError = DistributionStatus.DISTRIBUTION_COMPLETE_ERROR.toString();
85 private final String statusSent = "SENT";
86 String json = "{\"operational-environment-status\" : \"INACTIVE\"}";
88 private final ObjectMapper mapper = new ObjectMapper();
91 public void checkOrUpdateOverallStatusTest_Ok() throws Exception {
93 // two entries, both status Ok & retry 0
94 OperationalEnvServiceModelStatus serviceModelDb = new OperationalEnvServiceModelStatus();
95 serviceModelDb.setRequestId(requestIdOrig);
96 serviceModelDb.setServiceModelVersionId(serviceModelVersionId);
97 serviceModelDb.setWorkloadContext(workloadContext);
98 serviceModelDb.setRecoveryAction(recoveryActionRetry);
99 serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
100 serviceModelDb.setRetryCount(retryCountZero);
101 serviceModelDb.setServiceModelVersionDistrStatus(statusOk);
102 serviceModelDb.setVnfOperationalEnvId(vnfOperationalEnvironmentId);
104 serviceModelDb.setRequestId(requestIdOrig);
105 serviceModelDb.setServiceModelVersionId(serviceModelVersionId1);
106 serviceModelDb.setWorkloadContext(workloadContext);
107 serviceModelDb.setRecoveryAction(recoveryActionRetry);
108 serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
109 serviceModelDb.setRetryCount(retryCountZero);
110 serviceModelDb.setServiceModelVersionDistrStatus(statusOk);
111 serviceModelDb.setVnfOperationalEnvId(vnfOperationalEnvironmentId);
113 InfraActiveRequests iar = new InfraActiveRequests();
114 iar.setRequestId(requestIdOrig);
115 iar.setRequestStatus("PENDING");
117 wireMockServer.stubFor(get(urlPathEqualTo("/operationalEnvServiceModelStatus/search/findOneByOperationalEnvIdAndServiceModelVersionIdAndRequestId"))
118 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
119 .withBody(mapper.writeValueAsString(serviceModelDb))
120 .withStatus(HttpStatus.SC_OK)));
121 wireMockServer.stubFor(get(urlPathEqualTo("/infraActiveRequests/"+requestIdOrig))
122 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
123 .withBody(mapper.writeValueAsString(iar))
124 .withStatus(HttpStatus.SC_OK)));
126 activateVnfStatus.checkOrUpdateOverallStatus(operationalEnvironmentId, requestIdOrig);
128 // overall is success
132 public void checkOrUpdateOverallStatusTest_Error() throws JsonProcessingException {
134 OperationalEnvServiceModelStatus serviceModelDb = new OperationalEnvServiceModelStatus();
135 serviceModelDb.setRequestId(requestIdOrig);
136 serviceModelDb.setServiceModelVersionId(serviceModelVersionId);
137 serviceModelDb.setWorkloadContext(workloadContext);
138 serviceModelDb.setRecoveryAction(recoveryActionRetry);
139 serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
140 serviceModelDb.setRetryCount(retryCountZero);
141 serviceModelDb.setServiceModelVersionDistrStatus(statusError);
142 serviceModelDb.setVnfOperationalEnvId(vnfOperationalEnvironmentId);
143 wireMockServer.stubFor(get(urlPathEqualTo("/operationalEnvServiceModelStatus/search/findOneByOperationalEnvIdAndServiceModelVersionIdAndRequestId"))
144 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
145 .withBody(mapper.writeValueAsString(serviceModelDb))
146 .withStatus(HttpStatus.SC_OK)));
148 InfraActiveRequests iar = new InfraActiveRequests();
149 iar.setRequestId(requestIdOrig);
150 iar.setRequestStatus("PENDING");
152 wireMockServer.stubFor(get(urlPathEqualTo("/infraActiveRequests/"+requestIdOrig))
153 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
154 .withBody(mapper.writeValueAsString(iar))
155 .withStatus(HttpStatus.SC_OK)));
158 activateVnfStatus.checkOrUpdateOverallStatus(operationalEnvironmentId, requestIdOrig);
159 }catch(ApiException e){
160 assertThat(e.getMessage(), startsWith("Overall Activation process is a Failure. "));
161 assertEquals(e.getHttpResponseCode(), HttpStatus.SC_BAD_REQUEST);
162 assertEquals(e.getMessageID(), ErrorNumbers.SVC_DETAILED_SERVICE_ERROR);
168 public void checkOrUpdateOverallStatusTest_Waiting() throws Exception {
170 OperationalEnvServiceModelStatus serviceModelDb = new OperationalEnvServiceModelStatus();
171 serviceModelDb.setRequestId(requestIdOrig);
172 serviceModelDb.setServiceModelVersionId(serviceModelVersionId);
173 serviceModelDb.setWorkloadContext(workloadContext);
174 serviceModelDb.setRecoveryAction(recoveryActionRetry);
175 serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
176 serviceModelDb.setRetryCount(retryCountTwo);
177 serviceModelDb.setServiceModelVersionDistrStatus(statusError);
178 serviceModelDb.setVnfOperationalEnvId(vnfOperationalEnvironmentId);
179 wireMockServer.stubFor(get(urlPathEqualTo("/operationalEnvServiceModelStatus/search/findOneByOperationalEnvIdAndServiceModelVersionIdAndRequestId"))
180 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
181 .withBody(mapper.writeValueAsString(serviceModelDb))
182 .withStatus(HttpStatus.SC_OK)));
184 activateVnfStatus.checkOrUpdateOverallStatus(operationalEnvironmentId, requestIdOrig);
188 public void executionTest_Ok() throws Exception {
190 OperationalEnvServiceModelStatus serviceModelDb = new OperationalEnvServiceModelStatus();
191 serviceModelDb.setRequestId(requestIdOrig);
192 serviceModelDb.setServiceModelVersionId(serviceModelVersionId);
193 serviceModelDb.setWorkloadContext(workloadContext);
194 serviceModelDb.setRecoveryAction(recoveryActionRetry);
195 serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
196 serviceModelDb.setRetryCount(retryCountThree);
197 serviceModelDb.setServiceModelVersionDistrStatus(statusSent);
198 serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
199 serviceModelDb.setVnfOperationalEnvId(vnfOperationalEnvironmentId);
201 OperationalEnvDistributionStatus distributionDb = new OperationalEnvDistributionStatus();
202 distributionDb.setDistributionId(sdcDistributionId);
203 distributionDb.setRequestId(requestIdOrig);
204 distributionDb.setOperationalEnvId(operationalEnvironmentId);
205 distributionDb.setDistributionIdStatus(statusSent);
206 distributionDb.setServiceModelVersionId(serviceModelVersionId);
207 distributionDb.setDistributionIdErrorReason(null);
209 // prepare distribution obj
210 Distribution distribution = new Distribution();
211 distribution.setStatus(Status.DISTRIBUTION_COMPLETE_OK);
212 request.setDistribution(distribution);
213 request.setDistributionId(sdcDistributionId);
214 request.setOperationalEnvironmentId(operationalEnvironmentId);
216 InfraActiveRequests iar = new InfraActiveRequests();
217 iar.setRequestId(requestIdOrig);
218 iar.setRequestStatus("PENDING");
220 wireMockServer.stubFor(get(urlPathEqualTo("/operationalEnvServiceModelStatus/search/findOneByOperationalEnvIdAndServiceModelVersionIdAndRequestId"))
221 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
222 .withBody(mapper.writeValueAsString(serviceModelDb))
223 .withStatus(HttpStatus.SC_OK)));
224 wireMockServer.stubFor(get(urlPathEqualTo("/operationalEnvDistributionStatus/"+sdcDistributionId))
225 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
226 .withBody(mapper.writeValueAsString(distributionDb))
227 .withStatus(HttpStatus.SC_OK)));
228 wireMockServer.stubFor(get(urlPathEqualTo("/infraActiveRequests/"+requestIdOrig))
229 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
230 .withBody(mapper.writeValueAsString(iar))
231 .withStatus(HttpStatus.SC_OK)));
232 wireMockServer.stubFor(post(urlPathEqualTo("/operationalEnvServiceModelStatus/"))
233 .withRequestBody(equalTo("{\"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\"}"))
234 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
235 .withStatus(HttpStatus.SC_OK)));
237 wireMockServer.stubFor(post(urlPathEqualTo("/operationalEnvDistributionStatus/"))
238 .withRequestBody(equalTo("{\"distributionId\":\"TEST_distributionId\",\"operationalEnvId\":\"TEST_operationalEnvironmentId\",\"serviceModelVersionId\":\"TEST_serviceModelVersionId\",\"requestId\":\"TEST_requestIdOrig\",\"distributionIdStatus\":\"DISTRIBUTION_COMPLETE_OK\",\"distributionIdErrorReason\":\"\",\"createTime\":null,\"modifyTime\":null}"))
239 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
240 .withStatus(HttpStatus.SC_OK)));
242 wireMockServer.stubFor(get(urlPathEqualTo("/aai/" + AAIVersion.LATEST + "/cloud-infrastructure/operational-environments/operational-environment/VNF_operationalEnvironmentId"))
243 .willReturn(aResponse().withHeader("Content-Type", "application/json").withBody(json).withStatus(HttpStatus.SC_ACCEPTED)));
244 wireMockServer.stubFor(put(urlPathEqualTo("/aai/" + AAIVersion.LATEST + "/cloud-infrastructure/operational-environments/operational-environment/VNF_operationalEnvironmentId"))
245 .willReturn(aResponse().withHeader("Content-Type", "application/json").withStatus(HttpStatus.SC_ACCEPTED)));
247 activateVnfStatus.execute(requestId, request);
251 public void executionTest_ERROR_Status_And_RETRY() throws Exception {
253 OperationalEnvServiceModelStatus serviceModelDb = new OperationalEnvServiceModelStatus();
254 serviceModelDb.setRequestId(requestIdOrig);
255 serviceModelDb.setServiceModelVersionId(serviceModelVersionId);
256 serviceModelDb.setWorkloadContext(workloadContext);
257 serviceModelDb.setRecoveryAction(recoveryActionRetry);
258 serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
259 serviceModelDb.setRetryCount(retryCountThree);
260 serviceModelDb.setServiceModelVersionDistrStatus(statusError);
261 serviceModelDb.setVnfOperationalEnvId(vnfOperationalEnvironmentId);
262 wireMockServer.stubFor(get(urlPathEqualTo("/operationalEnvServiceModelStatus/search/findOneByOperationalEnvIdAndServiceModelVersionIdAndRequestId"))
263 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
264 .withBody(mapper.writeValueAsString(serviceModelDb))
265 .withStatus(HttpStatus.SC_OK)));
267 OperationalEnvDistributionStatus distributionDb = new OperationalEnvDistributionStatus();
268 distributionDb.setDistributionId(sdcDistributionId);
269 distributionDb.setRequestId(requestIdOrig);
270 distributionDb.setOperationalEnvId(operationalEnvironmentId);
271 distributionDb.setDistributionIdStatus(statusError);
272 distributionDb.setServiceModelVersionId(serviceModelVersionId);
273 distributionDb.setDistributionIdErrorReason(null);
278 // prepare new distribution obj
279 Distribution distribution = new Distribution();
280 distribution.setStatus(Status.DISTRIBUTION_COMPLETE_ERROR);
281 distribution.setErrorReason("Unable to process.");
282 request.setDistribution(distribution);
283 request.setDistributionId(sdcDistributionId);
284 request.setOperationalEnvironmentId(operationalEnvironmentId);
286 // prepare sdc return data
287 JSONObject jsonObject = new JSONObject();
288 jsonObject.put("statusCode", "202");
289 jsonObject.put("message", "Success");
290 jsonObject.put("distributionId", sdcDistributionId1);
292 wireMockServer.stubFor(post(urlPathMatching("/sdc/v1/catalog/services/.*"))
293 .willReturn(aResponse().withHeader("Content-Type", "application/json").withBody(jsonObject.toString()).withStatus(HttpStatus.SC_ACCEPTED)));
294 wireMockServer.stubFor(get(urlPathEqualTo("/operationalEnvServiceModelStatus/search/findOneByOperationalEnvIdAndServiceModelVersionIdAndRequestId"))
295 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
296 .withBody(mapper.writeValueAsString(serviceModelDb))
297 .withStatus(HttpStatus.SC_OK)));
298 wireMockServer.stubFor(get(urlPathEqualTo("/operationalEnvDistributionStatus/"+sdcDistributionId))
299 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
300 .withBody(mapper.writeValueAsString(distributionDb))
301 .withStatus(HttpStatus.SC_OK)));
302 wireMockServer.stubFor(post(urlPathEqualTo("/operationalEnvDistributionStatus/"))
303 .withRequestBody(equalTo("{\"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\":{}}"))
304 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
305 .withStatus(HttpStatus.SC_OK)));
307 wireMockServer.stubFor(post(urlPathEqualTo("/operationalEnvDistributionStatus/"))
308 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
309 .withStatus(HttpStatus.SC_OK)));
311 wireMockServer.stubFor(post(urlPathEqualTo("/operationalEnvServiceModelStatus/"))
312 .withRequestBody(equalTo("{\"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\"}"))
313 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
314 .withStatus(HttpStatus.SC_OK)));
316 wireMockServer.stubFor(get(urlPathMatching("/aai/" + AAIVersion.LATEST + "/cloud-infrastructure/operational-environments/.*"))
317 .willReturn(aResponse().withHeader("Content-Type", "application/json").withBody(json).withStatus(HttpStatus.SC_ACCEPTED)));
318 wireMockServer.stubFor(put(urlPathMatching("/aai/" + AAIVersion.LATEST + "/cloud-infrastructure/operational-environments/.*"))
319 .willReturn(aResponse().withHeader("Content-Type", "application/json").withStatus(HttpStatus.SC_ACCEPTED)));
321 activateVnfStatus.execute(requestId, request);
325 public void executionTest_ERROR_Status_And_RETRY_And_RetryZero() throws JsonProcessingException {
327 OperationalEnvServiceModelStatus serviceModelDb = new OperationalEnvServiceModelStatus();
328 serviceModelDb.setRequestId(requestIdOrig);
329 serviceModelDb.setServiceModelVersionId(serviceModelVersionId);
330 serviceModelDb.setWorkloadContext(workloadContext);
331 serviceModelDb.setRecoveryAction(recoveryActionRetry);
332 serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
333 serviceModelDb.setRetryCount(retryCountZero);
334 serviceModelDb.setServiceModelVersionDistrStatus(statusError);
335 serviceModelDb.setVnfOperationalEnvId(vnfOperationalEnvironmentId);
337 OperationalEnvDistributionStatus distributionDb = new OperationalEnvDistributionStatus();
338 distributionDb.setDistributionId(sdcDistributionId);
339 distributionDb.setRequestId(requestIdOrig);
340 distributionDb.setOperationalEnvId(operationalEnvironmentId);
341 distributionDb.setDistributionIdStatus(statusError);
342 distributionDb.setServiceModelVersionId(serviceModelVersionId);
343 distributionDb.setDistributionIdErrorReason(null);
347 // prepare distribution obj
348 Distribution distribution = new Distribution();
349 distribution.setStatus(Status.DISTRIBUTION_COMPLETE_ERROR);
350 request.setDistribution(distribution);
351 request.setDistributionId(sdcDistributionId);
352 request.setOperationalEnvironmentId(operationalEnvironmentId);
354 JSONObject jsonObject = new JSONObject();
355 jsonObject.put("statusCode", "202");
356 jsonObject.put("message", "Success");
357 jsonObject.put("distributionId", sdcDistributionId);
359 InfraActiveRequests iar = new InfraActiveRequests();
360 iar.setRequestId(requestIdOrig);
361 iar.setRequestStatus("PENDING");
363 wireMockServer.stubFor(get(urlPathEqualTo("/operationalEnvServiceModelStatus/search/findOneByOperationalEnvIdAndServiceModelVersionIdAndRequestId"))
364 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
365 .withBody(mapper.writeValueAsString(serviceModelDb))
366 .withStatus(HttpStatus.SC_OK)));
367 wireMockServer.stubFor(get(urlPathEqualTo("/operationalEnvDistributionStatus/"+sdcDistributionId))
368 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
369 .withBody(mapper.writeValueAsString(distributionDb))
370 .withStatus(HttpStatus.SC_OK)));
371 wireMockServer.stubFor(get(urlPathEqualTo("/infraActiveRequests/"+requestIdOrig))
372 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
373 .withBody(mapper.writeValueAsString(iar))
374 .withStatus(HttpStatus.SC_OK)));
376 wireMockServer.stubFor(post(urlPathMatching("/sdc/v1/catalog/services/.*"))
377 .willReturn(aResponse().withHeader("Content-Type", "application/json").withBody(jsonObject.toString()).withStatus(HttpStatus.SC_ACCEPTED)));
379 wireMockServer.stubFor(post(urlPathEqualTo("/operationalEnvServiceModelStatus/"))
380 .withRequestBody(equalTo("{\"requestId\":\"TEST_requestIdOrig\",\"operationalEnvId\":\"TEST_operationalEnvironmentId\",\"serviceModelVersionId\":\"TEST_serviceModelVersionId\",\"serviceModelVersionDistrStatus\":\"SENT\",\"recoveryAction\":\"RETRY\",\"retryCount\":2,\"workloadContext\":\"TEST_workloadContext\",\"createTime\":null,\"modifyTime\":null,\"handler\":{}}"))
381 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
382 .withStatus(HttpStatus.SC_OK)));
384 wireMockServer.stubFor(get(urlPathMatching("/aai/" + AAIVersion.LATEST + "/cloud-infrastructure/operational-environments/.*"))
385 .willReturn(aResponse().withHeader("Content-Type", "application/json").withBody(json).withStatus(HttpStatus.SC_ACCEPTED)));
386 wireMockServer.stubFor(put(urlPathMatching("/aai/" + AAIVersion.LATEST + "/cloud-infrastructure/operational-environments/.*"))
387 .willReturn(aResponse().withHeader("Content-Type", "application/json").withStatus(HttpStatus.SC_ACCEPTED)));
390 activateVnfStatus.execute(requestId, request);
391 }catch(ApiException e){
392 assertThat(e.getMessage(), startsWith("Overall Activation process is a Failure. "));
393 assertEquals(e.getHttpResponseCode(), HttpStatus.SC_BAD_REQUEST);
394 assertEquals(e.getMessageID(), ErrorNumbers.SVC_DETAILED_SERVICE_ERROR);
401 public void executionTest_ERROR_Status_And_RETRY_And_ErrorSdc() throws JsonProcessingException {
403 OperationalEnvServiceModelStatus serviceModelDb = new OperationalEnvServiceModelStatus();
404 serviceModelDb.setRequestId(requestIdOrig);
405 serviceModelDb.setServiceModelVersionId(serviceModelVersionId);
406 serviceModelDb.setWorkloadContext(workloadContext);
407 serviceModelDb.setRecoveryAction(recoveryActionRetry);
408 serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
409 serviceModelDb.setRetryCount(retryCountThree);
410 serviceModelDb.setServiceModelVersionDistrStatus(statusError);
411 serviceModelDb.setVnfOperationalEnvId(vnfOperationalEnvironmentId);
413 OperationalEnvDistributionStatus distributionDb = new OperationalEnvDistributionStatus();
414 distributionDb.setDistributionId(sdcDistributionId);
415 distributionDb.setRequestId(requestIdOrig);
416 distributionDb.setOperationalEnvId(operationalEnvironmentId);
417 distributionDb.setDistributionIdStatus(statusError);
418 distributionDb.setServiceModelVersionId(serviceModelVersionId);
419 distributionDb.setDistributionIdErrorReason(null);
421 // prepare distribution obj
422 Distribution distribution = new Distribution();
423 distribution.setStatus(Status.DISTRIBUTION_COMPLETE_ERROR);
424 distribution.setErrorReason("Unable to process.");
425 request.setDistribution(distribution);
426 request.setDistributionId(sdcDistributionId);
427 request.setOperationalEnvironmentId(operationalEnvironmentId);
430 JSONObject jsonMessages = new JSONObject();
431 jsonMessages.put("statusCode", "409");
432 jsonMessages.put("message", "Undefined Error Message!");
433 jsonMessages.put("messageId", "SVC4675");
434 jsonMessages.put("text", "Error: Service state is invalid for this action.");
435 JSONObject jsonServException = new JSONObject();
436 jsonServException.put("serviceException", jsonMessages);
437 JSONObject jsonErrorRequest = new JSONObject();
438 jsonErrorRequest.put("requestError", jsonServException);
440 InfraActiveRequests iar = new InfraActiveRequests();
441 iar.setRequestId(requestIdOrig);
442 iar.setRequestStatus("PENDING");
443 wireMockServer.stubFor(get(urlPathEqualTo("/operationalEnvServiceModelStatus/search/findOneByOperationalEnvIdAndServiceModelVersionIdAndRequestId"))
444 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
445 .withBody(mapper.writeValueAsString(serviceModelDb))
446 .withStatus(HttpStatus.SC_OK)));
447 wireMockServer.stubFor(get(urlPathEqualTo("/operationalEnvDistributionStatus/"+sdcDistributionId))
448 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
449 .withBody(mapper.writeValueAsString(distributionDb))
450 .withStatus(HttpStatus.SC_OK)));
451 wireMockServer.stubFor(get(urlPathEqualTo("/infraActiveRequests/"+requestIdOrig))
452 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
453 .withBody(mapper.writeValueAsString(iar))
454 .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()).withStatus(HttpStatus.SC_CONFLICT)));
463 wireMockServer.stubFor(get(urlPathMatching("/aai/" + AAIVersion.LATEST + "/cloud-infrastructure/operational-environments/.*"))
464 .willReturn(aResponse().withHeader("Content-Type", "application/json").withBody(json).withStatus(HttpStatus.SC_ACCEPTED)));
465 wireMockServer.stubFor(put(urlPathMatching("/aai/" + AAIVersion.LATEST + "/cloud-infrastructure/operational-environments/.*"))
466 .willReturn(aResponse().withHeader("Content-Type", "application/json").withStatus(HttpStatus.SC_ACCEPTED)));
469 activateVnfStatus.execute(requestId, request);
470 }catch(ApiException e){
471 assertThat(e.getMessage(), startsWith("Failure calling SDC: statusCode: "));
472 assertEquals(e.getHttpResponseCode(), HttpStatus.SC_BAD_REQUEST);
473 assertEquals(e.getMessageID(), ErrorNumbers.SVC_DETAILED_SERVICE_ERROR);
478 public void executionTest_ERROR_Status_And_SKIP() throws Exception {
480 OperationalEnvServiceModelStatus serviceModelDb = new OperationalEnvServiceModelStatus();
481 serviceModelDb.setRequestId(requestIdOrig);
482 serviceModelDb.setServiceModelVersionId(serviceModelVersionId);
483 serviceModelDb.setWorkloadContext(workloadContext);
484 serviceModelDb.setRecoveryAction(recoveryActionSkip);
485 serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
486 serviceModelDb.setRetryCount(retryCountThree);
487 serviceModelDb.setServiceModelVersionDistrStatus(statusError);
488 serviceModelDb.setVnfOperationalEnvId(vnfOperationalEnvironmentId);
490 OperationalEnvDistributionStatus distributionDb = new OperationalEnvDistributionStatus();
491 distributionDb.setDistributionId(sdcDistributionId);
492 distributionDb.setRequestId(requestIdOrig);
493 distributionDb.setOperationalEnvId(operationalEnvironmentId);
494 distributionDb.setDistributionIdStatus(statusError);
495 distributionDb.setServiceModelVersionId(serviceModelVersionId);
496 distributionDb.setDistributionIdErrorReason(null);
498 // prepare distribution obj
499 OperationalEnvDistributionStatus distributionStatus = new OperationalEnvDistributionStatus(sdcDistributionId,operationalEnvironmentId,serviceModelVersionId);
500 distributionStatus.setDistributionIdStatus(Status.DISTRIBUTION_COMPLETE_ERROR.name());
502 Distribution distribution = new Distribution();
503 distribution.setStatus(Status.DISTRIBUTION_COMPLETE_ERROR);
504 request.setDistribution(distribution);
505 request.setDistributionId(sdcDistributionId);
506 request.setOperationalEnvironmentId(operationalEnvironmentId);
507 InfraActiveRequests iar = new InfraActiveRequests();
508 iar.setRequestId(requestIdOrig);
509 iar.setRequestStatus("PENDING");
511 wireMockServer.stubFor(get(urlPathEqualTo("/operationalEnvServiceModelStatus/search/findOneByOperationalEnvIdAndServiceModelVersionIdAndRequestId"))
512 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
513 .withBody(mapper.writeValueAsString(serviceModelDb))
514 .withStatus(HttpStatus.SC_OK)));
515 wireMockServer.stubFor(get(urlPathEqualTo("/operationalEnvDistributionStatus/"+sdcDistributionId))
516 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
517 .withBody(mapper.writeValueAsString(distributionDb))
518 .withStatus(HttpStatus.SC_OK)));
519 wireMockServer.stubFor(get(urlPathEqualTo("/infraActiveRequests/"+requestIdOrig))
520 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
521 .withBody(mapper.writeValueAsString(iar))
522 .withStatus(HttpStatus.SC_OK)));
523 wireMockServer.stubFor(post(urlPathEqualTo("/operationalEnvServiceModelStatus/"))
524 .withRequestBody(equalTo("{\"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\"}"))
525 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
526 .withStatus(HttpStatus.SC_OK)));
528 wireMockServer.stubFor(post(urlPathEqualTo("/operationalEnvDistributionStatus/"))
529 .withRequestBody(equalTo("{\"distributionId\":\"TEST_distributionId\",\"operationalEnvId\":\"TEST_operationalEnvironmentId\",\"serviceModelVersionId\":\"TEST_serviceModelVersionId\",\"requestId\":\"TEST_requestIdOrig\",\"distributionIdStatus\":\"DISTRIBUTION_COMPLETE_OK\",\"distributionIdErrorReason\":\"\",\"createTime\":null,\"modifyTime\":null}"))
530 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
531 .withStatus(HttpStatus.SC_OK)));
533 wireMockServer.stubFor(get(urlPathMatching("/aai/" + AAIVersion.LATEST + "/cloud-infrastructure/operational-environments/.*"))
534 .willReturn(aResponse().withHeader("Content-Type", "application/json").withBody(json).withStatus(HttpStatus.SC_ACCEPTED)));
535 wireMockServer.stubFor(put(urlPathMatching("/aai/" + AAIVersion.LATEST + "/cloud-infrastructure/operational-environments/.*"))
536 .willReturn(aResponse().withHeader("Content-Type", "application/json").withStatus(HttpStatus.SC_ACCEPTED)));
538 activateVnfStatus.execute(requestId, request);
543 public void executionTest_ERROR_Status_And_ABORT() throws JsonProcessingException {
545 OperationalEnvServiceModelStatus serviceModelDb = new OperationalEnvServiceModelStatus();
546 serviceModelDb.setRequestId(requestIdOrig);
547 serviceModelDb.setServiceModelVersionId(serviceModelVersionId);
548 serviceModelDb.setWorkloadContext(workloadContext);
549 serviceModelDb.setRecoveryAction(recoveryActionAbort);
550 serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
551 serviceModelDb.setRetryCount(retryCountThree);
552 serviceModelDb.setServiceModelVersionDistrStatus(statusError);
553 serviceModelDb.setVnfOperationalEnvId(vnfOperationalEnvironmentId);
555 OperationalEnvDistributionStatus distributionDb = new OperationalEnvDistributionStatus();
556 distributionDb.setDistributionId(sdcDistributionId);
557 distributionDb.setRequestId(requestIdOrig);
558 distributionDb.setOperationalEnvId(operationalEnvironmentId);
559 distributionDb.setDistributionIdStatus(statusError);
560 distributionDb.setServiceModelVersionId(serviceModelVersionId);
561 distributionDb.setDistributionIdErrorReason(null);
565 // prepare distribution obj
566 Distribution distribution = new Distribution();
567 distribution.setStatus(Status.DISTRIBUTION_COMPLETE_ERROR);
568 request.setDistribution(distribution);
569 request.setDistributionId(sdcDistributionId);
570 request.setOperationalEnvironmentId(operationalEnvironmentId);
572 InfraActiveRequests iar = new InfraActiveRequests();
573 iar.setRequestId(requestIdOrig);
574 iar.setRequestStatus("PENDING");
576 wireMockServer.stubFor(get(urlPathEqualTo("/operationalEnvServiceModelStatus/search/findOneByOperationalEnvIdAndServiceModelVersionIdAndRequestId"))
577 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
578 .withBody(mapper.writeValueAsString(serviceModelDb))
579 .withStatus(HttpStatus.SC_OK)));
580 wireMockServer.stubFor(get(urlPathEqualTo("/operationalEnvDistributionStatus/"+sdcDistributionId))
581 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
582 .withBody(mapper.writeValueAsString(distributionDb))
583 .withStatus(HttpStatus.SC_OK)));
584 wireMockServer.stubFor(get(urlPathEqualTo("/infraActiveRequests/"+requestIdOrig))
585 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
586 .withBody(mapper.writeValueAsString(iar))
587 .withStatus(HttpStatus.SC_OK)));
589 wireMockServer.stubFor(post(urlPathEqualTo("/operationalEnvDistributionStatus/"))
590 .withRequestBody(containing("{\"distributionId\":\"TEST_distributionId\",\"operationalEnvId\":\"TEST_operationalEnvironmentId\",\"serviceModelVersionId\":\"TEST_serviceModelVersionId\",\"requestId\":\"TEST_requestIdOrig\",\"distributionIdStatus\":\"DISTRIBUTION_COMPLETE_ERROR\""))
591 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
592 .withStatus(HttpStatus.SC_OK)));
594 wireMockServer.stubFor(post(urlPathEqualTo("/operationalEnvServiceModelStatus/"))
595 .withRequestBody(containing("{\"requestId\":\"TEST_requestIdOrig\",\"operationalEnvId\":\"TEST_operationalEnvironmentId\",\"serviceModelVersionId\":\"TEST_serviceModelVersionId\",\"serviceModelVersionDistrStatus\":\"DISTRIBUTION_COMPLETE_ERROR\""))
596 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
597 .withStatus(HttpStatus.SC_OK)));
599 wireMockServer.stubFor(get(urlPathMatching("/aai/" + AAIVersion.LATEST + "/cloud-infrastructure/operational-environments/.*"))
600 .willReturn(aResponse().withHeader("Content-Type", "application/json").withBody(json).withStatus(HttpStatus.SC_ACCEPTED)));
601 wireMockServer.stubFor(put(urlPathMatching("/aai/" + AAIVersion.LATEST + "/cloud-infrastructure/operational-environments/.*"))
602 .willReturn(aResponse().withHeader("Content-Type", "application/json").withStatus(HttpStatus.SC_ACCEPTED)));
605 activateVnfStatus.execute(requestId, request);
606 }catch(ApiException e) {
607 assertThat(e.getMessage(), startsWith("Overall Activation process is a Failure. "));
608 assertEquals(e.getHttpResponseCode(), HttpStatus.SC_BAD_REQUEST);
609 assertEquals(e.getMessageID(), ErrorNumbers.SVC_DETAILED_SERVICE_ERROR);
616 public void callSDClientForRetryTest_202() throws Exception {
617 OperationalEnvServiceModelStatus serviceModelDb = new OperationalEnvServiceModelStatus();
618 serviceModelDb.setRequestId(requestIdOrig);
619 serviceModelDb.setServiceModelVersionId(serviceModelVersionId);
620 serviceModelDb.setWorkloadContext(workloadContext);
621 serviceModelDb.setRecoveryAction(recoveryActionRetry);
622 serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
623 serviceModelDb.setRetryCount(retryCountThree);
624 serviceModelDb.setServiceModelVersionDistrStatus(statusSent);
626 OperationalEnvDistributionStatus distributionDb = new OperationalEnvDistributionStatus();
627 distributionDb.setDistributionId(sdcDistributionId);
628 distributionDb.setRequestId(requestIdOrig);
629 distributionDb.setOperationalEnvId(operationalEnvironmentId);
630 distributionDb.setDistributionIdStatus(statusSent);
631 distributionDb.setServiceModelVersionId(serviceModelVersionId);
632 distributionDb.setDistributionIdErrorReason(null);
636 JSONObject jsonObject = new JSONObject();
637 jsonObject.put("statusCode", "202");
638 jsonObject.put("message", "Success");
639 jsonObject.put("distributionId", sdcDistributionId1);
641 // prepare distribution obj
642 Distribution distribution = new Distribution();
643 distribution.setStatus(Status.DISTRIBUTION_COMPLETE_OK);
644 request.setDistribution(distribution);
645 request.setDistributionId(sdcDistributionId);
646 request.setOperationalEnvironmentId(operationalEnvironmentId);
648 wireMockServer.stubFor(post(urlPathMatching("/sdc/v1/catalog/services/TEST_serviceModelVersionId/distr.*"))
649 .willReturn(aResponse().withHeader("Content-Type", "application/json").withBody(jsonObject.toString()).withStatus(HttpStatus.SC_ACCEPTED)));
651 JSONObject jsonResponse = activateVnfStatus.callSDClientForRetry(distributionDb, serviceModelDb, distribution);
653 assertEquals("TEST_distributionId1", jsonResponse.get("distributionId"));
654 assertEquals("Success", jsonResponse.get("message"));
655 assertEquals("202", jsonResponse.get("statusCode"));