eba90496ba7bb90323852439d163e648503c81d3
[so.git] /
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 import static org.junit.Assert.assertNotNull;
34 import static org.junit.Assert.assertNull;
35 import static org.junit.Assert.assertThat;
36
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;
61
62 import javax.ws.rs.core.HttpHeaders;
63 import javax.ws.rs.core.MediaType;
64
65 public class ActivateVnfStatusOperationalEnvironmentTest extends BaseTest{
66
67         @Autowired
68         private ActivateVnfStatusOperationalEnvironment activateVnfStatus;
69         @Autowired
70         private InfraActiveRequestsRepository infraActiveRequestsRepository;
71         @Autowired
72         private ActivateVnfDBHelper dbHelper;
73     @Rule
74     public ExpectedException thrown = ExpectedException.none();
75
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";
94         
95         private final ObjectMapper mapper = new ObjectMapper();
96
97         @Test
98         public void checkOrUpdateOverallStatusTest_Ok() throws Exception {
99                 
100                 // two entries, both status Ok & retry 0
101                 OperationalEnvServiceModelStatus serviceModelDb = new OperationalEnvServiceModelStatus();
102                 serviceModelDb.setRequestId(requestIdOrig);
103                 serviceModelDb.setServiceModelVersionId(serviceModelVersionId);
104                 serviceModelDb.setWorkloadContext(workloadContext);
105                 serviceModelDb.setRecoveryAction(recoveryActionRetry);
106                 serviceModelDb.setOperationalEnvId(operationalEnvironmentId);
107                 serviceModelDb.setRetryCount(retryCountZero);
108                 serviceModelDb.setServiceModelVersionDistrStatus(statusOk);
109                 
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);
117
118                 InfraActiveRequests iar = new InfraActiveRequests();
119                 iar.setRequestId(requestIdOrig);
120                 iar.setRequestStatus("PENDING");
121
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)));
130                 
131                 activateVnfStatus.checkOrUpdateOverallStatus(operationalEnvironmentId, requestIdOrig);
132                 
133                 // overall is success
134         }
135
136         @Test
137         public void checkOrUpdateOverallStatusTest_Error() throws JsonProcessingException {
138                 
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)));
151                 
152                 InfraActiveRequests iar = new InfraActiveRequests();
153                 iar.setRequestId(requestIdOrig);
154                 iar.setRequestStatus("PENDING");
155
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)));
160
161         try {
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);
167         }
168                 
169         }       
170         
171         @Test
172         public void checkOrUpdateOverallStatusTest_Waiting() throws Exception {
173                 
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)));
186                 
187                 activateVnfStatus.checkOrUpdateOverallStatus(operationalEnvironmentId, requestIdOrig);
188                 
189                 // do nothing, waiting for more
190                 assertNull(infraActiveRequestsRepository.findOne(requestIdOrig));
191         }               
192         
193         @Test
194         public void executionTest_Ok() throws Exception {
195                 
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);
204
205                 OperationalEnvDistributionStatus distributionDb = new OperationalEnvDistributionStatus();
206                 distributionDb.setDistributionId(sdcDistributionId);
207                 distributionDb.setRequestId(requestIdOrig);
208                 distributionDb.setOperationalEnvId(operationalEnvironmentId);
209                 distributionDb.setDistributionIdStatus(statusSent);
210                 distributionDb.setServiceModelVersionId(serviceModelVersionId);
211                 distributionDb.setDistributionIdErrorReason(null);
212                 
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);
219                 
220                 InfraActiveRequests iar = new InfraActiveRequests();
221                 iar.setRequestId(requestIdOrig);
222                 iar.setRequestStatus("PENDING");
223                 
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)));
240
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)));
245
246                 activateVnfStatus.execute(requestId, request);          
247         }                               
248         
249         @Test
250         public void executionTest_ERROR_Status_And_RETRY() throws Exception {
251                 
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)));
264                 
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);
272                 
273                 
274                 
275                 
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);
283                 
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);
289                 
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)));
304
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)));
309
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)));
314                 
315                 activateVnfStatus.execute(requestId, request);  
316         }
317
318         @Test
319         public void executionTest_ERROR_Status_And_RETRY_And_RetryZero() throws JsonProcessingException {
320                 
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);
329                 
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);
337                 
338         
339                 
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);
346                 
347                 JSONObject jsonObject = new JSONObject();
348                 jsonObject.put("statusCode", "202");
349                 jsonObject.put("message", "Success");
350                 jsonObject.put("distributionId", sdcDistributionId);
351                 
352                 InfraActiveRequests iar = new InfraActiveRequests();
353                 iar.setRequestId(requestIdOrig);
354                 iar.setRequestStatus("PENDING");
355
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)));
368                 
369                 stubFor(post(urlPathMatching("/sdc/v1/catalog/services/.*"))
370                                 .willReturn(aResponse().withHeader("Content-Type", "application/json").withBody(jsonObject.toString()).withStatus(HttpStatus.SC_ACCEPTED)));
371
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)));
376
377         try {
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);
383         }
384
385                 
386         }       
387         
388         @Test
389         public void executionTest_ERROR_Status_And_RETRY_And_ErrorSdc() throws JsonProcessingException {
390                 
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);
399                 
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);
407                 
408                 
409                 
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);
417                 
418                 // ERROR in sdc
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);
428                 
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)));
448                 
449                 stubFor(post(urlPathMatching("/sdc/v1/catalog/services/.*"))
450                                 .willReturn(aResponse().withHeader("Content-Type", "application/json").withBody(jsonMessages.toString()).withStatus(HttpStatus.SC_CONFLICT)));
451
452                 try {
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);
458         }
459         }       
460         
461         @Test
462         public void executionTest_ERROR_Status_And_SKIP() throws Exception {
463                 
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);
472
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);
480                 
481                 // prepare distribution obj
482                 OperationalEnvDistributionStatus  distributionStatus = new OperationalEnvDistributionStatus(sdcDistributionId,operationalEnvironmentId,serviceModelVersionId);
483                 distributionStatus.setDistributionIdStatus(Status.DISTRIBUTION_COMPLETE_ERROR.name());
484                 
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");
493
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)));
510
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)));
515
516                 activateVnfStatus.execute(requestId, request);                  
517
518         }       
519         
520         @Test
521         public void executionTest_ERROR_Status_And_ABORT() throws JsonProcessingException {
522                 
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);
531                 
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);
539                 
540                 
541                 
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);
548                 
549                 InfraActiveRequests iar = new InfraActiveRequests();
550                 iar.setRequestId(requestIdOrig);
551                 iar.setRequestStatus("PENDING");
552
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)));
565
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)));
570
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)));
575         try {
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);
581                 }
582                 
583         }               
584         
585         @Test
586         @Ignore
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);
596
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);              
604                 
605         
606                 
607                 JSONObject jsonObject = new JSONObject();
608                 jsonObject.put("statusCode", "202");
609                 jsonObject.put("message", "Success");
610                 jsonObject.put("distributionId", sdcDistributionId1);
611         
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);          
618                 
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)));
621                 
622                 JSONObject jsonResponse = activateVnfStatus.callSDClientForRetry(distributionDb, serviceModelDb, distribution); 
623                 
624                 assertEquals("TEST_distributionId1", jsonResponse.get("distributionId")); 
625                 assertEquals("Success", jsonResponse.get("message"));
626                 assertEquals("202", jsonResponse.get("statusCode"));            
627
628         }
629 }