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;
33 import static org.junit.Assert.assertNotNull;
34 import static org.junit.Assert.assertNull;
35 import static org.junit.Assert.assertThat;
37 import com.fasterxml.jackson.core.JsonProcessingException;
38 import com.fasterxml.jackson.databind.ObjectMapper;
39 import org.apache.http.HttpStatus;
40 import org.json.JSONObject;
41 import org.junit.Rule;
42 import org.junit.After;
43 import org.junit.Test;
44 import org.junit.Ignore;
45 import org.junit.rules.ExpectedException;
46 import org.onap.so.apihandler.common.ErrorNumbers;
47 import org.onap.so.apihandlerinfra.BaseTest;
48 import org.onap.so.apihandlerinfra.exceptions.ApiException;
49 import org.onap.so.apihandlerinfra.tenantisolation.CloudOrchestrationRequest;
50 import org.onap.so.apihandlerinfra.tenantisolation.helpers.ActivateVnfDBHelper;
51 import org.onap.so.apihandlerinfra.tenantisolationbeans.Distribution;
52 import org.onap.so.apihandlerinfra.tenantisolationbeans.DistributionStatus;
53 import org.onap.so.apihandlerinfra.tenantisolationbeans.Status;
54 import org.onap.so.db.request.beans.InfraActiveRequests;
55 import org.onap.so.db.request.beans.OperationalEnvDistributionStatus;
56 import org.onap.so.db.request.beans.OperationalEnvServiceModelStatus;
57 import org.onap.so.db.request.data.repository.InfraActiveRequestsRepository;
58 import org.onap.so.db.request.data.repository.OperationalEnvDistributionStatusRepository;
59 import org.onap.so.db.request.data.repository.OperationalEnvServiceModelStatusRepository;
60 import org.springframework.beans.factory.annotation.Autowired;
62 import javax.ws.rs.core.HttpHeaders;
63 import javax.ws.rs.core.MediaType;
65 public class ActivateVnfStatusOperationalEnvironmentTest extends BaseTest{
68 private ActivateVnfStatusOperationalEnvironment activateVnfStatus;
70 private InfraActiveRequestsRepository infraActiveRequestsRepository;
72 private ActivateVnfDBHelper dbHelper;
74 public ExpectedException thrown = ExpectedException.none();
76 private final String requestId = "TEST_requestId";
77 private final String requestIdOrig = "TEST_requestIdOrig";
78 private final String operationalEnvironmentId = "TEST_operationalEnvironmentId";
79 private final CloudOrchestrationRequest request = new CloudOrchestrationRequest();
80 private final String workloadContext = "TEST_workloadContext";
81 private final String recoveryActionRetry = "RETRY";
82 private final String recoveryActionAbort = "ABORT";
83 private final String recoveryActionSkip = "SKIP";
84 private final String serviceModelVersionId = "TEST_serviceModelVersionId";
85 private final String serviceModelVersionId1 = "TEST_serviceModelVersionId1";
86 private final int retryCountThree = 3;
87 private final int retryCountTwo = 2;
88 private final int retryCountZero = 0;
89 private final String sdcDistributionId = "TEST_distributionId";
90 private final String sdcDistributionId1 = "TEST_distributionId1";
91 private final String statusOk = Status.DISTRIBUTION_COMPLETE_OK.toString();
92 private final String statusError = DistributionStatus.DISTRIBUTION_COMPLETE_ERROR.toString();
93 private final String statusSent = "SENT";
95 private final ObjectMapper mapper = new ObjectMapper();
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);
110 serviceModelDb.setRequestId(requestIdOrig);
111 serviceModelDb.setServiceModelVersionId(serviceModelVersionId1);
112 serviceModelDb.setWorkloadContext(workloadContext);
113 serviceModelDb.setRecoveryAction(recoveryActionRetry);
114 serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
115 serviceModelDb.setRetryCount(retryCountZero);
116 serviceModelDb.setServiceModelVersionDistrStatus(statusOk);
118 InfraActiveRequests iar = new InfraActiveRequests();
119 iar.setRequestId(requestIdOrig);
120 iar.setRequestStatus("PENDING");
122 stubFor(get(urlPathEqualTo("/operationalEnvServiceModelStatus/search/findOneByOperationalEnvIdAndServiceModelVersionId"))
123 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
124 .withBody(mapper.writeValueAsString(serviceModelDb))
125 .withStatus(HttpStatus.SC_OK)));
126 stubFor(get(urlPathEqualTo("/infraActiveRequests/"+requestIdOrig))
127 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
128 .withBody(mapper.writeValueAsString(iar))
129 .withStatus(HttpStatus.SC_OK)));
131 activateVnfStatus.checkOrUpdateOverallStatus(operationalEnvironmentId, requestIdOrig);
133 // overall is success
137 public void checkOrUpdateOverallStatusTest_Error() throws JsonProcessingException {
139 OperationalEnvServiceModelStatus serviceModelDb = new OperationalEnvServiceModelStatus();
140 serviceModelDb.setRequestId(requestIdOrig);
141 serviceModelDb.setServiceModelVersionId(serviceModelVersionId);
142 serviceModelDb.setWorkloadContext(workloadContext);
143 serviceModelDb.setRecoveryAction(recoveryActionRetry);
144 serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
145 serviceModelDb.setRetryCount(retryCountZero);
146 serviceModelDb.setServiceModelVersionDistrStatus(statusError);
147 stubFor(get(urlPathEqualTo("/operationalEnvServiceModelStatus/search/findOneByOperationalEnvIdAndServiceModelVersionId"))
148 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
149 .withBody(mapper.writeValueAsString(serviceModelDb))
150 .withStatus(HttpStatus.SC_OK)));
152 InfraActiveRequests iar = new InfraActiveRequests();
153 iar.setRequestId(requestIdOrig);
154 iar.setRequestStatus("PENDING");
156 stubFor(get(urlPathEqualTo("/infraActiveRequests/"+requestIdOrig))
157 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
158 .withBody(mapper.writeValueAsString(iar))
159 .withStatus(HttpStatus.SC_OK)));
162 activateVnfStatus.checkOrUpdateOverallStatus(operationalEnvironmentId, requestIdOrig);
163 }catch(ApiException e){
164 assertThat(e.getMessage(), startsWith("Overall Activation process is a Failure. "));
165 assertEquals(e.getHttpResponseCode(), HttpStatus.SC_BAD_REQUEST);
166 assertEquals(e.getMessageID(), ErrorNumbers.SVC_DETAILED_SERVICE_ERROR);
172 public void checkOrUpdateOverallStatusTest_Waiting() throws Exception {
174 OperationalEnvServiceModelStatus serviceModelDb = new OperationalEnvServiceModelStatus();
175 serviceModelDb.setRequestId(requestIdOrig);
176 serviceModelDb.setServiceModelVersionId(serviceModelVersionId);
177 serviceModelDb.setWorkloadContext(workloadContext);
178 serviceModelDb.setRecoveryAction(recoveryActionRetry);
179 serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
180 serviceModelDb.setRetryCount(retryCountTwo);
181 serviceModelDb.setServiceModelVersionDistrStatus(statusError);
182 stubFor(get(urlPathEqualTo("/operationalEnvServiceModelStatus/search/findOneByOperationalEnvIdAndServiceModelVersionId"))
183 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
184 .withBody(mapper.writeValueAsString(serviceModelDb))
185 .withStatus(HttpStatus.SC_OK)));
187 activateVnfStatus.checkOrUpdateOverallStatus(operationalEnvironmentId, requestIdOrig);
189 // do nothing, waiting for more
190 assertNull(infraActiveRequestsRepository.findOne(requestIdOrig));
194 public void executionTest_Ok() throws Exception {
196 OperationalEnvServiceModelStatus serviceModelDb = new OperationalEnvServiceModelStatus();
197 serviceModelDb.setRequestId(requestIdOrig);
198 serviceModelDb.setServiceModelVersionId(serviceModelVersionId);
199 serviceModelDb.setWorkloadContext(workloadContext);
200 serviceModelDb.setRecoveryAction(recoveryActionRetry);
201 serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
202 serviceModelDb.setRetryCount(retryCountThree);
203 serviceModelDb.setServiceModelVersionDistrStatus(statusSent);
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);
213 // prepare distribution obj
214 Distribution distribution = new Distribution();
215 distribution.setStatus(Status.DISTRIBUTION_COMPLETE_OK);
216 request.setDistribution(distribution);
217 request.setDistributionId(sdcDistributionId);
218 request.setOperationalEnvironmentId(operationalEnvironmentId);
220 InfraActiveRequests iar = new InfraActiveRequests();
221 iar.setRequestId(requestIdOrig);
222 iar.setRequestStatus("PENDING");
224 stubFor(get(urlPathEqualTo("/operationalEnvServiceModelStatus/search/findOneByOperationalEnvIdAndServiceModelVersionId"))
225 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
226 .withBody(mapper.writeValueAsString(serviceModelDb))
227 .withStatus(HttpStatus.SC_OK)));
228 stubFor(get(urlPathEqualTo("/operationalEnvDistributionStatus/"+sdcDistributionId))
229 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
230 .withBody(mapper.writeValueAsString(distributionDb))
231 .withStatus(HttpStatus.SC_OK)));
232 stubFor(get(urlPathEqualTo("/infraActiveRequests/"+requestIdOrig))
233 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
234 .withBody(mapper.writeValueAsString(iar))
235 .withStatus(HttpStatus.SC_OK)));
236 stubFor(post(urlPathEqualTo("/operationalEnvServiceModelStatus/"))
237 .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\":{}}"))
238 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
239 .withStatus(HttpStatus.SC_OK)));
241 stubFor(post(urlPathEqualTo("/operationalEnvDistributionStatus/"))
242 .withRequestBody(equalTo("{\"distributionId\":\"TEST_distributionId\",\"operationalEnvId\":\"TEST_operationalEnvironmentId\",\"serviceModelVersionId\":\"TEST_serviceModelVersionId\",\"requestId\":\"TEST_requestIdOrig\",\"distributionIdStatus\":\"DISTRIBUTION_COMPLETE_OK\",\"distributionIdErrorReason\":\"\",\"createTime\":null,\"modifyTime\":null,\"handler\":{}}"))
243 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
244 .withStatus(HttpStatus.SC_OK)));
246 activateVnfStatus.execute(requestId, request);
250 public void executionTest_ERROR_Status_And_RETRY() throws Exception {
252 OperationalEnvServiceModelStatus serviceModelDb = new OperationalEnvServiceModelStatus();
253 serviceModelDb.setRequestId(requestIdOrig);
254 serviceModelDb.setServiceModelVersionId(serviceModelVersionId);
255 serviceModelDb.setWorkloadContext(workloadContext);
256 serviceModelDb.setRecoveryAction(recoveryActionRetry);
257 serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
258 serviceModelDb.setRetryCount(retryCountThree);
259 serviceModelDb.setServiceModelVersionDistrStatus(statusError);
260 stubFor(get(urlPathEqualTo("/operationalEnvServiceModelStatus/search/findOneByOperationalEnvIdAndServiceModelVersionId"))
261 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
262 .withBody(mapper.writeValueAsString(serviceModelDb))
263 .withStatus(HttpStatus.SC_OK)));
265 OperationalEnvDistributionStatus distributionDb = new OperationalEnvDistributionStatus();
266 distributionDb.setDistributionId(sdcDistributionId);
267 distributionDb.setRequestId(requestIdOrig);
268 distributionDb.setOperationalEnvId(operationalEnvironmentId);
269 distributionDb.setDistributionIdStatus(statusError);
270 distributionDb.setServiceModelVersionId(serviceModelVersionId);
271 distributionDb.setDistributionIdErrorReason(null);
276 // prepare new distribution obj
277 Distribution distribution = new Distribution();
278 distribution.setStatus(Status.DISTRIBUTION_COMPLETE_ERROR);
279 distribution.setErrorReason("Unable to process.");
280 request.setDistribution(distribution);
281 request.setDistributionId(sdcDistributionId);
282 request.setOperationalEnvironmentId(operationalEnvironmentId);
284 // prepare sdc return data
285 JSONObject jsonObject = new JSONObject();
286 jsonObject.put("statusCode", "202");
287 jsonObject.put("message", "Success");
288 jsonObject.put("distributionId", sdcDistributionId1);
290 stubFor(post(urlPathMatching("/sdc/v1/catalog/services/.*"))
291 .willReturn(aResponse().withHeader("Content-Type", "application/json").withBody(jsonObject.toString()).withStatus(HttpStatus.SC_ACCEPTED)));
292 stubFor(get(urlPathEqualTo("/operationalEnvServiceModelStatus/search/findOneByOperationalEnvIdAndServiceModelVersionId"))
293 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
294 .withBody(mapper.writeValueAsString(serviceModelDb))
295 .withStatus(HttpStatus.SC_OK)));
296 stubFor(get(urlPathEqualTo("/operationalEnvDistributionStatus/"+sdcDistributionId))
297 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
298 .withBody(mapper.writeValueAsString(distributionDb))
299 .withStatus(HttpStatus.SC_OK)));
300 stubFor(post(urlPathEqualTo("/operationalEnvDistributionStatus/"))
301 .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\":{}}"))
302 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
303 .withStatus(HttpStatus.SC_OK)));
305 stubFor(post(urlPathEqualTo("/operationalEnvDistributionStatus/"))
306 .withRequestBody(equalTo("{\"distributionId\":\"TEST_distributionId1\",\"operationalEnvId\":\"TEST_operationalEnvironmentId\",\"serviceModelVersionId\":\"TEST_serviceModelVersionId\",\"requestId\":\"TEST_requestIdOrig\",\"distributionIdStatus\":\"SENT\",\"distributionIdErrorReason\":\"\",\"createTime\":null,\"modifyTime\":null}"))
307 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
308 .withStatus(HttpStatus.SC_OK)));
310 stubFor(post(urlPathEqualTo("/operationalEnvServiceModelStatus/"))
311 .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\":{}}"))
312 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
313 .withStatus(HttpStatus.SC_OK)));
315 activateVnfStatus.execute(requestId, request);
319 public void executionTest_ERROR_Status_And_RETRY_And_RetryZero() throws JsonProcessingException {
321 OperationalEnvServiceModelStatus serviceModelDb = new OperationalEnvServiceModelStatus();
322 serviceModelDb.setRequestId(requestIdOrig);
323 serviceModelDb.setServiceModelVersionId(serviceModelVersionId);
324 serviceModelDb.setWorkloadContext(workloadContext);
325 serviceModelDb.setRecoveryAction(recoveryActionRetry);
326 serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
327 serviceModelDb.setRetryCount(retryCountZero);
328 serviceModelDb.setServiceModelVersionDistrStatus(statusError);
330 OperationalEnvDistributionStatus distributionDb = new OperationalEnvDistributionStatus();
331 distributionDb.setDistributionId(sdcDistributionId);
332 distributionDb.setRequestId(requestIdOrig);
333 distributionDb.setOperationalEnvId(operationalEnvironmentId);
334 distributionDb.setDistributionIdStatus(statusError);
335 distributionDb.setServiceModelVersionId(serviceModelVersionId);
336 distributionDb.setDistributionIdErrorReason(null);
340 // prepare distribution obj
341 Distribution distribution = new Distribution();
342 distribution.setStatus(Status.DISTRIBUTION_COMPLETE_ERROR);
343 request.setDistribution(distribution);
344 request.setDistributionId(sdcDistributionId);
345 request.setOperationalEnvironmentId(operationalEnvironmentId);
347 JSONObject jsonObject = new JSONObject();
348 jsonObject.put("statusCode", "202");
349 jsonObject.put("message", "Success");
350 jsonObject.put("distributionId", sdcDistributionId);
352 InfraActiveRequests iar = new InfraActiveRequests();
353 iar.setRequestId(requestIdOrig);
354 iar.setRequestStatus("PENDING");
356 stubFor(get(urlPathEqualTo("/operationalEnvServiceModelStatus/search/findOneByOperationalEnvIdAndServiceModelVersionId"))
357 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
358 .withBody(mapper.writeValueAsString(serviceModelDb))
359 .withStatus(HttpStatus.SC_OK)));
360 stubFor(get(urlPathEqualTo("/operationalEnvDistributionStatus/"+sdcDistributionId))
361 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
362 .withBody(mapper.writeValueAsString(distributionDb))
363 .withStatus(HttpStatus.SC_OK)));
364 stubFor(get(urlPathEqualTo("/infraActiveRequests/"+requestIdOrig))
365 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
366 .withBody(mapper.writeValueAsString(iar))
367 .withStatus(HttpStatus.SC_OK)));
369 stubFor(post(urlPathMatching("/sdc/v1/catalog/services/.*"))
370 .willReturn(aResponse().withHeader("Content-Type", "application/json").withBody(jsonObject.toString()).withStatus(HttpStatus.SC_ACCEPTED)));
372 stubFor(post(urlPathEqualTo("/operationalEnvServiceModelStatus/"))
373 .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\":{}}"))
374 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
375 .withStatus(HttpStatus.SC_OK)));
378 activateVnfStatus.execute(requestId, request);
379 }catch(ApiException e){
380 assertThat(e.getMessage(), startsWith("Overall Activation process is a Failure. "));
381 assertEquals(e.getHttpResponseCode(), HttpStatus.SC_BAD_REQUEST);
382 assertEquals(e.getMessageID(), ErrorNumbers.SVC_DETAILED_SERVICE_ERROR);
389 public void executionTest_ERROR_Status_And_RETRY_And_ErrorSdc() throws JsonProcessingException {
391 OperationalEnvServiceModelStatus serviceModelDb = new OperationalEnvServiceModelStatus();
392 serviceModelDb.setRequestId(requestIdOrig);
393 serviceModelDb.setServiceModelVersionId(serviceModelVersionId);
394 serviceModelDb.setWorkloadContext(workloadContext);
395 serviceModelDb.setRecoveryAction(recoveryActionRetry);
396 serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
397 serviceModelDb.setRetryCount(retryCountThree);
398 serviceModelDb.setServiceModelVersionDistrStatus(statusError);
400 OperationalEnvDistributionStatus distributionDb = new OperationalEnvDistributionStatus();
401 distributionDb.setDistributionId(sdcDistributionId);
402 distributionDb.setRequestId(requestIdOrig);
403 distributionDb.setOperationalEnvId(operationalEnvironmentId);
404 distributionDb.setDistributionIdStatus(statusError);
405 distributionDb.setServiceModelVersionId(serviceModelVersionId);
406 distributionDb.setDistributionIdErrorReason(null);
410 // prepare distribution obj
411 Distribution distribution = new Distribution();
412 distribution.setStatus(Status.DISTRIBUTION_COMPLETE_ERROR);
413 distribution.setErrorReason("Unable to process.");
414 request.setDistribution(distribution);
415 request.setDistributionId(sdcDistributionId);
416 request.setOperationalEnvironmentId(operationalEnvironmentId);
419 JSONObject jsonMessages = new JSONObject();
420 jsonMessages.put("statusCode", "409");
421 jsonMessages.put("message", "Undefined Error Message!");
422 jsonMessages.put("messageId", "SVC4675");
423 jsonMessages.put("text", "Error: Service state is invalid for this action.");
424 JSONObject jsonServException = new JSONObject();
425 jsonServException.put("serviceException", jsonMessages);
426 JSONObject jsonErrorRequest = new JSONObject();
427 jsonErrorRequest.put("requestError", jsonServException);
429 InfraActiveRequests iar = new InfraActiveRequests();
430 iar.setRequestId(requestIdOrig);
431 iar.setRequestStatus("PENDING");
432 stubFor(get(urlPathEqualTo("/operationalEnvServiceModelStatus/search/findOneByOperationalEnvIdAndServiceModelVersionId"))
433 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
434 .withBody(mapper.writeValueAsString(serviceModelDb))
435 .withStatus(HttpStatus.SC_OK)));
436 stubFor(get(urlPathEqualTo("/operationalEnvDistributionStatus/"+sdcDistributionId))
437 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
438 .withBody(mapper.writeValueAsString(distributionDb))
439 .withStatus(HttpStatus.SC_OK)));
440 stubFor(get(urlPathEqualTo("/infraActiveRequests/"+requestIdOrig))
441 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
442 .withBody(mapper.writeValueAsString(iar))
443 .withStatus(HttpStatus.SC_OK)));
444 stubFor(post(urlPathEqualTo("/infraActiveRequests/"))
445 .withRequestBody(containing("operationalEnvId\":\"TEST_operationalEnvironmentId\""))
446 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
447 .withStatus(HttpStatus.SC_OK)));
449 stubFor(post(urlPathMatching("/sdc/v1/catalog/services/.*"))
450 .willReturn(aResponse().withHeader("Content-Type", "application/json").withBody(jsonMessages.toString()).withStatus(HttpStatus.SC_CONFLICT)));
453 activateVnfStatus.execute(requestId, request);
454 }catch(ApiException e){
455 assertThat(e.getMessage(), startsWith("Failure calling SDC: statusCode: "));
456 assertEquals(e.getHttpResponseCode(), HttpStatus.SC_BAD_REQUEST);
457 assertEquals(e.getMessageID(), ErrorNumbers.SVC_DETAILED_SERVICE_ERROR);
462 public void executionTest_ERROR_Status_And_SKIP() throws Exception {
464 OperationalEnvServiceModelStatus serviceModelDb = new OperationalEnvServiceModelStatus();
465 serviceModelDb.setRequestId(requestIdOrig);
466 serviceModelDb.setServiceModelVersionId(serviceModelVersionId);
467 serviceModelDb.setWorkloadContext(workloadContext);
468 serviceModelDb.setRecoveryAction(recoveryActionSkip);
469 serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
470 serviceModelDb.setRetryCount(retryCountThree);
471 serviceModelDb.setServiceModelVersionDistrStatus(statusError);
473 OperationalEnvDistributionStatus distributionDb = new OperationalEnvDistributionStatus();
474 distributionDb.setDistributionId(sdcDistributionId);
475 distributionDb.setRequestId(requestIdOrig);
476 distributionDb.setOperationalEnvId(operationalEnvironmentId);
477 distributionDb.setDistributionIdStatus(statusError);
478 distributionDb.setServiceModelVersionId(serviceModelVersionId);
479 distributionDb.setDistributionIdErrorReason(null);
481 // prepare distribution obj
482 OperationalEnvDistributionStatus distributionStatus = new OperationalEnvDistributionStatus(sdcDistributionId,operationalEnvironmentId,serviceModelVersionId);
483 distributionStatus.setDistributionIdStatus(Status.DISTRIBUTION_COMPLETE_ERROR.name());
485 Distribution distribution = new Distribution();
486 distribution.setStatus(Status.DISTRIBUTION_COMPLETE_ERROR);
487 request.setDistribution(distribution);
488 request.setDistributionId(sdcDistributionId);
489 request.setOperationalEnvironmentId(operationalEnvironmentId);
490 InfraActiveRequests iar = new InfraActiveRequests();
491 iar.setRequestId(requestIdOrig);
492 iar.setRequestStatus("PENDING");
494 stubFor(get(urlPathEqualTo("/operationalEnvServiceModelStatus/search/findOneByOperationalEnvIdAndServiceModelVersionId"))
495 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
496 .withBody(mapper.writeValueAsString(serviceModelDb))
497 .withStatus(HttpStatus.SC_OK)));
498 stubFor(get(urlPathEqualTo("/operationalEnvDistributionStatus/"+sdcDistributionId))
499 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
500 .withBody(mapper.writeValueAsString(distributionDb))
501 .withStatus(HttpStatus.SC_OK)));
502 stubFor(get(urlPathEqualTo("/infraActiveRequests/"+requestIdOrig))
503 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
504 .withBody(mapper.writeValueAsString(iar))
505 .withStatus(HttpStatus.SC_OK)));
506 stubFor(post(urlPathEqualTo("/operationalEnvServiceModelStatus/"))
507 .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\":{}}"))
508 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
509 .withStatus(HttpStatus.SC_OK)));
511 stubFor(post(urlPathEqualTo("/operationalEnvDistributionStatus/"))
512 .withRequestBody(equalTo("{\"distributionId\":\"TEST_distributionId\",\"operationalEnvId\":\"TEST_operationalEnvironmentId\",\"serviceModelVersionId\":\"TEST_serviceModelVersionId\",\"requestId\":\"TEST_requestIdOrig\",\"distributionIdStatus\":\"DISTRIBUTION_COMPLETE_OK\",\"distributionIdErrorReason\":\"\",\"createTime\":null,\"modifyTime\":null,\"handler\":{}}"))
513 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
514 .withStatus(HttpStatus.SC_OK)));
516 activateVnfStatus.execute(requestId, request);
521 public void executionTest_ERROR_Status_And_ABORT() throws JsonProcessingException {
523 OperationalEnvServiceModelStatus serviceModelDb = new OperationalEnvServiceModelStatus();
524 serviceModelDb.setRequestId(requestIdOrig);
525 serviceModelDb.setServiceModelVersionId(serviceModelVersionId);
526 serviceModelDb.setWorkloadContext(workloadContext);
527 serviceModelDb.setRecoveryAction(recoveryActionAbort);
528 serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
529 serviceModelDb.setRetryCount(retryCountThree);
530 serviceModelDb.setServiceModelVersionDistrStatus(statusError);
532 OperationalEnvDistributionStatus distributionDb = new OperationalEnvDistributionStatus();
533 distributionDb.setDistributionId(sdcDistributionId);
534 distributionDb.setRequestId(requestIdOrig);
535 distributionDb.setOperationalEnvId(operationalEnvironmentId);
536 distributionDb.setDistributionIdStatus(statusError);
537 distributionDb.setServiceModelVersionId(serviceModelVersionId);
538 distributionDb.setDistributionIdErrorReason(null);
542 // prepare distribution obj
543 Distribution distribution = new Distribution();
544 distribution.setStatus(Status.DISTRIBUTION_COMPLETE_ERROR);
545 request.setDistribution(distribution);
546 request.setDistributionId(sdcDistributionId);
547 request.setOperationalEnvironmentId(operationalEnvironmentId);
549 InfraActiveRequests iar = new InfraActiveRequests();
550 iar.setRequestId(requestIdOrig);
551 iar.setRequestStatus("PENDING");
553 stubFor(get(urlPathEqualTo("/operationalEnvServiceModelStatus/search/findOneByOperationalEnvIdAndServiceModelVersionId"))
554 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
555 .withBody(mapper.writeValueAsString(serviceModelDb))
556 .withStatus(HttpStatus.SC_OK)));
557 stubFor(get(urlPathEqualTo("/operationalEnvDistributionStatus/"+sdcDistributionId))
558 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
559 .withBody(mapper.writeValueAsString(distributionDb))
560 .withStatus(HttpStatus.SC_OK)));
561 stubFor(get(urlPathEqualTo("/infraActiveRequests/"+requestIdOrig))
562 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
563 .withBody(mapper.writeValueAsString(iar))
564 .withStatus(HttpStatus.SC_OK)));
566 stubFor(post(urlPathEqualTo("/operationalEnvDistributionStatus/"))
567 .withRequestBody(containing("{\"distributionId\":\"TEST_distributionId\",\"operationalEnvId\":\"TEST_operationalEnvironmentId\",\"serviceModelVersionId\":\"TEST_serviceModelVersionId\",\"requestId\":\"TEST_requestIdOrig\",\"distributionIdStatus\":\"DISTRIBUTION_COMPLETE_ERROR\""))
568 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
569 .withStatus(HttpStatus.SC_OK)));
571 stubFor(post(urlPathEqualTo("/operationalEnvServiceModelStatus/"))
572 .withRequestBody(containing("{\"requestId\":\"TEST_requestIdOrig\",\"operationalEnvId\":\"TEST_operationalEnvironmentId\",\"serviceModelVersionId\":\"TEST_serviceModelVersionId\",\"serviceModelVersionDistrStatus\":\"DISTRIBUTION_COMPLETE_ERROR\""))
573 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
574 .withStatus(HttpStatus.SC_OK)));
576 activateVnfStatus.execute(requestId, request);
577 }catch(ApiException e) {
578 assertThat(e.getMessage(), startsWith("Overall Activation process is a Failure. "));
579 assertEquals(e.getHttpResponseCode(), HttpStatus.SC_BAD_REQUEST);
580 assertEquals(e.getMessageID(), ErrorNumbers.SVC_DETAILED_SERVICE_ERROR);
587 public void callSDClientForRetryTest_202() throws Exception {
588 OperationalEnvServiceModelStatus serviceModelDb = new OperationalEnvServiceModelStatus();
589 serviceModelDb.setRequestId(requestIdOrig);
590 serviceModelDb.setServiceModelVersionId(serviceModelVersionId);
591 serviceModelDb.setWorkloadContext(workloadContext);
592 serviceModelDb.setRecoveryAction(recoveryActionRetry);
593 serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
594 serviceModelDb.setRetryCount(retryCountThree);
595 serviceModelDb.setServiceModelVersionDistrStatus(statusSent);
597 OperationalEnvDistributionStatus distributionDb = new OperationalEnvDistributionStatus();
598 distributionDb.setDistributionId(sdcDistributionId);
599 distributionDb.setRequestId(requestIdOrig);
600 distributionDb.setOperationalEnvId(operationalEnvironmentId);
601 distributionDb.setDistributionIdStatus(statusSent);
602 distributionDb.setServiceModelVersionId(serviceModelVersionId);
603 distributionDb.setDistributionIdErrorReason(null);
607 JSONObject jsonObject = new JSONObject();
608 jsonObject.put("statusCode", "202");
609 jsonObject.put("message", "Success");
610 jsonObject.put("distributionId", sdcDistributionId1);
612 // prepare distribution obj
613 Distribution distribution = new Distribution();
614 distribution.setStatus(Status.DISTRIBUTION_COMPLETE_OK);
615 request.setDistribution(distribution);
616 request.setDistributionId(sdcDistributionId);
617 request.setOperationalEnvironmentId(operationalEnvironmentId);
619 stubFor(post(urlPathMatching("/sdc/v1/catalog/services/TEST_serviceModelVersionId/distr.*"))
620 .willReturn(aResponse().withHeader("Content-Type", "application/json").withBody(jsonObject.toString()).withStatus(HttpStatus.SC_ACCEPTED)));
622 JSONObject jsonResponse = activateVnfStatus.callSDClientForRetry(distributionDb, serviceModelDb, distribution);
624 assertEquals("TEST_distributionId1", jsonResponse.get("distributionId"));
625 assertEquals("Success", jsonResponse.get("message"));
626 assertEquals("202", jsonResponse.get("statusCode"));