9a5334081fa861a74d36ab540396de823fe71696
[so.git] / mso-api-handlers / mso-api-handler-infra / src / test / java / org / onap / so / apihandlerinfra / tenantisolation / process / ActivateVnfStatusOperationalEnvironmentTest.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP - SO
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
10  * 
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  * 
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=========================================================
19  */
20
21 package org.onap.so.apihandlerinfra.tenantisolation.process;
22
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
34 import static org.junit.Assert.assertThat;
35
36 import com.fasterxml.jackson.core.JsonProcessingException;
37 import com.fasterxml.jackson.databind.ObjectMapper;
38 import org.apache.http.HttpStatus;
39 import org.json.JSONObject;
40 import org.junit.Rule;
41 import org.junit.Test;
42 import org.junit.Ignore;
43 import org.junit.rules.ExpectedException;
44 import org.onap.so.apihandler.common.ErrorNumbers;
45 import org.onap.so.apihandlerinfra.BaseTest;
46 import org.onap.so.apihandlerinfra.exceptions.ApiException;
47 import org.onap.so.apihandlerinfra.tenantisolation.CloudOrchestrationRequest;
48 import org.onap.so.apihandlerinfra.tenantisolationbeans.Distribution;
49 import org.onap.so.apihandlerinfra.tenantisolationbeans.DistributionStatus;
50 import org.onap.so.apihandlerinfra.tenantisolationbeans.Status;
51 import org.onap.so.db.request.beans.InfraActiveRequests;
52 import org.onap.so.db.request.beans.OperationalEnvDistributionStatus;
53 import org.onap.so.db.request.beans.OperationalEnvServiceModelStatus;
54 import org.springframework.beans.factory.annotation.Autowired;
55
56 import javax.ws.rs.core.HttpHeaders;
57 import javax.ws.rs.core.MediaType;
58
59 public class ActivateVnfStatusOperationalEnvironmentTest extends BaseTest{
60
61         @Autowired
62         private ActivateVnfStatusOperationalEnvironment activateVnfStatus;
63     @Rule
64     public ExpectedException thrown = ExpectedException.none();
65
66         private final String requestId = "TEST_requestId";
67         private final String requestIdOrig = "TEST_requestIdOrig";      
68         private final String operationalEnvironmentId = "TEST_operationalEnvironmentId";        
69         private final CloudOrchestrationRequest request = new CloudOrchestrationRequest();
70         private final String workloadContext = "TEST_workloadContext";
71         private final String recoveryActionRetry  = "RETRY";
72         private final String recoveryActionAbort  = "ABORT";
73         private final String recoveryActionSkip  = "SKIP";
74         private final String serviceModelVersionId = "TEST_serviceModelVersionId";
75         private final String serviceModelVersionId1 = "TEST_serviceModelVersionId1";    
76         private final int retryCountThree = 3;
77         private final int retryCountTwo = 2;    
78         private final int retryCountZero = 0;   
79         private final String sdcDistributionId = "TEST_distributionId";
80         private final String sdcDistributionId1 = "TEST_distributionId1";       
81         private final String statusOk = Status.DISTRIBUTION_COMPLETE_OK.toString();
82         private final String statusError = DistributionStatus.DISTRIBUTION_COMPLETE_ERROR.toString();
83         private final String statusSent = "SENT";
84         
85         private final ObjectMapper mapper = new ObjectMapper();
86
87         @Test
88         public void checkOrUpdateOverallStatusTest_Ok() throws Exception {
89                 
90                 // two entries, both status Ok & retry 0
91                 OperationalEnvServiceModelStatus serviceModelDb = new OperationalEnvServiceModelStatus();
92                 serviceModelDb.setRequestId(requestIdOrig);
93                 serviceModelDb.setServiceModelVersionId(serviceModelVersionId);
94                 serviceModelDb.setWorkloadContext(workloadContext);
95                 serviceModelDb.setRecoveryAction(recoveryActionRetry);
96                 serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
97                 serviceModelDb.setRetryCount(retryCountZero);
98                 serviceModelDb.setServiceModelVersionDistrStatus(statusOk);
99                 
100                 serviceModelDb.setRequestId(requestIdOrig);
101                 serviceModelDb.setServiceModelVersionId(serviceModelVersionId1);
102                 serviceModelDb.setWorkloadContext(workloadContext);
103                 serviceModelDb.setRecoveryAction(recoveryActionRetry);
104                 serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
105                 serviceModelDb.setRetryCount(retryCountZero);
106                 serviceModelDb.setServiceModelVersionDistrStatus(statusOk);
107
108                 InfraActiveRequests iar = new InfraActiveRequests();
109                 iar.setRequestId(requestIdOrig);
110                 iar.setRequestStatus("PENDING");
111
112                 stubFor(get(urlPathEqualTo("/operationalEnvServiceModelStatus/search/findOneByOperationalEnvIdAndServiceModelVersionId"))
113                                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
114                                                 .withBody(mapper.writeValueAsString(serviceModelDb))
115                                                 .withStatus(HttpStatus.SC_OK)));
116                 stubFor(get(urlPathEqualTo("/infraActiveRequests/"+requestIdOrig))
117                                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
118                                                 .withBody(mapper.writeValueAsString(iar))
119                                                 .withStatus(HttpStatus.SC_OK)));
120                 
121                 activateVnfStatus.checkOrUpdateOverallStatus(operationalEnvironmentId, requestIdOrig);
122                 
123                 // overall is success
124         }
125
126         @Test
127         public void checkOrUpdateOverallStatusTest_Error() throws JsonProcessingException {
128                 
129                 OperationalEnvServiceModelStatus serviceModelDb = new OperationalEnvServiceModelStatus();
130                 serviceModelDb.setRequestId(requestIdOrig);
131                 serviceModelDb.setServiceModelVersionId(serviceModelVersionId);
132                 serviceModelDb.setWorkloadContext(workloadContext);
133                 serviceModelDb.setRecoveryAction(recoveryActionRetry);
134                 serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
135                 serviceModelDb.setRetryCount(retryCountZero);
136                 serviceModelDb.setServiceModelVersionDistrStatus(statusError);
137                 stubFor(get(urlPathEqualTo("/operationalEnvServiceModelStatus/search/findOneByOperationalEnvIdAndServiceModelVersionId"))
138                                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
139                                                 .withBody(mapper.writeValueAsString(serviceModelDb))
140                                                 .withStatus(HttpStatus.SC_OK)));
141                 
142                 InfraActiveRequests iar = new InfraActiveRequests();
143                 iar.setRequestId(requestIdOrig);
144                 iar.setRequestStatus("PENDING");
145
146                 stubFor(get(urlPathEqualTo("/infraActiveRequests/"+requestIdOrig))
147                                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
148                                                 .withBody(mapper.writeValueAsString(iar))
149                                                 .withStatus(HttpStatus.SC_OK)));
150
151         try {
152             activateVnfStatus.checkOrUpdateOverallStatus(operationalEnvironmentId, requestIdOrig);
153         }catch(ApiException e){
154             assertThat(e.getMessage(), startsWith("Overall Activation process is a Failure. "));
155             assertEquals(e.getHttpResponseCode(), HttpStatus.SC_BAD_REQUEST);
156             assertEquals(e.getMessageID(), ErrorNumbers.SVC_DETAILED_SERVICE_ERROR);
157         }
158                 
159         }       
160         
161         @Test
162         public void checkOrUpdateOverallStatusTest_Waiting() throws Exception {
163                 
164                 OperationalEnvServiceModelStatus serviceModelDb = new OperationalEnvServiceModelStatus();
165                 serviceModelDb.setRequestId(requestIdOrig);
166                 serviceModelDb.setServiceModelVersionId(serviceModelVersionId);
167                 serviceModelDb.setWorkloadContext(workloadContext);
168                 serviceModelDb.setRecoveryAction(recoveryActionRetry);
169                 serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
170                 serviceModelDb.setRetryCount(retryCountTwo);
171                 serviceModelDb.setServiceModelVersionDistrStatus(statusError);
172                 stubFor(get(urlPathEqualTo("/operationalEnvServiceModelStatus/search/findOneByOperationalEnvIdAndServiceModelVersionId"))
173                                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
174                                                 .withBody(mapper.writeValueAsString(serviceModelDb))
175                                                 .withStatus(HttpStatus.SC_OK)));
176                 
177                 activateVnfStatus.checkOrUpdateOverallStatus(operationalEnvironmentId, requestIdOrig);
178         }
179         
180         @Test
181         public void executionTest_Ok() throws Exception {
182                 
183                 OperationalEnvServiceModelStatus serviceModelDb = new OperationalEnvServiceModelStatus();
184                 serviceModelDb.setRequestId(requestIdOrig);
185                 serviceModelDb.setServiceModelVersionId(serviceModelVersionId);
186                 serviceModelDb.setWorkloadContext(workloadContext);
187                 serviceModelDb.setRecoveryAction(recoveryActionRetry);
188                 serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
189                 serviceModelDb.setRetryCount(retryCountThree);
190                 serviceModelDb.setServiceModelVersionDistrStatus(statusSent);
191
192                 OperationalEnvDistributionStatus distributionDb = new OperationalEnvDistributionStatus();
193                 distributionDb.setDistributionId(sdcDistributionId);
194                 distributionDb.setRequestId(requestIdOrig);
195                 distributionDb.setOperationalEnvId(operationalEnvironmentId);
196                 distributionDb.setDistributionIdStatus(statusSent);
197                 distributionDb.setServiceModelVersionId(serviceModelVersionId);
198                 distributionDb.setDistributionIdErrorReason(null);
199                 
200                 // prepare distribution obj
201                 Distribution distribution = new Distribution();
202                 distribution.setStatus(Status.DISTRIBUTION_COMPLETE_OK);
203                 request.setDistribution(distribution);
204                 request.setDistributionId(sdcDistributionId);
205                 request.setOperationalEnvironmentId(operationalEnvironmentId);
206                 
207                 InfraActiveRequests iar = new InfraActiveRequests();
208                 iar.setRequestId(requestIdOrig);
209                 iar.setRequestStatus("PENDING");
210                 
211                 stubFor(get(urlPathEqualTo("/operationalEnvServiceModelStatus/search/findOneByOperationalEnvIdAndServiceModelVersionId"))
212                                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
213                                                 .withBody(mapper.writeValueAsString(serviceModelDb))
214                                                 .withStatus(HttpStatus.SC_OK)));
215                 stubFor(get(urlPathEqualTo("/operationalEnvDistributionStatus/"+sdcDistributionId))
216                                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
217                                                 .withBody(mapper.writeValueAsString(distributionDb))
218                                                 .withStatus(HttpStatus.SC_OK)));
219                 stubFor(get(urlPathEqualTo("/infraActiveRequests/"+requestIdOrig))
220                                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
221                                                 .withBody(mapper.writeValueAsString(iar))
222                                                 .withStatus(HttpStatus.SC_OK)));
223                 stubFor(post(urlPathEqualTo("/operationalEnvServiceModelStatus/"))
224                                 .withRequestBody(equalTo("{\"requestId\":\"TEST_requestIdOrig\",\"operationalEnvId\":\"TEST_operationalEnvironmentId\",\"serviceModelVersionId\":\"TEST_serviceModelVersionId\",\"serviceModelVersionDistrStatus\":\"DISTRIBUTION_COMPLETE_OK\",\"recoveryAction\":\"RETRY\",\"retryCount\":0,\"workloadContext\":\"TEST_workloadContext\",\"createTime\":null,\"modifyTime\":null,\"handler\":{}}"))
225                                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
226                                                 .withStatus(HttpStatus.SC_OK)));
227
228                 stubFor(post(urlPathEqualTo("/operationalEnvDistributionStatus/"))
229                                 .withRequestBody(equalTo("{\"distributionId\":\"TEST_distributionId\",\"operationalEnvId\":\"TEST_operationalEnvironmentId\",\"serviceModelVersionId\":\"TEST_serviceModelVersionId\",\"requestId\":\"TEST_requestIdOrig\",\"distributionIdStatus\":\"DISTRIBUTION_COMPLETE_OK\",\"distributionIdErrorReason\":\"\",\"createTime\":null,\"modifyTime\":null,\"handler\":{}}"))
230                                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
231                                                 .withStatus(HttpStatus.SC_OK)));
232
233                 activateVnfStatus.execute(requestId, request);          
234         }                               
235         
236         @Test
237         public void executionTest_ERROR_Status_And_RETRY() throws Exception {
238                 
239                 OperationalEnvServiceModelStatus serviceModelDb = new OperationalEnvServiceModelStatus();
240                 serviceModelDb.setRequestId(requestIdOrig);
241                 serviceModelDb.setServiceModelVersionId(serviceModelVersionId);
242                 serviceModelDb.setWorkloadContext(workloadContext);
243                 serviceModelDb.setRecoveryAction(recoveryActionRetry);
244                 serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
245                 serviceModelDb.setRetryCount(retryCountThree);
246                 serviceModelDb.setServiceModelVersionDistrStatus(statusError);
247                 stubFor(get(urlPathEqualTo("/operationalEnvServiceModelStatus/search/findOneByOperationalEnvIdAndServiceModelVersionId"))
248                                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
249                                                 .withBody(mapper.writeValueAsString(serviceModelDb))
250                                                 .withStatus(HttpStatus.SC_OK)));
251                 
252                 OperationalEnvDistributionStatus distributionDb = new OperationalEnvDistributionStatus();
253                 distributionDb.setDistributionId(sdcDistributionId);
254                 distributionDb.setRequestId(requestIdOrig);
255                 distributionDb.setOperationalEnvId(operationalEnvironmentId);
256                 distributionDb.setDistributionIdStatus(statusError);
257                 distributionDb.setServiceModelVersionId(serviceModelVersionId);
258                 distributionDb.setDistributionIdErrorReason(null);
259                 
260                 
261                 
262                 
263                 // prepare new distribution obj
264                 Distribution distribution = new Distribution();
265                 distribution.setStatus(Status.DISTRIBUTION_COMPLETE_ERROR);
266                 distribution.setErrorReason("Unable to process.");
267                 request.setDistribution(distribution);
268                 request.setDistributionId(sdcDistributionId);
269                 request.setOperationalEnvironmentId(operationalEnvironmentId);
270                 
271                 // prepare sdc return data
272                 JSONObject jsonObject = new JSONObject();
273                 jsonObject.put("statusCode", "202");
274                 jsonObject.put("message", "Success");
275                 jsonObject.put("distributionId", sdcDistributionId1);
276                 
277                 stubFor(post(urlPathMatching("/sdc/v1/catalog/services/.*"))
278                                 .willReturn(aResponse().withHeader("Content-Type", "application/json").withBody(jsonObject.toString()).withStatus(HttpStatus.SC_ACCEPTED)));
279                 stubFor(get(urlPathEqualTo("/operationalEnvServiceModelStatus/search/findOneByOperationalEnvIdAndServiceModelVersionId"))
280                                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
281                                                 .withBody(mapper.writeValueAsString(serviceModelDb))
282                                                 .withStatus(HttpStatus.SC_OK)));
283                 stubFor(get(urlPathEqualTo("/operationalEnvDistributionStatus/"+sdcDistributionId))
284                                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
285                                                 .withBody(mapper.writeValueAsString(distributionDb))
286                                                 .withStatus(HttpStatus.SC_OK)));
287                 stubFor(post(urlPathEqualTo("/operationalEnvDistributionStatus/"))
288                                 .withRequestBody(equalTo("{\"distributionId\":\"TEST_distributionId\",\"operationalEnvId\":\"TEST_operationalEnvironmentId\",\"serviceModelVersionId\":\"TEST_serviceModelVersionId\",\"requestId\":\"TEST_requestIdOrig\",\"distributionIdStatus\":\"DISTRIBUTION_COMPLETE_ERROR\",\"distributionIdErrorReason\":\"Unable to process.\",\"createTime\":null,\"modifyTime\":null,\"handler\":{}}"))
289                                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
290                                                 .withStatus(HttpStatus.SC_OK)));
291
292                 stubFor(post(urlPathEqualTo("/operationalEnvDistributionStatus/"))
293                                 .withRequestBody(equalTo("{\"distributionId\":\"TEST_distributionId1\",\"operationalEnvId\":\"TEST_operationalEnvironmentId\",\"serviceModelVersionId\":\"TEST_serviceModelVersionId\",\"requestId\":\"TEST_requestIdOrig\",\"distributionIdStatus\":\"SENT\",\"distributionIdErrorReason\":\"\",\"createTime\":null,\"modifyTime\":null}"))
294                                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
295                                                 .withStatus(HttpStatus.SC_OK)));
296
297                 stubFor(post(urlPathEqualTo("/operationalEnvServiceModelStatus/"))
298                                 .withRequestBody(equalTo("{\"requestId\":\"TEST_requestIdOrig\",\"operationalEnvId\":\"TEST_operationalEnvironmentId\",\"serviceModelVersionId\":\"TEST_serviceModelVersionId\",\"serviceModelVersionDistrStatus\":\"SENT\",\"recoveryAction\":\"RETRY\",\"retryCount\":2,\"workloadContext\":\"TEST_workloadContext\",\"createTime\":null,\"modifyTime\":null,\"handler\":{}}"))
299                                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
300                                                 .withStatus(HttpStatus.SC_OK)));
301                 
302                 activateVnfStatus.execute(requestId, request);  
303         }
304
305         @Test
306         public void executionTest_ERROR_Status_And_RETRY_And_RetryZero() throws JsonProcessingException {
307                 
308                 OperationalEnvServiceModelStatus serviceModelDb = new OperationalEnvServiceModelStatus();
309                 serviceModelDb.setRequestId(requestIdOrig);
310                 serviceModelDb.setServiceModelVersionId(serviceModelVersionId);
311                 serviceModelDb.setWorkloadContext(workloadContext);
312                 serviceModelDb.setRecoveryAction(recoveryActionRetry);
313                 serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
314                 serviceModelDb.setRetryCount(retryCountZero);
315                 serviceModelDb.setServiceModelVersionDistrStatus(statusError);
316                 
317                 OperationalEnvDistributionStatus distributionDb = new OperationalEnvDistributionStatus();
318                 distributionDb.setDistributionId(sdcDistributionId);
319                 distributionDb.setRequestId(requestIdOrig);
320                 distributionDb.setOperationalEnvId(operationalEnvironmentId);
321                 distributionDb.setDistributionIdStatus(statusError);
322                 distributionDb.setServiceModelVersionId(serviceModelVersionId);
323                 distributionDb.setDistributionIdErrorReason(null);
324                 
325         
326                 
327                 // prepare distribution obj
328                 Distribution distribution = new Distribution();
329                 distribution.setStatus(Status.DISTRIBUTION_COMPLETE_ERROR);
330                 request.setDistribution(distribution);
331                 request.setDistributionId(sdcDistributionId);
332                 request.setOperationalEnvironmentId(operationalEnvironmentId);
333                 
334                 JSONObject jsonObject = new JSONObject();
335                 jsonObject.put("statusCode", "202");
336                 jsonObject.put("message", "Success");
337                 jsonObject.put("distributionId", sdcDistributionId);
338                 
339                 InfraActiveRequests iar = new InfraActiveRequests();
340                 iar.setRequestId(requestIdOrig);
341                 iar.setRequestStatus("PENDING");
342
343                 stubFor(get(urlPathEqualTo("/operationalEnvServiceModelStatus/search/findOneByOperationalEnvIdAndServiceModelVersionId"))
344                                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
345                                                 .withBody(mapper.writeValueAsString(serviceModelDb))
346                                                 .withStatus(HttpStatus.SC_OK)));
347                 stubFor(get(urlPathEqualTo("/operationalEnvDistributionStatus/"+sdcDistributionId))
348                                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
349                                                 .withBody(mapper.writeValueAsString(distributionDb))
350                                                 .withStatus(HttpStatus.SC_OK)));
351                 stubFor(get(urlPathEqualTo("/infraActiveRequests/"+requestIdOrig))
352                                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
353                                                 .withBody(mapper.writeValueAsString(iar))
354                                                 .withStatus(HttpStatus.SC_OK)));
355                 
356                 stubFor(post(urlPathMatching("/sdc/v1/catalog/services/.*"))
357                                 .willReturn(aResponse().withHeader("Content-Type", "application/json").withBody(jsonObject.toString()).withStatus(HttpStatus.SC_ACCEPTED)));
358
359                 stubFor(post(urlPathEqualTo("/operationalEnvServiceModelStatus/"))
360                                 .withRequestBody(equalTo("{\"requestId\":\"TEST_requestIdOrig\",\"operationalEnvId\":\"TEST_operationalEnvironmentId\",\"serviceModelVersionId\":\"TEST_serviceModelVersionId\",\"serviceModelVersionDistrStatus\":\"SENT\",\"recoveryAction\":\"RETRY\",\"retryCount\":2,\"workloadContext\":\"TEST_workloadContext\",\"createTime\":null,\"modifyTime\":null,\"handler\":{}}"))
361                                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
362                                                 .withStatus(HttpStatus.SC_OK)));
363
364         try {
365             activateVnfStatus.execute(requestId, request);
366         }catch(ApiException e){
367             assertThat(e.getMessage(), startsWith("Overall Activation process is a Failure. "));
368             assertEquals(e.getHttpResponseCode(), HttpStatus.SC_BAD_REQUEST);
369             assertEquals(e.getMessageID(), ErrorNumbers.SVC_DETAILED_SERVICE_ERROR);
370         }
371
372                 
373         }       
374         
375         @Test
376         public void executionTest_ERROR_Status_And_RETRY_And_ErrorSdc() throws JsonProcessingException {
377                 
378                 OperationalEnvServiceModelStatus serviceModelDb = new OperationalEnvServiceModelStatus();
379                 serviceModelDb.setRequestId(requestIdOrig);
380                 serviceModelDb.setServiceModelVersionId(serviceModelVersionId);
381                 serviceModelDb.setWorkloadContext(workloadContext);
382                 serviceModelDb.setRecoveryAction(recoveryActionRetry);
383                 serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
384                 serviceModelDb.setRetryCount(retryCountThree);
385                 serviceModelDb.setServiceModelVersionDistrStatus(statusError);
386                 
387                 OperationalEnvDistributionStatus distributionDb = new OperationalEnvDistributionStatus();
388                 distributionDb.setDistributionId(sdcDistributionId);
389                 distributionDb.setRequestId(requestIdOrig);
390                 distributionDb.setOperationalEnvId(operationalEnvironmentId);
391                 distributionDb.setDistributionIdStatus(statusError);
392                 distributionDb.setServiceModelVersionId(serviceModelVersionId);
393                 distributionDb.setDistributionIdErrorReason(null);
394                 
395                 
396                 
397                 // prepare distribution obj
398                 Distribution distribution = new Distribution();
399                 distribution.setStatus(Status.DISTRIBUTION_COMPLETE_ERROR);
400                 distribution.setErrorReason("Unable to process.");
401                 request.setDistribution(distribution);
402                 request.setDistributionId(sdcDistributionId);
403                 request.setOperationalEnvironmentId(operationalEnvironmentId);
404                 
405                 // ERROR in sdc
406                 JSONObject jsonMessages = new JSONObject();
407                 jsonMessages.put("statusCode", "409");
408                 jsonMessages.put("message", "Undefined Error Message!");
409                 jsonMessages.put("messageId", "SVC4675");
410                 jsonMessages.put("text", "Error: Service state is invalid for this action.");
411                 JSONObject jsonServException = new JSONObject();
412                 jsonServException.put("serviceException", jsonMessages);
413                 JSONObject jsonErrorRequest = new JSONObject();
414                 jsonErrorRequest.put("requestError", jsonServException);
415                 
416                 InfraActiveRequests iar = new InfraActiveRequests();
417                 iar.setRequestId(requestIdOrig);
418                 iar.setRequestStatus("PENDING");
419                 stubFor(get(urlPathEqualTo("/operationalEnvServiceModelStatus/search/findOneByOperationalEnvIdAndServiceModelVersionId"))
420                                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
421                                                 .withBody(mapper.writeValueAsString(serviceModelDb))
422                                                 .withStatus(HttpStatus.SC_OK)));
423                 stubFor(get(urlPathEqualTo("/operationalEnvDistributionStatus/"+sdcDistributionId))
424                                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
425                                                 .withBody(mapper.writeValueAsString(distributionDb))
426                                                 .withStatus(HttpStatus.SC_OK)));
427                 stubFor(get(urlPathEqualTo("/infraActiveRequests/"+requestIdOrig))
428                                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
429                                                 .withBody(mapper.writeValueAsString(iar))
430                                                 .withStatus(HttpStatus.SC_OK)));
431                 stubFor(post(urlPathEqualTo("/infraActiveRequests/"))
432                                 .withRequestBody(containing("operationalEnvId\":\"TEST_operationalEnvironmentId\""))
433                                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
434                                                 .withStatus(HttpStatus.SC_OK)));
435                 
436                 stubFor(post(urlPathMatching("/sdc/v1/catalog/services/.*"))
437                                 .willReturn(aResponse().withHeader("Content-Type", "application/json").withBody(jsonMessages.toString()).withStatus(HttpStatus.SC_CONFLICT)));
438
439                 try {
440             activateVnfStatus.execute(requestId, request);
441         }catch(ApiException e){
442             assertThat(e.getMessage(), startsWith("Failure calling SDC: statusCode: "));
443             assertEquals(e.getHttpResponseCode(), HttpStatus.SC_BAD_REQUEST);
444             assertEquals(e.getMessageID(), ErrorNumbers.SVC_DETAILED_SERVICE_ERROR);
445         }
446         }       
447         
448         @Test
449         public void executionTest_ERROR_Status_And_SKIP() throws Exception {
450                 
451                 OperationalEnvServiceModelStatus serviceModelDb = new OperationalEnvServiceModelStatus();
452                 serviceModelDb.setRequestId(requestIdOrig);
453                 serviceModelDb.setServiceModelVersionId(serviceModelVersionId);
454                 serviceModelDb.setWorkloadContext(workloadContext);
455                 serviceModelDb.setRecoveryAction(recoveryActionSkip);
456                 serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
457                 serviceModelDb.setRetryCount(retryCountThree);
458                 serviceModelDb.setServiceModelVersionDistrStatus(statusError);
459
460                 OperationalEnvDistributionStatus distributionDb = new OperationalEnvDistributionStatus();
461                 distributionDb.setDistributionId(sdcDistributionId);
462                 distributionDb.setRequestId(requestIdOrig);
463                 distributionDb.setOperationalEnvId(operationalEnvironmentId);
464                 distributionDb.setDistributionIdStatus(statusError);
465                 distributionDb.setServiceModelVersionId(serviceModelVersionId);
466                 distributionDb.setDistributionIdErrorReason(null);
467                 
468                 // prepare distribution obj
469                 OperationalEnvDistributionStatus  distributionStatus = new OperationalEnvDistributionStatus(sdcDistributionId,operationalEnvironmentId,serviceModelVersionId);
470                 distributionStatus.setDistributionIdStatus(Status.DISTRIBUTION_COMPLETE_ERROR.name());
471                 
472                 Distribution distribution = new Distribution();
473                 distribution.setStatus(Status.DISTRIBUTION_COMPLETE_ERROR);
474                 request.setDistribution(distribution);
475                 request.setDistributionId(sdcDistributionId);
476                 request.setOperationalEnvironmentId(operationalEnvironmentId);
477                 InfraActiveRequests iar = new InfraActiveRequests();
478                 iar.setRequestId(requestIdOrig);
479                 iar.setRequestStatus("PENDING");
480
481                 stubFor(get(urlPathEqualTo("/operationalEnvServiceModelStatus/search/findOneByOperationalEnvIdAndServiceModelVersionId"))
482                                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
483                                                 .withBody(mapper.writeValueAsString(serviceModelDb))
484                                                 .withStatus(HttpStatus.SC_OK)));
485                 stubFor(get(urlPathEqualTo("/operationalEnvDistributionStatus/"+sdcDistributionId))
486                                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
487                                                 .withBody(mapper.writeValueAsString(distributionDb))
488                                                 .withStatus(HttpStatus.SC_OK)));
489                 stubFor(get(urlPathEqualTo("/infraActiveRequests/"+requestIdOrig))
490                                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
491                                                 .withBody(mapper.writeValueAsString(iar))
492                                                 .withStatus(HttpStatus.SC_OK)));
493                 stubFor(post(urlPathEqualTo("/operationalEnvServiceModelStatus/"))
494                                 .withRequestBody(equalTo("{\"requestId\":\"TEST_requestIdOrig\",\"operationalEnvId\":\"TEST_operationalEnvironmentId\",\"serviceModelVersionId\":\"TEST_serviceModelVersionId\",\"serviceModelVersionDistrStatus\":\"DISTRIBUTION_COMPLETE_OK\",\"recoveryAction\":\"SKIP\",\"retryCount\":0,\"workloadContext\":\"TEST_workloadContext\",\"createTime\":null,\"modifyTime\":null,\"handler\":{}}"))
495                                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
496                                                 .withStatus(HttpStatus.SC_OK)));
497
498                 stubFor(post(urlPathEqualTo("/operationalEnvDistributionStatus/"))
499                                 .withRequestBody(equalTo("{\"distributionId\":\"TEST_distributionId\",\"operationalEnvId\":\"TEST_operationalEnvironmentId\",\"serviceModelVersionId\":\"TEST_serviceModelVersionId\",\"requestId\":\"TEST_requestIdOrig\",\"distributionIdStatus\":\"DISTRIBUTION_COMPLETE_OK\",\"distributionIdErrorReason\":\"\",\"createTime\":null,\"modifyTime\":null,\"handler\":{}}"))
500                                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
501                                                 .withStatus(HttpStatus.SC_OK)));
502
503                 activateVnfStatus.execute(requestId, request);                  
504
505         }       
506         
507         @Test
508         public void executionTest_ERROR_Status_And_ABORT() throws JsonProcessingException {
509                 
510                 OperationalEnvServiceModelStatus serviceModelDb = new OperationalEnvServiceModelStatus();
511                 serviceModelDb.setRequestId(requestIdOrig);
512                 serviceModelDb.setServiceModelVersionId(serviceModelVersionId);
513                 serviceModelDb.setWorkloadContext(workloadContext);
514                 serviceModelDb.setRecoveryAction(recoveryActionAbort);
515                 serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
516                 serviceModelDb.setRetryCount(retryCountThree);
517                 serviceModelDb.setServiceModelVersionDistrStatus(statusError);
518                 
519                 OperationalEnvDistributionStatus distributionDb = new OperationalEnvDistributionStatus();
520                 distributionDb.setDistributionId(sdcDistributionId);
521                 distributionDb.setRequestId(requestIdOrig);
522                 distributionDb.setOperationalEnvId(operationalEnvironmentId);
523                 distributionDb.setDistributionIdStatus(statusError);
524                 distributionDb.setServiceModelVersionId(serviceModelVersionId);
525                 distributionDb.setDistributionIdErrorReason(null);
526                 
527                 
528                 
529                 // prepare distribution obj
530                 Distribution distribution = new Distribution();
531                 distribution.setStatus(Status.DISTRIBUTION_COMPLETE_ERROR);
532                 request.setDistribution(distribution);
533                 request.setDistributionId(sdcDistributionId);
534                 request.setOperationalEnvironmentId(operationalEnvironmentId);
535                 
536                 InfraActiveRequests iar = new InfraActiveRequests();
537                 iar.setRequestId(requestIdOrig);
538                 iar.setRequestStatus("PENDING");
539
540                 stubFor(get(urlPathEqualTo("/operationalEnvServiceModelStatus/search/findOneByOperationalEnvIdAndServiceModelVersionId"))
541                                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
542                                                 .withBody(mapper.writeValueAsString(serviceModelDb))
543                                                 .withStatus(HttpStatus.SC_OK)));
544                 stubFor(get(urlPathEqualTo("/operationalEnvDistributionStatus/"+sdcDistributionId))
545                                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
546                                                 .withBody(mapper.writeValueAsString(distributionDb))
547                                                 .withStatus(HttpStatus.SC_OK)));
548                 stubFor(get(urlPathEqualTo("/infraActiveRequests/"+requestIdOrig))
549                                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
550                                                 .withBody(mapper.writeValueAsString(iar))
551                                                 .withStatus(HttpStatus.SC_OK)));
552
553                 stubFor(post(urlPathEqualTo("/operationalEnvDistributionStatus/"))
554                                 .withRequestBody(containing("{\"distributionId\":\"TEST_distributionId\",\"operationalEnvId\":\"TEST_operationalEnvironmentId\",\"serviceModelVersionId\":\"TEST_serviceModelVersionId\",\"requestId\":\"TEST_requestIdOrig\",\"distributionIdStatus\":\"DISTRIBUTION_COMPLETE_ERROR\""))
555                                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
556                                                 .withStatus(HttpStatus.SC_OK)));
557
558                 stubFor(post(urlPathEqualTo("/operationalEnvServiceModelStatus/"))
559                                 .withRequestBody(containing("{\"requestId\":\"TEST_requestIdOrig\",\"operationalEnvId\":\"TEST_operationalEnvironmentId\",\"serviceModelVersionId\":\"TEST_serviceModelVersionId\",\"serviceModelVersionDistrStatus\":\"DISTRIBUTION_COMPLETE_ERROR\""))
560                                 .willReturn(aResponse().withHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
561                                                 .withStatus(HttpStatus.SC_OK)));
562         try {
563             activateVnfStatus.execute(requestId, request);
564         }catch(ApiException e) {
565                         assertThat(e.getMessage(), startsWith("Overall Activation process is a Failure. "));
566                         assertEquals(e.getHttpResponseCode(), HttpStatus.SC_BAD_REQUEST);
567                         assertEquals(e.getMessageID(), ErrorNumbers.SVC_DETAILED_SERVICE_ERROR);
568                 }
569                 
570         }               
571         
572         @Test
573         @Ignore
574         public void callSDClientForRetryTest_202() throws Exception {
575                 OperationalEnvServiceModelStatus serviceModelDb = new OperationalEnvServiceModelStatus();
576                 serviceModelDb.setRequestId(requestIdOrig);
577                 serviceModelDb.setServiceModelVersionId(serviceModelVersionId);
578                 serviceModelDb.setWorkloadContext(workloadContext);
579                 serviceModelDb.setRecoveryAction(recoveryActionRetry);
580                 serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
581                 serviceModelDb.setRetryCount(retryCountThree);
582                 serviceModelDb.setServiceModelVersionDistrStatus(statusSent);
583
584                 OperationalEnvDistributionStatus distributionDb = new OperationalEnvDistributionStatus();
585                 distributionDb.setDistributionId(sdcDistributionId);
586                 distributionDb.setRequestId(requestIdOrig);
587                 distributionDb.setOperationalEnvId(operationalEnvironmentId);
588                 distributionDb.setDistributionIdStatus(statusSent);
589                 distributionDb.setServiceModelVersionId(serviceModelVersionId);
590                 distributionDb.setDistributionIdErrorReason(null);              
591                 
592         
593                 
594                 JSONObject jsonObject = new JSONObject();
595                 jsonObject.put("statusCode", "202");
596                 jsonObject.put("message", "Success");
597                 jsonObject.put("distributionId", sdcDistributionId1);
598         
599                 // prepare distribution obj
600                 Distribution distribution = new Distribution();
601                 distribution.setStatus(Status.DISTRIBUTION_COMPLETE_OK);
602                 request.setDistribution(distribution);
603                 request.setDistributionId(sdcDistributionId);
604                 request.setOperationalEnvironmentId(operationalEnvironmentId);          
605                 
606                 stubFor(post(urlPathMatching("/sdc/v1/catalog/services/TEST_serviceModelVersionId/distr.*"))
607                                 .willReturn(aResponse().withHeader("Content-Type", "application/json").withBody(jsonObject.toString()).withStatus(HttpStatus.SC_ACCEPTED)));
608                 
609                 JSONObject jsonResponse = activateVnfStatus.callSDClientForRetry(distributionDb, serviceModelDb, distribution); 
610                 
611                 assertEquals("TEST_distributionId1", jsonResponse.get("distributionId")); 
612                 assertEquals("Success", jsonResponse.get("message"));
613                 assertEquals("202", jsonResponse.get("statusCode"));            
614
615         }
616 }