infinite loop when so not responding 13/47813/1
authorromaingimbert <romain.gimbert@orange.com>
Wed, 16 May 2018 12:42:36 +0000 (14:42 +0200)
committerromaingimbert <romain.gimbert@orange.com>
Wed, 16 May 2018 12:42:36 +0000 (14:42 +0200)
- fix code
- add test

Change-Id: Idcf9383d38e821418c16e8f72250df238e1a6b78
Issue-ID: EXTAPI-89
Signed-off-by: romaingimbert <romain.gimbert@orange.com>
src/main/java/org/onap/nbi/apis/serviceorder/SoClient.java
src/main/java/org/onap/nbi/apis/serviceorder/workflow/SOTaskProcessor.java
src/test/java/org/onap/nbi/apis/ApiTest.java

index ef4d8c3..e0daa23 100644 (file)
@@ -125,11 +125,15 @@ public class SoClient {
     }
 
     private void logResponseGet(String url, ResponseEntity<GetRequestStatusResponse> response) {
-        LOGGER.debug(RESPONSE_BODY + response.getBody().toString());
-        LOGGER.info(RESPONSE_STATUS + response.getStatusCodeValue());
-        if (!response.getStatusCode().equals(HttpStatus.OK)) {
-            LOGGER.warn("HTTP call on " + url + RETURNS + response.getStatusCodeValue() + ", "
+        if(response!=null){
+            LOGGER.debug(RESPONSE_BODY + response.getBody().toString());
+            LOGGER.info(RESPONSE_STATUS + response.getStatusCodeValue());
+            if (!response.getStatusCode().equals(HttpStatus.OK)) {
+                LOGGER.warn("HTTP call on " + url + RETURNS + response.getStatusCodeValue() + ", "
                     + response.getBody().toString());
+            }
+        } else {
+            LOGGER.info("no response calling url {}",url);
         }
     }
 
index d63de11..f453dc2 100644 (file)
@@ -76,13 +76,7 @@ public class SOTaskProcessor {
 
             ResponseEntity<CreateServiceInstanceResponse> response = postServiceOrderItem(serviceOrderInfo,
                 serviceOrderItem);
-
-            if (response == null) {
-                LOGGER.warn("response=null for serviceOrderItem.id=" + serviceOrderItem.getId());
-                serviceOrderItem.setState(StateType.FAILED);
-            } else {
-                updateServiceOrderItem(response, serviceOrderItem);
-            }
+            updateServiceOrderItem(response, serviceOrderItem,serviceOrder);
         }
 
         if (executionTask.getNbRetries() > 0 && StateType.FAILED != serviceOrderItem.getState()
@@ -298,25 +292,32 @@ public class SOTaskProcessor {
 
     /**
      * Update ServiceOrderItem with SO response by using serviceOrderRepository with the serviceOrderId
-     *
-     * @param response
+     *  @param response
      * @param orderItem
+     * @param serviceOrder
      */
     private void updateServiceOrderItem(ResponseEntity<CreateServiceInstanceResponse> response,
-        ServiceOrderItem orderItem) {
+        ServiceOrderItem orderItem, ServiceOrder serviceOrder) {
 
-        CreateServiceInstanceResponse createServiceInstanceResponse = response.getBody();
-        if (createServiceInstanceResponse != null && !orderItem.getState().equals(StateType.FAILED)) {
-            orderItem.getService().setId(createServiceInstanceResponse.getRequestReferences().getInstanceId());
-            orderItem.setRequestId(createServiceInstanceResponse.getRequestReferences().getRequestId());
+        if (response == null) {
+            LOGGER.warn("response=null for serviceOrderItem.id=" + orderItem.getId());
+            orderItem.setState(StateType.FAILED);
         }
+        else {
+            CreateServiceInstanceResponse createServiceInstanceResponse = response.getBody();
+            if (createServiceInstanceResponse != null && !orderItem.getState().equals(StateType.FAILED)) {
+                orderItem.getService().setId(createServiceInstanceResponse.getRequestReferences().getInstanceId());
+                orderItem.setRequestId(createServiceInstanceResponse.getRequestReferences().getRequestId());
+            }
 
-        if (response.getStatusCode() != HttpStatus.CREATED || response.getBody() == null
-            || response.getBody().getRequestReferences() == null) {
-            orderItem.setState(StateType.FAILED);
-        } else {
-            orderItem.setState(StateType.INPROGRESS);
+            if (response.getStatusCode() != HttpStatus.CREATED || response.getBody() == null
+                || response.getBody().getRequestReferences() == null) {
+                orderItem.setState(StateType.FAILED);
+            } else {
+                orderItem.setState(StateType.INPROGRESS);
+            }
         }
+        serviceOrderRepository.save(serviceOrder);
     }
 
     /**
index ef285a4..a650ab5 100644 (file)
@@ -622,8 +622,8 @@ public class ApiTest {
 
         }
 
-        executionTaskB = getExecutionTask("B");
-        assertThat(executionTaskB).isNull();
+        assertThat(executionTaskRepository.count()).isEqualTo(0);
+
 
 
     }
@@ -661,8 +661,8 @@ public class ApiTest {
 
         }
 
-        executionTaskB = getExecutionTask("B");
-        assertThat(executionTaskB).isNull();
+        assertThat(executionTaskRepository.count()).isEqualTo(0);
+
 
 
     }
@@ -702,8 +702,7 @@ public class ApiTest {
 
         }
 
-        ExecutionTask executionTaskB = executionTaskRepository.findOne(Long.parseLong("2"));
-        assertThat(executionTaskB).isNull();
+        assertThat(executionTaskRepository.count()).isEqualTo(0);
 
 
     }
@@ -727,11 +726,30 @@ public class ApiTest {
                 assertThat(serviceOrderItem.getState()).isEqualTo(StateType.FAILED);
         }
 
-        ExecutionTask executionTaskB = executionTaskRepository.findOne(Long.parseLong("2"));
-        assertThat(executionTaskB).isNull();
+        assertThat(executionTaskRepository.count()).isEqualTo(0);
+
 
 
     }
 
+    @Test
+    public void testExecutionTaskFailedNoSoAndStatusResponse() throws Exception {
+
+        ExecutionTask executionTaskA = ServiceOrderAssertions.setUpBddForExecutionTaskSucess(serviceOrderRepository,
+            executionTaskRepository, ActionType.ADD);
+
+        removeWireMockMapping("/ecomp/mso/infra/serviceInstances/v4");
+        removeWireMockMapping("/ecomp/mso/infra/orchestrationRequests/v4/requestId");
+
 
+        SoTaskProcessor.processOrderItem(executionTaskA);
+        ServiceOrder serviceOrderChecked = serviceOrderRepository.findOne("test");
+        assertThat(serviceOrderChecked.getState()).isEqualTo(StateType.FAILED);
+        for (ServiceOrderItem serviceOrderItem : serviceOrderChecked.getOrderItem()) {
+            assertThat(serviceOrderItem.getState()).isEqualTo(StateType.FAILED);
+        }
+
+        assertThat(executionTaskRepository.count()).isEqualTo(0);
+
+    }
 }