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.get;
25 import static com.github.tomakehurst.wiremock.client.WireMock.post;
26 import static com.github.tomakehurst.wiremock.client.WireMock.stubFor;
27 import static com.github.tomakehurst.wiremock.client.WireMock.urlPathMatching;
28 import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo;
29 import static com.github.tomakehurst.wiremock.client.WireMock.equalTo;
30 import static com.github.tomakehurst.wiremock.client.WireMock.containing;
31 import static org.hamcrest.Matchers.startsWith;
32 import static org.junit.Assert.assertEquals;
34 import static org.junit.Assert.assertThat;
36 import com.fasterxml.jackson.core.JsonProcessingException;
37 import com.fasterxml.jackson.databind.ObjectMapper;
38 import org.apache.http.HttpStatus;
39 import org.json.JSONObject;
40 import org.junit.Rule;
41 import org.junit.Test;
42 import org.junit.Ignore;
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.db.request.beans.InfraActiveRequests;
52 import org.onap.so.db.request.beans.OperationalEnvDistributionStatus;
53 import org.onap.so.db.request.beans.OperationalEnvServiceModelStatus;
54 import org.springframework.beans.factory.annotation.Autowired;
56 import javax.ws.rs.core.HttpHeaders;
57 import javax.ws.rs.core.MediaType;
59 public class ActivateVnfStatusOperationalEnvironmentTest extends BaseTest{
62 private ActivateVnfStatusOperationalEnvironment activateVnfStatus;
64 public ExpectedException thrown = ExpectedException.none();
66 private final String requestId = "TEST_requestId";
67 private final String requestIdOrig = "TEST_requestIdOrig";
68 private final String operationalEnvironmentId = "TEST_operationalEnvironmentId";
69 private final CloudOrchestrationRequest request = new CloudOrchestrationRequest();
70 private final String workloadContext = "TEST_workloadContext";
71 private final String recoveryActionRetry = "RETRY";
72 private final String recoveryActionAbort = "ABORT";
73 private final String recoveryActionSkip = "SKIP";
74 private final String serviceModelVersionId = "TEST_serviceModelVersionId";
75 private final String serviceModelVersionId1 = "TEST_serviceModelVersionId1";
76 private final int retryCountThree = 3;
77 private final int retryCountTwo = 2;
78 private final int retryCountZero = 0;
79 private final String sdcDistributionId = "TEST_distributionId";
80 private final String sdcDistributionId1 = "TEST_distributionId1";
81 private final String statusOk = Status.DISTRIBUTION_COMPLETE_OK.toString();
82 private final String statusError = DistributionStatus.DISTRIBUTION_COMPLETE_ERROR.toString();
83 private final String statusSent = "SENT";
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);
100 serviceModelDb.setRequestId(requestIdOrig);
101 serviceModelDb.setServiceModelVersionId(serviceModelVersionId1);
102 serviceModelDb.setWorkloadContext(workloadContext);
103 serviceModelDb.setRecoveryAction(recoveryActionRetry);
104 serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
105 serviceModelDb.setRetryCount(retryCountZero);
106 serviceModelDb.setServiceModelVersionDistrStatus(statusOk);
108 InfraActiveRequests iar = new InfraActiveRequests();
109 iar.setRequestId(requestIdOrig);
110 iar.setRequestStatus("PENDING");
112 stubFor(get(urlPathEqualTo("/operationalEnvServiceModelStatus/search/findOneByOperationalEnvIdAndServiceModelVersionId"))
113 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
114 .withBody(mapper.writeValueAsString(serviceModelDb))
115 .withStatus(HttpStatus.SC_OK)));
116 stubFor(get(urlPathEqualTo("/infraActiveRequests/"+requestIdOrig))
117 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
118 .withBody(mapper.writeValueAsString(iar))
119 .withStatus(HttpStatus.SC_OK)));
121 activateVnfStatus.checkOrUpdateOverallStatus(operationalEnvironmentId, requestIdOrig);
123 // overall is success
127 public void checkOrUpdateOverallStatusTest_Error() throws JsonProcessingException {
129 OperationalEnvServiceModelStatus serviceModelDb = new OperationalEnvServiceModelStatus();
130 serviceModelDb.setRequestId(requestIdOrig);
131 serviceModelDb.setServiceModelVersionId(serviceModelVersionId);
132 serviceModelDb.setWorkloadContext(workloadContext);
133 serviceModelDb.setRecoveryAction(recoveryActionRetry);
134 serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
135 serviceModelDb.setRetryCount(retryCountZero);
136 serviceModelDb.setServiceModelVersionDistrStatus(statusError);
137 stubFor(get(urlPathEqualTo("/operationalEnvServiceModelStatus/search/findOneByOperationalEnvIdAndServiceModelVersionId"))
138 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
139 .withBody(mapper.writeValueAsString(serviceModelDb))
140 .withStatus(HttpStatus.SC_OK)));
142 InfraActiveRequests iar = new InfraActiveRequests();
143 iar.setRequestId(requestIdOrig);
144 iar.setRequestStatus("PENDING");
146 stubFor(get(urlPathEqualTo("/infraActiveRequests/"+requestIdOrig))
147 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
148 .withBody(mapper.writeValueAsString(iar))
149 .withStatus(HttpStatus.SC_OK)));
152 activateVnfStatus.checkOrUpdateOverallStatus(operationalEnvironmentId, requestIdOrig);
153 }catch(ApiException e){
154 assertThat(e.getMessage(), startsWith("Overall Activation process is a Failure. "));
155 assertEquals(e.getHttpResponseCode(), HttpStatus.SC_BAD_REQUEST);
156 assertEquals(e.getMessageID(), ErrorNumbers.SVC_DETAILED_SERVICE_ERROR);
162 public void checkOrUpdateOverallStatusTest_Waiting() throws Exception {
164 OperationalEnvServiceModelStatus serviceModelDb = new OperationalEnvServiceModelStatus();
165 serviceModelDb.setRequestId(requestIdOrig);
166 serviceModelDb.setServiceModelVersionId(serviceModelVersionId);
167 serviceModelDb.setWorkloadContext(workloadContext);
168 serviceModelDb.setRecoveryAction(recoveryActionRetry);
169 serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
170 serviceModelDb.setRetryCount(retryCountTwo);
171 serviceModelDb.setServiceModelVersionDistrStatus(statusError);
172 stubFor(get(urlPathEqualTo("/operationalEnvServiceModelStatus/search/findOneByOperationalEnvIdAndServiceModelVersionId"))
173 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
174 .withBody(mapper.writeValueAsString(serviceModelDb))
175 .withStatus(HttpStatus.SC_OK)));
177 activateVnfStatus.checkOrUpdateOverallStatus(operationalEnvironmentId, requestIdOrig);
181 public void executionTest_Ok() throws Exception {
183 OperationalEnvServiceModelStatus serviceModelDb = new OperationalEnvServiceModelStatus();
184 serviceModelDb.setRequestId(requestIdOrig);
185 serviceModelDb.setServiceModelVersionId(serviceModelVersionId);
186 serviceModelDb.setWorkloadContext(workloadContext);
187 serviceModelDb.setRecoveryAction(recoveryActionRetry);
188 serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
189 serviceModelDb.setRetryCount(retryCountThree);
190 serviceModelDb.setServiceModelVersionDistrStatus(statusSent);
192 OperationalEnvDistributionStatus distributionDb = new OperationalEnvDistributionStatus();
193 distributionDb.setDistributionId(sdcDistributionId);
194 distributionDb.setRequestId(requestIdOrig);
195 distributionDb.setOperationalEnvId(operationalEnvironmentId);
196 distributionDb.setDistributionIdStatus(statusSent);
197 distributionDb.setServiceModelVersionId(serviceModelVersionId);
198 distributionDb.setDistributionIdErrorReason(null);
200 // prepare distribution obj
201 Distribution distribution = new Distribution();
202 distribution.setStatus(Status.DISTRIBUTION_COMPLETE_OK);
203 request.setDistribution(distribution);
204 request.setDistributionId(sdcDistributionId);
205 request.setOperationalEnvironmentId(operationalEnvironmentId);
207 InfraActiveRequests iar = new InfraActiveRequests();
208 iar.setRequestId(requestIdOrig);
209 iar.setRequestStatus("PENDING");
211 stubFor(get(urlPathEqualTo("/operationalEnvServiceModelStatus/search/findOneByOperationalEnvIdAndServiceModelVersionId"))
212 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
213 .withBody(mapper.writeValueAsString(serviceModelDb))
214 .withStatus(HttpStatus.SC_OK)));
215 stubFor(get(urlPathEqualTo("/operationalEnvDistributionStatus/"+sdcDistributionId))
216 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
217 .withBody(mapper.writeValueAsString(distributionDb))
218 .withStatus(HttpStatus.SC_OK)));
219 stubFor(get(urlPathEqualTo("/infraActiveRequests/"+requestIdOrig))
220 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
221 .withBody(mapper.writeValueAsString(iar))
222 .withStatus(HttpStatus.SC_OK)));
223 stubFor(post(urlPathEqualTo("/operationalEnvServiceModelStatus/"))
224 .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,\"handler\":{}}"))
225 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
226 .withStatus(HttpStatus.SC_OK)));
228 stubFor(post(urlPathEqualTo("/operationalEnvDistributionStatus/"))
229 .withRequestBody(equalTo("{\"distributionId\":\"TEST_distributionId\",\"operationalEnvId\":\"TEST_operationalEnvironmentId\",\"serviceModelVersionId\":\"TEST_serviceModelVersionId\",\"requestId\":\"TEST_requestIdOrig\",\"distributionIdStatus\":\"DISTRIBUTION_COMPLETE_OK\",\"distributionIdErrorReason\":\"\",\"createTime\":null,\"modifyTime\":null,\"handler\":{}}"))
230 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
231 .withStatus(HttpStatus.SC_OK)));
233 activateVnfStatus.execute(requestId, request);
237 public void executionTest_ERROR_Status_And_RETRY() throws Exception {
239 OperationalEnvServiceModelStatus serviceModelDb = new OperationalEnvServiceModelStatus();
240 serviceModelDb.setRequestId(requestIdOrig);
241 serviceModelDb.setServiceModelVersionId(serviceModelVersionId);
242 serviceModelDb.setWorkloadContext(workloadContext);
243 serviceModelDb.setRecoveryAction(recoveryActionRetry);
244 serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
245 serviceModelDb.setRetryCount(retryCountThree);
246 serviceModelDb.setServiceModelVersionDistrStatus(statusError);
247 stubFor(get(urlPathEqualTo("/operationalEnvServiceModelStatus/search/findOneByOperationalEnvIdAndServiceModelVersionId"))
248 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
249 .withBody(mapper.writeValueAsString(serviceModelDb))
250 .withStatus(HttpStatus.SC_OK)));
252 OperationalEnvDistributionStatus distributionDb = new OperationalEnvDistributionStatus();
253 distributionDb.setDistributionId(sdcDistributionId);
254 distributionDb.setRequestId(requestIdOrig);
255 distributionDb.setOperationalEnvId(operationalEnvironmentId);
256 distributionDb.setDistributionIdStatus(statusError);
257 distributionDb.setServiceModelVersionId(serviceModelVersionId);
258 distributionDb.setDistributionIdErrorReason(null);
263 // prepare new distribution obj
264 Distribution distribution = new Distribution();
265 distribution.setStatus(Status.DISTRIBUTION_COMPLETE_ERROR);
266 distribution.setErrorReason("Unable to process.");
267 request.setDistribution(distribution);
268 request.setDistributionId(sdcDistributionId);
269 request.setOperationalEnvironmentId(operationalEnvironmentId);
271 // prepare sdc return data
272 JSONObject jsonObject = new JSONObject();
273 jsonObject.put("statusCode", "202");
274 jsonObject.put("message", "Success");
275 jsonObject.put("distributionId", sdcDistributionId1);
277 stubFor(post(urlPathMatching("/sdc/v1/catalog/services/.*"))
278 .willReturn(aResponse().withHeader("Content-Type", "application/json").withBody(jsonObject.toString()).withStatus(HttpStatus.SC_ACCEPTED)));
279 stubFor(get(urlPathEqualTo("/operationalEnvServiceModelStatus/search/findOneByOperationalEnvIdAndServiceModelVersionId"))
280 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
281 .withBody(mapper.writeValueAsString(serviceModelDb))
282 .withStatus(HttpStatus.SC_OK)));
283 stubFor(get(urlPathEqualTo("/operationalEnvDistributionStatus/"+sdcDistributionId))
284 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
285 .withBody(mapper.writeValueAsString(distributionDb))
286 .withStatus(HttpStatus.SC_OK)));
287 stubFor(post(urlPathEqualTo("/operationalEnvDistributionStatus/"))
288 .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\":{}}"))
289 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
290 .withStatus(HttpStatus.SC_OK)));
292 stubFor(post(urlPathEqualTo("/operationalEnvDistributionStatus/"))
293 .withRequestBody(equalTo("{\"distributionId\":\"TEST_distributionId1\",\"operationalEnvId\":\"TEST_operationalEnvironmentId\",\"serviceModelVersionId\":\"TEST_serviceModelVersionId\",\"requestId\":\"TEST_requestIdOrig\",\"distributionIdStatus\":\"SENT\",\"distributionIdErrorReason\":\"\",\"createTime\":null,\"modifyTime\":null}"))
294 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
295 .withStatus(HttpStatus.SC_OK)));
297 stubFor(post(urlPathEqualTo("/operationalEnvServiceModelStatus/"))
298 .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\":{}}"))
299 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
300 .withStatus(HttpStatus.SC_OK)));
302 activateVnfStatus.execute(requestId, request);
306 public void executionTest_ERROR_Status_And_RETRY_And_RetryZero() throws JsonProcessingException {
308 OperationalEnvServiceModelStatus serviceModelDb = new OperationalEnvServiceModelStatus();
309 serviceModelDb.setRequestId(requestIdOrig);
310 serviceModelDb.setServiceModelVersionId(serviceModelVersionId);
311 serviceModelDb.setWorkloadContext(workloadContext);
312 serviceModelDb.setRecoveryAction(recoveryActionRetry);
313 serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
314 serviceModelDb.setRetryCount(retryCountZero);
315 serviceModelDb.setServiceModelVersionDistrStatus(statusError);
317 OperationalEnvDistributionStatus distributionDb = new OperationalEnvDistributionStatus();
318 distributionDb.setDistributionId(sdcDistributionId);
319 distributionDb.setRequestId(requestIdOrig);
320 distributionDb.setOperationalEnvId(operationalEnvironmentId);
321 distributionDb.setDistributionIdStatus(statusError);
322 distributionDb.setServiceModelVersionId(serviceModelVersionId);
323 distributionDb.setDistributionIdErrorReason(null);
327 // prepare distribution obj
328 Distribution distribution = new Distribution();
329 distribution.setStatus(Status.DISTRIBUTION_COMPLETE_ERROR);
330 request.setDistribution(distribution);
331 request.setDistributionId(sdcDistributionId);
332 request.setOperationalEnvironmentId(operationalEnvironmentId);
334 JSONObject jsonObject = new JSONObject();
335 jsonObject.put("statusCode", "202");
336 jsonObject.put("message", "Success");
337 jsonObject.put("distributionId", sdcDistributionId);
339 InfraActiveRequests iar = new InfraActiveRequests();
340 iar.setRequestId(requestIdOrig);
341 iar.setRequestStatus("PENDING");
343 stubFor(get(urlPathEqualTo("/operationalEnvServiceModelStatus/search/findOneByOperationalEnvIdAndServiceModelVersionId"))
344 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
345 .withBody(mapper.writeValueAsString(serviceModelDb))
346 .withStatus(HttpStatus.SC_OK)));
347 stubFor(get(urlPathEqualTo("/operationalEnvDistributionStatus/"+sdcDistributionId))
348 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
349 .withBody(mapper.writeValueAsString(distributionDb))
350 .withStatus(HttpStatus.SC_OK)));
351 stubFor(get(urlPathEqualTo("/infraActiveRequests/"+requestIdOrig))
352 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
353 .withBody(mapper.writeValueAsString(iar))
354 .withStatus(HttpStatus.SC_OK)));
356 stubFor(post(urlPathMatching("/sdc/v1/catalog/services/.*"))
357 .willReturn(aResponse().withHeader("Content-Type", "application/json").withBody(jsonObject.toString()).withStatus(HttpStatus.SC_ACCEPTED)));
359 stubFor(post(urlPathEqualTo("/operationalEnvServiceModelStatus/"))
360 .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\":{}}"))
361 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
362 .withStatus(HttpStatus.SC_OK)));
365 activateVnfStatus.execute(requestId, request);
366 }catch(ApiException e){
367 assertThat(e.getMessage(), startsWith("Overall Activation process is a Failure. "));
368 assertEquals(e.getHttpResponseCode(), HttpStatus.SC_BAD_REQUEST);
369 assertEquals(e.getMessageID(), ErrorNumbers.SVC_DETAILED_SERVICE_ERROR);
376 public void executionTest_ERROR_Status_And_RETRY_And_ErrorSdc() throws JsonProcessingException {
378 OperationalEnvServiceModelStatus serviceModelDb = new OperationalEnvServiceModelStatus();
379 serviceModelDb.setRequestId(requestIdOrig);
380 serviceModelDb.setServiceModelVersionId(serviceModelVersionId);
381 serviceModelDb.setWorkloadContext(workloadContext);
382 serviceModelDb.setRecoveryAction(recoveryActionRetry);
383 serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
384 serviceModelDb.setRetryCount(retryCountThree);
385 serviceModelDb.setServiceModelVersionDistrStatus(statusError);
387 OperationalEnvDistributionStatus distributionDb = new OperationalEnvDistributionStatus();
388 distributionDb.setDistributionId(sdcDistributionId);
389 distributionDb.setRequestId(requestIdOrig);
390 distributionDb.setOperationalEnvId(operationalEnvironmentId);
391 distributionDb.setDistributionIdStatus(statusError);
392 distributionDb.setServiceModelVersionId(serviceModelVersionId);
393 distributionDb.setDistributionIdErrorReason(null);
397 // prepare distribution obj
398 Distribution distribution = new Distribution();
399 distribution.setStatus(Status.DISTRIBUTION_COMPLETE_ERROR);
400 distribution.setErrorReason("Unable to process.");
401 request.setDistribution(distribution);
402 request.setDistributionId(sdcDistributionId);
403 request.setOperationalEnvironmentId(operationalEnvironmentId);
406 JSONObject jsonMessages = new JSONObject();
407 jsonMessages.put("statusCode", "409");
408 jsonMessages.put("message", "Undefined Error Message!");
409 jsonMessages.put("messageId", "SVC4675");
410 jsonMessages.put("text", "Error: Service state is invalid for this action.");
411 JSONObject jsonServException = new JSONObject();
412 jsonServException.put("serviceException", jsonMessages);
413 JSONObject jsonErrorRequest = new JSONObject();
414 jsonErrorRequest.put("requestError", jsonServException);
416 InfraActiveRequests iar = new InfraActiveRequests();
417 iar.setRequestId(requestIdOrig);
418 iar.setRequestStatus("PENDING");
419 stubFor(get(urlPathEqualTo("/operationalEnvServiceModelStatus/search/findOneByOperationalEnvIdAndServiceModelVersionId"))
420 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
421 .withBody(mapper.writeValueAsString(serviceModelDb))
422 .withStatus(HttpStatus.SC_OK)));
423 stubFor(get(urlPathEqualTo("/operationalEnvDistributionStatus/"+sdcDistributionId))
424 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
425 .withBody(mapper.writeValueAsString(distributionDb))
426 .withStatus(HttpStatus.SC_OK)));
427 stubFor(get(urlPathEqualTo("/infraActiveRequests/"+requestIdOrig))
428 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
429 .withBody(mapper.writeValueAsString(iar))
430 .withStatus(HttpStatus.SC_OK)));
431 stubFor(post(urlPathEqualTo("/infraActiveRequests/"))
432 .withRequestBody(containing("operationalEnvId\":\"TEST_operationalEnvironmentId\""))
433 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
434 .withStatus(HttpStatus.SC_OK)));
436 stubFor(post(urlPathMatching("/sdc/v1/catalog/services/.*"))
437 .willReturn(aResponse().withHeader("Content-Type", "application/json").withBody(jsonMessages.toString()).withStatus(HttpStatus.SC_CONFLICT)));
440 activateVnfStatus.execute(requestId, request);
441 }catch(ApiException e){
442 assertThat(e.getMessage(), startsWith("Failure calling SDC: statusCode: "));
443 assertEquals(e.getHttpResponseCode(), HttpStatus.SC_BAD_REQUEST);
444 assertEquals(e.getMessageID(), ErrorNumbers.SVC_DETAILED_SERVICE_ERROR);
449 public void executionTest_ERROR_Status_And_SKIP() throws Exception {
451 OperationalEnvServiceModelStatus serviceModelDb = new OperationalEnvServiceModelStatus();
452 serviceModelDb.setRequestId(requestIdOrig);
453 serviceModelDb.setServiceModelVersionId(serviceModelVersionId);
454 serviceModelDb.setWorkloadContext(workloadContext);
455 serviceModelDb.setRecoveryAction(recoveryActionSkip);
456 serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
457 serviceModelDb.setRetryCount(retryCountThree);
458 serviceModelDb.setServiceModelVersionDistrStatus(statusError);
460 OperationalEnvDistributionStatus distributionDb = new OperationalEnvDistributionStatus();
461 distributionDb.setDistributionId(sdcDistributionId);
462 distributionDb.setRequestId(requestIdOrig);
463 distributionDb.setOperationalEnvId(operationalEnvironmentId);
464 distributionDb.setDistributionIdStatus(statusError);
465 distributionDb.setServiceModelVersionId(serviceModelVersionId);
466 distributionDb.setDistributionIdErrorReason(null);
468 // prepare distribution obj
469 OperationalEnvDistributionStatus distributionStatus = new OperationalEnvDistributionStatus(sdcDistributionId,operationalEnvironmentId,serviceModelVersionId);
470 distributionStatus.setDistributionIdStatus(Status.DISTRIBUTION_COMPLETE_ERROR.name());
472 Distribution distribution = new Distribution();
473 distribution.setStatus(Status.DISTRIBUTION_COMPLETE_ERROR);
474 request.setDistribution(distribution);
475 request.setDistributionId(sdcDistributionId);
476 request.setOperationalEnvironmentId(operationalEnvironmentId);
477 InfraActiveRequests iar = new InfraActiveRequests();
478 iar.setRequestId(requestIdOrig);
479 iar.setRequestStatus("PENDING");
481 stubFor(get(urlPathEqualTo("/operationalEnvServiceModelStatus/search/findOneByOperationalEnvIdAndServiceModelVersionId"))
482 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
483 .withBody(mapper.writeValueAsString(serviceModelDb))
484 .withStatus(HttpStatus.SC_OK)));
485 stubFor(get(urlPathEqualTo("/operationalEnvDistributionStatus/"+sdcDistributionId))
486 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
487 .withBody(mapper.writeValueAsString(distributionDb))
488 .withStatus(HttpStatus.SC_OK)));
489 stubFor(get(urlPathEqualTo("/infraActiveRequests/"+requestIdOrig))
490 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
491 .withBody(mapper.writeValueAsString(iar))
492 .withStatus(HttpStatus.SC_OK)));
493 stubFor(post(urlPathEqualTo("/operationalEnvServiceModelStatus/"))
494 .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,\"handler\":{}}"))
495 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
496 .withStatus(HttpStatus.SC_OK)));
498 stubFor(post(urlPathEqualTo("/operationalEnvDistributionStatus/"))
499 .withRequestBody(equalTo("{\"distributionId\":\"TEST_distributionId\",\"operationalEnvId\":\"TEST_operationalEnvironmentId\",\"serviceModelVersionId\":\"TEST_serviceModelVersionId\",\"requestId\":\"TEST_requestIdOrig\",\"distributionIdStatus\":\"DISTRIBUTION_COMPLETE_OK\",\"distributionIdErrorReason\":\"\",\"createTime\":null,\"modifyTime\":null,\"handler\":{}}"))
500 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
501 .withStatus(HttpStatus.SC_OK)));
503 activateVnfStatus.execute(requestId, request);
508 public void executionTest_ERROR_Status_And_ABORT() throws JsonProcessingException {
510 OperationalEnvServiceModelStatus serviceModelDb = new OperationalEnvServiceModelStatus();
511 serviceModelDb.setRequestId(requestIdOrig);
512 serviceModelDb.setServiceModelVersionId(serviceModelVersionId);
513 serviceModelDb.setWorkloadContext(workloadContext);
514 serviceModelDb.setRecoveryAction(recoveryActionAbort);
515 serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
516 serviceModelDb.setRetryCount(retryCountThree);
517 serviceModelDb.setServiceModelVersionDistrStatus(statusError);
519 OperationalEnvDistributionStatus distributionDb = new OperationalEnvDistributionStatus();
520 distributionDb.setDistributionId(sdcDistributionId);
521 distributionDb.setRequestId(requestIdOrig);
522 distributionDb.setOperationalEnvId(operationalEnvironmentId);
523 distributionDb.setDistributionIdStatus(statusError);
524 distributionDb.setServiceModelVersionId(serviceModelVersionId);
525 distributionDb.setDistributionIdErrorReason(null);
529 // prepare distribution obj
530 Distribution distribution = new Distribution();
531 distribution.setStatus(Status.DISTRIBUTION_COMPLETE_ERROR);
532 request.setDistribution(distribution);
533 request.setDistributionId(sdcDistributionId);
534 request.setOperationalEnvironmentId(operationalEnvironmentId);
536 InfraActiveRequests iar = new InfraActiveRequests();
537 iar.setRequestId(requestIdOrig);
538 iar.setRequestStatus("PENDING");
540 stubFor(get(urlPathEqualTo("/operationalEnvServiceModelStatus/search/findOneByOperationalEnvIdAndServiceModelVersionId"))
541 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
542 .withBody(mapper.writeValueAsString(serviceModelDb))
543 .withStatus(HttpStatus.SC_OK)));
544 stubFor(get(urlPathEqualTo("/operationalEnvDistributionStatus/"+sdcDistributionId))
545 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
546 .withBody(mapper.writeValueAsString(distributionDb))
547 .withStatus(HttpStatus.SC_OK)));
548 stubFor(get(urlPathEqualTo("/infraActiveRequests/"+requestIdOrig))
549 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
550 .withBody(mapper.writeValueAsString(iar))
551 .withStatus(HttpStatus.SC_OK)));
553 stubFor(post(urlPathEqualTo("/operationalEnvDistributionStatus/"))
554 .withRequestBody(containing("{\"distributionId\":\"TEST_distributionId\",\"operationalEnvId\":\"TEST_operationalEnvironmentId\",\"serviceModelVersionId\":\"TEST_serviceModelVersionId\",\"requestId\":\"TEST_requestIdOrig\",\"distributionIdStatus\":\"DISTRIBUTION_COMPLETE_ERROR\""))
555 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
556 .withStatus(HttpStatus.SC_OK)));
558 stubFor(post(urlPathEqualTo("/operationalEnvServiceModelStatus/"))
559 .withRequestBody(containing("{\"requestId\":\"TEST_requestIdOrig\",\"operationalEnvId\":\"TEST_operationalEnvironmentId\",\"serviceModelVersionId\":\"TEST_serviceModelVersionId\",\"serviceModelVersionDistrStatus\":\"DISTRIBUTION_COMPLETE_ERROR\""))
560 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
561 .withStatus(HttpStatus.SC_OK)));
563 activateVnfStatus.execute(requestId, request);
564 }catch(ApiException e) {
565 assertThat(e.getMessage(), startsWith("Overall Activation process is a Failure. "));
566 assertEquals(e.getHttpResponseCode(), HttpStatus.SC_BAD_REQUEST);
567 assertEquals(e.getMessageID(), ErrorNumbers.SVC_DETAILED_SERVICE_ERROR);
574 public void callSDClientForRetryTest_202() throws Exception {
575 OperationalEnvServiceModelStatus serviceModelDb = new OperationalEnvServiceModelStatus();
576 serviceModelDb.setRequestId(requestIdOrig);
577 serviceModelDb.setServiceModelVersionId(serviceModelVersionId);
578 serviceModelDb.setWorkloadContext(workloadContext);
579 serviceModelDb.setRecoveryAction(recoveryActionRetry);
580 serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
581 serviceModelDb.setRetryCount(retryCountThree);
582 serviceModelDb.setServiceModelVersionDistrStatus(statusSent);
584 OperationalEnvDistributionStatus distributionDb = new OperationalEnvDistributionStatus();
585 distributionDb.setDistributionId(sdcDistributionId);
586 distributionDb.setRequestId(requestIdOrig);
587 distributionDb.setOperationalEnvId(operationalEnvironmentId);
588 distributionDb.setDistributionIdStatus(statusSent);
589 distributionDb.setServiceModelVersionId(serviceModelVersionId);
590 distributionDb.setDistributionIdErrorReason(null);
594 JSONObject jsonObject = new JSONObject();
595 jsonObject.put("statusCode", "202");
596 jsonObject.put("message", "Success");
597 jsonObject.put("distributionId", sdcDistributionId1);
599 // prepare distribution obj
600 Distribution distribution = new Distribution();
601 distribution.setStatus(Status.DISTRIBUTION_COMPLETE_OK);
602 request.setDistribution(distribution);
603 request.setDistributionId(sdcDistributionId);
604 request.setOperationalEnvironmentId(operationalEnvironmentId);
606 stubFor(post(urlPathMatching("/sdc/v1/catalog/services/TEST_serviceModelVersionId/distr.*"))
607 .willReturn(aResponse().withHeader("Content-Type", "application/json").withBody(jsonObject.toString()).withStatus(HttpStatus.SC_ACCEPTED)));
609 JSONObject jsonResponse = activateVnfStatus.callSDClientForRetry(distributionDb, serviceModelDb, distribution);
611 assertEquals("TEST_distributionId1", jsonResponse.get("distributionId"));
612 assertEquals("Success", jsonResponse.get("message"));
613 assertEquals("202", jsonResponse.get("statusCode"));