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.post;
25 import static com.github.tomakehurst.wiremock.client.WireMock.stubFor;
26 import static com.github.tomakehurst.wiremock.client.WireMock.urlPathMatching;
27 import static org.hamcrest.Matchers.startsWith;
28 import static org.junit.Assert.assertEquals;
29 import static org.junit.Assert.assertNotNull;
30 import static org.junit.Assert.assertNull;
31 import static org.junit.Assert.assertThat;
32 import static org.junit.Assert.assertTrue;
34 import org.apache.http.HttpStatus;
35 import org.json.JSONObject;
36 import org.junit.After;
37 import org.junit.Ignore;
38 import org.junit.Rule;
39 import org.junit.Test;
40 import org.junit.rules.ExpectedException;
41 import org.onap.so.apihandler.common.ErrorNumbers;
42 import org.onap.so.apihandlerinfra.BaseTest;
43 import org.onap.so.apihandlerinfra.exceptions.ApiException;
44 import org.onap.so.apihandlerinfra.tenantisolation.CloudOrchestrationRequest;
45 import org.onap.so.apihandlerinfra.tenantisolation.helpers.ActivateVnfDBHelper;
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.db.request.beans.InfraActiveRequests;
50 import org.onap.so.db.request.beans.OperationalEnvDistributionStatus;
51 import org.onap.so.db.request.beans.OperationalEnvServiceModelStatus;
52 import org.onap.so.db.request.data.repository.InfraActiveRequestsRepository;
53 import org.onap.so.db.request.data.repository.OperationalEnvDistributionStatusRepository;
54 import org.onap.so.db.request.data.repository.OperationalEnvServiceModelStatusRepository;
55 import org.springframework.beans.factory.annotation.Autowired;
57 public class ActivateVnfStatusOperationalEnvironmentTest extends BaseTest{
60 private OperationalEnvDistributionStatusRepository distributionDbRepository;
62 private OperationalEnvServiceModelStatusRepository serviceModelDbRepository;
64 private ActivateVnfStatusOperationalEnvironment activateVnfStatus;
66 private InfraActiveRequestsRepository infraActiveRequestsRepository;
68 private ActivateVnfDBHelper dbHelper;
70 public ExpectedException thrown = ExpectedException.none();
72 private String requestId = "TEST_requestId";
73 private String requestIdOrig = "TEST_requestIdOrig";
74 private String operationalEnvironmentId = "TEST_operationalEnvironmentId";
75 private CloudOrchestrationRequest request = new CloudOrchestrationRequest();
76 private String workloadContext = "TEST_workloadContext";
77 private String recoveryActionRetry = "RETRY";
78 private String recoveryActionAbort = "ABORT";
79 private String recoveryActionSkip = "SKIP";
80 private String serviceModelVersionId = "TEST_serviceModelVersionId";
81 private String serviceModelVersionId1 = "TEST_serviceModelVersionId1";
82 private int retryCountThree = 3;
83 private int retryCountTwo = 2;
84 private int retryCountZero = 0;
85 private String sdcDistributionId = "TEST_distributionId";
86 private String sdcDistributionId1 = "TEST_distributionId1";
87 private String statusOk = Status.DISTRIBUTION_COMPLETE_OK.toString();
88 private String statusError = DistributionStatus.DISTRIBUTION_COMPLETE_ERROR.toString();
89 private String statusSent = "SENT";
92 public void after() throws Exception {
93 distributionDbRepository.deleteAll();
94 serviceModelDbRepository.deleteAll();
98 public void checkOrUpdateOverallStatusTest_Ok() throws Exception {
100 // two entries, both status Ok & retry 0
101 OperationalEnvServiceModelStatus serviceModelDb = new OperationalEnvServiceModelStatus();
102 serviceModelDb.setRequestId(requestIdOrig);
103 serviceModelDb.setServiceModelVersionId(serviceModelVersionId);
104 serviceModelDb.setWorkloadContext(workloadContext);
105 serviceModelDb.setRecoveryAction(recoveryActionRetry);
106 serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
107 serviceModelDb.setRetryCount(retryCountZero);
108 serviceModelDb.setServiceModelVersionDistrStatus(statusOk);
109 serviceModelDbRepository.saveAndFlush(serviceModelDb);
111 serviceModelDb.setRequestId(requestIdOrig);
112 serviceModelDb.setServiceModelVersionId(serviceModelVersionId1);
113 serviceModelDb.setWorkloadContext(workloadContext);
114 serviceModelDb.setRecoveryAction(recoveryActionRetry);
115 serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
116 serviceModelDb.setRetryCount(retryCountZero);
117 serviceModelDb.setServiceModelVersionDistrStatus(statusOk);
118 serviceModelDbRepository.saveAndFlush(serviceModelDb);
120 InfraActiveRequests iar = new InfraActiveRequests();
121 iar.setRequestId(requestIdOrig);
122 iar.setRequestStatus("PENDING");
123 infraActiveRequestsRepository.saveAndFlush(iar);
125 activateVnfStatus.checkOrUpdateOverallStatus(operationalEnvironmentId, requestIdOrig, serviceModelDbRepository);
127 // overall is success
128 InfraActiveRequests infraActiveRequest = infraActiveRequestsRepository.findOne(requestIdOrig);
129 assertNotNull(infraActiveRequest);
130 assertTrue(infraActiveRequest.getStatusMessage().contains("SUCCESSFUL"));
131 assertTrue(infraActiveRequest.getRequestStatus().contains("COMPLETE"));
134 infraActiveRequestsRepository.delete(requestIdOrig);
138 public void checkOrUpdateOverallStatusTest_Error() throws Exception {
140 OperationalEnvServiceModelStatus serviceModelDb = new OperationalEnvServiceModelStatus();
141 serviceModelDb.setRequestId(requestIdOrig);
142 serviceModelDb.setServiceModelVersionId(serviceModelVersionId);
143 serviceModelDb.setWorkloadContext(workloadContext);
144 serviceModelDb.setRecoveryAction(recoveryActionRetry);
145 serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
146 serviceModelDb.setRetryCount(retryCountZero);
147 serviceModelDb.setServiceModelVersionDistrStatus(statusError);
148 serviceModelDbRepository.saveAndFlush(serviceModelDb);
150 InfraActiveRequests iar = new InfraActiveRequests();
151 iar.setRequestId(requestIdOrig);
152 iar.setRequestStatus("PENDING");
153 infraActiveRequestsRepository.saveAndFlush(iar);
156 activateVnfStatus.checkOrUpdateOverallStatus(operationalEnvironmentId, requestIdOrig, serviceModelDbRepository);
157 }catch(ApiException e){
158 assertThat(e.getMessage(), startsWith("Overall Activation process is a Failure. "));
159 assertEquals(e.getHttpResponseCode(), HttpStatus.SC_BAD_REQUEST);
160 assertEquals(e.getMessageID(), ErrorNumbers.SVC_DETAILED_SERVICE_ERROR);
163 // overall is failure
164 InfraActiveRequests infraActiveRequest = infraActiveRequestsRepository.findOne(requestIdOrig);
165 assertNotNull(infraActiveRequest);
166 assertTrue(infraActiveRequest.getStatusMessage().contains("FAILURE"));
167 assertTrue(infraActiveRequest.getRequestStatus().contains("FAILED"));
170 infraActiveRequestsRepository.delete(requestIdOrig);
174 public void checkOrUpdateOverallStatusTest_Waiting() throws Exception {
176 OperationalEnvServiceModelStatus serviceModelDb = new OperationalEnvServiceModelStatus();
177 serviceModelDb.setRequestId(requestIdOrig);
178 serviceModelDb.setServiceModelVersionId(serviceModelVersionId);
179 serviceModelDb.setWorkloadContext(workloadContext);
180 serviceModelDb.setRecoveryAction(recoveryActionRetry);
181 serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
182 serviceModelDb.setRetryCount(retryCountTwo);
183 serviceModelDb.setServiceModelVersionDistrStatus(statusError);
184 serviceModelDbRepository.saveAndFlush(serviceModelDb);
186 activateVnfStatus.checkOrUpdateOverallStatus(operationalEnvironmentId, requestIdOrig, serviceModelDbRepository);
188 // do nothing, waiting for more
189 assertNull(infraActiveRequestsRepository.findOne(requestIdOrig));
193 public void executionTest_Ok() throws Exception {
195 OperationalEnvServiceModelStatus serviceModelDb = new OperationalEnvServiceModelStatus();
196 serviceModelDb.setRequestId(requestIdOrig);
197 serviceModelDb.setServiceModelVersionId(serviceModelVersionId);
198 serviceModelDb.setWorkloadContext(workloadContext);
199 serviceModelDb.setRecoveryAction(recoveryActionRetry);
200 serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
201 serviceModelDb.setRetryCount(retryCountThree);
202 serviceModelDb.setServiceModelVersionDistrStatus(statusSent);
203 serviceModelDbRepository.saveAndFlush(serviceModelDb);
205 OperationalEnvDistributionStatus distributionDb = new OperationalEnvDistributionStatus();
206 distributionDb.setDistributionId(sdcDistributionId);
207 distributionDb.setRequestId(requestIdOrig);
208 distributionDb.setOperationalEnvId(operationalEnvironmentId);
209 distributionDb.setDistributionIdStatus(statusSent);
210 distributionDb.setServiceModelVersionId(serviceModelVersionId);
211 distributionDb.setDistributionIdErrorReason(null);
212 distributionDbRepository.saveAndFlush(distributionDb);
216 // prepare distribution obj
217 Distribution distribution = new Distribution();
218 distribution.setStatus(Status.DISTRIBUTION_COMPLETE_OK);
219 request.setDistribution(distribution);
220 request.setDistributionId(sdcDistributionId);
221 request.setOperationalEnvironmentId(operationalEnvironmentId);
223 InfraActiveRequests iar = new InfraActiveRequests();
224 iar.setRequestId(requestIdOrig);
225 iar.setRequestStatus("PENDING");
226 infraActiveRequestsRepository.saveAndFlush(iar);
228 activateVnfStatus.execute(requestId, request, distributionDbRepository, serviceModelDbRepository);
231 OperationalEnvDistributionStatus distStatus = distributionDbRepository.findOne(sdcDistributionId);
232 assertNotNull(distStatus);
233 assertEquals(operationalEnvironmentId, distStatus.getOperationalEnvId());
234 assertEquals(statusOk, distStatus.getDistributionIdStatus());
235 assertEquals("", distStatus.getDistributionIdErrorReason());
238 OperationalEnvServiceModelStatus servStatus = serviceModelDbRepository.findOneByOperationalEnvIdAndServiceModelVersionId(operationalEnvironmentId, serviceModelVersionId);
239 assertNotNull(servStatus);
240 assertEquals(operationalEnvironmentId, servStatus.getOperationalEnvId());
241 assertEquals(statusOk, servStatus.getServiceModelVersionDistrStatus());
242 assertEquals(new Integer(retryCountZero), servStatus.getRetryCount());
244 InfraActiveRequests infraActiveRequest = infraActiveRequestsRepository.findOne(requestIdOrig);
245 assertNotNull(infraActiveRequest);
246 assertTrue(infraActiveRequest.getStatusMessage().contains("SUCCESSFUL"));
247 assertTrue(infraActiveRequest.getRequestStatus().contains("COMPLETE"));
250 infraActiveRequestsRepository.delete(requestIdOrig);
255 public void executionTest_ERROR_Status_And_RETRY() throws Exception {
257 OperationalEnvServiceModelStatus serviceModelDb = new OperationalEnvServiceModelStatus();
258 serviceModelDb.setRequestId(requestIdOrig);
259 serviceModelDb.setServiceModelVersionId(serviceModelVersionId);
260 serviceModelDb.setWorkloadContext(workloadContext);
261 serviceModelDb.setRecoveryAction(recoveryActionRetry);
262 serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
263 serviceModelDb.setRetryCount(retryCountThree);
264 serviceModelDb.setServiceModelVersionDistrStatus(statusError);
265 serviceModelDbRepository.saveAndFlush(serviceModelDb);
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);
274 distributionDbRepository.saveAndFlush(distributionDb);
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 stubFor(post(urlPathMatching("/sdc/v1/catalog/services/.*"))
293 .willReturn(aResponse().withHeader("Content-Type", "application/json").withBody(jsonObject.toString()).withStatus(HttpStatus.SC_ACCEPTED)));
295 activateVnfStatus.execute(requestId, request, distributionDbRepository, serviceModelDbRepository);
297 // old distributionId, status error
298 OperationalEnvDistributionStatus distStatus = distributionDbRepository.findOne(sdcDistributionId);
299 assertNotNull(distStatus);
300 assertEquals(operationalEnvironmentId, distStatus.getOperationalEnvId());
301 assertEquals(statusError, distStatus.getDistributionIdStatus());
302 assertEquals("Unable to process.", distStatus.getDistributionIdErrorReason());
304 // new distributionId, status sent
305 OperationalEnvDistributionStatus newDistStatus = distributionDbRepository.findOne(sdcDistributionId1);
306 assertNotNull(distStatus);
307 assertEquals(operationalEnvironmentId, newDistStatus.getOperationalEnvId());
308 assertEquals(statusSent, newDistStatus.getDistributionIdStatus());
309 assertEquals("", newDistStatus.getDistributionIdErrorReason());
311 // count is less 1, status sent
312 OperationalEnvServiceModelStatus servStatus = serviceModelDbRepository.findOneByOperationalEnvIdAndServiceModelVersionId(operationalEnvironmentId, serviceModelVersionId);
313 assertNotNull(servStatus);
314 assertEquals(operationalEnvironmentId, servStatus.getOperationalEnvId());
315 assertEquals(statusSent, servStatus.getServiceModelVersionDistrStatus());
316 assertEquals(new Integer(retryCountTwo), servStatus.getRetryCount());
319 assertNull(infraActiveRequestsRepository.findOne(requestIdOrig));
324 public void executionTest_ERROR_Status_And_RETRY_And_RetryZero() throws Exception {
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 serviceModelDbRepository.saveAndFlush(serviceModelDb);
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);
343 distributionDbRepository.saveAndFlush(distributionDb);
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");
362 infraActiveRequestsRepository.saveAndFlush(iar);
364 stubFor(post(urlPathMatching("/sdc/v1/catalog/services/.*"))
365 .willReturn(aResponse().withHeader("Content-Type", "application/json").withBody(jsonObject.toString()).withStatus(HttpStatus.SC_ACCEPTED)));
368 activateVnfStatus.execute(requestId, request, distributionDbRepository, serviceModelDbRepository);
369 }catch(ApiException e){
370 assertThat(e.getMessage(), startsWith("Overall Activation process is a Failure. "));
371 assertEquals(e.getHttpResponseCode(), HttpStatus.SC_BAD_REQUEST);
372 assertEquals(e.getMessageID(), ErrorNumbers.SVC_DETAILED_SERVICE_ERROR);
375 OperationalEnvDistributionStatus distStatus = distributionDbRepository.findOne(sdcDistributionId);
376 assertNotNull(distStatus);
377 assertEquals(operationalEnvironmentId, distStatus.getOperationalEnvId());
378 assertEquals(statusError, distStatus.getDistributionIdStatus());
379 assertEquals(null, distStatus.getDistributionIdErrorReason());
381 OperationalEnvServiceModelStatus servStatus = serviceModelDbRepository.findOneByOperationalEnvIdAndServiceModelVersionId(operationalEnvironmentId, serviceModelVersionId);
382 assertNotNull(servStatus);
383 assertEquals(operationalEnvironmentId, servStatus.getOperationalEnvId());
384 assertEquals(statusError, servStatus.getServiceModelVersionDistrStatus());
385 assertEquals(new Integer(retryCountZero), servStatus.getRetryCount());
387 // Retry count is zero, no more retry. all retry failed.
388 InfraActiveRequests infraActiveRequest = infraActiveRequestsRepository.findOne(requestIdOrig);
389 assertNotNull(infraActiveRequest);
390 assertTrue(infraActiveRequest.getStatusMessage().contains("FAILURE"));
391 assertTrue(infraActiveRequest.getRequestStatus().contains("FAILED"));
394 infraActiveRequestsRepository.delete(requestIdOrig);
399 public void executionTest_ERROR_Status_And_RETRY_And_ErrorSdc() throws Exception {
401 OperationalEnvServiceModelStatus serviceModelDb = new OperationalEnvServiceModelStatus();
402 serviceModelDb.setRequestId(requestIdOrig);
403 serviceModelDb.setServiceModelVersionId(serviceModelVersionId);
404 serviceModelDb.setWorkloadContext(workloadContext);
405 serviceModelDb.setRecoveryAction(recoveryActionRetry);
406 serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
407 serviceModelDb.setRetryCount(retryCountThree);
408 serviceModelDb.setServiceModelVersionDistrStatus(statusError);
409 serviceModelDbRepository.saveAndFlush(serviceModelDb);
411 OperationalEnvDistributionStatus distributionDb = new OperationalEnvDistributionStatus();
412 distributionDb.setDistributionId(sdcDistributionId);
413 distributionDb.setRequestId(requestIdOrig);
414 distributionDb.setOperationalEnvId(operationalEnvironmentId);
415 distributionDb.setDistributionIdStatus(statusError);
416 distributionDb.setServiceModelVersionId(serviceModelVersionId);
417 distributionDb.setDistributionIdErrorReason(null);
418 distributionDbRepository.saveAndFlush(distributionDb);
422 // prepare distribution obj
423 Distribution distribution = new Distribution();
424 distribution.setStatus(Status.DISTRIBUTION_COMPLETE_ERROR);
425 distribution.setErrorReason("Unable to process.");
426 request.setDistribution(distribution);
427 request.setDistributionId(sdcDistributionId);
428 request.setOperationalEnvironmentId(operationalEnvironmentId);
431 JSONObject jsonMessages = new JSONObject();
432 jsonMessages.put("statusCode", "409");
433 jsonMessages.put("message", "Undefined Error Message!");
434 jsonMessages.put("messageId", "SVC4675");
435 jsonMessages.put("text", "Error: Service state is invalid for this action.");
436 JSONObject jsonServException = new JSONObject();
437 jsonServException.put("serviceException", jsonMessages);
438 JSONObject jsonErrorRequest = new JSONObject();
439 jsonErrorRequest.put("requestError", jsonServException);
441 InfraActiveRequests iar = new InfraActiveRequests();
442 iar.setRequestId(requestIdOrig);
443 iar.setRequestStatus("PENDING");
444 infraActiveRequestsRepository.saveAndFlush(iar);
446 stubFor(post(urlPathMatching("/sdc/v1/catalog/services/.*"))
447 .willReturn(aResponse().withHeader("Content-Type", "application/json").withBody(jsonMessages.toString()).withStatus(HttpStatus.SC_CONFLICT)));
450 activateVnfStatus.execute(requestId, request, distributionDbRepository, serviceModelDbRepository);
451 }catch(ApiException e){
452 assertThat(e.getMessage(), startsWith("Failure calling SDC: statusCode: "));
453 assertEquals(e.getHttpResponseCode(), HttpStatus.SC_BAD_REQUEST);
454 assertEquals(e.getMessageID(), ErrorNumbers.SVC_DETAILED_SERVICE_ERROR);
456 // status as-is / no changes
457 OperationalEnvDistributionStatus distStatus = distributionDbRepository.findOne(sdcDistributionId);
458 assertNotNull(distStatus);
459 assertEquals(operationalEnvironmentId, distStatus.getOperationalEnvId());
460 assertEquals(statusError, distStatus.getDistributionIdStatus());
461 assertEquals(null, distStatus.getDistributionIdErrorReason());
463 // status as-is / no changes
464 OperationalEnvServiceModelStatus servStatus = serviceModelDbRepository.findOneByOperationalEnvIdAndServiceModelVersionId(operationalEnvironmentId, serviceModelVersionId);
465 assertNotNull(servStatus);
466 assertEquals(operationalEnvironmentId, servStatus.getOperationalEnvId());
467 assertEquals(statusError, servStatus.getServiceModelVersionDistrStatus());
468 assertEquals(new Integer(retryCountThree), servStatus.getRetryCount());
470 InfraActiveRequests infraActiveRequest = infraActiveRequestsRepository.findOne(requestIdOrig);
471 assertNotNull(infraActiveRequest);
472 assertTrue(infraActiveRequest.getStatusMessage().contains("FAILURE"));
473 assertTrue(infraActiveRequest.getRequestStatus().contains("FAILED"));
474 assertTrue(infraActiveRequest.getStatusMessage().contains("Undefined Error Message!"));
477 infraActiveRequestsRepository.delete(requestIdOrig);
482 public void executionTest_ERROR_Status_And_SKIP() throws Exception {
484 OperationalEnvServiceModelStatus serviceModelDb = new OperationalEnvServiceModelStatus();
485 serviceModelDb.setRequestId(requestIdOrig);
486 serviceModelDb.setServiceModelVersionId(serviceModelVersionId);
487 serviceModelDb.setWorkloadContext(workloadContext);
488 serviceModelDb.setRecoveryAction(recoveryActionSkip);
489 serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
490 serviceModelDb.setRetryCount(retryCountThree);
491 serviceModelDb.setServiceModelVersionDistrStatus(statusError);
492 serviceModelDbRepository.saveAndFlush(serviceModelDb);
494 OperationalEnvDistributionStatus distributionDb = new OperationalEnvDistributionStatus();
495 distributionDb.setDistributionId(sdcDistributionId);
496 distributionDb.setRequestId(requestIdOrig);
497 distributionDb.setOperationalEnvId(operationalEnvironmentId);
498 distributionDb.setDistributionIdStatus(statusError);
499 distributionDb.setServiceModelVersionId(serviceModelVersionId);
500 distributionDb.setDistributionIdErrorReason(null);
501 distributionDbRepository.saveAndFlush(distributionDb);
505 // prepare distribution obj
506 Distribution distribution = new Distribution();
507 distribution.setStatus(Status.DISTRIBUTION_COMPLETE_ERROR);
508 request.setDistribution(distribution);
509 request.setDistributionId(sdcDistributionId);
510 request.setOperationalEnvironmentId(operationalEnvironmentId);
512 InfraActiveRequests iar = new InfraActiveRequests();
513 iar.setRequestId(requestIdOrig);
514 iar.setRequestStatus("PENDING");
515 infraActiveRequestsRepository.saveAndFlush(iar);
517 activateVnfStatus.execute(requestId, request, distributionDbRepository, serviceModelDbRepository);
519 InfraActiveRequests infraActiveRequest = infraActiveRequestsRepository.findOne(requestIdOrig);
520 assertNotNull(infraActiveRequest);
521 assertTrue(infraActiveRequest.getStatusMessage().contains("SUCCESSFUL"));
522 assertTrue(infraActiveRequest.getRequestStatus().contains("COMPLETE"));
525 infraActiveRequestsRepository.delete(requestIdOrig);
530 public void executionTest_ERROR_Status_And_ABORT() throws Exception {
532 OperationalEnvServiceModelStatus serviceModelDb = new OperationalEnvServiceModelStatus();
533 serviceModelDb.setRequestId(requestIdOrig);
534 serviceModelDb.setServiceModelVersionId(serviceModelVersionId);
535 serviceModelDb.setWorkloadContext(workloadContext);
536 serviceModelDb.setRecoveryAction(recoveryActionAbort);
537 serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
538 serviceModelDb.setRetryCount(retryCountThree);
539 serviceModelDb.setServiceModelVersionDistrStatus(statusError);
540 serviceModelDbRepository.saveAndFlush(serviceModelDb);
542 OperationalEnvDistributionStatus distributionDb = new OperationalEnvDistributionStatus();
543 distributionDb.setDistributionId(sdcDistributionId);
544 distributionDb.setRequestId(requestIdOrig);
545 distributionDb.setOperationalEnvId(operationalEnvironmentId);
546 distributionDb.setDistributionIdStatus(statusError);
547 distributionDb.setServiceModelVersionId(serviceModelVersionId);
548 distributionDb.setDistributionIdErrorReason(null);
549 distributionDbRepository.saveAndFlush(distributionDb);
553 // prepare distribution obj
554 Distribution distribution = new Distribution();
555 distribution.setStatus(Status.DISTRIBUTION_COMPLETE_ERROR);
556 request.setDistribution(distribution);
557 request.setDistributionId(sdcDistributionId);
558 request.setOperationalEnvironmentId(operationalEnvironmentId);
560 InfraActiveRequests iar = new InfraActiveRequests();
561 iar.setRequestId(requestIdOrig);
562 iar.setRequestStatus("PENDING");
563 infraActiveRequestsRepository.saveAndFlush(iar);
566 activateVnfStatus.execute(requestId, request, distributionDbRepository, serviceModelDbRepository);
567 }catch(ApiException e){
568 assertThat(e.getMessage(), startsWith("Overall Activation process is a Failure. "));
569 assertEquals(e.getHttpResponseCode(), HttpStatus.SC_BAD_REQUEST);
570 assertEquals(e.getMessageID(), ErrorNumbers.SVC_DETAILED_SERVICE_ERROR);
573 InfraActiveRequests infraActiveRequest = infraActiveRequestsRepository.findOne(requestIdOrig);
574 assertNotNull(infraActiveRequest);
575 assertTrue(infraActiveRequest.getStatusMessage().contains("FAILURE"));
576 assertTrue(infraActiveRequest.getRequestStatus().contains("FAILED"));
579 infraActiveRequestsRepository.delete(requestIdOrig);
585 public void callSDClientForRetryTest_202() throws Exception {
586 OperationalEnvServiceModelStatus serviceModelDb = new OperationalEnvServiceModelStatus();
587 serviceModelDb.setRequestId(requestIdOrig);
588 serviceModelDb.setServiceModelVersionId(serviceModelVersionId);
589 serviceModelDb.setWorkloadContext(workloadContext);
590 serviceModelDb.setRecoveryAction(recoveryActionRetry);
591 serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
592 serviceModelDb.setRetryCount(retryCountThree);
593 serviceModelDb.setServiceModelVersionDistrStatus(statusSent);
595 OperationalEnvDistributionStatus distributionDb = new OperationalEnvDistributionStatus();
596 distributionDb.setDistributionId(sdcDistributionId);
597 distributionDb.setRequestId(requestIdOrig);
598 distributionDb.setOperationalEnvId(operationalEnvironmentId);
599 distributionDb.setDistributionIdStatus(statusSent);
600 distributionDb.setServiceModelVersionId(serviceModelVersionId);
601 distributionDb.setDistributionIdErrorReason(null);
605 JSONObject jsonObject = new JSONObject();
606 jsonObject.put("statusCode", "202");
607 jsonObject.put("message", "Success");
608 jsonObject.put("distributionId", sdcDistributionId1);
610 // prepare distribution obj
611 Distribution distribution = new Distribution();
612 distribution.setStatus(Status.DISTRIBUTION_COMPLETE_OK);
613 request.setDistribution(distribution);
614 request.setDistributionId(sdcDistributionId);
615 request.setOperationalEnvironmentId(operationalEnvironmentId);
617 stubFor(post(urlPathMatching("/sdc/v1/catalog/services/TEST_serviceModelVersionId/distr.*"))
618 .willReturn(aResponse().withHeader("Content-Type", "application/json").withBody(jsonObject.toString()).withStatus(HttpStatus.SC_ACCEPTED)));
620 JSONObject jsonResponse = activateVnfStatus.callSDClientForRetry(distributionDb, serviceModelDb, distribution,
621 distributionDbRepository, serviceModelDbRepository);
623 assertEquals("TEST_distributionId1", jsonResponse.get("distributionId"));
624 assertEquals("Success", jsonResponse.get("message"));
625 assertEquals("202", jsonResponse.get("statusCode"));
627 // insert new record, status sent
628 OperationalEnvDistributionStatus distStatus = distributionDbRepository.findOne(sdcDistributionId1);
629 assertNotNull(distStatus);
630 assertEquals(operationalEnvironmentId, distStatus.getOperationalEnvId());
631 assertEquals(statusSent, distStatus.getDistributionIdStatus());
633 // insert new record, status sent
634 OperationalEnvServiceModelStatus servStatus = serviceModelDbRepository.findOneByOperationalEnvIdAndServiceModelVersionId(operationalEnvironmentId, serviceModelVersionId);
635 assertNotNull(servStatus);
636 assertEquals(statusSent, servStatus.getServiceModelVersionDistrStatus());
637 assertEquals(operationalEnvironmentId, servStatus.getOperationalEnvId());