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.put;
27 import static com.github.tomakehurst.wiremock.client.WireMock.stubFor;
28 import static com.github.tomakehurst.wiremock.client.WireMock.urlPathMatching;
29 import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo;
30 import static com.github.tomakehurst.wiremock.client.WireMock.equalTo;
31 import static com.github.tomakehurst.wiremock.client.WireMock.containing;
32 import static org.hamcrest.Matchers.startsWith;
33 import static org.junit.Assert.assertEquals;
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.Test;
43 import org.junit.Ignore;
44 import org.junit.rules.ExpectedException;
45 import org.onap.so.apihandler.common.ErrorNumbers;
46 import org.onap.so.apihandlerinfra.BaseTest;
47 import org.onap.so.apihandlerinfra.exceptions.ApiException;
48 import org.onap.so.apihandlerinfra.tenantisolation.CloudOrchestrationRequest;
49 import org.onap.so.apihandlerinfra.tenantisolationbeans.Distribution;
50 import org.onap.so.apihandlerinfra.tenantisolationbeans.DistributionStatus;
51 import org.onap.so.apihandlerinfra.tenantisolationbeans.Status;
52 import org.onap.so.client.aai.AAIVersion;
53 import org.onap.so.db.request.beans.InfraActiveRequests;
54 import org.onap.so.db.request.beans.OperationalEnvDistributionStatus;
55 import org.onap.so.db.request.beans.OperationalEnvServiceModelStatus;
56 import org.springframework.beans.factory.annotation.Autowired;
58 import javax.ws.rs.core.HttpHeaders;
59 import javax.ws.rs.core.MediaType;
61 public class ActivateVnfStatusOperationalEnvironmentTest extends BaseTest{
64 private ActivateVnfStatusOperationalEnvironment activateVnfStatus;
66 public ExpectedException thrown = ExpectedException.none();
68 private final String requestId = "TEST_requestId";
69 private final String requestIdOrig = "TEST_requestIdOrig";
70 private final String operationalEnvironmentId = "TEST_operationalEnvironmentId";
71 private final String vnfOperationalEnvironmentId = "VNF_operationalEnvironmentId";
72 private final CloudOrchestrationRequest request = new CloudOrchestrationRequest();
73 private final String workloadContext = "TEST_workloadContext";
74 private final String recoveryActionRetry = "RETRY";
75 private final String recoveryActionAbort = "ABORT";
76 private final String recoveryActionSkip = "SKIP";
77 private final String serviceModelVersionId = "TEST_serviceModelVersionId";
78 private final String serviceModelVersionId1 = "TEST_serviceModelVersionId1";
79 private final int retryCountThree = 3;
80 private final int retryCountTwo = 2;
81 private final int retryCountZero = 0;
82 private final String sdcDistributionId1 = "TEST_distributionId1";
83 private final String sdcDistributionId = "TEST_distributionId";
84 private final String statusOk = Status.DISTRIBUTION_COMPLETE_OK.toString();
85 private final String statusError = DistributionStatus.DISTRIBUTION_COMPLETE_ERROR.toString();
86 private final String statusSent = "SENT";
87 String json = "{\"operational-environment-status\" : \"INACTIVE\"}";
89 private final ObjectMapper mapper = new ObjectMapper();
92 public void checkOrUpdateOverallStatusTest_Ok() throws Exception {
94 // two entries, both status Ok & retry 0
95 OperationalEnvServiceModelStatus serviceModelDb = new OperationalEnvServiceModelStatus();
96 serviceModelDb.setRequestId(requestIdOrig);
97 serviceModelDb.setServiceModelVersionId(serviceModelVersionId);
98 serviceModelDb.setWorkloadContext(workloadContext);
99 serviceModelDb.setRecoveryAction(recoveryActionRetry);
100 serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
101 serviceModelDb.setRetryCount(retryCountZero);
102 serviceModelDb.setServiceModelVersionDistrStatus(statusOk);
103 serviceModelDb.setVnfOperationalEnvId(vnfOperationalEnvironmentId);
105 serviceModelDb.setRequestId(requestIdOrig);
106 serviceModelDb.setServiceModelVersionId(serviceModelVersionId1);
107 serviceModelDb.setWorkloadContext(workloadContext);
108 serviceModelDb.setRecoveryAction(recoveryActionRetry);
109 serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
110 serviceModelDb.setRetryCount(retryCountZero);
111 serviceModelDb.setServiceModelVersionDistrStatus(statusOk);
112 serviceModelDb.setVnfOperationalEnvId(vnfOperationalEnvironmentId);
114 InfraActiveRequests iar = new InfraActiveRequests();
115 iar.setRequestId(requestIdOrig);
116 iar.setRequestStatus("PENDING");
118 stubFor(get(urlPathEqualTo("/operationalEnvServiceModelStatus/search/findOneByOperationalEnvIdAndServiceModelVersionIdAndRequestId"))
119 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
120 .withBody(mapper.writeValueAsString(serviceModelDb))
121 .withStatus(HttpStatus.SC_OK)));
122 stubFor(get(urlPathEqualTo("/infraActiveRequests/"+requestIdOrig))
123 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
124 .withBody(mapper.writeValueAsString(iar))
125 .withStatus(HttpStatus.SC_OK)));
127 activateVnfStatus.checkOrUpdateOverallStatus(operationalEnvironmentId, requestIdOrig);
129 // overall is success
133 public void checkOrUpdateOverallStatusTest_Error() throws JsonProcessingException {
135 OperationalEnvServiceModelStatus serviceModelDb = new OperationalEnvServiceModelStatus();
136 serviceModelDb.setRequestId(requestIdOrig);
137 serviceModelDb.setServiceModelVersionId(serviceModelVersionId);
138 serviceModelDb.setWorkloadContext(workloadContext);
139 serviceModelDb.setRecoveryAction(recoveryActionRetry);
140 serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
141 serviceModelDb.setRetryCount(retryCountZero);
142 serviceModelDb.setServiceModelVersionDistrStatus(statusError);
143 serviceModelDb.setVnfOperationalEnvId(vnfOperationalEnvironmentId);
144 stubFor(get(urlPathEqualTo("/operationalEnvServiceModelStatus/search/findOneByOperationalEnvIdAndServiceModelVersionIdAndRequestId"))
145 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
146 .withBody(mapper.writeValueAsString(serviceModelDb))
147 .withStatus(HttpStatus.SC_OK)));
149 InfraActiveRequests iar = new InfraActiveRequests();
150 iar.setRequestId(requestIdOrig);
151 iar.setRequestStatus("PENDING");
153 stubFor(get(urlPathEqualTo("/infraActiveRequests/"+requestIdOrig))
154 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
155 .withBody(mapper.writeValueAsString(iar))
156 .withStatus(HttpStatus.SC_OK)));
159 activateVnfStatus.checkOrUpdateOverallStatus(operationalEnvironmentId, requestIdOrig);
160 }catch(ApiException e){
161 assertThat(e.getMessage(), startsWith("Overall Activation process is a Failure. "));
162 assertEquals(e.getHttpResponseCode(), HttpStatus.SC_BAD_REQUEST);
163 assertEquals(e.getMessageID(), ErrorNumbers.SVC_DETAILED_SERVICE_ERROR);
169 public void checkOrUpdateOverallStatusTest_Waiting() throws Exception {
171 OperationalEnvServiceModelStatus serviceModelDb = new OperationalEnvServiceModelStatus();
172 serviceModelDb.setRequestId(requestIdOrig);
173 serviceModelDb.setServiceModelVersionId(serviceModelVersionId);
174 serviceModelDb.setWorkloadContext(workloadContext);
175 serviceModelDb.setRecoveryAction(recoveryActionRetry);
176 serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
177 serviceModelDb.setRetryCount(retryCountTwo);
178 serviceModelDb.setServiceModelVersionDistrStatus(statusError);
179 serviceModelDb.setVnfOperationalEnvId(vnfOperationalEnvironmentId);
180 stubFor(get(urlPathEqualTo("/operationalEnvServiceModelStatus/search/findOneByOperationalEnvIdAndServiceModelVersionIdAndRequestId"))
181 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
182 .withBody(mapper.writeValueAsString(serviceModelDb))
183 .withStatus(HttpStatus.SC_OK)));
185 activateVnfStatus.checkOrUpdateOverallStatus(operationalEnvironmentId, requestIdOrig);
189 public void executionTest_Ok() throws Exception {
191 OperationalEnvServiceModelStatus serviceModelDb = new OperationalEnvServiceModelStatus();
192 serviceModelDb.setRequestId(requestIdOrig);
193 serviceModelDb.setServiceModelVersionId(serviceModelVersionId);
194 serviceModelDb.setWorkloadContext(workloadContext);
195 serviceModelDb.setRecoveryAction(recoveryActionRetry);
196 serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
197 serviceModelDb.setRetryCount(retryCountThree);
198 serviceModelDb.setServiceModelVersionDistrStatus(statusSent);
199 serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
200 serviceModelDb.setVnfOperationalEnvId(vnfOperationalEnvironmentId);
202 OperationalEnvDistributionStatus distributionDb = new OperationalEnvDistributionStatus();
203 distributionDb.setDistributionId(sdcDistributionId);
204 distributionDb.setRequestId(requestIdOrig);
205 distributionDb.setOperationalEnvId(operationalEnvironmentId);
206 distributionDb.setDistributionIdStatus(statusSent);
207 distributionDb.setServiceModelVersionId(serviceModelVersionId);
208 distributionDb.setDistributionIdErrorReason(null);
210 // prepare distribution obj
211 Distribution distribution = new Distribution();
212 distribution.setStatus(Status.DISTRIBUTION_COMPLETE_OK);
213 request.setDistribution(distribution);
214 request.setDistributionId(sdcDistributionId);
215 request.setOperationalEnvironmentId(operationalEnvironmentId);
217 InfraActiveRequests iar = new InfraActiveRequests();
218 iar.setRequestId(requestIdOrig);
219 iar.setRequestStatus("PENDING");
221 stubFor(get(urlPathEqualTo("/operationalEnvServiceModelStatus/search/findOneByOperationalEnvIdAndServiceModelVersionIdAndRequestId"))
222 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
223 .withBody(mapper.writeValueAsString(serviceModelDb))
224 .withStatus(HttpStatus.SC_OK)));
225 stubFor(get(urlPathEqualTo("/operationalEnvDistributionStatus/"+sdcDistributionId))
226 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
227 .withBody(mapper.writeValueAsString(distributionDb))
228 .withStatus(HttpStatus.SC_OK)));
229 stubFor(get(urlPathEqualTo("/infraActiveRequests/"+requestIdOrig))
230 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
231 .withBody(mapper.writeValueAsString(iar))
232 .withStatus(HttpStatus.SC_OK)));
233 stubFor(post(urlPathEqualTo("/operationalEnvServiceModelStatus/"))
234 .withRequestBody(equalTo("{\"requestId\":\"TEST_requestIdOrig\",\"operationalEnvId\":\"TEST_operationalEnvironmentId\",\"serviceModelVersionId\":\"TEST_serviceModelVersionId\",\"serviceModelVersionDistrStatus\":\"DISTRIBUTION_COMPLETE_OK\",\"recoveryAction\":\"RETRY\",\"retryCount\":0,\"workloadContext\":\"TEST_workloadContext\",\"createTime\":null,\"modifyTime\":null,\"vnfOperationalEnvId\":\"VNF_operationalEnvironmentId\"}"))
235 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
236 .withStatus(HttpStatus.SC_OK)));
238 stubFor(post(urlPathEqualTo("/operationalEnvDistributionStatus/"))
239 .withRequestBody(equalTo("{\"distributionId\":\"TEST_distributionId\",\"operationalEnvId\":\"TEST_operationalEnvironmentId\",\"serviceModelVersionId\":\"TEST_serviceModelVersionId\",\"requestId\":\"TEST_requestIdOrig\",\"distributionIdStatus\":\"DISTRIBUTION_COMPLETE_OK\",\"distributionIdErrorReason\":\"\",\"createTime\":null,\"modifyTime\":null}"))
240 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
241 .withStatus(HttpStatus.SC_OK)));
243 stubFor(get(urlPathMatching("/aai/" + AAIVersion.LATEST + "/cloud-infrastructure/operational-environments/.*"))
244 .willReturn(aResponse().withHeader("Content-Type", "application/json").withBody(json).withStatus(HttpStatus.SC_ACCEPTED)));
245 stubFor(put(urlPathMatching("/aai/" + AAIVersion.LATEST + "/cloud-infrastructure/operational-environments/.*"))
246 .willReturn(aResponse().withHeader("Content-Type", "application/json").withStatus(HttpStatus.SC_ACCEPTED)));
248 activateVnfStatus.execute(requestId, request);
252 public void executionTest_ERROR_Status_And_RETRY() throws Exception {
254 OperationalEnvServiceModelStatus serviceModelDb = new OperationalEnvServiceModelStatus();
255 serviceModelDb.setRequestId(requestIdOrig);
256 serviceModelDb.setServiceModelVersionId(serviceModelVersionId);
257 serviceModelDb.setWorkloadContext(workloadContext);
258 serviceModelDb.setRecoveryAction(recoveryActionRetry);
259 serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
260 serviceModelDb.setRetryCount(retryCountThree);
261 serviceModelDb.setServiceModelVersionDistrStatus(statusError);
262 serviceModelDb.setVnfOperationalEnvId(vnfOperationalEnvironmentId);
263 stubFor(get(urlPathEqualTo("/operationalEnvServiceModelStatus/search/findOneByOperationalEnvIdAndServiceModelVersionIdAndRequestId"))
264 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
265 .withBody(mapper.writeValueAsString(serviceModelDb))
266 .withStatus(HttpStatus.SC_OK)));
268 OperationalEnvDistributionStatus distributionDb = new OperationalEnvDistributionStatus();
269 distributionDb.setDistributionId(sdcDistributionId);
270 distributionDb.setRequestId(requestIdOrig);
271 distributionDb.setOperationalEnvId(operationalEnvironmentId);
272 distributionDb.setDistributionIdStatus(statusError);
273 distributionDb.setServiceModelVersionId(serviceModelVersionId);
274 distributionDb.setDistributionIdErrorReason(null);
279 // prepare new distribution obj
280 Distribution distribution = new Distribution();
281 distribution.setStatus(Status.DISTRIBUTION_COMPLETE_ERROR);
282 distribution.setErrorReason("Unable to process.");
283 request.setDistribution(distribution);
284 request.setDistributionId(sdcDistributionId);
285 request.setOperationalEnvironmentId(operationalEnvironmentId);
287 // prepare sdc return data
288 JSONObject jsonObject = new JSONObject();
289 jsonObject.put("statusCode", "202");
290 jsonObject.put("message", "Success");
291 jsonObject.put("distributionId", sdcDistributionId1);
293 stubFor(post(urlPathMatching("/sdc/v1/catalog/services/.*"))
294 .willReturn(aResponse().withHeader("Content-Type", "application/json").withBody(jsonObject.toString()).withStatus(HttpStatus.SC_ACCEPTED)));
295 stubFor(get(urlPathEqualTo("/operationalEnvServiceModelStatus/search/findOneByOperationalEnvIdAndServiceModelVersionIdAndRequestId"))
296 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
297 .withBody(mapper.writeValueAsString(serviceModelDb))
298 .withStatus(HttpStatus.SC_OK)));
299 stubFor(get(urlPathEqualTo("/operationalEnvDistributionStatus/"+sdcDistributionId))
300 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
301 .withBody(mapper.writeValueAsString(distributionDb))
302 .withStatus(HttpStatus.SC_OK)));
303 stubFor(post(urlPathEqualTo("/operationalEnvDistributionStatus/"))
304 .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\":{}}"))
305 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
306 .withStatus(HttpStatus.SC_OK)));
308 stubFor(post(urlPathEqualTo("/operationalEnvDistributionStatus/"))
309 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
310 .withStatus(HttpStatus.SC_OK)));
312 stubFor(post(urlPathEqualTo("/operationalEnvServiceModelStatus/"))
313 .withRequestBody(equalTo("{\"requestId\":\"TEST_requestIdOrig\",\"operationalEnvId\":\"TEST_operationalEnvironmentId\",\"serviceModelVersionId\":\"TEST_serviceModelVersionId\",\"serviceModelVersionDistrStatus\":\"SENT\",\"recoveryAction\":\"RETRY\",\"retryCount\":2,\"workloadContext\":\"TEST_workloadContext\",\"createTime\":null,\"modifyTime\":null,\"vnfOperationalEnvId\":\"VNF_operationalEnvironmentId\"}"))
314 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
315 .withStatus(HttpStatus.SC_OK)));
317 stubFor(get(urlPathMatching("/aai/" + AAIVersion.LATEST + "/cloud-infrastructure/operational-environments/.*"))
318 .willReturn(aResponse().withHeader("Content-Type", "application/json").withBody(json).withStatus(HttpStatus.SC_ACCEPTED)));
319 stubFor(put(urlPathMatching("/aai/" + AAIVersion.LATEST + "/cloud-infrastructure/operational-environments/.*"))
320 .willReturn(aResponse().withHeader("Content-Type", "application/json").withStatus(HttpStatus.SC_ACCEPTED)));
322 activateVnfStatus.execute(requestId, request);
326 public void executionTest_ERROR_Status_And_RETRY_And_RetryZero() throws JsonProcessingException {
328 OperationalEnvServiceModelStatus serviceModelDb = new OperationalEnvServiceModelStatus();
329 serviceModelDb.setRequestId(requestIdOrig);
330 serviceModelDb.setServiceModelVersionId(serviceModelVersionId);
331 serviceModelDb.setWorkloadContext(workloadContext);
332 serviceModelDb.setRecoveryAction(recoveryActionRetry);
333 serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
334 serviceModelDb.setRetryCount(retryCountZero);
335 serviceModelDb.setServiceModelVersionDistrStatus(statusError);
336 serviceModelDb.setVnfOperationalEnvId(vnfOperationalEnvironmentId);
338 OperationalEnvDistributionStatus distributionDb = new OperationalEnvDistributionStatus();
339 distributionDb.setDistributionId(sdcDistributionId);
340 distributionDb.setRequestId(requestIdOrig);
341 distributionDb.setOperationalEnvId(operationalEnvironmentId);
342 distributionDb.setDistributionIdStatus(statusError);
343 distributionDb.setServiceModelVersionId(serviceModelVersionId);
344 distributionDb.setDistributionIdErrorReason(null);
348 // prepare distribution obj
349 Distribution distribution = new Distribution();
350 distribution.setStatus(Status.DISTRIBUTION_COMPLETE_ERROR);
351 request.setDistribution(distribution);
352 request.setDistributionId(sdcDistributionId);
353 request.setOperationalEnvironmentId(operationalEnvironmentId);
355 JSONObject jsonObject = new JSONObject();
356 jsonObject.put("statusCode", "202");
357 jsonObject.put("message", "Success");
358 jsonObject.put("distributionId", sdcDistributionId);
360 InfraActiveRequests iar = new InfraActiveRequests();
361 iar.setRequestId(requestIdOrig);
362 iar.setRequestStatus("PENDING");
364 stubFor(get(urlPathEqualTo("/operationalEnvServiceModelStatus/search/findOneByOperationalEnvIdAndServiceModelVersionIdAndRequestId"))
365 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
366 .withBody(mapper.writeValueAsString(serviceModelDb))
367 .withStatus(HttpStatus.SC_OK)));
368 stubFor(get(urlPathEqualTo("/operationalEnvDistributionStatus/"+sdcDistributionId))
369 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
370 .withBody(mapper.writeValueAsString(distributionDb))
371 .withStatus(HttpStatus.SC_OK)));
372 stubFor(get(urlPathEqualTo("/infraActiveRequests/"+requestIdOrig))
373 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
374 .withBody(mapper.writeValueAsString(iar))
375 .withStatus(HttpStatus.SC_OK)));
377 stubFor(post(urlPathMatching("/sdc/v1/catalog/services/.*"))
378 .willReturn(aResponse().withHeader("Content-Type", "application/json").withBody(jsonObject.toString()).withStatus(HttpStatus.SC_ACCEPTED)));
380 stubFor(post(urlPathEqualTo("/operationalEnvServiceModelStatus/"))
381 .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\":{}}"))
382 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
383 .withStatus(HttpStatus.SC_OK)));
385 stubFor(get(urlPathMatching("/aai/" + AAIVersion.LATEST + "/cloud-infrastructure/operational-environments/.*"))
386 .willReturn(aResponse().withHeader("Content-Type", "application/json").withBody(json).withStatus(HttpStatus.SC_ACCEPTED)));
387 stubFor(put(urlPathMatching("/aai/" + AAIVersion.LATEST + "/cloud-infrastructure/operational-environments/.*"))
388 .willReturn(aResponse().withHeader("Content-Type", "application/json").withStatus(HttpStatus.SC_ACCEPTED)));
391 activateVnfStatus.execute(requestId, request);
392 }catch(ApiException e){
393 assertThat(e.getMessage(), startsWith("Overall Activation process is a Failure. "));
394 assertEquals(e.getHttpResponseCode(), HttpStatus.SC_BAD_REQUEST);
395 assertEquals(e.getMessageID(), ErrorNumbers.SVC_DETAILED_SERVICE_ERROR);
402 public void executionTest_ERROR_Status_And_RETRY_And_ErrorSdc() throws JsonProcessingException {
404 OperationalEnvServiceModelStatus serviceModelDb = new OperationalEnvServiceModelStatus();
405 serviceModelDb.setRequestId(requestIdOrig);
406 serviceModelDb.setServiceModelVersionId(serviceModelVersionId);
407 serviceModelDb.setWorkloadContext(workloadContext);
408 serviceModelDb.setRecoveryAction(recoveryActionRetry);
409 serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
410 serviceModelDb.setRetryCount(retryCountThree);
411 serviceModelDb.setServiceModelVersionDistrStatus(statusError);
412 serviceModelDb.setVnfOperationalEnvId(vnfOperationalEnvironmentId);
414 OperationalEnvDistributionStatus distributionDb = new OperationalEnvDistributionStatus();
415 distributionDb.setDistributionId(sdcDistributionId);
416 distributionDb.setRequestId(requestIdOrig);
417 distributionDb.setOperationalEnvId(operationalEnvironmentId);
418 distributionDb.setDistributionIdStatus(statusError);
419 distributionDb.setServiceModelVersionId(serviceModelVersionId);
420 distributionDb.setDistributionIdErrorReason(null);
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 stubFor(get(urlPathEqualTo("/operationalEnvServiceModelStatus/search/findOneByOperationalEnvIdAndServiceModelVersionIdAndRequestId"))
445 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
446 .withBody(mapper.writeValueAsString(serviceModelDb))
447 .withStatus(HttpStatus.SC_OK)));
448 stubFor(get(urlPathEqualTo("/operationalEnvDistributionStatus/"+sdcDistributionId))
449 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
450 .withBody(mapper.writeValueAsString(distributionDb))
451 .withStatus(HttpStatus.SC_OK)));
452 stubFor(get(urlPathEqualTo("/infraActiveRequests/"+requestIdOrig))
453 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
454 .withBody(mapper.writeValueAsString(iar))
455 .withStatus(HttpStatus.SC_OK)));
456 stubFor(post(urlPathEqualTo("/infraActiveRequests/"))
457 .withRequestBody(containing("operationalEnvId\":\"VNF_operationalEnvironmentId\""))
458 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
459 .withStatus(HttpStatus.SC_OK)));
461 stubFor(post(urlPathMatching("/sdc/v1/catalog/services/.*"))
462 .willReturn(aResponse().withHeader("Content-Type", "application/json").withBody(jsonMessages.toString()).withStatus(HttpStatus.SC_CONFLICT)));
464 stubFor(get(urlPathMatching("/aai/" + AAIVersion.LATEST + "/cloud-infrastructure/operational-environments/.*"))
465 .willReturn(aResponse().withHeader("Content-Type", "application/json").withBody(json).withStatus(HttpStatus.SC_ACCEPTED)));
466 stubFor(put(urlPathMatching("/aai/" + AAIVersion.LATEST + "/cloud-infrastructure/operational-environments/.*"))
467 .willReturn(aResponse().withHeader("Content-Type", "application/json").withStatus(HttpStatus.SC_ACCEPTED)));
470 activateVnfStatus.execute(requestId, request);
471 }catch(ApiException e){
472 assertThat(e.getMessage(), startsWith("Failure calling SDC: statusCode: "));
473 assertEquals(e.getHttpResponseCode(), HttpStatus.SC_BAD_REQUEST);
474 assertEquals(e.getMessageID(), ErrorNumbers.SVC_DETAILED_SERVICE_ERROR);
479 public void executionTest_ERROR_Status_And_SKIP() throws Exception {
481 OperationalEnvServiceModelStatus serviceModelDb = new OperationalEnvServiceModelStatus();
482 serviceModelDb.setRequestId(requestIdOrig);
483 serviceModelDb.setServiceModelVersionId(serviceModelVersionId);
484 serviceModelDb.setWorkloadContext(workloadContext);
485 serviceModelDb.setRecoveryAction(recoveryActionSkip);
486 serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
487 serviceModelDb.setRetryCount(retryCountThree);
488 serviceModelDb.setServiceModelVersionDistrStatus(statusError);
489 serviceModelDb.setVnfOperationalEnvId(vnfOperationalEnvironmentId);
491 OperationalEnvDistributionStatus distributionDb = new OperationalEnvDistributionStatus();
492 distributionDb.setDistributionId(sdcDistributionId);
493 distributionDb.setRequestId(requestIdOrig);
494 distributionDb.setOperationalEnvId(operationalEnvironmentId);
495 distributionDb.setDistributionIdStatus(statusError);
496 distributionDb.setServiceModelVersionId(serviceModelVersionId);
497 distributionDb.setDistributionIdErrorReason(null);
499 // prepare distribution obj
500 OperationalEnvDistributionStatus distributionStatus = new OperationalEnvDistributionStatus(sdcDistributionId,operationalEnvironmentId,serviceModelVersionId);
501 distributionStatus.setDistributionIdStatus(Status.DISTRIBUTION_COMPLETE_ERROR.name());
503 Distribution distribution = new Distribution();
504 distribution.setStatus(Status.DISTRIBUTION_COMPLETE_ERROR);
505 request.setDistribution(distribution);
506 request.setDistributionId(sdcDistributionId);
507 request.setOperationalEnvironmentId(operationalEnvironmentId);
508 InfraActiveRequests iar = new InfraActiveRequests();
509 iar.setRequestId(requestIdOrig);
510 iar.setRequestStatus("PENDING");
512 stubFor(get(urlPathEqualTo("/operationalEnvServiceModelStatus/search/findOneByOperationalEnvIdAndServiceModelVersionIdAndRequestId"))
513 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
514 .withBody(mapper.writeValueAsString(serviceModelDb))
515 .withStatus(HttpStatus.SC_OK)));
516 stubFor(get(urlPathEqualTo("/operationalEnvDistributionStatus/"+sdcDistributionId))
517 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
518 .withBody(mapper.writeValueAsString(distributionDb))
519 .withStatus(HttpStatus.SC_OK)));
520 stubFor(get(urlPathEqualTo("/infraActiveRequests/"+requestIdOrig))
521 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
522 .withBody(mapper.writeValueAsString(iar))
523 .withStatus(HttpStatus.SC_OK)));
524 stubFor(post(urlPathEqualTo("/operationalEnvServiceModelStatus/"))
525 .withRequestBody(equalTo("{\"requestId\":\"TEST_requestIdOrig\",\"operationalEnvId\":\"TEST_operationalEnvironmentId\",\"serviceModelVersionId\":\"TEST_serviceModelVersionId\",\"serviceModelVersionDistrStatus\":\"DISTRIBUTION_COMPLETE_OK\",\"recoveryAction\":\"SKIP\",\"retryCount\":0,\"workloadContext\":\"TEST_workloadContext\",\"createTime\":null,\"modifyTime\":null,\"vnfOperationalEnvId\":\"VNF_operationalEnvironmentId\"}"))
526 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
527 .withStatus(HttpStatus.SC_OK)));
529 stubFor(post(urlPathEqualTo("/operationalEnvDistributionStatus/"))
530 .withRequestBody(equalTo("{\"distributionId\":\"TEST_distributionId\",\"operationalEnvId\":\"TEST_operationalEnvironmentId\",\"serviceModelVersionId\":\"TEST_serviceModelVersionId\",\"requestId\":\"TEST_requestIdOrig\",\"distributionIdStatus\":\"DISTRIBUTION_COMPLETE_OK\",\"distributionIdErrorReason\":\"\",\"createTime\":null,\"modifyTime\":null}"))
531 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
532 .withStatus(HttpStatus.SC_OK)));
534 stubFor(get(urlPathMatching("/aai/" + AAIVersion.LATEST + "/cloud-infrastructure/operational-environments/.*"))
535 .willReturn(aResponse().withHeader("Content-Type", "application/json").withBody(json).withStatus(HttpStatus.SC_ACCEPTED)));
536 stubFor(put(urlPathMatching("/aai/" + AAIVersion.LATEST + "/cloud-infrastructure/operational-environments/.*"))
537 .willReturn(aResponse().withHeader("Content-Type", "application/json").withStatus(HttpStatus.SC_ACCEPTED)));
539 activateVnfStatus.execute(requestId, request);
544 public void executionTest_ERROR_Status_And_ABORT() throws JsonProcessingException {
546 OperationalEnvServiceModelStatus serviceModelDb = new OperationalEnvServiceModelStatus();
547 serviceModelDb.setRequestId(requestIdOrig);
548 serviceModelDb.setServiceModelVersionId(serviceModelVersionId);
549 serviceModelDb.setWorkloadContext(workloadContext);
550 serviceModelDb.setRecoveryAction(recoveryActionAbort);
551 serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
552 serviceModelDb.setRetryCount(retryCountThree);
553 serviceModelDb.setServiceModelVersionDistrStatus(statusError);
554 serviceModelDb.setVnfOperationalEnvId(vnfOperationalEnvironmentId);
556 OperationalEnvDistributionStatus distributionDb = new OperationalEnvDistributionStatus();
557 distributionDb.setDistributionId(sdcDistributionId);
558 distributionDb.setRequestId(requestIdOrig);
559 distributionDb.setOperationalEnvId(operationalEnvironmentId);
560 distributionDb.setDistributionIdStatus(statusError);
561 distributionDb.setServiceModelVersionId(serviceModelVersionId);
562 distributionDb.setDistributionIdErrorReason(null);
566 // prepare distribution obj
567 Distribution distribution = new Distribution();
568 distribution.setStatus(Status.DISTRIBUTION_COMPLETE_ERROR);
569 request.setDistribution(distribution);
570 request.setDistributionId(sdcDistributionId);
571 request.setOperationalEnvironmentId(operationalEnvironmentId);
573 InfraActiveRequests iar = new InfraActiveRequests();
574 iar.setRequestId(requestIdOrig);
575 iar.setRequestStatus("PENDING");
577 stubFor(get(urlPathEqualTo("/operationalEnvServiceModelStatus/search/findOneByOperationalEnvIdAndServiceModelVersionIdAndRequestId"))
578 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
579 .withBody(mapper.writeValueAsString(serviceModelDb))
580 .withStatus(HttpStatus.SC_OK)));
581 stubFor(get(urlPathEqualTo("/operationalEnvDistributionStatus/"+sdcDistributionId))
582 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
583 .withBody(mapper.writeValueAsString(distributionDb))
584 .withStatus(HttpStatus.SC_OK)));
585 stubFor(get(urlPathEqualTo("/infraActiveRequests/"+requestIdOrig))
586 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
587 .withBody(mapper.writeValueAsString(iar))
588 .withStatus(HttpStatus.SC_OK)));
590 stubFor(post(urlPathEqualTo("/operationalEnvDistributionStatus/"))
591 .withRequestBody(containing("{\"distributionId\":\"TEST_distributionId\",\"operationalEnvId\":\"TEST_operationalEnvironmentId\",\"serviceModelVersionId\":\"TEST_serviceModelVersionId\",\"requestId\":\"TEST_requestIdOrig\",\"distributionIdStatus\":\"DISTRIBUTION_COMPLETE_ERROR\""))
592 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
593 .withStatus(HttpStatus.SC_OK)));
595 stubFor(post(urlPathEqualTo("/operationalEnvServiceModelStatus/"))
596 .withRequestBody(containing("{\"requestId\":\"TEST_requestIdOrig\",\"operationalEnvId\":\"TEST_operationalEnvironmentId\",\"serviceModelVersionId\":\"TEST_serviceModelVersionId\",\"serviceModelVersionDistrStatus\":\"DISTRIBUTION_COMPLETE_ERROR\""))
597 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
598 .withStatus(HttpStatus.SC_OK)));
600 stubFor(get(urlPathMatching("/aai/" + AAIVersion.LATEST + "/cloud-infrastructure/operational-environments/.*"))
601 .willReturn(aResponse().withHeader("Content-Type", "application/json").withBody(json).withStatus(HttpStatus.SC_ACCEPTED)));
602 stubFor(put(urlPathMatching("/aai/" + AAIVersion.LATEST + "/cloud-infrastructure/operational-environments/.*"))
603 .willReturn(aResponse().withHeader("Content-Type", "application/json").withStatus(HttpStatus.SC_ACCEPTED)));
606 activateVnfStatus.execute(requestId, request);
607 }catch(ApiException e) {
608 assertThat(e.getMessage(), startsWith("Overall Activation process is a Failure. "));
609 assertEquals(e.getHttpResponseCode(), HttpStatus.SC_BAD_REQUEST);
610 assertEquals(e.getMessageID(), ErrorNumbers.SVC_DETAILED_SERVICE_ERROR);
617 public void callSDClientForRetryTest_202() throws Exception {
618 OperationalEnvServiceModelStatus serviceModelDb = new OperationalEnvServiceModelStatus();
619 serviceModelDb.setRequestId(requestIdOrig);
620 serviceModelDb.setServiceModelVersionId(serviceModelVersionId);
621 serviceModelDb.setWorkloadContext(workloadContext);
622 serviceModelDb.setRecoveryAction(recoveryActionRetry);
623 serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
624 serviceModelDb.setRetryCount(retryCountThree);
625 serviceModelDb.setServiceModelVersionDistrStatus(statusSent);
627 OperationalEnvDistributionStatus distributionDb = new OperationalEnvDistributionStatus();
628 distributionDb.setDistributionId(sdcDistributionId);
629 distributionDb.setRequestId(requestIdOrig);
630 distributionDb.setOperationalEnvId(operationalEnvironmentId);
631 distributionDb.setDistributionIdStatus(statusSent);
632 distributionDb.setServiceModelVersionId(serviceModelVersionId);
633 distributionDb.setDistributionIdErrorReason(null);
637 JSONObject jsonObject = new JSONObject();
638 jsonObject.put("statusCode", "202");
639 jsonObject.put("message", "Success");
640 jsonObject.put("distributionId", sdcDistributionId1);
642 // prepare distribution obj
643 Distribution distribution = new Distribution();
644 distribution.setStatus(Status.DISTRIBUTION_COMPLETE_OK);
645 request.setDistribution(distribution);
646 request.setDistributionId(sdcDistributionId);
647 request.setOperationalEnvironmentId(operationalEnvironmentId);
649 stubFor(post(urlPathMatching("/sdc/v1/catalog/services/TEST_serviceModelVersionId/distr.*"))
650 .willReturn(aResponse().withHeader("Content-Type", "application/json").withBody(jsonObject.toString()).withStatus(HttpStatus.SC_ACCEPTED)));
652 JSONObject jsonResponse = activateVnfStatus.callSDClientForRetry(distributionDb, serviceModelDb, distribution);
654 assertEquals("TEST_distributionId1", jsonResponse.get("distributionId"));
655 assertEquals("Success", jsonResponse.get("message"));
656 assertEquals("202", jsonResponse.get("statusCode"));