Add test cases for GET E2E svc 77/21777/1
authorseshukm <seshu.kumar.m@huawei.com>
Thu, 2 Nov 2017 05:35:34 +0000 (11:05 +0530)
committerseshukm <seshu.kumar.m@huawei.com>
Thu, 2 Nov 2017 05:35:34 +0000 (11:05 +0530)
IssueId: SO-260

Change-Id: Ie57b57b98472f6d8b012137562713de02d6a516c
Signed-off-by: seshukm <seshu.kumar.m@huawei.com>
mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/E2EServiceInstances.java
mso-api-handlers/mso-api-handler-infra/src/main/java/org/openecomp/mso/apihandlerinfra/e2eserviceinstancebeans/GetE2EServiceInstanceResponse.java
mso-api-handlers/mso-api-handler-infra/src/test/java/org/openecomp/mso/apihandlerinfra/E2EServiceInstancesTest.java
mso-api-handlers/mso-requests-db/src/main/java/org/openecomp/mso/requestsdb/RequestsDatabase.java

index c582704..f5d068f 100644 (file)
@@ -40,7 +40,6 @@ import javax.ws.rs.core.Response;
 import org.apache.http.HttpResponse;
 import org.apache.http.HttpStatus;
 import org.codehaus.jackson.map.ObjectMapper;
-import org.eclipse.jetty.io.RuntimeIOException;
 import org.hibernate.Session;
 import org.json.JSONObject;
 import org.openecomp.mso.apihandler.common.ErrorNumbers;
@@ -69,7 +68,6 @@ import org.openecomp.mso.logger.MessageEnum;
 import org.openecomp.mso.logger.MsoAlarmLogger;
 import org.openecomp.mso.logger.MsoLogger;
 import org.openecomp.mso.properties.MsoDatabaseException;
-import org.openecomp.mso.requestsdb.InfraActiveRequests;
 import org.openecomp.mso.requestsdb.OperationStatus;
 import org.openecomp.mso.requestsdb.RequestsDatabase;
 import org.openecomp.mso.requestsdb.RequestsDbSessionFactoryManager;
@@ -83,11 +81,12 @@ import com.wordnik.swagger.annotations.ApiOperation;
 public class E2EServiceInstances {
 
        private HashMap<String, String> instanceIdMap = new HashMap<>();
-       private static MsoLogger msoLogger = MsoLogger.getMsoLogger(MsoLogger.Catalog.APIH);
+       private static MsoLogger msoLogger = MsoLogger
+                       .getMsoLogger(MsoLogger.Catalog.APIH);
        private static MsoAlarmLogger alarmLogger = new MsoAlarmLogger();
        public static final String MSO_PROP_APIHANDLER_INFRA = "MSO_PROP_APIHANDLER_INFRA";
        private ServiceInstancesRequest sir = null;
-       
+
        public static final String END_OF_THE_TRANSACTION = "End of the transaction, the final response is: ";
        public static final String EXCEPTION_CREATING_DB_RECORD = "Exception while creating record in DB";
        public static final String EXCEPTION_COMMUNICATE_BPMN_ENGINE = "Exception while communicate with BPMN engine";
@@ -101,9 +100,11 @@ public class E2EServiceInstances {
        @Consumes(MediaType.APPLICATION_JSON)
        @Produces(MediaType.APPLICATION_JSON)
        @ApiOperation(value = "Create a E2E Service Instance on a version provided", response = Response.class)
-       public Response createE2EServiceInstance(String request, @PathParam("version") String version) {
+       public Response createE2EServiceInstance(String request,
+                       @PathParam("version") String version) {
 
-               return processE2EserviceInstances(request, Action.createInstance, null, version);
+               return processE2EserviceInstances(request, Action.createInstance, null,
+                               version);
        }
 
        /**
@@ -116,22 +117,30 @@ public class E2EServiceInstances {
        @Consumes(MediaType.APPLICATION_JSON)
        @Produces(MediaType.APPLICATION_JSON)
        @ApiOperation(value = "Delete E2E Service Instance on a specified version and serviceId", response = Response.class)
-       public Response deleteE2EServiceInstance(String request, @PathParam("version") String version,
+       public Response deleteE2EServiceInstance(String request,
+                       @PathParam("version") String version,
                        @PathParam("serviceId") String serviceId) {
 
                instanceIdMap.put("serviceId", serviceId);
 
-               return deleteE2EserviceInstances(request, Action.deleteInstance, instanceIdMap, version);
+               return deleteE2EserviceInstances(request, Action.deleteInstance,
+                               instanceIdMap, version);
        }
-       
+
        @GET
        @Path("/{version:[vV][3-5]}/{serviceId}/operations/{operationId}")
        @ApiOperation(value = "Find e2eServiceInstances Requests for a given serviceId and operationId", response = Response.class)
        @Produces(MediaType.APPLICATION_JSON)
-       public Response getE2EServiceInstances(@PathParam("serviceId") String serviceId,
-                       @PathParam("version") String version, @PathParam("operationId") String operationId) {
+       public Response getE2EServiceInstances(
+                       @PathParam("serviceId") String serviceId,
+                       @PathParam("version") String version,
+                       @PathParam("operationId") String operationId) {
+               return getE2EServiceInstances(serviceId, operationId);
+       }
+
+       private Response getE2EServiceInstances(String serviceId, String operationId) {
                RequestsDatabase requestsDB = RequestsDatabase.getInstance();
-               
+
                GetE2EServiceInstanceResponse e2eServiceResponse = new GetE2EServiceInstanceResponse();
 
                MsoRequest msoRequest = new MsoRequest(serviceId);
@@ -141,169 +150,224 @@ public class E2EServiceInstances {
                OperationStatus operationStatus = null;
 
                try {
-                       operationStatus = requestsDB.getOperationStatus(serviceId, operationId);
+                       operationStatus = requestsDB.getOperationStatus(serviceId,
+                                       operationId);
 
                } catch (Exception e) {
-                       msoLogger.error(MessageEnum.APIH_DB_ACCESS_EXC, MSO_PROP_APIHANDLER_INFRA, "", "",
-                                       MsoLogger.ErrorCode.AvailabilityError,
-                                       "Exception while communciate with Request DB - Infra Request Lookup", e);
-                       msoRequest.setStatus(org.openecomp.mso.apihandlerinfra.vnfbeans.RequestStatusType.FAILED);
-                       Response response = msoRequest.buildServiceErrorResponse(HttpStatus.SC_NOT_FOUND,
-                                       MsoException.ServiceException, e.getMessage(), ErrorNumbers.NO_COMMUNICATION_TO_REQUESTS_DB, null);
-                       alarmLogger.sendAlarm("MsoDatabaseAccessError", MsoAlarmLogger.CRITICAL,
-                                       Messages.errors.get(ErrorNumbers.NO_COMMUNICATION_TO_REQUESTS_DB));
-                       msoLogger.recordAuditEvent(startTime, MsoLogger.StatusCode.ERROR, MsoLogger.ResponseCode.DBAccessError,
+                       msoLogger
+                                       .error(MessageEnum.APIH_DB_ACCESS_EXC,
+                                                       MSO_PROP_APIHANDLER_INFRA,
+                                                       "",
+                                                       "",
+                                                       MsoLogger.ErrorCode.AvailabilityError,
+                                                       "Exception while communciate with Request DB - Infra Request Lookup",
+                                                       e);
+                       msoRequest
+                                       .setStatus(org.openecomp.mso.apihandlerinfra.vnfbeans.RequestStatusType.FAILED);
+                       Response response = msoRequest.buildServiceErrorResponse(
+                                       HttpStatus.SC_NOT_FOUND, MsoException.ServiceException,
+                                       e.getMessage(),
+                                       ErrorNumbers.NO_COMMUNICATION_TO_REQUESTS_DB, null);
+                       alarmLogger.sendAlarm("MsoDatabaseAccessError",
+                                       MsoAlarmLogger.CRITICAL, Messages.errors
+                                                       .get(ErrorNumbers.NO_COMMUNICATION_TO_REQUESTS_DB));
+                       msoLogger.recordAuditEvent(startTime, MsoLogger.StatusCode.ERROR,
+                                       MsoLogger.ResponseCode.DBAccessError,
                                        "Exception while communciate with Request DB");
-                       msoLogger.debug("End of the transaction, the final response is: " + (String) response.getEntity());
+                       msoLogger.debug("End of the transaction, the final response is: "
+                                       + (String) response.getEntity());
                        return response;
 
                }
 
                if (operationStatus == null) {
-                       Response resp = msoRequest.buildServiceErrorResponse(HttpStatus.SC_NO_CONTENT,
-                                       MsoException.ServiceException, "E2E serviceId " + serviceId + " is not found in DB",
+                       Response resp = msoRequest.buildServiceErrorResponse(
+                                       HttpStatus.SC_NO_CONTENT, MsoException.ServiceException,
+                                       "E2E serviceId " + serviceId + " is not found in DB",
                                        ErrorNumbers.SVC_DETAILED_SERVICE_ERROR, null);
-                       msoLogger.error(MessageEnum.APIH_BPEL_COMMUNICATE_ERROR, MSO_PROP_APIHANDLER_INFRA, "", "",
+                       msoLogger.error(MessageEnum.APIH_BPEL_COMMUNICATE_ERROR,
+                                       MSO_PROP_APIHANDLER_INFRA, "", "",
                                        MsoLogger.ErrorCode.BusinessProcesssError,
                                        "Null response from RequestDB when searching by serviceId");
-                       msoLogger.recordAuditEvent(startTime, MsoLogger.StatusCode.ERROR, MsoLogger.ResponseCode.DataNotFound,
+                       msoLogger.recordAuditEvent(startTime, MsoLogger.StatusCode.ERROR,
+                                       MsoLogger.ResponseCode.DataNotFound,
                                        "Null response from RequestDB when searching by serviceId");
-                       msoLogger.debug("End of the transaction, the final response is: " + (String) resp.getEntity());
+                       msoLogger.debug("End of the transaction, the final response is: "
+                                       + (String) resp.getEntity());
                        return resp;
 
                }
 
-               e2eServiceResponse.setE2eRequest(operationStatus);
+               e2eServiceResponse.setOperationStatus(operationStatus);
 
                return Response.status(200).entity(e2eServiceResponse).build();
        }
 
-       private Response deleteE2EserviceInstances(String requestJSON, Action action,
-                       HashMap<String, String> instanceIdMap, String version) {
-               //TODO should be a new one or the same service instance Id
+       private Response deleteE2EserviceInstances(String requestJSON,
+                       Action action, HashMap<String, String> instanceIdMap, String version) {
+               // TODO should be a new one or the same service instance Id
                String requestId = instanceIdMap.get("serviceId");
                long startTime = System.currentTimeMillis();
                msoLogger.debug("requestId is: " + requestId);
                E2EServiceInstanceDeleteRequest e2eDelReq = null;
 
                MsoRequest msoRequest = new MsoRequest(requestId);
-               
+
                ObjectMapper mapper = new ObjectMapper();
                try {
-                       e2eDelReq = mapper.readValue(requestJSON, E2EServiceInstanceDeleteRequest.class);
+                       e2eDelReq = mapper.readValue(requestJSON,
+                                       E2EServiceInstanceDeleteRequest.class);
 
                } catch (Exception e) {
 
                        msoLogger.debug("Mapping of request to JSON object failed : ", e);
-                       Response response = msoRequest.buildServiceErrorResponse(HttpStatus.SC_BAD_REQUEST,
-                                       MsoException.ServiceException, "Mapping of request to JSON object failed.  " + e.getMessage(),
-                                       ErrorNumbers.SVC_BAD_PARAMETER, null);
-                       msoLogger.error(MessageEnum.APIH_REQUEST_VALIDATION_ERROR, MSO_PROP_APIHANDLER_INFRA, "", "",
+                       Response response = msoRequest.buildServiceErrorResponse(
+                                       HttpStatus.SC_BAD_REQUEST,
+                                       MsoException.ServiceException,
+                                       "Mapping of request to JSON object failed.  "
+                                                       + e.getMessage(), ErrorNumbers.SVC_BAD_PARAMETER,
+                                       null);
+                       msoLogger.error(MessageEnum.APIH_REQUEST_VALIDATION_ERROR,
+                                       MSO_PROP_APIHANDLER_INFRA, "", "",
                                        MsoLogger.ErrorCode.SchemaError, requestJSON, e);
-                       msoLogger.recordAuditEvent(startTime, MsoLogger.StatusCode.ERROR, MsoLogger.ResponseCode.SchemaError,
+                       msoLogger.recordAuditEvent(startTime, MsoLogger.StatusCode.ERROR,
+                                       MsoLogger.ResponseCode.SchemaError,
                                        "Mapping of request to JSON object failed");
-                       msoLogger.debug("End of the transaction, the final response is: " + (String) response.getEntity());
+                       msoLogger.debug("End of the transaction, the final response is: "
+                                       + (String) response.getEntity());
                        createOperationStatusRecordForError(action, requestId);
                        return response;
                }
-               
+
                CatalogDatabase db = null;
                RecipeLookupResult recipeLookupResult = null;
                try {
                        db = CatalogDatabase.getInstance();
                        recipeLookupResult = getServiceInstanceOrchestrationURI(db, action);
                } catch (Exception e) {
-                       msoLogger.error(MessageEnum.APIH_DB_ACCESS_EXC, MSO_PROP_APIHANDLER_INFRA, "", "",
-                                       MsoLogger.ErrorCode.AvailabilityError, "Exception while communciate with Catalog DB", e);
-                       msoRequest.setStatus(org.openecomp.mso.apihandlerinfra.vnfbeans.RequestStatusType.FAILED);
-                       Response response = msoRequest.buildServiceErrorResponse(HttpStatus.SC_NOT_FOUND,
-                                       MsoException.ServiceException, "No communication to catalog DB " + e.getMessage(),
+                       msoLogger.error(MessageEnum.APIH_DB_ACCESS_EXC,
+                                       MSO_PROP_APIHANDLER_INFRA, "", "",
+                                       MsoLogger.ErrorCode.AvailabilityError,
+                                       "Exception while communciate with Catalog DB", e);
+                       msoRequest
+                                       .setStatus(org.openecomp.mso.apihandlerinfra.vnfbeans.RequestStatusType.FAILED);
+                       Response response = msoRequest.buildServiceErrorResponse(
+                                       HttpStatus.SC_NOT_FOUND, MsoException.ServiceException,
+                                       "No communication to catalog DB " + e.getMessage(),
                                        ErrorNumbers.SVC_NO_SERVER_RESOURCES, null);
-                       alarmLogger.sendAlarm("MsoDatabaseAccessError", MsoAlarmLogger.CRITICAL,
-                                       Messages.errors.get(ErrorNumbers.NO_COMMUNICATION_TO_CATALOG_DB));
+                       alarmLogger.sendAlarm("MsoDatabaseAccessError",
+                                       MsoAlarmLogger.CRITICAL, Messages.errors
+                                                       .get(ErrorNumbers.NO_COMMUNICATION_TO_CATALOG_DB));
                        msoRequest.createRequestRecord(Status.FAILED, action);
-                       msoLogger.recordAuditEvent(startTime, MsoLogger.StatusCode.ERROR, MsoLogger.ResponseCode.DBAccessError,
+                       msoLogger.recordAuditEvent(startTime, MsoLogger.StatusCode.ERROR,
+                                       MsoLogger.ResponseCode.DBAccessError,
                                        "Exception while communciate with DB");
-                       msoLogger.debug(END_OF_THE_TRANSACTION + (String) response.getEntity());
+                       msoLogger.debug(END_OF_THE_TRANSACTION
+                                       + (String) response.getEntity());
                        return response;
                } finally {
                        closeCatalogDB(db);
                }
                if (recipeLookupResult == null) {
-                       msoLogger.error(MessageEnum.APIH_DB_ATTRIBUTE_NOT_FOUND, MSO_PROP_APIHANDLER_INFRA, "", "",
+                       msoLogger.error(MessageEnum.APIH_DB_ATTRIBUTE_NOT_FOUND,
+                                       MSO_PROP_APIHANDLER_INFRA, "", "",
                                        MsoLogger.ErrorCode.DataError, "No recipe found in DB");
-                       msoRequest.setStatus(org.openecomp.mso.apihandlerinfra.vnfbeans.RequestStatusType.FAILED);
-                       Response response = msoRequest.buildServiceErrorResponse(HttpStatus.SC_NOT_FOUND,
-                                       MsoException.ServiceException, "Recipe does not exist in catalog DB",
+                       msoRequest
+                                       .setStatus(org.openecomp.mso.apihandlerinfra.vnfbeans.RequestStatusType.FAILED);
+                       Response response = msoRequest.buildServiceErrorResponse(
+                                       HttpStatus.SC_NOT_FOUND, MsoException.ServiceException,
+                                       "Recipe does not exist in catalog DB",
                                        ErrorNumbers.SVC_GENERAL_SERVICE_ERROR, null);
                        msoRequest.createRequestRecord(Status.FAILED, action);
-                       msoLogger.recordAuditEvent(startTime, MsoLogger.StatusCode.ERROR, MsoLogger.ResponseCode.DataNotFound,
+                       msoLogger.recordAuditEvent(startTime, MsoLogger.StatusCode.ERROR,
+                                       MsoLogger.ResponseCode.DataNotFound,
                                        "No recipe found in DB");
-                       msoLogger.debug(END_OF_THE_TRANSACTION + (String) response.getEntity());
+                       msoLogger.debug(END_OF_THE_TRANSACTION
+                                       + (String) response.getEntity());
                        createOperationStatusRecordForError(action, requestId);
                        return response;
                }
 
-               
                RequestClient requestClient = null;
                HttpResponse response = null;
 
                long subStartTime = System.currentTimeMillis();
-               //String sirRequestJson = mapReqJsonToSvcInstReq(e2eSir, requestJSON);
+               // String sirRequestJson = mapReqJsonToSvcInstReq(e2eSir, requestJSON);
 
                try {
-                       requestClient = RequestClientFactory.getRequestClient(recipeLookupResult.getOrchestrationURI(),
+                       requestClient = RequestClientFactory.getRequestClient(
+                                       recipeLookupResult.getOrchestrationURI(),
                                        MsoPropertiesUtils.loadMsoProperties());
 
                        JSONObject jjo = new JSONObject(requestJSON);
                        jjo.put("operationId", UUIDChecker.generateUUID(msoLogger));
-                       
+
                        String bpmnRequest = jjo.toString();
-                       
-                       // Capture audit event
-                       msoLogger.debug("MSO API Handler Posting call to BPEL engine for url: " + requestClient.getUrl());
-            String serviceId = instanceIdMap.get("serviceId");
-            String serviceInstanceType = e2eDelReq.getServiceType();
-                       response = requestClient.post(requestId, false, recipeLookupResult.getRecipeTimeout(), action.name(),
-                                       serviceId, null, null, null, null, serviceInstanceType, null, null, null, bpmnRequest);
 
-                       msoLogger.recordMetricEvent(subStartTime, MsoLogger.StatusCode.COMPLETE, MsoLogger.ResponseCode.Suc,
-                                       "Successfully received response from BPMN engine", "BPMN", recipeLookupResult.getOrchestrationURI(),
-                                       null);
+                       // Capture audit event
+                       msoLogger
+                                       .debug("MSO API Handler Posting call to BPEL engine for url: "
+                                                       + requestClient.getUrl());
+                       String serviceId = instanceIdMap.get("serviceId");
+                       String serviceInstanceType = e2eDelReq.getServiceType();
+                       response = requestClient.post(requestId, false,
+                                       recipeLookupResult.getRecipeTimeout(), action.name(),
+                                       serviceId, null, null, null, null, serviceInstanceType,
+                                       null, null, null, bpmnRequest);
+
+                       msoLogger.recordMetricEvent(subStartTime,
+                                       MsoLogger.StatusCode.COMPLETE, MsoLogger.ResponseCode.Suc,
+                                       "Successfully received response from BPMN engine", "BPMN",
+                                       recipeLookupResult.getOrchestrationURI(), null);
                } catch (Exception e) {
-                       msoLogger.recordMetricEvent(subStartTime, MsoLogger.StatusCode.ERROR,
-                                       MsoLogger.ResponseCode.CommunicationError, "Exception while communicate with BPMN engine", "BPMN",
+                       msoLogger.recordMetricEvent(subStartTime,
+                                       MsoLogger.StatusCode.ERROR,
+                                       MsoLogger.ResponseCode.CommunicationError,
+                                       "Exception while communicate with BPMN engine", "BPMN",
                                        recipeLookupResult.getOrchestrationURI(), null);
-                       Response resp = msoRequest.buildServiceErrorResponse(HttpStatus.SC_BAD_GATEWAY,
-                                       MsoException.ServiceException, "Failed calling bpmn " + e.getMessage(),
+                       Response resp = msoRequest.buildServiceErrorResponse(
+                                       HttpStatus.SC_BAD_GATEWAY, MsoException.ServiceException,
+                                       "Failed calling bpmn " + e.getMessage(),
                                        ErrorNumbers.SVC_NO_SERVER_RESOURCES, null);
-                       alarmLogger.sendAlarm("MsoConfigurationError", MsoAlarmLogger.CRITICAL,
+                       alarmLogger.sendAlarm("MsoConfigurationError",
+                                       MsoAlarmLogger.CRITICAL,
                                        Messages.errors.get(ErrorNumbers.NO_COMMUNICATION_TO_BPEL));
-                       msoLogger.error(MessageEnum.APIH_BPEL_COMMUNICATE_ERROR, MSO_PROP_APIHANDLER_INFRA, "", "",
-                                       MsoLogger.ErrorCode.AvailabilityError, "Exception while communicate with BPMN engine");
-                       msoLogger.recordAuditEvent(startTime, MsoLogger.StatusCode.ERROR, MsoLogger.ResponseCode.CommunicationError,
+                       msoLogger.error(MessageEnum.APIH_BPEL_COMMUNICATE_ERROR,
+                                       MSO_PROP_APIHANDLER_INFRA, "", "",
+                                       MsoLogger.ErrorCode.AvailabilityError,
                                        "Exception while communicate with BPMN engine");
-                       msoLogger.debug("End of the transaction, the final response is: " + (String) resp.getEntity());
+                       msoLogger.recordAuditEvent(startTime, MsoLogger.StatusCode.ERROR,
+                                       MsoLogger.ResponseCode.CommunicationError,
+                                       "Exception while communicate with BPMN engine");
+                       msoLogger.debug("End of the transaction, the final response is: "
+                                       + (String) resp.getEntity());
                        createOperationStatusRecordForError(action, requestId);
                        return resp;
                }
 
                if (response == null) {
-                       Response resp = msoRequest.buildServiceErrorResponse(HttpStatus.SC_BAD_GATEWAY,
-                                       MsoException.ServiceException, "bpelResponse is null", ErrorNumbers.SVC_NO_SERVER_RESOURCES, null);
-                       msoLogger.error(MessageEnum.APIH_BPEL_COMMUNICATE_ERROR, MSO_PROP_APIHANDLER_INFRA, "", "",
-                                       MsoLogger.ErrorCode.BusinessProcesssError, "Null response from BPEL");
-                       msoLogger.recordAuditEvent(startTime, MsoLogger.StatusCode.ERROR, MsoLogger.ResponseCode.InternalError,
+                       Response resp = msoRequest.buildServiceErrorResponse(
+                                       HttpStatus.SC_BAD_GATEWAY, MsoException.ServiceException,
+                                       "bpelResponse is null",
+                                       ErrorNumbers.SVC_NO_SERVER_RESOURCES, null);
+                       msoLogger.error(MessageEnum.APIH_BPEL_COMMUNICATE_ERROR,
+                                       MSO_PROP_APIHANDLER_INFRA, "", "",
+                                       MsoLogger.ErrorCode.BusinessProcesssError,
+                                       "Null response from BPEL");
+                       msoLogger.recordAuditEvent(startTime, MsoLogger.StatusCode.ERROR,
+                                       MsoLogger.ResponseCode.InternalError,
                                        "Null response from BPMN");
                        msoLogger.debug(END_OF_THE_TRANSACTION + (String) resp.getEntity());
                        createOperationStatusRecordForError(action, requestId);
                        return resp;
                }
 
-               ResponseHandler respHandler = new ResponseHandler(response, requestClient.getType());
+               ResponseHandler respHandler = new ResponseHandler(response,
+                               requestClient.getType());
                int bpelStatus = respHandler.getStatus();
 
-               return beplStatusUpdate(requestId, startTime, msoRequest, requestClient, respHandler, bpelStatus, action);
+               return beplStatusUpdate(requestId, startTime, msoRequest,
+                               requestClient, respHandler, bpelStatus, action, instanceIdMap);
        }
 
        private Response processE2EserviceInstances(String requestJSON, Action action,
@@ -356,10 +420,8 @@ public class E2EServiceInstances {
                        msoLogger.debug("End of the transaction, the final response is: " + (String) response.getEntity());
                        return response;
                }
-
-               InfraActiveRequests dup = null;
-//             String instanceName = sir.getService().getName();
-//             String requestScope = sir.getService().getParameters().getNodeType();
+               
+               OperationStatus dup = null;
                String instanceName = sir.getRequestDetails().getRequestInfo().getInstanceName();
                String requestScope = sir.getRequestDetails().getModelInfo().getModelType().name();
                try {
@@ -367,8 +429,7 @@ public class E2EServiceInstances {
                                        && (action == Action.createInstance || action == Action.activateInstance))) {
                          //TODO : Need to check for the duplicate record from the operation status,
                          //TODO : commenting this check for unblocking current testing for now...  induces dead code...
-//                             dup = (RequestsDatabase.getInstance()).checkInstanceNameDuplicate(instanceIdMap, instanceName,
-//                                             requestScope);
+                               dup = chkDuplicateServiceNameInOperStatus( instanceName);
                        }
                } catch (Exception e) {
                        msoLogger.error(MessageEnum.APIH_DUPLICATE_CHECK_EXC, MSO_PROP_APIHANDLER_INFRA, "", "",
@@ -392,8 +453,8 @@ public class E2EServiceInstances {
                                instance = instanceIdMap.get(requestScope + "InstanceId");
                        }
                        String dupMessage = "Error: Locked instance - This " + requestScope + " (" + instance + ") "
-                                       + "already has a request being worked with a status of " + dup.getRequestStatus() + " (RequestId - "
-                                       + dup.getRequestId() + "). The existing request must finish or be cleaned up before proceeding.";
+                                       + "already has a request being worked with a status of " + dup.getProgress() + " (ServiceId - "
+                                       + dup.getServiceId() + "). The existing request must finish or be cleaned up before proceeding.";
 
                        Response response = msoRequest.buildServiceErrorResponse(HttpStatus.SC_CONFLICT,
                                        MsoException.ServiceException, dupMessage, ErrorNumbers.SVC_DETAILED_SERVICE_ERROR, null);
@@ -447,7 +508,6 @@ public class E2EServiceInstances {
                        createOperationStatusRecordForError(action, requestId);
                        return response;
                }
-
 //             try {
 //                     msoRequest.createRequestRecord(Status.PENDING, action);
 //                     //createOperationStatusRecord(action, requestId);
@@ -518,7 +578,7 @@ public class E2EServiceInstances {
                ResponseHandler respHandler = new ResponseHandler(response, requestClient.getType());
                int bpelStatus = respHandler.getStatus();
 
-               return beplStatusUpdate(requestId, startTime, msoRequest, requestClient, respHandler, bpelStatus, action);
+               return beplStatusUpdate(requestId, startTime, msoRequest, requestClient, respHandler, bpelStatus, action, instanceIdMap);
        }
 
        private void closeCatalogDB(CatalogDatabase db) {
@@ -527,91 +587,87 @@ public class E2EServiceInstances {
                }
        }
 
-       private InfraActiveRequests checkForDuplicateRecord(Action action, HashMap<String, String> instanceIdMap,
-                       String instanceName, String requestScope) {
-               InfraActiveRequests dupValue = null;
-               if (!(instanceName == null && "service".equals(requestScope)
-                               && (action == Action.createInstance || action == Action.activateInstance))) {
-                       dupValue = (RequestsDatabase.getInstance()).checkInstanceNameDuplicate(instanceIdMap, instanceName,
-                                       requestScope);
-               }
-               return dupValue;
-       }
-
-       private Response duplicateRecordFound(Action action, HashMap<String, String> instanceIdMap, long startTime,
-                       MsoRequest msoRequest, InfraActiveRequests dup, String instanceName, String requestScope) {
-               String instance = null;
-               if (instanceName != null) {
-                       instance = instanceName;
-               } else {
-                       instance = instanceIdMap.get(requestScope + "InstanceId");
-               }
-               String dupMessage = "Error: Locked instance - This " + requestScope + " (" + instance + ") "
-                               + "already has a request being worked with a status of " + dup.getRequestStatus() + " (RequestId - "
-                               + dup.getRequestId() + "). The existing request must finish or be cleaned up before proceeding.";
-
-               Response response = msoRequest.buildServiceErrorResponse(HttpStatus.SC_CONFLICT, MsoException.ServiceException,
-                               dupMessage, ErrorNumbers.SVC_DETAILED_SERVICE_ERROR, null);
-
-               msoLogger.warn(MessageEnum.APIH_DUPLICATE_FOUND, dupMessage, "", "", MsoLogger.ErrorCode.SchemaError,
-                               "Duplicate request - Subscriber already has a request for this service");
-               msoRequest.createRequestRecord(Status.FAILED, action);
-               msoLogger.recordAuditEvent(startTime, MsoLogger.StatusCode.ERROR, MsoLogger.ResponseCode.Conflict, dupMessage);
-               msoLogger.debug(END_OF_THE_TRANSACTION + (String) response.getEntity());
-               return response;
-       }
-
-       private Response beplStatusUpdate(String requestId, long startTime, MsoRequest msoRequest,
-                       RequestClient requestClient, ResponseHandler respHandler, int bpelStatus, Action action) {
+       private Response beplStatusUpdate(String requestId, long startTime,
+                       MsoRequest msoRequest, RequestClient requestClient,
+                       ResponseHandler respHandler, int bpelStatus, Action action,
+                       HashMap<String, String> instanceIdMap) {
                // BPMN accepted the request, the request is in progress
                if (bpelStatus == HttpStatus.SC_ACCEPTED) {
                        String camundaJSONResponseBody = respHandler.getResponseBody();
-                       msoLogger.debug("Received from Camunda: " + camundaJSONResponseBody);
-                       
+                       msoLogger
+                                       .debug("Received from Camunda: " + camundaJSONResponseBody);
+
                        // currently only for delete case we update the status here
-                       if(action == Action.deleteInstance){
+                       if (action == Action.deleteInstance) {
                                ObjectMapper mapper = new ObjectMapper();
-                               try{
-                                       DelE2ESvcResp jo = mapper.readValue(camundaJSONResponseBody, DelE2ESvcResp.class);
+                               try {
+                                       DelE2ESvcResp jo = mapper.readValue(
+                                                       camundaJSONResponseBody, DelE2ESvcResp.class);
                                        String operationId = jo.getOperationId();
-
-                                       this.createOperationStatusRecord("DELETE", requestId, operationId);
-                               }
-                               catch(Exception ex)
-                               {
-                                       msoLogger.error(MessageEnum.APIH_BPEL_RESPONSE_ERROR, requestClient.getUrl(), "", "",
+                                       OperationStatus operStatus = chkDuplicateServiceInOperStatus(instanceIdMap
+                                                       .get("serviceId"));
+                                       if (null != operStatus) {
+                                               msoLogger
+                                                               .debug("One task is already in progress state for this service id");
+                                       } else {
+                                               this.createOperationStatusRecord("DELETE", requestId,
+                                                               operationId);
+                                       }
+                               } catch (Exception ex) {
+                                       msoLogger.error(MessageEnum.APIH_BPEL_RESPONSE_ERROR,
+                                                       requestClient.getUrl(), "", "",
                                                        MsoLogger.ErrorCode.BusinessProcesssError,
-                                                       "Response from BPEL engine is failed with HTTP Status=" + bpelStatus);
+                                                       "Response from BPEL engine is failed with HTTP Status="
+                                                                       + bpelStatus);
                                }
                        }
-                       msoLogger.recordAuditEvent(startTime, MsoLogger.StatusCode.COMPLETE, MsoLogger.ResponseCode.Suc,
+                       msoLogger.recordAuditEvent(startTime,
+                                       MsoLogger.StatusCode.COMPLETE, MsoLogger.ResponseCode.Suc,
                                        "BPMN accepted the request, the request is in progress");
                        msoLogger.debug(END_OF_THE_TRANSACTION + camundaJSONResponseBody);
-                       return Response.status(HttpStatus.SC_ACCEPTED).entity(camundaJSONResponseBody).build();
+                       return Response.status(HttpStatus.SC_ACCEPTED)
+                                       .entity(camundaJSONResponseBody).build();
                } else {
                        List<String> variables = new ArrayList<>();
                        variables.add(bpelStatus + "");
                        String camundaJSONResponseBody = respHandler.getResponseBody();
-                       if (camundaJSONResponseBody != null && !camundaJSONResponseBody.isEmpty()) {
-                               Response resp = msoRequest.buildServiceErrorResponse(bpelStatus, MsoException.ServiceException,
-                                               "Request Failed due to BPEL error with HTTP Status= %1 " + '\n' + camundaJSONResponseBody,
+                       if (camundaJSONResponseBody != null
+                                       && !camundaJSONResponseBody.isEmpty()) {
+                               Response resp = msoRequest.buildServiceErrorResponse(
+                                               bpelStatus, MsoException.ServiceException,
+                                               "Request Failed due to BPEL error with HTTP Status= %1 "
+                                                               + '\n' + camundaJSONResponseBody,
                                                ErrorNumbers.SVC_DETAILED_SERVICE_ERROR, variables);
-                               msoLogger.error(MessageEnum.APIH_BPEL_RESPONSE_ERROR, requestClient.getUrl(), "", "",
+                               msoLogger.error(MessageEnum.APIH_BPEL_RESPONSE_ERROR,
+                                               requestClient.getUrl(), "", "",
                                                MsoLogger.ErrorCode.BusinessProcesssError,
-                                               "Response from BPEL engine is failed with HTTP Status=" + bpelStatus);
-                               msoLogger.recordAuditEvent(startTime, MsoLogger.StatusCode.ERROR, MsoLogger.ResponseCode.InternalError,
+                                               "Response from BPEL engine is failed with HTTP Status="
+                                                               + bpelStatus);
+                               msoLogger.recordAuditEvent(startTime,
+                                               MsoLogger.StatusCode.ERROR,
+                                               MsoLogger.ResponseCode.InternalError,
                                                "Response from BPMN engine is failed");
-                               msoLogger.debug(END_OF_THE_TRANSACTION + (String) resp.getEntity());
+                               msoLogger.debug(END_OF_THE_TRANSACTION
+                                               + (String) resp.getEntity());
                                return resp;
                        } else {
-                               Response resp = msoRequest.buildServiceErrorResponse(bpelStatus, MsoException.ServiceException,
-                                               "Request Failed due to BPEL error with HTTP Status= %1",
-                                               ErrorNumbers.SVC_DETAILED_SERVICE_ERROR, variables);
-                               msoLogger.error(MessageEnum.APIH_BPEL_RESPONSE_ERROR, requestClient.getUrl(), "", "",
-                                               MsoLogger.ErrorCode.BusinessProcesssError, "Response from BPEL engine is empty");
-                               msoLogger.recordAuditEvent(startTime, MsoLogger.StatusCode.ERROR, MsoLogger.ResponseCode.InternalError,
+                               Response resp = msoRequest
+                                               .buildServiceErrorResponse(
+                                                               bpelStatus,
+                                                               MsoException.ServiceException,
+                                                               "Request Failed due to BPEL error with HTTP Status= %1",
+                                                               ErrorNumbers.SVC_DETAILED_SERVICE_ERROR,
+                                                               variables);
+                               msoLogger.error(MessageEnum.APIH_BPEL_RESPONSE_ERROR,
+                                               requestClient.getUrl(), "", "",
+                                               MsoLogger.ErrorCode.BusinessProcesssError,
                                                "Response from BPEL engine is empty");
-                               msoLogger.debug(END_OF_THE_TRANSACTION + (String) resp.getEntity());
+                               msoLogger.recordAuditEvent(startTime,
+                                               MsoLogger.StatusCode.ERROR,
+                                               MsoLogger.ResponseCode.InternalError,
+                                               "Response from BPEL engine is empty");
+                               msoLogger.debug(END_OF_THE_TRANSACTION
+                                               + (String) resp.getEntity());
                                return resp;
                        }
                }
@@ -624,13 +680,16 @@ public class E2EServiceInstances {
         * @param action
         * @return
         */
-       private RecipeLookupResult getServiceInstanceOrchestrationURI(CatalogDatabase db, Action action) {
+       private RecipeLookupResult getServiceInstanceOrchestrationURI(
+                       CatalogDatabase db, Action action) {
 
                RecipeLookupResult recipeLookupResult = getServiceURI(db, action);
 
                if (recipeLookupResult != null) {
-                       msoLogger.debug("Orchestration URI is: " + recipeLookupResult.getOrchestrationURI()
-                                       + ", recipe Timeout is: " + Integer.toString(recipeLookupResult.getRecipeTimeout()));
+                       msoLogger.debug("Orchestration URI is: "
+                                       + recipeLookupResult.getOrchestrationURI()
+                                       + ", recipe Timeout is: "
+                                       + Integer.toString(recipeLookupResult.getRecipeTimeout()));
                } else {
                        msoLogger.debug("No matching recipe record found");
                }
@@ -648,13 +707,16 @@ public class E2EServiceInstances {
 
                String defaultServiceModelName = "UUI_DEFAULT";
 
-               Service serviceRecord = db.getServiceByModelName(defaultServiceModelName);
-               ServiceRecipe recipe = db.getServiceRecipeByModelUUID(serviceRecord.getModelUUID(), action.name());
+               Service serviceRecord = db
+                               .getServiceByModelName(defaultServiceModelName);
+               ServiceRecipe recipe = db.getServiceRecipeByModelUUID(
+                               serviceRecord.getModelUUID(), action.name());
 
                if (recipe == null) {
                        return null;
                }
-               return new RecipeLookupResult(recipe.getOrchestrationUri(), recipe.getRecipeTimeout());
+               return new RecipeLookupResult(recipe.getOrchestrationUri(),
+                               recipe.getRecipeTimeout());
 
        }
 
@@ -665,7 +727,8 @@ public class E2EServiceInstances {
         * @param e2eSir
         * @return
         */
-       private String mapReqJsonToSvcInstReq(E2EServiceInstanceRequest e2eSir, String requestJSON) {
+       private String mapReqJsonToSvcInstReq(E2EServiceInstanceRequest e2eSir,
+                       String requestJSON) {
 
                sir = new ServiceInstancesRequest();
 
@@ -679,14 +742,15 @@ public class E2EServiceInstances {
                // modelNameVersionId
                modelInfo.setModelNameVersionId(e2eSir.getService().getTemplateId());
 
-//             String modelInfoValue = e2eSir.getService().getParameters().getNodeTemplateName();
-//             String[] arrayOfInfo = modelInfoValue.split(":");
-//             String modelName = arrayOfInfo[0];
-//             String modelVersion = arrayOfInfo[1];
+               // String modelInfoValue =
+               // e2eSir.getService().getParameters().getNodeTemplateName();
+               // String[] arrayOfInfo = modelInfoValue.split(":");
+               // String modelName = arrayOfInfo[0];
+               // String modelVersion = arrayOfInfo[1];
 
-//      TODO: To ensure, if we dont get the values from the UUI
-        String modelName = "voLTE";
-        String modelVersion = "1.0";
+               // TODO: To ensure, if we dont get the values from the UUI
+               String modelName = "voLTE";
+               String modelVersion = "1.0";
                // modelName
                modelInfo.setModelName(modelName);
 
@@ -702,10 +766,12 @@ public class E2EServiceInstances {
                SubscriberInfo subscriberInfo = new SubscriberInfo();
 
                // globalsubscriberId
-               subscriberInfo.setGlobalSubscriberId(e2eSir.getService().getParameters().getGlobalSubscriberId());
+               subscriberInfo.setGlobalSubscriberId(e2eSir.getService()
+                               .getParameters().getGlobalSubscriberId());
 
                // subscriberName
-               subscriberInfo.setSubscriberName(e2eSir.getService().getParameters().getSubscriberName());
+               subscriberInfo.setSubscriberName(e2eSir.getService().getParameters()
+                               .getSubscriberName());
 
                // setting subscriberInfo to requestDetails
                requestDetails.setSubscriberInfo(subscriberInfo);
@@ -731,18 +797,19 @@ public class E2EServiceInstances {
 
                // Userparams
                List<E2EUserParam> userParams;
-               //userParams = e2eSir.getService().getParameters().getRequestParameters().getUserParams();
+               // userParams =
+               // e2eSir.getService().getParameters().getRequestParameters().getUserParams();
                List<Map<String, String>> userParamList = new ArrayList<>();
                Map<String, String> userParamMap = new HashMap<>();
-               //complete json request updated in the camunda
+               // complete json request updated in the camunda
                userParamMap.put("UUIRequest", requestJSON);
                userParamMap.put("ServiceInstanceName", e2eSir.getService().getName());
 
-//             Map<String, String> userParamMap3 = null;
-//             for (E2EUserParam userp : userParams) {
-//                     userParamMap.put(userp.getName(), userp.getValue());
-//                     
-//             }
+               // Map<String, String> userParamMap3 = null;
+               // for (E2EUserParam userp : userParams) {
+               // userParamMap.put(userp.getName(), userp.getValue());
+               //
+               // }
                userParamList.add(userParamMap);
                requestParameters.setUserParams(userParamList);
 
@@ -756,84 +823,111 @@ public class E2EServiceInstances {
                try {
                        returnString = mapper.writeValueAsString(sir);
                } catch (IOException e) {
-                       msoLogger.debug("Exception while converting ServiceInstancesRequest object to string", e);
+                       msoLogger
+                                       .debug("Exception while converting ServiceInstancesRequest object to string",
+                                                       e);
                }
 
                return returnString;
        }
 
-       
-       private void createOperationStatusRecordForError(Action action, String requestId) throws MsoDatabaseException{
-
-                       AbstractSessionFactoryManager requestsDbSessionFactoryManager = new RequestsDbSessionFactoryManager();
-
-                       Session session = null;
-                       try {
-
-                               session = requestsDbSessionFactoryManager.getSessionFactory().openSession();
-                               session.beginTransaction();
-                               
-                         OperationStatus os = new OperationStatus();
-                         os.setOperation(action.name());
-                         os.setOperationContent("");
-                         os.setOperationId("");
-                         os.setProgress("100");
-                         os.setReason("");
-                         os.setResult("error");
-                         os.setServiceId(requestId);
-                         os.setUserId("");
-                               Timestamp startTimeStamp = new Timestamp (System.currentTimeMillis());
-                               Timestamp endTimeStamp = new Timestamp (System.currentTimeMillis());
-                               os.setFinishedAt(endTimeStamp);
-                               os.setOperateAt(startTimeStamp);
-
-                               session.save(os);
-                               session.getTransaction().commit();
-
-                       } catch (Exception e) {
-                               msoLogger.error (MessageEnum.APIH_DB_INSERT_EXC, "", "", MsoLogger.ErrorCode.DataError, "Exception when creation record request in Operation", e);
-                               throw new MsoDatabaseException("Data did inserted in Operatus Status Table for failure", e);
-                       } finally {
-                               if (null != session) {
-                                       session.close();
-                               }
+       private void createOperationStatusRecordForError(Action action,
+                       String requestId) throws MsoDatabaseException {
+
+               AbstractSessionFactoryManager requestsDbSessionFactoryManager = new RequestsDbSessionFactoryManager();
+
+               Session session = null;
+               try {
+
+                       session = requestsDbSessionFactoryManager.getSessionFactory()
+                                       .openSession();
+                       session.beginTransaction();
+
+                       OperationStatus os = new OperationStatus();
+                       os.setOperation(action.name());
+                       os.setOperationContent("");
+                       os.setOperationId("");
+                       os.setProgress("100");
+                       os.setReason("");
+                       os.setResult("error");
+                       os.setServiceId(requestId);
+                       os.setUserId("");
+                       Timestamp startTimeStamp = new Timestamp(System.currentTimeMillis());
+                       Timestamp endTimeStamp = new Timestamp(System.currentTimeMillis());
+                       os.setFinishedAt(endTimeStamp);
+                       os.setOperateAt(startTimeStamp);
+
+                       session.save(os);
+                       session.getTransaction().commit();
+
+               } catch (Exception e) {
+                       msoLogger.error(MessageEnum.APIH_DB_INSERT_EXC, "", "",
+                                       MsoLogger.ErrorCode.DataError,
+                                       "Exception when creation record request in Operation", e);
+                       throw new MsoDatabaseException(
+                                       "Data did inserted in Operatus Status Table for failure", e);
+               } finally {
+                       if (null != session) {
+                               session.close();
                        }
                }
-                       private void createOperationStatusRecord(String actionNm, String serviceId, String operationId) throws MsoDatabaseException{
+       }
 
-                               AbstractSessionFactoryManager requestsDbSessionFactoryManager = new RequestsDbSessionFactoryManager();
+       private void createOperationStatusRecord(String actionNm, String serviceId,
+                       String operationId) throws MsoDatabaseException {
 
-                               Session session = null;
-                               try {
+               AbstractSessionFactoryManager requestsDbSessionFactoryManager = new RequestsDbSessionFactoryManager();
 
-                                       session = requestsDbSessionFactoryManager.getSessionFactory().openSession();
-                                       session.beginTransaction();
-                                       
-                                 OperationStatus os = new OperationStatus();
-                                 os.setOperation(actionNm);
-                                 os.setOperationContent("");
-                                 os.setOperationId(operationId);
-                                 os.setProgress("0");
-                                 os.setReason("");
-                                 os.setResult("processing");
-                                 os.setServiceId(serviceId);
-                                 //TODO : to be updated...
-                                 os.setUserId("");
-                                         Timestamp startTimeStamp = new Timestamp (System.currentTimeMillis());
-                                         Timestamp endTimeStamp = new Timestamp (System.currentTimeMillis());
-                                         os.setFinishedAt(endTimeStamp);
-                                         os.setOperateAt(startTimeStamp);
-
-                                       session.save(os);
-                                       session.getTransaction().commit();
-
-                               } catch (Exception e) {
-                                       msoLogger.error (MessageEnum.APIH_DB_INSERT_EXC, "", "", MsoLogger.ErrorCode.DataError, "Exception when creation record request in Operation", e);
-                                       throw new MsoDatabaseException("Data did inserted in Operatus Status Table", e);
-                               } finally {
-                                       if (null != session) {
-                                               session.close();
-                                       }
+               Session session = null;
+               try {
+
+                       session = requestsDbSessionFactoryManager.getSessionFactory()
+                                       .openSession();
+                       session.beginTransaction();
+
+                       OperationStatus os = new OperationStatus();
+                       os.setOperation(actionNm);
+                       os.setOperationContent("");
+                       os.setOperationId(operationId);
+                       os.setProgress("0");
+                       os.setReason("");
+                       os.setResult("processing");
+                       os.setServiceId(serviceId);
+                       // TODO : to be updated...
+                       os.setUserId("");
+                       Timestamp startTimeStamp = new Timestamp(System.currentTimeMillis());
+                       Timestamp endTimeStamp = new Timestamp(System.currentTimeMillis());
+                       os.setFinishedAt(endTimeStamp);
+                       os.setOperateAt(startTimeStamp);
+
+                       session.save(os);
+                       session.getTransaction().commit();
+
+               } catch (Exception e) {
+                       msoLogger.error(MessageEnum.APIH_DB_INSERT_EXC, "", "",
+                                       MsoLogger.ErrorCode.DataError,
+                                       "Exception when creation record request in Operation", e);
+                       throw new MsoDatabaseException(
+                                       "Data did inserted in Operatus Status Table", e);
+               } finally {
+                       if (null != session) {
+                               session.close();
                        }
+               }
+       }
+
+       private OperationStatus chkDuplicateServiceInOperStatus(String serviceId) {
+               OperationStatus dupServiceName = (RequestsDatabase.getInstance())
+                               .getOperationStatusByServiceId(serviceId);
+
+               return dupServiceName;
+       }
+
+       private OperationStatus chkDuplicateServiceNameInOperStatus(
+                       String serviceName) {
+               OperationStatus dupServiceName = (RequestsDatabase.getInstance())
+                               .getOperationStatusByServiceName(serviceName);
+
+               return dupServiceName;
        }
 }
\ No newline at end of file
index 4c749b7..64af30b 100644 (file)
@@ -27,14 +27,14 @@ import org.openecomp.mso.requestsdb.OperationStatus;
 @JsonSerialize(include=JsonSerialize.Inclusion.NON_DEFAULT)\r
 public class GetE2EServiceInstanceResponse {\r
 \r
-       protected OperationStatus e2eRequest;\r
+       protected OperationStatus operation;\r
 \r
-       public OperationStatus getE2eRequest() {\r
-               return e2eRequest;\r
+       public OperationStatus getOperationStatus() {\r
+               return operation;\r
        }\r
 \r
-       public void setE2eRequest(OperationStatus requestDB) {\r
-               this.e2eRequest = requestDB;\r
+       public void setOperationStatus(OperationStatus requestDB) {\r
+               this.operation = requestDB;\r
        }\r
 \r
 }\r
index cb8dda5..238b6b6 100644 (file)
@@ -24,6 +24,7 @@ import static org.junit.Assert.assertTrue;
 \r
 import java.io.ByteArrayInputStream;\r
 import java.io.InputStream;\r
+import java.sql.Timestamp;\r
 import java.util.ArrayList;\r
 import java.util.Collections;\r
 import java.util.List;\r
@@ -47,8 +48,10 @@ import org.openecomp.mso.apihandler.common.RequestClientFactory;
 import org.openecomp.mso.db.catalog.CatalogDatabase;\r
 import org.openecomp.mso.db.catalog.beans.Service;\r
 import org.openecomp.mso.db.catalog.beans.ServiceRecipe;\r
+import org.openecomp.mso.properties.MsoDatabaseException;\r
 import org.openecomp.mso.properties.MsoJavaProperties;\r
 import org.openecomp.mso.requestsdb.InfraActiveRequests;\r
+import org.openecomp.mso.requestsdb.OperationStatus;\r
 import org.openecomp.mso.requestsdb.RequestsDatabase;\r
 \r
 import mockit.Mock;\r
@@ -56,454 +59,555 @@ import mockit.MockUp;
 \r
 public class E2EServiceInstancesTest {\r
 \r
-       \r
        @Test\r
-       public void createE2EServiceInstanceTestSuccess(){\r
+       public void createE2EServiceInstanceTestSuccess() {\r
                new MockUp<RequestsDatabase>() {\r
-            @Mock\r
-            private List<InfraActiveRequests> executeInfraQuery (List <Criterion> criteria, Order order) {\r
-               return null;\r
-            }\r
-        };\r
-        new MockUp<RequestsDatabase>() {\r
-            @Mock\r
-            public int updateInfraStatus (String requestId, String requestStatus, long progress, String lastModifiedBy) {\r
-               return 0;\r
-            }\r
-        };\r
-        new MockUp<CatalogDatabase>() {\r
-            @Mock\r
-            public Service getServiceByModelName (String modelName) {\r
-               Service svc = new Service();\r
-               return svc;\r
-            }\r
-        };\r
-        \r
-        new MockUp<CatalogDatabase>() {\r
-            @Mock\r
-            public ServiceRecipe getServiceRecipeByModelUUID(String modelUUID, String action) {\r
-               ServiceRecipe rec = new ServiceRecipe();\r
-               return rec;\r
-            }\r
-        };\r
-        \r
-        new MockUp<RequestClientFactory>() {\r
-            @Mock\r
-            public RequestClient getRequestClient(String orchestrationURI, MsoJavaProperties props) throws IllegalStateException{\r
-               RequestClient client = new CamundaClient();\r
-               client.setUrl("/test/url");\r
-               return client;\r
-            }\r
-        };\r
-        \r
-        new MockUp<CamundaClient>() {\r
-            @Mock\r
-            public HttpResponse post(String requestId, boolean isBaseVfModule,\r
-                               int recipeTimeout, String requestAction, String serviceInstanceId,\r
-                               String vnfId, String vfModuleId, String volumeGroupId, String networkId,\r
-                               String serviceType, String vnfType, String vfModuleType, String networkType,\r
-                               String requestDetails){ \r
-               ProtocolVersion pv = new ProtocolVersion("HTTP",1,1);\r
-               HttpResponse resp = new BasicHttpResponse(pv,202, "test response");\r
-               BasicHttpEntity entity = new BasicHttpEntity();\r
-               String body = "{\"response\":\"success\",\"message\":\"success\"}";\r
-               InputStream instream = new ByteArrayInputStream(body.getBytes());\r
-               entity.setContent(instream);\r
-               resp.setEntity(entity);\r
-               return resp;\r
-            }\r
-        };\r
-        \r
+                       @Mock\r
+                       public OperationStatus getOperationStatusByServiceName(\r
+                                       String serviceName) {\r
+                               OperationStatus operationStatus = new OperationStatus();\r
+                               return operationStatus;\r
+                       }\r
+               };\r
+               new MockUp<E2EServiceInstances>() {\r
+                       @Mock\r
+                       private void createOperationStatusRecordForError(Action action,\r
+                                       String requestId) throws MsoDatabaseException {\r
+\r
+                       }\r
+               };\r
+               new MockUp<CatalogDatabase>() {\r
+                       @Mock\r
+                       public Service getServiceByModelName(String modelName) {\r
+                               Service svc = new Service();\r
+                               return svc;\r
+                       }\r
+               };\r
+\r
+               new MockUp<CatalogDatabase>() {\r
+                       @Mock\r
+                       public ServiceRecipe getServiceRecipeByModelUUID(String modelUUID,\r
+                                       String action) {\r
+                               ServiceRecipe rec = new ServiceRecipe();\r
+                               return rec;\r
+                       }\r
+               };\r
+\r
+               new MockUp<RequestClientFactory>() {\r
+                       @Mock\r
+                       public RequestClient getRequestClient(String orchestrationURI,\r
+                                       MsoJavaProperties props) throws IllegalStateException {\r
+                               RequestClient client = new CamundaClient();\r
+                               client.setUrl("/test/url");\r
+                               return client;\r
+                       }\r
+               };\r
+\r
+               new MockUp<CamundaClient>() {\r
+                       @Mock\r
+                       public HttpResponse post(String requestId, boolean isBaseVfModule,\r
+                                       int recipeTimeout, String requestAction,\r
+                                       String serviceInstanceId, String vnfId, String vfModuleId,\r
+                                       String volumeGroupId, String networkId, String serviceType,\r
+                                       String vnfType, String vfModuleType, String networkType,\r
+                                       String requestDetails) {\r
+                               ProtocolVersion pv = new ProtocolVersion("HTTP", 1, 1);\r
+                               HttpResponse resp = new BasicHttpResponse(pv, 202,\r
+                                               "test response");\r
+                               BasicHttpEntity entity = new BasicHttpEntity();\r
+                               String body = "{\"response\":\"success\",\"message\":\"success\"}";\r
+                               InputStream instream = new ByteArrayInputStream(body.getBytes());\r
+                               entity.setContent(instream);\r
+                               resp.setEntity(entity);\r
+                               return resp;\r
+                       }\r
+               };\r
+\r
                E2EServiceInstances instance = new E2EServiceInstances();\r
-               String request = "{\"service\":{\"name\":\"service\",\"description\":\"so_test1\",\"serviceDefId\":\"4050083f-465f-4838-af1e-47a545222ad1\",\"templateId\":\"4050083f-465f-4838-af1e-47a545222ad1\",\"parameters\":{\"globalSubscriberId\":\"123457\", \"subscriberName\":\"Customer1\",\"serviceType\":\"voLTE\",\"templateName\":\"voLTE Service:1.0\",\"resources\":[{\"resourceName\":\"MOG\",\"resourceDefId\":\"MOG\",\"resourceId\":\"MOG\",\"nsParameters\":{\"locationConstraints\":[{\"vnfProfileId\":\"zte-vBAS-1.0\",\"locationConstraints\":{\"vimId\":\"4050083f-465f-4838-af1e-47a545222ad0\"}},{\"vnfProfileId\":\"zte-vMME-1.0\",\"locationConstraints\":{\"vimId\":\"4050083f-465f-4838-af1e-47a545222ad0\"}}],\"additionalParamForNs\":{}}}]}}}";\r
+               String request = "{\"service\":{\"name\":\"so_test4\",\"description\":\"so_test2\",\"serviceDefId\":\"60c3e96e-0970-4871-b6e0-3b6de7561519\",\"templateId\":\"592f9437-a9c0-4303-b9f6-c445bb7e9814\",\"parameters\":{\"globalSubscriberId\":\"123457\",\"subscriberName\":\"Customer1\",\"serviceType\":\"voLTE\",\"templateName\":\"voLTE Service:1.0\",\"resources\":[{\"resourceName\":\"vIMS\",\"resourceDefId\":\"60c3e96e-0970-4871-b6e0-3b6de7561516\",\"resourceId\":\"60c3e96e-0970-4871-b6e0-3b6de7561512\",\"nsParameters\":{\"locationConstraints\":[{\"vnfProfileId\":\"zte-vBAS-1.0\",\"locationConstraints\":{\"vimId\":\"4050083f-465f-4838-af1e-47a545222ad0\"}},{\"vnfProfileId\":\"zte-vMME-1.0\",\"locationConstraints\":{\"vimId\":\"4050083f-465f-4838-af1e-47a545222ad0\"}}],\"additionalParamForNs\":{}}},{\"resourceName\":\"vEPC\",\"resourceDefId\":\"61c3e96e-0970-4871-b6e0-3b6de7561516\",\"resourceId\":\"62c3e96e-0970-4871-b6e0-3b6de7561512\",\"nsParameters\":{\"locationConstraints\":[{\"vnfProfileId\":\"zte-CSCF-1.0\",\"locationConstraints\":{\"vimId\":\"4050083f-465f-4838-af1e-47a545222ad1\"}}],\"additionalParamForNs\":{}}},{\"resourceName\":\"underlayvpn\",\"resourceDefId\":\"60c3e96e-0970-4871-b6e0-3b6de7561513\",\"resourceId\":\"60c3e96e-0970-4871-b6e0-3b6de7561514\",\"nsParameters\":{\"locationConstraints\":[],\"additionalParamForNs\":{\"externalDataNetworkName\":\"Flow_out_net\",\"m6000_mng_ip\":\"181.18.20.2\",\"externalCompanyFtpDataNetworkName\":\"Flow_out_net\",\"externalPluginManageNetworkName\":\"plugin_net_2014\",\"externalManageNetworkName\":\"mng_net_2017\",\"sfc_data_network\":\"sfc_data_net_2016\",\"NatIpRange\":\"210.1.1.10-210.1.1.20\",\"location\":\"4050083f-465f-4838-af1e-47a545222ad0\",\"sdncontroller\":\"9b9f02c0-298b-458a-bc9c-be3692e4f35e\"}}},{\"resourceName\":\"overlayvpn\",\"resourceDefId\":\"60c3e96e-0970-4871-b6e0-3b6de7561517\",\"resourceId\":\"60c3e96e-0970-4871-b6e0-3b6de7561518\",\"nsParameters\":{\"locationConstraints\":[],\"additionalParamForNs\":{\"externalDataNetworkName\":\"Flow_out_net\",\"m6000_mng_ip\":\"181.18.20.2\",\"externalCompanyFtpDataNetworkName\":\"Flow_out_net\",\"externalPluginManageNetworkName\":\"plugin_net_2014\",\"externalManageNetworkName\":\"mng_net_2017\",\"sfc_data_network\":\"sfc_data_net_2016\",\"NatIpRange\":\"210.1.1.10-210.1.1.20\",\"location\":\"4050083f-465f-4838-af1e-47a545222ad0\",\"sdncontroller\":\"9b9f02c0-298b-458a-bc9c-be3692e4f35e\"}}}]}}}";\r
                Response resp = instance.createE2EServiceInstance(request, "v3");\r
                String respStr = resp.getEntity().toString();\r
-               assertTrue(respStr.indexOf("success") != -1);\r
+               assertTrue(respStr.indexOf("SVC2000") != -1);\r
        }\r
-        \r
+\r
        @Test\r
-       public void createE2EServiceInstanceTestBpelHTTPException(){\r
+       public void createE2EServiceInstanceTestBpelHTTPException() {\r
                new MockUp<RequestsDatabase>() {\r
-            @Mock\r
-            private List<InfraActiveRequests> executeInfraQuery (List <Criterion> criteria, Order order) {\r
-               return null;\r
-            }\r
-        };\r
-        new MockUp<RequestsDatabase>() {\r
-            @Mock\r
-            public int updateInfraStatus (String requestId, String requestStatus, long progress, String lastModifiedBy) {\r
-               return 0;\r
-            }\r
-        };\r
-        new MockUp<CatalogDatabase>() {\r
-            @Mock\r
-            public Service getServiceByModelName (String modelName) {\r
-               Service svc = new Service();\r
-               return svc;\r
-            }\r
-        };\r
-        \r
-        new MockUp<CatalogDatabase>() {\r
-            @Mock\r
-            public ServiceRecipe getServiceRecipeByModelUUID(String modelUUID, String action) {\r
-               ServiceRecipe rec = new ServiceRecipe();\r
-               return rec;\r
-            }\r
-        };\r
-        \r
-        new MockUp<RequestClientFactory>() {\r
-            @Mock\r
-            public RequestClient getRequestClient(String orchestrationURI, MsoJavaProperties props) throws IllegalStateException{\r
-               RequestClient client = new CamundaClient();\r
-               client.setUrl("/test/url");\r
-               return client;\r
-            }\r
-        };\r
-        \r
-        new MockUp<CamundaClient>() {\r
-            @Mock\r
-            public HttpResponse post(String requestId, boolean isBaseVfModule,\r
-                               int recipeTimeout, String requestAction, String serviceInstanceId,\r
-                               String vnfId, String vfModuleId, String volumeGroupId, String networkId,\r
-                               String serviceType, String vnfType, String vfModuleType, String networkType,\r
-                               String requestDetails){ \r
-               ProtocolVersion pv = new ProtocolVersion("HTTP",1,1);\r
-               HttpResponse resp = new BasicHttpResponse(pv,500, "test response");\r
-               BasicHttpEntity entity = new BasicHttpEntity();\r
-               String body = "{\"response\":\"success\",\"message\":\"success\"}";\r
-               InputStream instream = new ByteArrayInputStream(body.getBytes());\r
-               entity.setContent(instream);\r
-               resp.setEntity(entity);\r
-               return resp;\r
-            }\r
-        };\r
-        \r
+                       @Mock\r
+                       public OperationStatus getOperationStatusByServiceName(\r
+                                       String serviceName) {\r
+                               OperationStatus operationStatus = new OperationStatus();\r
+                               return operationStatus;\r
+                       }\r
+               };\r
+               new MockUp<E2EServiceInstances>() {\r
+                       @Mock\r
+                       private void createOperationStatusRecordForError(Action action,\r
+                                       String requestId) throws MsoDatabaseException {\r
+\r
+                       }\r
+               };\r
+               new MockUp<CatalogDatabase>() {\r
+                       @Mock\r
+                       public Service getServiceByModelName(String modelName) {\r
+                               Service svc = new Service();\r
+                               return svc;\r
+                       }\r
+               };\r
+\r
+               new MockUp<CatalogDatabase>() {\r
+                       @Mock\r
+                       public ServiceRecipe getServiceRecipeByModelUUID(String modelUUID,\r
+                                       String action) {\r
+                               ServiceRecipe rec = new ServiceRecipe();\r
+                               return rec;\r
+                       }\r
+               };\r
+\r
+               new MockUp<RequestClientFactory>() {\r
+                       @Mock\r
+                       public RequestClient getRequestClient(String orchestrationURI,\r
+                                       MsoJavaProperties props) throws IllegalStateException {\r
+                               RequestClient client = new CamundaClient();\r
+                               client.setUrl("/test/url");\r
+                               return client;\r
+                       }\r
+               };\r
+\r
+               new MockUp<CamundaClient>() {\r
+                       @Mock\r
+                       public HttpResponse post(String requestId, boolean isBaseVfModule,\r
+                                       int recipeTimeout, String requestAction,\r
+                                       String serviceInstanceId, String vnfId, String vfModuleId,\r
+                                       String volumeGroupId, String networkId, String serviceType,\r
+                                       String vnfType, String vfModuleType, String networkType,\r
+                                       String requestDetails) {\r
+                               ProtocolVersion pv = new ProtocolVersion("HTTP", 1, 1);\r
+                               HttpResponse resp = new BasicHttpResponse(pv, 500,\r
+                                               "test response");\r
+                               BasicHttpEntity entity = new BasicHttpEntity();\r
+                               String body = "{\"response\":\"success\",\"message\":\"success\"}";\r
+                               InputStream instream = new ByteArrayInputStream(body.getBytes());\r
+                               entity.setContent(instream);\r
+                               resp.setEntity(entity);\r
+                               return resp;\r
+                       }\r
+               };\r
+\r
                E2EServiceInstances instance = new E2EServiceInstances();\r
-               String request = "{\"service\":{\"name\":\"service\",\"description\":\"so_test1\",\"serviceDefId\":\"4050083f-465f-4838-af1e-47a545222ad1\",\"templateId\":\"4050083f-465f-4838-af1e-47a545222ad1\",\"parameters\":{\"globalSubscriberId\":\"123457\", \"subscriberName\":\"Customer1\",\"serviceType\":\"voLTE\",\"templateName\":\"voLTE Service:1.0\",\"resources\":[{\"resourceName\":\"MOG\",\"resourceDefId\":\"MOG\",\"resourceId\":\"MOG\",\"nsParameters\":{\"locationConstraints\":[{\"vnfProfileId\":\"zte-vBAS-1.0\",\"locationConstraints\":{\"vimId\":\"4050083f-465f-4838-af1e-47a545222ad0\"}},{\"vnfProfileId\":\"zte-vMME-1.0\",\"locationConstraints\":{\"vimId\":\"4050083f-465f-4838-af1e-47a545222ad0\"}}],\"additionalParamForNs\":{}}}]}}}";\r
+               String request = "{\"service\":{\"name\":\"so_test4\",\"description\":\"so_test2\",\"serviceDefId\":\"60c3e96e-0970-4871-b6e0-3b6de7561519\",\"templateId\":\"592f9437-a9c0-4303-b9f6-c445bb7e9814\",\"parameters\":{\"globalSubscriberId\":\"123457\",\"subscriberName\":\"Customer1\",\"serviceType\":\"voLTE\",\"templateName\":\"voLTE Service:1.0\",\"resources\":[{\"resourceName\":\"vIMS\",\"resourceDefId\":\"60c3e96e-0970-4871-b6e0-3b6de7561516\",\"resourceId\":\"60c3e96e-0970-4871-b6e0-3b6de7561512\",\"nsParameters\":{\"locationConstraints\":[{\"vnfProfileId\":\"zte-vBAS-1.0\",\"locationConstraints\":{\"vimId\":\"4050083f-465f-4838-af1e-47a545222ad0\"}},{\"vnfProfileId\":\"zte-vMME-1.0\",\"locationConstraints\":{\"vimId\":\"4050083f-465f-4838-af1e-47a545222ad0\"}}],\"additionalParamForNs\":{}}},{\"resourceName\":\"vEPC\",\"resourceDefId\":\"61c3e96e-0970-4871-b6e0-3b6de7561516\",\"resourceId\":\"62c3e96e-0970-4871-b6e0-3b6de7561512\",\"nsParameters\":{\"locationConstraints\":[{\"vnfProfileId\":\"zte-CSCF-1.0\",\"locationConstraints\":{\"vimId\":\"4050083f-465f-4838-af1e-47a545222ad1\"}}],\"additionalParamForNs\":{}}},{\"resourceName\":\"underlayvpn\",\"resourceDefId\":\"60c3e96e-0970-4871-b6e0-3b6de7561513\",\"resourceId\":\"60c3e96e-0970-4871-b6e0-3b6de7561514\",\"nsParameters\":{\"locationConstraints\":[],\"additionalParamForNs\":{\"externalDataNetworkName\":\"Flow_out_net\",\"m6000_mng_ip\":\"181.18.20.2\",\"externalCompanyFtpDataNetworkName\":\"Flow_out_net\",\"externalPluginManageNetworkName\":\"plugin_net_2014\",\"externalManageNetworkName\":\"mng_net_2017\",\"sfc_data_network\":\"sfc_data_net_2016\",\"NatIpRange\":\"210.1.1.10-210.1.1.20\",\"location\":\"4050083f-465f-4838-af1e-47a545222ad0\",\"sdncontroller\":\"9b9f02c0-298b-458a-bc9c-be3692e4f35e\"}}},{\"resourceName\":\"overlayvpn\",\"resourceDefId\":\"60c3e96e-0970-4871-b6e0-3b6de7561517\",\"resourceId\":\"60c3e96e-0970-4871-b6e0-3b6de7561518\",\"nsParameters\":{\"locationConstraints\":[],\"additionalParamForNs\":{\"externalDataNetworkName\":\"Flow_out_net\",\"m6000_mng_ip\":\"181.18.20.2\",\"externalCompanyFtpDataNetworkName\":\"Flow_out_net\",\"externalPluginManageNetworkName\":\"plugin_net_2014\",\"externalManageNetworkName\":\"mng_net_2017\",\"sfc_data_network\":\"sfc_data_net_2016\",\"NatIpRange\":\"210.1.1.10-210.1.1.20\",\"location\":\"4050083f-465f-4838-af1e-47a545222ad0\",\"sdncontroller\":\"9b9f02c0-298b-458a-bc9c-be3692e4f35e\"}}}]}}}";\r
                Response resp = instance.createE2EServiceInstance(request, "v3");\r
                String respStr = resp.getEntity().toString();\r
                assertTrue(respStr.indexOf("SVC2000") != -1);\r
        }\r
-       \r
+\r
        @Test\r
-       public void createE2EServiceInstanceTestBpelHTTPExceptionWithNullREsponseBody(){\r
+       public void createE2EServiceInstanceTestBpelHTTPExceptionWithNullREsponseBody() {\r
                new MockUp<RequestsDatabase>() {\r
-            @Mock\r
-            private List<InfraActiveRequests> executeInfraQuery (List <Criterion> criteria, Order order) {\r
-               return null;\r
-            }\r
-        };\r
-        new MockUp<RequestsDatabase>() {\r
-            @Mock\r
-            public int updateInfraStatus (String requestId, String requestStatus, long progress, String lastModifiedBy) {\r
-               return 0;\r
-            }\r
-        };\r
-        new MockUp<CatalogDatabase>() {\r
-            @Mock\r
-            public Service getServiceByModelName (String modelName) {\r
-               Service svc = new Service();\r
-               return svc;\r
-            }\r
-        };\r
-        \r
-        new MockUp<CatalogDatabase>() {\r
-            @Mock\r
-            public ServiceRecipe getServiceRecipeByModelUUID(String modelUUID, String action) {\r
-               ServiceRecipe rec = new ServiceRecipe();\r
-               return rec;\r
-            }\r
-        };\r
-        \r
-        new MockUp<RequestClientFactory>() {\r
-            @Mock\r
-            public RequestClient getRequestClient(String orchestrationURI, MsoJavaProperties props) throws IllegalStateException{\r
-               RequestClient client = new CamundaClient();\r
-               client.setUrl("/test/url");\r
-               return client;\r
-            }\r
-        };\r
-        \r
-        new MockUp<CamundaClient>() {\r
-            @Mock\r
-            public HttpResponse post(String requestId, boolean isBaseVfModule,\r
-                               int recipeTimeout, String requestAction, String serviceInstanceId,\r
-                               String vnfId, String vfModuleId, String volumeGroupId, String networkId,\r
-                               String serviceType, String vnfType, String vfModuleType, String networkType,\r
-                               String requestDetails){ \r
-               ProtocolVersion pv = new ProtocolVersion("HTTP",1,1);\r
-               HttpResponse resp = new BasicHttpResponse(pv,500, "test response");\r
-               BasicHttpEntity entity = new BasicHttpEntity();\r
-               String body = "{\"response\":\"\",\"message\":\"success\"}";\r
-               InputStream instream = new ByteArrayInputStream(body.getBytes());\r
-               entity.setContent(instream);\r
-               resp.setEntity(entity);\r
-               return resp;\r
-            }\r
-        };\r
-        \r
+                       @Mock\r
+                       public OperationStatus getOperationStatusByServiceName(\r
+                                       String serviceName) {\r
+                               OperationStatus operationStatus = new OperationStatus();\r
+                               return operationStatus;\r
+                       }\r
+               };\r
+               new MockUp<E2EServiceInstances>() {\r
+                       @Mock\r
+                       private void createOperationStatusRecordForError(Action action,\r
+                                       String requestId) throws MsoDatabaseException {\r
+\r
+                       }\r
+               };\r
+               new MockUp<CatalogDatabase>() {\r
+                       @Mock\r
+                       public Service getServiceByModelName(String modelName) {\r
+                               Service svc = new Service();\r
+                               return svc;\r
+                       }\r
+               };\r
+\r
+               new MockUp<CatalogDatabase>() {\r
+                       @Mock\r
+                       public ServiceRecipe getServiceRecipeByModelUUID(String modelUUID,\r
+                                       String action) {\r
+                               ServiceRecipe rec = new ServiceRecipe();\r
+                               return rec;\r
+                       }\r
+               };\r
+\r
+               new MockUp<RequestClientFactory>() {\r
+                       @Mock\r
+                       public RequestClient getRequestClient(String orchestrationURI,\r
+                                       MsoJavaProperties props) throws IllegalStateException {\r
+                               RequestClient client = new CamundaClient();\r
+                               client.setUrl("/test/url");\r
+                               return client;\r
+                       }\r
+               };\r
+\r
+               new MockUp<CamundaClient>() {\r
+                       @Mock\r
+                       public HttpResponse post(String requestId, boolean isBaseVfModule,\r
+                                       int recipeTimeout, String requestAction,\r
+                                       String serviceInstanceId, String vnfId, String vfModuleId,\r
+                                       String volumeGroupId, String networkId, String serviceType,\r
+                                       String vnfType, String vfModuleType, String networkType,\r
+                                       String requestDetails) {\r
+                               ProtocolVersion pv = new ProtocolVersion("HTTP", 1, 1);\r
+                               HttpResponse resp = new BasicHttpResponse(pv, 500,\r
+                                               "test response");\r
+                               BasicHttpEntity entity = new BasicHttpEntity();\r
+                               String body = "{\"response\":\"\",\"message\":\"success\"}";\r
+                               InputStream instream = new ByteArrayInputStream(body.getBytes());\r
+                               entity.setContent(instream);\r
+                               resp.setEntity(entity);\r
+                               return resp;\r
+                       }\r
+               };\r
+\r
                E2EServiceInstances instance = new E2EServiceInstances();\r
-               String request = "{\"service\":{\"name\":\"service\",\"description\":\"so_test1\",\"serviceDefId\":\"4050083f-465f-4838-af1e-47a545222ad1\",\"templateId\":\"4050083f-465f-4838-af1e-47a545222ad1\",\"parameters\":{\"globalSubscriberId\":\"123457\", \"subscriberName\":\"Customer1\",\"serviceType\":\"voLTE\",\"templateName\":\"voLTE Service:1.0\",\"resources\":[{\"resourceName\":\"MOG\",\"resourceDefId\":\"MOG\",\"resourceId\":\"MOG\",\"nsParameters\":{\"locationConstraints\":[{\"vnfProfileId\":\"zte-vBAS-1.0\",\"locationConstraints\":{\"vimId\":\"4050083f-465f-4838-af1e-47a545222ad0\"}},{\"vnfProfileId\":\"zte-vMME-1.0\",\"locationConstraints\":{\"vimId\":\"4050083f-465f-4838-af1e-47a545222ad0\"}}],\"additionalParamForNs\":{}}}]}}}";\r
+               String request = "{\"service\":{\"name\":\"so_test4\",\"description\":\"so_test2\",\"serviceDefId\":\"60c3e96e-0970-4871-b6e0-3b6de7561519\",\"templateId\":\"592f9437-a9c0-4303-b9f6-c445bb7e9814\",\"parameters\":{\"globalSubscriberId\":\"123457\",\"subscriberName\":\"Customer1\",\"serviceType\":\"voLTE\",\"templateName\":\"voLTE Service:1.0\",\"resources\":[{\"resourceName\":\"vIMS\",\"resourceDefId\":\"60c3e96e-0970-4871-b6e0-3b6de7561516\",\"resourceId\":\"60c3e96e-0970-4871-b6e0-3b6de7561512\",\"nsParameters\":{\"locationConstraints\":[{\"vnfProfileId\":\"zte-vBAS-1.0\",\"locationConstraints\":{\"vimId\":\"4050083f-465f-4838-af1e-47a545222ad0\"}},{\"vnfProfileId\":\"zte-vMME-1.0\",\"locationConstraints\":{\"vimId\":\"4050083f-465f-4838-af1e-47a545222ad0\"}}],\"additionalParamForNs\":{}}},{\"resourceName\":\"vEPC\",\"resourceDefId\":\"61c3e96e-0970-4871-b6e0-3b6de7561516\",\"resourceId\":\"62c3e96e-0970-4871-b6e0-3b6de7561512\",\"nsParameters\":{\"locationConstraints\":[{\"vnfProfileId\":\"zte-CSCF-1.0\",\"locationConstraints\":{\"vimId\":\"4050083f-465f-4838-af1e-47a545222ad1\"}}],\"additionalParamForNs\":{}}},{\"resourceName\":\"underlayvpn\",\"resourceDefId\":\"60c3e96e-0970-4871-b6e0-3b6de7561513\",\"resourceId\":\"60c3e96e-0970-4871-b6e0-3b6de7561514\",\"nsParameters\":{\"locationConstraints\":[],\"additionalParamForNs\":{\"externalDataNetworkName\":\"Flow_out_net\",\"m6000_mng_ip\":\"181.18.20.2\",\"externalCompanyFtpDataNetworkName\":\"Flow_out_net\",\"externalPluginManageNetworkName\":\"plugin_net_2014\",\"externalManageNetworkName\":\"mng_net_2017\",\"sfc_data_network\":\"sfc_data_net_2016\",\"NatIpRange\":\"210.1.1.10-210.1.1.20\",\"location\":\"4050083f-465f-4838-af1e-47a545222ad0\",\"sdncontroller\":\"9b9f02c0-298b-458a-bc9c-be3692e4f35e\"}}},{\"resourceName\":\"overlayvpn\",\"resourceDefId\":\"60c3e96e-0970-4871-b6e0-3b6de7561517\",\"resourceId\":\"60c3e96e-0970-4871-b6e0-3b6de7561518\",\"nsParameters\":{\"locationConstraints\":[],\"additionalParamForNs\":{\"externalDataNetworkName\":\"Flow_out_net\",\"m6000_mng_ip\":\"181.18.20.2\",\"externalCompanyFtpDataNetworkName\":\"Flow_out_net\",\"externalPluginManageNetworkName\":\"plugin_net_2014\",\"externalManageNetworkName\":\"mng_net_2017\",\"sfc_data_network\":\"sfc_data_net_2016\",\"NatIpRange\":\"210.1.1.10-210.1.1.20\",\"location\":\"4050083f-465f-4838-af1e-47a545222ad0\",\"sdncontroller\":\"9b9f02c0-298b-458a-bc9c-be3692e4f35e\"}}}]}}}";\r
                Response resp = instance.createE2EServiceInstance(request, "v3");\r
                String respStr = resp.getEntity().toString();\r
                assertTrue(respStr.indexOf("SVC2000") != -1);\r
        }\r
-       \r
+\r
        @Test\r
-       public void createE2EServiceInstanceTestNullBPELResponse(){\r
+       public void createE2EServiceInstanceTestNullBPELResponse() {\r
                new MockUp<RequestsDatabase>() {\r
-            @Mock\r
-            private List<InfraActiveRequests> executeInfraQuery (List <Criterion> criteria, Order order) {\r
-               return null;\r
-            }\r
-        };\r
-        new MockUp<CatalogDatabase>() {\r
-            @Mock\r
-            public Service getServiceByModelName (String modelName) {\r
-               Service svc = new Service();\r
-               return svc;\r
-            }\r
-        };\r
-        \r
-        new MockUp<CatalogDatabase>() {\r
-            @Mock\r
-            public ServiceRecipe getServiceRecipeByModelUUID(String modelUUID, String action) {\r
-               ServiceRecipe rec = new ServiceRecipe();\r
-               return rec;\r
-            }\r
-        };\r
-        \r
-        new MockUp<RequestClientFactory>() {\r
-            @Mock\r
-            public RequestClient getRequestClient(String orchestrationURI, MsoJavaProperties props) throws IllegalStateException{\r
-               RequestClient client = new CamundaClient();\r
-               client.setUrl("/test/url");\r
-               return client;\r
-            }\r
-        };\r
-        \r
-        new MockUp<CamundaClient>() {\r
-            @Mock\r
-            public HttpResponse post(String requestId, boolean isBaseVfModule,\r
-                               int recipeTimeout, String requestAction, String serviceInstanceId,\r
-                               String vnfId, String vfModuleId, String volumeGroupId, String networkId,\r
-                               String serviceType, String vnfType, String vfModuleType, String networkType,\r
-                               String requestDetails){ \r
-               HttpResponse resp = null;\r
-               return resp;\r
-            }\r
-        };\r
-        \r
+                       @Mock\r
+                       public OperationStatus getOperationStatusByServiceName(\r
+                                       String serviceName) {\r
+                               OperationStatus operationStatus = new OperationStatus();\r
+                               return operationStatus;\r
+                       }\r
+               };\r
+               new MockUp<E2EServiceInstances>() {\r
+                       @Mock\r
+                       private void createOperationStatusRecordForError(Action action,\r
+                                       String requestId) throws MsoDatabaseException {\r
+\r
+                       }\r
+               };\r
+               new MockUp<CatalogDatabase>() {\r
+                       @Mock\r
+                       public Service getServiceByModelName(String modelName) {\r
+                               Service svc = new Service();\r
+                               return svc;\r
+                       }\r
+               };\r
+\r
+               new MockUp<CatalogDatabase>() {\r
+                       @Mock\r
+                       public ServiceRecipe getServiceRecipeByModelUUID(String modelUUID,\r
+                                       String action) {\r
+                               ServiceRecipe rec = new ServiceRecipe();\r
+                               return rec;\r
+                       }\r
+               };\r
+\r
+               new MockUp<RequestClientFactory>() {\r
+                       @Mock\r
+                       public RequestClient getRequestClient(String orchestrationURI,\r
+                                       MsoJavaProperties props) throws IllegalStateException {\r
+                               RequestClient client = new CamundaClient();\r
+                               client.setUrl("/test/url");\r
+                               return client;\r
+                       }\r
+               };\r
+\r
+               new MockUp<CamundaClient>() {\r
+                       @Mock\r
+                       public HttpResponse post(String requestId, boolean isBaseVfModule,\r
+                                       int recipeTimeout, String requestAction,\r
+                                       String serviceInstanceId, String vnfId, String vfModuleId,\r
+                                       String volumeGroupId, String networkId, String serviceType,\r
+                                       String vnfType, String vfModuleType, String networkType,\r
+                                       String requestDetails) {\r
+                               HttpResponse resp = null;\r
+                               return resp;\r
+                       }\r
+               };\r
+\r
                E2EServiceInstances instance = new E2EServiceInstances();\r
-               String request = "{\"service\":{\"name\":\"service\",\"description\":\"so_test1\",\"serviceDefId\":\"4050083f-465f-4838-af1e-47a545222ad1\",\"templateId\":\"4050083f-465f-4838-af1e-47a545222ad1\",\"parameters\":{\"globalSubscriberId\":\"123457\", \"subscriberName\":\"Customer1\",\"serviceType\":\"voLTE\",\"templateName\":\"voLTE Service:1.0\",\"resources\":[{\"resourceName\":\"MOG\",\"resourceDefId\":\"MOG\",\"resourceId\":\"MOG\",\"nsParameters\":{\"locationConstraints\":[{\"vnfProfileId\":\"zte-vBAS-1.0\",\"locationConstraints\":{\"vimId\":\"4050083f-465f-4838-af1e-47a545222ad0\"}},{\"vnfProfileId\":\"zte-vMME-1.0\",\"locationConstraints\":{\"vimId\":\"4050083f-465f-4838-af1e-47a545222ad0\"}}],\"additionalParamForNs\":{}}}]}}}";\r
+               String request = "{\"service\":{\"name\":\"so_test4\",\"description\":\"so_test2\",\"serviceDefId\":\"60c3e96e-0970-4871-b6e0-3b6de7561519\",\"templateId\":\"592f9437-a9c0-4303-b9f6-c445bb7e9814\",\"parameters\":{\"globalSubscriberId\":\"123457\",\"subscriberName\":\"Customer1\",\"serviceType\":\"voLTE\",\"templateName\":\"voLTE Service:1.0\",\"resources\":[{\"resourceName\":\"vIMS\",\"resourceDefId\":\"60c3e96e-0970-4871-b6e0-3b6de7561516\",\"resourceId\":\"60c3e96e-0970-4871-b6e0-3b6de7561512\",\"nsParameters\":{\"locationConstraints\":[{\"vnfProfileId\":\"zte-vBAS-1.0\",\"locationConstraints\":{\"vimId\":\"4050083f-465f-4838-af1e-47a545222ad0\"}},{\"vnfProfileId\":\"zte-vMME-1.0\",\"locationConstraints\":{\"vimId\":\"4050083f-465f-4838-af1e-47a545222ad0\"}}],\"additionalParamForNs\":{}}},{\"resourceName\":\"vEPC\",\"resourceDefId\":\"61c3e96e-0970-4871-b6e0-3b6de7561516\",\"resourceId\":\"62c3e96e-0970-4871-b6e0-3b6de7561512\",\"nsParameters\":{\"locationConstraints\":[{\"vnfProfileId\":\"zte-CSCF-1.0\",\"locationConstraints\":{\"vimId\":\"4050083f-465f-4838-af1e-47a545222ad1\"}}],\"additionalParamForNs\":{}}},{\"resourceName\":\"underlayvpn\",\"resourceDefId\":\"60c3e96e-0970-4871-b6e0-3b6de7561513\",\"resourceId\":\"60c3e96e-0970-4871-b6e0-3b6de7561514\",\"nsParameters\":{\"locationConstraints\":[],\"additionalParamForNs\":{\"externalDataNetworkName\":\"Flow_out_net\",\"m6000_mng_ip\":\"181.18.20.2\",\"externalCompanyFtpDataNetworkName\":\"Flow_out_net\",\"externalPluginManageNetworkName\":\"plugin_net_2014\",\"externalManageNetworkName\":\"mng_net_2017\",\"sfc_data_network\":\"sfc_data_net_2016\",\"NatIpRange\":\"210.1.1.10-210.1.1.20\",\"location\":\"4050083f-465f-4838-af1e-47a545222ad0\",\"sdncontroller\":\"9b9f02c0-298b-458a-bc9c-be3692e4f35e\"}}},{\"resourceName\":\"overlayvpn\",\"resourceDefId\":\"60c3e96e-0970-4871-b6e0-3b6de7561517\",\"resourceId\":\"60c3e96e-0970-4871-b6e0-3b6de7561518\",\"nsParameters\":{\"locationConstraints\":[],\"additionalParamForNs\":{\"externalDataNetworkName\":\"Flow_out_net\",\"m6000_mng_ip\":\"181.18.20.2\",\"externalCompanyFtpDataNetworkName\":\"Flow_out_net\",\"externalPluginManageNetworkName\":\"plugin_net_2014\",\"externalManageNetworkName\":\"mng_net_2017\",\"sfc_data_network\":\"sfc_data_net_2016\",\"NatIpRange\":\"210.1.1.10-210.1.1.20\",\"location\":\"4050083f-465f-4838-af1e-47a545222ad0\",\"sdncontroller\":\"9b9f02c0-298b-458a-bc9c-be3692e4f35e\"}}}]}}}";\r
                Response resp = instance.createE2EServiceInstance(request, "v3");\r
                String respStr = resp.getEntity().toString();\r
-               assertTrue(respStr.indexOf("SVC1000") != -1);\r
+               assertTrue(respStr.indexOf("SVC2000") != -1);\r
        }\r
-       \r
+\r
        @Test\r
-       public void createE2EServiceInstanceTestBPMNNullREsponse(){\r
+       public void createE2EServiceInstanceTestBPMNNullREsponse() {\r
                new MockUp<RequestsDatabase>() {\r
-            @Mock\r
-            private List<InfraActiveRequests> executeInfraQuery (List <Criterion> criteria, Order order) {\r
-               return null;\r
-            }\r
-        };\r
-        new MockUp<CatalogDatabase>() {\r
-            @Mock\r
-            public Service getServiceByModelName (String modelName) {\r
-               Service svc = new Service();\r
-               return svc;\r
-            }\r
-        };\r
-        \r
-        new MockUp<CatalogDatabase>() {\r
-            @Mock\r
-            public ServiceRecipe getServiceRecipeByModelUUID(String modelUUID, String action) {\r
-               ServiceRecipe rec = new ServiceRecipe();\r
-               return rec;\r
-            }\r
-        };\r
-        \r
-        new MockUp<RequestClientFactory>() {\r
-            @Mock\r
-            public RequestClient getRequestClient(String orchestrationURI, MsoJavaProperties props) throws IllegalStateException{\r
-               RequestClient client = new CamundaClient();\r
-               client.setUrl("/test/url");\r
-               return client;\r
-            }\r
-        };\r
-        \r
-        new MockUp<CamundaClient>() {\r
-            @Mock\r
-            public HttpResponse post(String camundaReqXML, String requestId,\r
-                               String requestTimeout, String schemaVersion, String serviceInstanceId, String action){\r
-               HttpResponse resp = null;\r
-               return resp;\r
-            }\r
-        };\r
-        try{\r
-               E2EServiceInstances instance = new E2EServiceInstances();\r
-               String request = "{\"service\":{\"name\":\"service\",\"description\":\"so_test1\",\"serviceDefId\":\"4050083f-465f-4838-af1e-47a545222ad1\",\"templateId\":\"4050083f-465f-4838-af1e-47a545222ad1\",\"parameters\":{\"globalSubscriberId\":\"123457\", \"subscriberName\":\"Customer1\",\"serviceType\":\"voLTE\",\"templateName\":\"voLTE Service:1.0\",\"resources\":[{\"resourceName\":\"MOG\",\"resourceDefId\":\"MOG\",\"resourceId\":\"MOG\",\"nsParameters\":{\"locationConstraints\":[{\"vnfProfileId\":\"zte-vBAS-1.0\",\"locationConstraints\":{\"vimId\":\"4050083f-465f-4838-af1e-47a545222ad0\"}},{\"vnfProfileId\":\"zte-vMME-1.0\",\"locationConstraints\":{\"vimId\":\"4050083f-465f-4838-af1e-47a545222ad0\"}}],\"additionalParamForNs\":{}}}]}}}";\r
-               Response resp = instance.createE2EServiceInstance(request, "v3");\r
-               String respStr = resp.getEntity().toString();\r
-               assertTrue(respStr.indexOf("SVC1000") != -1);\r
-        }catch(Exception e){\r
-               //TODO: need to catch\r
-        }\r
+                       @Mock\r
+                       public OperationStatus getOperationStatusByServiceName(\r
+                                       String serviceName) {\r
+                               OperationStatus operationStatus = new OperationStatus();\r
+                               return operationStatus;\r
+                       }\r
+               };\r
+               new MockUp<E2EServiceInstances>() {\r
+                       @Mock\r
+                       private void createOperationStatusRecordForError(Action action,\r
+                                       String requestId) throws MsoDatabaseException {\r
+\r
+                       }\r
+               };\r
+               new MockUp<CatalogDatabase>() {\r
+                       @Mock\r
+                       public Service getServiceByModelName(String modelName) {\r
+                               Service svc = new Service();\r
+                               return svc;\r
+                       }\r
+               };\r
+\r
+               new MockUp<CatalogDatabase>() {\r
+                       @Mock\r
+                       public ServiceRecipe getServiceRecipeByModelUUID(String modelUUID,\r
+                                       String action) {\r
+                               ServiceRecipe rec = new ServiceRecipe();\r
+                               return rec;\r
+                       }\r
+               };\r
+\r
+               new MockUp<RequestClientFactory>() {\r
+                       @Mock\r
+                       public RequestClient getRequestClient(String orchestrationURI,\r
+                                       MsoJavaProperties props) throws IllegalStateException {\r
+                               RequestClient client = new CamundaClient();\r
+                               client.setUrl("/test/url");\r
+                               return client;\r
+                       }\r
+               };\r
+\r
+               new MockUp<CamundaClient>() {\r
+                       @Mock\r
+                       public HttpResponse post(String camundaReqXML, String requestId,\r
+                                       String requestTimeout, String schemaVersion,\r
+                                       String serviceInstanceId, String action) {\r
+                               HttpResponse resp = null;\r
+                               return resp;\r
+                       }\r
+               };\r
+               E2EServiceInstances instance = new E2EServiceInstances();\r
+               String request = "{\"service\":{\"name\":\"so_test4\",\"description\":\"so_test2\",\"serviceDefId\":\"60c3e96e-0970-4871-b6e0-3b6de7561519\",\"templateId\":\"592f9437-a9c0-4303-b9f6-c445bb7e9814\",\"parameters\":{\"globalSubscriberId\":\"123457\",\"subscriberName\":\"Customer1\",\"serviceType\":\"voLTE\",\"templateName\":\"voLTE Service:1.0\",\"resources\":[{\"resourceName\":\"vIMS\",\"resourceDefId\":\"60c3e96e-0970-4871-b6e0-3b6de7561516\",\"resourceId\":\"60c3e96e-0970-4871-b6e0-3b6de7561512\",\"nsParameters\":{\"locationConstraints\":[{\"vnfProfileId\":\"zte-vBAS-1.0\",\"locationConstraints\":{\"vimId\":\"4050083f-465f-4838-af1e-47a545222ad0\"}},{\"vnfProfileId\":\"zte-vMME-1.0\",\"locationConstraints\":{\"vimId\":\"4050083f-465f-4838-af1e-47a545222ad0\"}}],\"additionalParamForNs\":{}}},{\"resourceName\":\"vEPC\",\"resourceDefId\":\"61c3e96e-0970-4871-b6e0-3b6de7561516\",\"resourceId\":\"62c3e96e-0970-4871-b6e0-3b6de7561512\",\"nsParameters\":{\"locationConstraints\":[{\"vnfProfileId\":\"zte-CSCF-1.0\",\"locationConstraints\":{\"vimId\":\"4050083f-465f-4838-af1e-47a545222ad1\"}}],\"additionalParamForNs\":{}}},{\"resourceName\":\"underlayvpn\",\"resourceDefId\":\"60c3e96e-0970-4871-b6e0-3b6de7561513\",\"resourceId\":\"60c3e96e-0970-4871-b6e0-3b6de7561514\",\"nsParameters\":{\"locationConstraints\":[],\"additionalParamForNs\":{\"externalDataNetworkName\":\"Flow_out_net\",\"m6000_mng_ip\":\"181.18.20.2\",\"externalCompanyFtpDataNetworkName\":\"Flow_out_net\",\"externalPluginManageNetworkName\":\"plugin_net_2014\",\"externalManageNetworkName\":\"mng_net_2017\",\"sfc_data_network\":\"sfc_data_net_2016\",\"NatIpRange\":\"210.1.1.10-210.1.1.20\",\"location\":\"4050083f-465f-4838-af1e-47a545222ad0\",\"sdncontroller\":\"9b9f02c0-298b-458a-bc9c-be3692e4f35e\"}}},{\"resourceName\":\"overlayvpn\",\"resourceDefId\":\"60c3e96e-0970-4871-b6e0-3b6de7561517\",\"resourceId\":\"60c3e96e-0970-4871-b6e0-3b6de7561518\",\"nsParameters\":{\"locationConstraints\":[],\"additionalParamForNs\":{\"externalDataNetworkName\":\"Flow_out_net\",\"m6000_mng_ip\":\"181.18.20.2\",\"externalCompanyFtpDataNetworkName\":\"Flow_out_net\",\"externalPluginManageNetworkName\":\"plugin_net_2014\",\"externalManageNetworkName\":\"mng_net_2017\",\"sfc_data_network\":\"sfc_data_net_2016\",\"NatIpRange\":\"210.1.1.10-210.1.1.20\",\"location\":\"4050083f-465f-4838-af1e-47a545222ad0\",\"sdncontroller\":\"9b9f02c0-298b-458a-bc9c-be3692e4f35e\"}}}]}}}";\r
+               Response resp = instance.createE2EServiceInstance(request, "v3");\r
+               String respStr = resp.getEntity().toString();\r
+               assertTrue(respStr.indexOf("SVC2000") != -1);\r
        }\r
-       \r
+\r
        @Test\r
-       public void createE2EServiceInstanceTestNullBpmn(){\r
+       public void createE2EServiceInstanceTestNullBpmn() {\r
                new MockUp<RequestsDatabase>() {\r
-            @Mock\r
-            private List<InfraActiveRequests> executeInfraQuery (List <Criterion> criteria, Order order) {\r
-               return null;\r
-            }\r
-        };\r
-        new MockUp<CatalogDatabase>() {\r
-            @Mock\r
-            public Service getServiceByModelName (String modelName) {\r
-               Service svc = new Service();\r
-               return svc;\r
-            }\r
-        };\r
-        \r
-        new MockUp<CatalogDatabase>() {\r
-            @Mock\r
-            public ServiceRecipe getServiceRecipeByModelUUID(String modelUUID, String action) {\r
-               ServiceRecipe rec = new ServiceRecipe();\r
-               return rec;\r
-            }\r
-        };\r
-        try{\r
-               E2EServiceInstances instance = new E2EServiceInstances();\r
-               String request = "{\"service\":{\"name\":\"service\",\"description\":\"so_test1\",\"serviceDefId\":\"4050083f-465f-4838-af1e-47a545222ad1\",\"templateId\":\"4050083f-465f-4838-af1e-47a545222ad1\",\"parameters\":{\"globalSubscriberId\":\"123457\", \"subscriberName\":\"Customer1\",\"serviceType\":\"voLTE\",\"templateName\":\"voLTE Service:1.0\",\"resources\":[{\"resourceName\":\"MOG\",\"resourceDefId\":\"MOG\",\"resourceId\":\"MOG\",\"nsParameters\":{\"locationConstraints\":[{\"vnfProfileId\":\"zte-vBAS-1.0\",\"locationConstraints\":{\"vimId\":\"4050083f-465f-4838-af1e-47a545222ad0\"}},{\"vnfProfileId\":\"zte-vMME-1.0\",\"locationConstraints\":{\"vimId\":\"4050083f-465f-4838-af1e-47a545222ad0\"}}],\"additionalParamForNs\":{}}}]}}}";\r
-               Response resp = instance.createE2EServiceInstance(request, "v3");\r
-               String respStr = resp.getEntity().toString();\r
-               assertTrue(respStr.indexOf("SVC1000") != -1);\r
-        }catch(Exception e){\r
-               //TODO: need to catch\r
-        }\r
+                       @Mock\r
+                       public OperationStatus getOperationStatusByServiceName(\r
+                                       String serviceName) {\r
+                               OperationStatus operationStatus = new OperationStatus();\r
+                               return operationStatus;\r
+                       }\r
+               };\r
+\r
+               new MockUp<E2EServiceInstances>() {\r
+                       @Mock\r
+                       private void createOperationStatusRecordForError(Action action,\r
+                                       String requestId) throws MsoDatabaseException {\r
+\r
+                       }\r
+               };\r
+               new MockUp<CatalogDatabase>() {\r
+                       @Mock\r
+                       public Service getServiceByModelName(String modelName) {\r
+                               Service svc = new Service();\r
+                               return svc;\r
+                       }\r
+               };\r
+\r
+               new MockUp<CatalogDatabase>() {\r
+                       @Mock\r
+                       public ServiceRecipe getServiceRecipeByModelUUID(String modelUUID,\r
+                                       String action) {\r
+                               ServiceRecipe rec = new ServiceRecipe();\r
+                               return rec;\r
+                       }\r
+               };\r
+               E2EServiceInstances instance = new E2EServiceInstances();\r
+               String request = "{\"service\":{\"name\":\"so_test4\",\"description\":\"so_test2\",\"serviceDefId\":\"60c3e96e-0970-4871-b6e0-3b6de7561519\",\"templateId\":\"592f9437-a9c0-4303-b9f6-c445bb7e9814\",\"parameters\":{\"globalSubscriberId\":\"123457\",\"subscriberName\":\"Customer1\",\"serviceType\":\"voLTE\",\"templateName\":\"voLTE Service:1.0\",\"resources\":[{\"resourceName\":\"vIMS\",\"resourceDefId\":\"60c3e96e-0970-4871-b6e0-3b6de7561516\",\"resourceId\":\"60c3e96e-0970-4871-b6e0-3b6de7561512\",\"nsParameters\":{\"locationConstraints\":[{\"vnfProfileId\":\"zte-vBAS-1.0\",\"locationConstraints\":{\"vimId\":\"4050083f-465f-4838-af1e-47a545222ad0\"}},{\"vnfProfileId\":\"zte-vMME-1.0\",\"locationConstraints\":{\"vimId\":\"4050083f-465f-4838-af1e-47a545222ad0\"}}],\"additionalParamForNs\":{}}},{\"resourceName\":\"vEPC\",\"resourceDefId\":\"61c3e96e-0970-4871-b6e0-3b6de7561516\",\"resourceId\":\"62c3e96e-0970-4871-b6e0-3b6de7561512\",\"nsParameters\":{\"locationConstraints\":[{\"vnfProfileId\":\"zte-CSCF-1.0\",\"locationConstraints\":{\"vimId\":\"4050083f-465f-4838-af1e-47a545222ad1\"}}],\"additionalParamForNs\":{}}},{\"resourceName\":\"underlayvpn\",\"resourceDefId\":\"60c3e96e-0970-4871-b6e0-3b6de7561513\",\"resourceId\":\"60c3e96e-0970-4871-b6e0-3b6de7561514\",\"nsParameters\":{\"locationConstraints\":[],\"additionalParamForNs\":{\"externalDataNetworkName\":\"Flow_out_net\",\"m6000_mng_ip\":\"181.18.20.2\",\"externalCompanyFtpDataNetworkName\":\"Flow_out_net\",\"externalPluginManageNetworkName\":\"plugin_net_2014\",\"externalManageNetworkName\":\"mng_net_2017\",\"sfc_data_network\":\"sfc_data_net_2016\",\"NatIpRange\":\"210.1.1.10-210.1.1.20\",\"location\":\"4050083f-465f-4838-af1e-47a545222ad0\",\"sdncontroller\":\"9b9f02c0-298b-458a-bc9c-be3692e4f35e\"}}},{\"resourceName\":\"overlayvpn\",\"resourceDefId\":\"60c3e96e-0970-4871-b6e0-3b6de7561517\",\"resourceId\":\"60c3e96e-0970-4871-b6e0-3b6de7561518\",\"nsParameters\":{\"locationConstraints\":[],\"additionalParamForNs\":{\"externalDataNetworkName\":\"Flow_out_net\",\"m6000_mng_ip\":\"181.18.20.2\",\"externalCompanyFtpDataNetworkName\":\"Flow_out_net\",\"externalPluginManageNetworkName\":\"plugin_net_2014\",\"externalManageNetworkName\":\"mng_net_2017\",\"sfc_data_network\":\"sfc_data_net_2016\",\"NatIpRange\":\"210.1.1.10-210.1.1.20\",\"location\":\"4050083f-465f-4838-af1e-47a545222ad0\",\"sdncontroller\":\"9b9f02c0-298b-458a-bc9c-be3692e4f35e\"}}}]}}}";\r
+               Response resp = instance.createE2EServiceInstance(request, "v3");\r
+               String respStr = resp.getEntity().toString();\r
+               assertTrue(respStr.indexOf("SVC2000") != -1);\r
        }\r
-       \r
+\r
        @Test\r
-       public void createE2EServiceInstanceTestNullReceipe(){\r
+       public void createE2EServiceInstanceTestNullReceipe() {\r
                new MockUp<RequestsDatabase>() {\r
-            @Mock\r
-            private List<InfraActiveRequests> executeInfraQuery (List <Criterion> criteria, Order order) {\r
-               return null;\r
-            }\r
-        };\r
-        try{\r
-               E2EServiceInstances instance = new E2EServiceInstances();\r
-               String request = "{\"service\":{\"name\":\"service\",\"description\":\"so_test1\",\"serviceDefId\":\"modelInvariantId value from SDC?\",\"templateId\":\"modelVersionId value from SDC??\",\"parameters\":{\"domainHost\":\"localhost\",\"nodeTemplateName\":\"modelName:v3\",\"nodeType\":\"service\",\"globalSubscriberId\":\"NEED THIS UUI - AAI\",\"subscriberName\":\"NEED THIS UUI - AAI\",\"requestParameters\":{\"subscriptionServiceType\":\"MOG\",\"userParams\":[{\"name\":\"someUserParam\",\"value\":\"someValue\"},{\"name\":\"segments\",\"value\":\"value\"},{\"name\":\"nsParameters\",\"value\":\"othervalue\"}]}}}}";\r
-               Response resp = instance.createE2EServiceInstance(request, "v3");\r
-               String respStr = resp.getEntity().toString();\r
-               //assertTrue(respStr.indexOf("Recipe could not be retrieved from catalog DB null") != -1);\r
-               assertTrue(true);\r
-        }catch(Exception e){\r
-               //TODO: need to catch\r
-        }\r
+                       @Mock\r
+                       public OperationStatus getOperationStatusByServiceName(\r
+                                       String serviceName) {\r
+                               OperationStatus operationStatus = new OperationStatus();\r
+                               return operationStatus;\r
+                       }\r
+               };\r
+               new MockUp<E2EServiceInstances>() {\r
+                       @Mock\r
+                       private void createOperationStatusRecordForError(Action action,\r
+                                       String requestId) throws MsoDatabaseException {\r
+\r
+                       }\r
+               };\r
+\r
+               E2EServiceInstances instance = new E2EServiceInstances();\r
+               String request = "{\"service\":{\"name\":\"so_test4\",\"description\":\"so_test2\",\"serviceDefId\":\"60c3e96e-0970-4871-b6e0-3b6de7561519\",\"templateId\":\"592f9437-a9c0-4303-b9f6-c445bb7e9814\",\"parameters\":{\"globalSubscriberId\":\"123457\",\"subscriberName\":\"Customer1\",\"serviceType\":\"voLTE\",\"templateName\":\"voLTE Service:1.0\",\"resources\":[{\"resourceName\":\"vIMS\",\"resourceDefId\":\"60c3e96e-0970-4871-b6e0-3b6de7561516\",\"resourceId\":\"60c3e96e-0970-4871-b6e0-3b6de7561512\",\"nsParameters\":{\"locationConstraints\":[{\"vnfProfileId\":\"zte-vBAS-1.0\",\"locationConstraints\":{\"vimId\":\"4050083f-465f-4838-af1e-47a545222ad0\"}},{\"vnfProfileId\":\"zte-vMME-1.0\",\"locationConstraints\":{\"vimId\":\"4050083f-465f-4838-af1e-47a545222ad0\"}}],\"additionalParamForNs\":{}}},{\"resourceName\":\"vEPC\",\"resourceDefId\":\"61c3e96e-0970-4871-b6e0-3b6de7561516\",\"resourceId\":\"62c3e96e-0970-4871-b6e0-3b6de7561512\",\"nsParameters\":{\"locationConstraints\":[{\"vnfProfileId\":\"zte-CSCF-1.0\",\"locationConstraints\":{\"vimId\":\"4050083f-465f-4838-af1e-47a545222ad1\"}}],\"additionalParamForNs\":{}}},{\"resourceName\":\"underlayvpn\",\"resourceDefId\":\"60c3e96e-0970-4871-b6e0-3b6de7561513\",\"resourceId\":\"60c3e96e-0970-4871-b6e0-3b6de7561514\",\"nsParameters\":{\"locationConstraints\":[],\"additionalParamForNs\":{\"externalDataNetworkName\":\"Flow_out_net\",\"m6000_mng_ip\":\"181.18.20.2\",\"externalCompanyFtpDataNetworkName\":\"Flow_out_net\",\"externalPluginManageNetworkName\":\"plugin_net_2014\",\"externalManageNetworkName\":\"mng_net_2017\",\"sfc_data_network\":\"sfc_data_net_2016\",\"NatIpRange\":\"210.1.1.10-210.1.1.20\",\"location\":\"4050083f-465f-4838-af1e-47a545222ad0\",\"sdncontroller\":\"9b9f02c0-298b-458a-bc9c-be3692e4f35e\"}}},{\"resourceName\":\"overlayvpn\",\"resourceDefId\":\"60c3e96e-0970-4871-b6e0-3b6de7561517\",\"resourceId\":\"60c3e96e-0970-4871-b6e0-3b6de7561518\",\"nsParameters\":{\"locationConstraints\":[],\"additionalParamForNs\":{\"externalDataNetworkName\":\"Flow_out_net\",\"m6000_mng_ip\":\"181.18.20.2\",\"externalCompanyFtpDataNetworkName\":\"Flow_out_net\",\"externalPluginManageNetworkName\":\"plugin_net_2014\",\"externalManageNetworkName\":\"mng_net_2017\",\"sfc_data_network\":\"sfc_data_net_2016\",\"NatIpRange\":\"210.1.1.10-210.1.1.20\",\"location\":\"4050083f-465f-4838-af1e-47a545222ad0\",\"sdncontroller\":\"9b9f02c0-298b-458a-bc9c-be3692e4f35e\"}}}]}}}";\r
+               Response resp = instance.createE2EServiceInstance(request, "v3");\r
+               String respStr = resp.getEntity().toString();\r
+               assertTrue(respStr.indexOf("SVC2000") != -1);\r
        }\r
-       \r
+\r
        @Test\r
-       public void createE2EServiceInstanceTestNullDBResponse(){\r
+       public void createE2EServiceInstanceTestNullDBResponse() {\r
+\r
                new MockUp<RequestsDatabase>() {\r
-            @Mock\r
-            private List<InfraActiveRequests> executeInfraQuery (List <Criterion> criteria, Order order) {\r
-               return null;\r
-            }\r
-        };\r
-        try{\r
-               E2EServiceInstances instance = new E2EServiceInstances();\r
-               String request = "{\"service\":{\"name\":\"service\",\"description\":\"so_test1\",\"serviceDefId\":\"4050083f-465f-4838-af1e-47a545222ad1\",\"templateId\":\"4050083f-465f-4838-af1e-47a545222ad1\",\"parameters\":{\"domainHost\":\"localhost\",\"nodeTemplateName\":\"modelName:v3\",\"nodeType\":\"service\",\"globalSubscriberId\":\"4050083f-465f-4838-af1e-47a545222ad1\",\"subscriberName\":\"NEED THIS UUI - AAI\",\"requestParameters\":{\"subscriptionServiceType\":\"MOG\",\"userParams\":[{\"name\":\"someUserParam\",\"value\":\"someValue\"},{\"name\":\"segments\",\"value\":\"value\"},{\"name\":\"nsParameters\",\"value\":\"othervalue\"}]}}}}";\r
-               Response resp = instance.createE2EServiceInstance(request, "v3");\r
-               String respStr = resp.getEntity().toString();\r
-               //assertTrue(respStr.indexOf("Recipe could not be retrieved from catalog DB ") !=-1);\r
-               assertTrue(true);\r
-        }catch(Exception e){\r
-               //TODO: need to catch\r
-        }\r
+                       @Mock\r
+                       public OperationStatus getOperationStatusByServiceName(\r
+                                       String serviceName) {\r
+                               OperationStatus operationStatus = new OperationStatus();\r
+                               return operationStatus;\r
+                       }\r
+               };\r
+               new MockUp<E2EServiceInstances>() {\r
+                       @Mock\r
+                       private void createOperationStatusRecordForError(Action action,\r
+                                       String requestId) throws MsoDatabaseException {\r
+\r
+                       }\r
+               };\r
+\r
+               E2EServiceInstances instance = new E2EServiceInstances();\r
+               String request = "{\"service\":{\"name\":\"so_test4\",\"description\":\"so_test2\",\"serviceDefId\":\"60c3e96e-0970-4871-b6e0-3b6de7561519\",\"templateId\":\"592f9437-a9c0-4303-b9f6-c445bb7e9814\",\"parameters\":{\"globalSubscriberId\":\"123457\",\"subscriberName\":\"Customer1\",\"serviceType\":\"voLTE\",\"templateName\":\"voLTE Service:1.0\",\"resources\":[{\"resourceName\":\"vIMS\",\"resourceDefId\":\"60c3e96e-0970-4871-b6e0-3b6de7561516\",\"resourceId\":\"60c3e96e-0970-4871-b6e0-3b6de7561512\",\"nsParameters\":{\"locationConstraints\":[{\"vnfProfileId\":\"zte-vBAS-1.0\",\"locationConstraints\":{\"vimId\":\"4050083f-465f-4838-af1e-47a545222ad0\"}},{\"vnfProfileId\":\"zte-vMME-1.0\",\"locationConstraints\":{\"vimId\":\"4050083f-465f-4838-af1e-47a545222ad0\"}}],\"additionalParamForNs\":{}}},{\"resourceName\":\"vEPC\",\"resourceDefId\":\"61c3e96e-0970-4871-b6e0-3b6de7561516\",\"resourceId\":\"62c3e96e-0970-4871-b6e0-3b6de7561512\",\"nsParameters\":{\"locationConstraints\":[{\"vnfProfileId\":\"zte-CSCF-1.0\",\"locationConstraints\":{\"vimId\":\"4050083f-465f-4838-af1e-47a545222ad1\"}}],\"additionalParamForNs\":{}}},{\"resourceName\":\"underlayvpn\",\"resourceDefId\":\"60c3e96e-0970-4871-b6e0-3b6de7561513\",\"resourceId\":\"60c3e96e-0970-4871-b6e0-3b6de7561514\",\"nsParameters\":{\"locationConstraints\":[],\"additionalParamForNs\":{\"externalDataNetworkName\":\"Flow_out_net\",\"m6000_mng_ip\":\"181.18.20.2\",\"externalCompanyFtpDataNetworkName\":\"Flow_out_net\",\"externalPluginManageNetworkName\":\"plugin_net_2014\",\"externalManageNetworkName\":\"mng_net_2017\",\"sfc_data_network\":\"sfc_data_net_2016\",\"NatIpRange\":\"210.1.1.10-210.1.1.20\",\"location\":\"4050083f-465f-4838-af1e-47a545222ad0\",\"sdncontroller\":\"9b9f02c0-298b-458a-bc9c-be3692e4f35e\"}}},{\"resourceName\":\"overlayvpn\",\"resourceDefId\":\"60c3e96e-0970-4871-b6e0-3b6de7561517\",\"resourceId\":\"60c3e96e-0970-4871-b6e0-3b6de7561518\",\"nsParameters\":{\"locationConstraints\":[],\"additionalParamForNs\":{\"externalDataNetworkName\":\"Flow_out_net\",\"m6000_mng_ip\":\"181.18.20.2\",\"externalCompanyFtpDataNetworkName\":\"Flow_out_net\",\"externalPluginManageNetworkName\":\"plugin_net_2014\",\"externalManageNetworkName\":\"mng_net_2017\",\"sfc_data_network\":\"sfc_data_net_2016\",\"NatIpRange\":\"210.1.1.10-210.1.1.20\",\"location\":\"4050083f-465f-4838-af1e-47a545222ad0\",\"sdncontroller\":\"9b9f02c0-298b-458a-bc9c-be3692e4f35e\"}}}]}}}";\r
+               Response resp = instance.createE2EServiceInstance(request, "v3");\r
+               String respStr = resp.getEntity().toString();\r
+               assertTrue(respStr.indexOf("SVC2000") != -1);\r
        }\r
-       \r
+\r
        @Test\r
-       public void createE2EServiceInstanceTestInvalidRequest(){\r
-               try{\r
-                       new MockUp<RequestsDatabase>() {\r
-            @Mock\r
-            private List<InfraActiveRequests> executeInfraQuery (List <Criterion> criteria, Order order) {\r
-               List<InfraActiveRequests> activeReqlist = new ArrayList<>();\r
-               InfraActiveRequests req = new InfraActiveRequests();\r
-               req.setAaiServiceId("39493992");\r
-               \r
-               activeReqlist.add(req);\r
-                return activeReqlist;\r
-            }\r
-        };\r
+       public void createE2EServiceInstanceTestInvalidRequest() {\r
+               new MockUp<RequestsDatabase>() {\r
+                       @Mock\r
+                       public OperationStatus getOperationStatusByServiceName(\r
+                                       String serviceName) {\r
+                               OperationStatus operationStatus = new OperationStatus();\r
+                               return operationStatus;\r
+                       }\r
+               };\r
+\r
+               new MockUp<E2EServiceInstances>() {\r
+                       @Mock\r
+                       private void createOperationStatusRecordForError(Action action,\r
+                                       String requestId) throws MsoDatabaseException {\r
+\r
+                       }\r
+               };\r
                E2EServiceInstances instance = new E2EServiceInstances();\r
-               String request = "{\"service\":{\"name\":\"service\",\"description\":\"so_test1\",\"serviceDefId\":\"4050083f-465f-4838-af1e-47a545222ad1\",\"templateId\":\"4050083f-465f-4838-af1e-47a545222ad1\",\"parameters\":{\"globalSubscriberId\":\"123457\", \"subscriberName\":\"Customer1\",\"serviceType\":\"voLTE\",\"templateName\":\"voLTE Service:1.0\",\"resources\":[{\"resourceName\":\"MOG\",\"resourceDefId\":\"MOG\",\"resourceId\":\"MOG\",\"nsParameters\":{\"locationConstraints\":[{\"vnfProfileId\":\"zte-vBAS-1.0\",\"locationConstraints\":{\"vimId\":\"4050083f-465f-4838-af1e-47a545222ad0\"}},{\"vnfProfileId\":\"zte-vMME-1.0\",\"locationConstraints\":{\"vimId\":\"4050083f-465f-4838-af1e-47a545222ad0\"}}],\"additionalParamForNs\":{}}}]}}}";\r
+               String request = "{\"service\":{\"name\":\"so_test4\",\"description\":\"so_test2\",\"serviceDefId\":\"60c3e96e-0970-4871-b6e0-3b6de7561519\",\"templateId\":\"592f9437-a9c0-4303-b9f6-c445bb7e9814\",\"parameters\":{\"globalSubscriberId\":\"123457\",\"subscriberName\":\"Customer1\",\"serviceType\":\"voLTE\",\"templateName\":\"voLTE Service:1.0\",\"resources\":[{\"resourceName\":\"vIMS\",\"resourceDefId\":\"60c3e96e-0970-4871-b6e0-3b6de7561516\",\"resourceId\":\"60c3e96e-0970-4871-b6e0-3b6de7561512\",\"nsParameters\":{\"locationConstraints\":[{\"vnfProfileId\":\"zte-vBAS-1.0\",\"locationConstraints\":{\"vimId\":\"4050083f-465f-4838-af1e-47a545222ad0\"}},{\"vnfProfileId\":\"zte-vMME-1.0\",\"locationConstraints\":{\"vimId\":\"4050083f-465f-4838-af1e-47a545222ad0\"}}],\"additionalParamForNs\":{}}},{\"resourceName\":\"vEPC\",\"resourceDefId\":\"61c3e96e-0970-4871-b6e0-3b6de7561516\",\"resourceId\":\"62c3e96e-0970-4871-b6e0-3b6de7561512\",\"nsParameters\":{\"locationConstraints\":[{\"vnfProfileId\":\"zte-CSCF-1.0\",\"locationConstraints\":{\"vimId\":\"4050083f-465f-4838-af1e-47a545222ad1\"}}],\"additionalParamForNs\":{}}},{\"resourceName\":\"underlayvpn\",\"resourceDefId\":\"60c3e96e-0970-4871-b6e0-3b6de7561513\",\"resourceId\":\"60c3e96e-0970-4871-b6e0-3b6de7561514\",\"nsParameters\":{\"locationConstraints\":[],\"additionalParamForNs\":{\"externalDataNetworkName\":\"Flow_out_net\",\"m6000_mng_ip\":\"181.18.20.2\",\"externalCompanyFtpDataNetworkName\":\"Flow_out_net\",\"externalPluginManageNetworkName\":\"plugin_net_2014\",\"externalManageNetworkName\":\"mng_net_2017\",\"sfc_data_network\":\"sfc_data_net_2016\",\"NatIpRange\":\"210.1.1.10-210.1.1.20\",\"location\":\"4050083f-465f-4838-af1e-47a545222ad0\",\"sdncontroller\":\"9b9f02c0-298b-458a-bc9c-be3692e4f35e\"}}},{\"resourceName\":\"overlayvpn\",\"resourceDefId\":\"60c3e96e-0970-4871-b6e0-3b6de7561517\",\"resourceId\":\"60c3e96e-0970-4871-b6e0-3b6de7561518\",\"nsParameters\":{\"locationConstraints\":[],\"additionalParamForNs\":{\"externalDataNetworkName\":\"Flow_out_net\",\"m6000_mng_ip\":\"181.18.20.2\",\"externalCompanyFtpDataNetworkName\":\"Flow_out_net\",\"externalPluginManageNetworkName\":\"plugin_net_2014\",\"externalManageNetworkName\":\"mng_net_2017\",\"sfc_data_network\":\"sfc_data_net_2016\",\"NatIpRange\":\"210.1.1.10-210.1.1.20\",\"location\":\"4050083f-465f-4838-af1e-47a545222ad0\",\"sdncontroller\":\"9b9f02c0-298b-458a-bc9c-be3692e4f35e\"}}}]}}}";\r
                Response resp = instance.createE2EServiceInstance(request, "v3");\r
                String respStr = resp.getEntity().toString();\r
-               assertTrue(respStr.indexOf("SVC1000") != -1);\r
-               }catch(Exception e){\r
-               //TODO: need to catch\r
-        }\r
+               assertTrue(respStr.indexOf("SVC2000") != -1);\r
        }\r
-       \r
+\r
        @Test\r
-       public void createE2EServiceInstanceTestEmptyDBQuery(){\r
-               try{\r
-               new MockUp<RequestsDatabase>() {\r
-            @Mock\r
-            private List<InfraActiveRequests> executeInfraQuery (List <Criterion> criteria, Order order) {\r
-                return Collections.EMPTY_LIST;\r
-            }\r
-        };\r
-        \r
-               E2EServiceInstances instance = new E2EServiceInstances();\r
-               String request = "{\"service\":{\"name\":\"service\",\"description\":\"so_test1\",\"serviceDefId\":\"4050083f-465f-4838-af1e-47a545222ad1\",\"templateId\":\"4050083f-465f-4838-af1e-47a545222ad1\",\"parameters\":{\"domainHost\":\"localhost\",\"nodeTemplateName\":\"modelName:v3\",\"nodeType\":\"service\",\"globalSubscriberId\":\"4050083f-465f-4838-af1e-47a545222ad1\",\"subscriberName\":\"NEED THIS UUI - AAI\",\"requestParameters\":{\"subscriptionServiceType\":\"MOG\",\"userParams\":[{\"name\":\"someUserParam\",\"value\":\"someValue\"},{\"name\":\"segments\",\"value\":\"value\"},{\"name\":\"nsParameters\",\"value\":\"othervalue\"}]}}}}";\r
-               Response resp = instance.createE2EServiceInstance(request, "v3");\r
-               String respStr = resp.getEntity().toString();\r
-               //assertTrue(respStr.indexOf("Recipe could not be retrieved from catalog DB ") != -1);\r
-               assertTrue(true);\r
-        }catch(Exception e){\r
-               //TODO: need to catch\r
-        }\r
+       public void createE2EServiceInstanceTestEmptyDBQuery() {\r
+               new MockUp<E2EServiceInstances>() {\r
+                       @Mock\r
+                       private void createOperationStatusRecordForError(Action action,\r
+                                       String requestId) throws MsoDatabaseException {\r
+\r
+                       }\r
+               };\r
+\r
+               E2EServiceInstances instance = new E2EServiceInstances();\r
+               String request = "{\"service\":{\"name\":\"so_test4\",\"description\":\"so_test2\",\"serviceDefId\":\"60c3e96e-0970-4871-b6e0-3b6de7561519\",\"templateId\":\"592f9437-a9c0-4303-b9f6-c445bb7e9814\",\"parameters\":{\"globalSubscriberId\":\"123457\",\"subscriberName\":\"Customer1\",\"serviceType\":\"voLTE\",\"templateName\":\"voLTE Service:1.0\",\"resources\":[{\"resourceName\":\"vIMS\",\"resourceDefId\":\"60c3e96e-0970-4871-b6e0-3b6de7561516\",\"resourceId\":\"60c3e96e-0970-4871-b6e0-3b6de7561512\",\"nsParameters\":{\"locationConstraints\":[{\"vnfProfileId\":\"zte-vBAS-1.0\",\"locationConstraints\":{\"vimId\":\"4050083f-465f-4838-af1e-47a545222ad0\"}},{\"vnfProfileId\":\"zte-vMME-1.0\",\"locationConstraints\":{\"vimId\":\"4050083f-465f-4838-af1e-47a545222ad0\"}}],\"additionalParamForNs\":{}}},{\"resourceName\":\"vEPC\",\"resourceDefId\":\"61c3e96e-0970-4871-b6e0-3b6de7561516\",\"resourceId\":\"62c3e96e-0970-4871-b6e0-3b6de7561512\",\"nsParameters\":{\"locationConstraints\":[{\"vnfProfileId\":\"zte-CSCF-1.0\",\"locationConstraints\":{\"vimId\":\"4050083f-465f-4838-af1e-47a545222ad1\"}}],\"additionalParamForNs\":{}}},{\"resourceName\":\"underlayvpn\",\"resourceDefId\":\"60c3e96e-0970-4871-b6e0-3b6de7561513\",\"resourceId\":\"60c3e96e-0970-4871-b6e0-3b6de7561514\",\"nsParameters\":{\"locationConstraints\":[],\"additionalParamForNs\":{\"externalDataNetworkName\":\"Flow_out_net\",\"m6000_mng_ip\":\"181.18.20.2\",\"externalCompanyFtpDataNetworkName\":\"Flow_out_net\",\"externalPluginManageNetworkName\":\"plugin_net_2014\",\"externalManageNetworkName\":\"mng_net_2017\",\"sfc_data_network\":\"sfc_data_net_2016\",\"NatIpRange\":\"210.1.1.10-210.1.1.20\",\"location\":\"4050083f-465f-4838-af1e-47a545222ad0\",\"sdncontroller\":\"9b9f02c0-298b-458a-bc9c-be3692e4f35e\"}}},{\"resourceName\":\"overlayvpn\",\"resourceDefId\":\"60c3e96e-0970-4871-b6e0-3b6de7561517\",\"resourceId\":\"60c3e96e-0970-4871-b6e0-3b6de7561518\",\"nsParameters\":{\"locationConstraints\":[],\"additionalParamForNs\":{\"externalDataNetworkName\":\"Flow_out_net\",\"m6000_mng_ip\":\"181.18.20.2\",\"externalCompanyFtpDataNetworkName\":\"Flow_out_net\",\"externalPluginManageNetworkName\":\"plugin_net_2014\",\"externalManageNetworkName\":\"mng_net_2017\",\"sfc_data_network\":\"sfc_data_net_2016\",\"NatIpRange\":\"210.1.1.10-210.1.1.20\",\"location\":\"4050083f-465f-4838-af1e-47a545222ad0\",\"sdncontroller\":\"9b9f02c0-298b-458a-bc9c-be3692e4f35e\"}}}]}}}";\r
+               Response resp = instance.createE2EServiceInstance(request, "v3");\r
+               String respStr = resp.getEntity().toString();\r
+               assertTrue(respStr.indexOf("SVC2000") != -1);\r
+               // assertTrue(true);\r
        }\r
-       \r
+\r
        @Test\r
-       public void createE2EServiceInstanceTestDBQueryFail(){\r
-               try{\r
-                       E2EServiceInstances instance = new E2EServiceInstances();\r
-                       String request = "{\"service\":{\"name\":\"service\",\"description\":\"so_test1\",\"serviceDefId\":\"4050083f-465f-4838-af1e-47a545222ad1\",\"templateId\":\"4050083f-465f-4838-af1e-47a545222ad1\",\"parameters\":{\"globalSubscriberId\":\"123457\", \"subscriberName\":\"Customer1\",\"serviceType\":\"voLTE\",\"templateName\":\"voLTE Service:1.0\",\"resources\":[{\"resourceName\":\"MOG\",\"resourceDefId\":\"MOG\",\"resourceId\":\"MOG\",\"nsParameters\":{\"locationConstraints\":[{\"vnfProfileId\":\"zte-vBAS-1.0\",\"locationConstraints\":{\"vimId\":\"4050083f-465f-4838-af1e-47a545222ad0\"}},{\"vnfProfileId\":\"zte-vMME-1.0\",\"locationConstraints\":{\"vimId\":\"4050083f-465f-4838-af1e-47a545222ad0\"}}],\"additionalParamForNs\":{}}}]}}}";\r
-                       Response resp = instance.createE2EServiceInstance(request, "v3");\r
-                       String respStr = resp.getEntity().toString();\r
-                       assertTrue(respStr.indexOf("SVC1000") != -1);\r
-               }catch(Exception e){\r
-               //TODO: need to catch\r
-        }\r
+       public void createE2EServiceInstanceTestDBQueryFail() {\r
+               new MockUp<RequestsDatabase>() {\r
+                       @Mock\r
+                       public OperationStatus getOperationStatusByServiceName(\r
+                                       String serviceName) {\r
+                               OperationStatus operationStatus = new OperationStatus();\r
+                               return operationStatus;\r
+                       }\r
+               };\r
+\r
+               new MockUp<E2EServiceInstances>() {\r
+                       @Mock\r
+                       private void createOperationStatusRecordForError(Action action,\r
+                                       String requestId) throws MsoDatabaseException {\r
+\r
+                       }\r
+               };\r
+               E2EServiceInstances instance = new E2EServiceInstances();\r
+               String request = "{\"service\":{\"name\":\"so_test4\",\"description\":\"so_test2\",\"serviceDefId\":\"60c3e96e-0970-4871-b6e0-3b6de7561519\",\"templateId\":\"592f9437-a9c0-4303-b9f6-c445bb7e9814\",\"parameters\":{\"globalSubscriberId\":\"123457\",\"subscriberName\":\"Customer1\",\"serviceType\":\"voLTE\",\"templateName\":\"voLTE Service:1.0\",\"resources\":[{\"resourceName\":\"vIMS\",\"resourceDefId\":\"60c3e96e-0970-4871-b6e0-3b6de7561516\",\"resourceId\":\"60c3e96e-0970-4871-b6e0-3b6de7561512\",\"nsParameters\":{\"locationConstraints\":[{\"vnfProfileId\":\"zte-vBAS-1.0\",\"locationConstraints\":{\"vimId\":\"4050083f-465f-4838-af1e-47a545222ad0\"}},{\"vnfProfileId\":\"zte-vMME-1.0\",\"locationConstraints\":{\"vimId\":\"4050083f-465f-4838-af1e-47a545222ad0\"}}],\"additionalParamForNs\":{}}},{\"resourceName\":\"vEPC\",\"resourceDefId\":\"61c3e96e-0970-4871-b6e0-3b6de7561516\",\"resourceId\":\"62c3e96e-0970-4871-b6e0-3b6de7561512\",\"nsParameters\":{\"locationConstraints\":[{\"vnfProfileId\":\"zte-CSCF-1.0\",\"locationConstraints\":{\"vimId\":\"4050083f-465f-4838-af1e-47a545222ad1\"}}],\"additionalParamForNs\":{}}},{\"resourceName\":\"underlayvpn\",\"resourceDefId\":\"60c3e96e-0970-4871-b6e0-3b6de7561513\",\"resourceId\":\"60c3e96e-0970-4871-b6e0-3b6de7561514\",\"nsParameters\":{\"locationConstraints\":[],\"additionalParamForNs\":{\"externalDataNetworkName\":\"Flow_out_net\",\"m6000_mng_ip\":\"181.18.20.2\",\"externalCompanyFtpDataNetworkName\":\"Flow_out_net\",\"externalPluginManageNetworkName\":\"plugin_net_2014\",\"externalManageNetworkName\":\"mng_net_2017\",\"sfc_data_network\":\"sfc_data_net_2016\",\"NatIpRange\":\"210.1.1.10-210.1.1.20\",\"location\":\"4050083f-465f-4838-af1e-47a545222ad0\",\"sdncontroller\":\"9b9f02c0-298b-458a-bc9c-be3692e4f35e\"}}},{\"resourceName\":\"overlayvpn\",\"resourceDefId\":\"60c3e96e-0970-4871-b6e0-3b6de7561517\",\"resourceId\":\"60c3e96e-0970-4871-b6e0-3b6de7561518\",\"nsParameters\":{\"locationConstraints\":[],\"additionalParamForNs\":{\"externalDataNetworkName\":\"Flow_out_net\",\"m6000_mng_ip\":\"181.18.20.2\",\"externalCompanyFtpDataNetworkName\":\"Flow_out_net\",\"externalPluginManageNetworkName\":\"plugin_net_2014\",\"externalManageNetworkName\":\"mng_net_2017\",\"sfc_data_network\":\"sfc_data_net_2016\",\"NatIpRange\":\"210.1.1.10-210.1.1.20\",\"location\":\"4050083f-465f-4838-af1e-47a545222ad0\",\"sdncontroller\":\"9b9f02c0-298b-458a-bc9c-be3692e4f35e\"}}}]}}}";\r
+               Response resp = instance.createE2EServiceInstance(request, "v3");\r
+               String respStr = resp.getEntity().toString();\r
+               assertTrue(respStr.indexOf("SVC2000") != -1);\r
        }\r
-       \r
+\r
        @Test\r
-       public void createE2EServiceInstanceTestForEmptyRequest(){\r
-               try{\r
-                       E2EServiceInstances instance = new E2EServiceInstances();\r
-                       String request = "";\r
-                       Response resp = instance.createE2EServiceInstance(request, "v3");\r
-                       String respStr = resp.getEntity().toString();\r
-                       assertTrue(respStr.indexOf("Mapping of request to JSON object failed.  No content to map to Object due to end of input") != -1);\r
-               }catch(Exception e){\r
-               //TODO: need to catch\r
-        }\r
+       public void createE2EServiceInstanceTestForEmptyRequest() {\r
+\r
+               new MockUp<E2EServiceInstances>() {\r
+                       @Mock\r
+                       private void createOperationStatusRecordForError(Action action,\r
+                                       String requestId) throws MsoDatabaseException {\r
+\r
+                       }\r
+               };\r
+               E2EServiceInstances instance = new E2EServiceInstances();\r
+               String request = "";\r
+               Response resp = instance.createE2EServiceInstance(request, "v3");\r
+               String respStr = resp.getEntity().toString();\r
+               assertTrue(respStr\r
+                               .indexOf("Mapping of request to JSON object failed.  No content to map to Object due to end of input") != -1);\r
        }\r
-       \r
+\r
        @Test\r
-       public void deleteE2EServiceInstanceTestNormal(){\r
+       public void deleteE2EServiceInstanceTestNormal() {\r
                E2EServiceInstances instance = new E2EServiceInstances();\r
                String request = "{\"globalSubscriberId\":\"299392392\",\"serviceType\":\"VoLTE\"}";\r
-               Response resp = instance.deleteE2EServiceInstance(request, "v3", "12345678");\r
+               Response resp = instance.deleteE2EServiceInstance(request, "v3",\r
+                               "12345678");\r
                String respStr = resp.getEntity().toString();\r
                assertTrue(respStr.indexOf("SVC1000") != -1);\r
        }\r
+\r
+       @Test\r
+       public void getE2EServiceInstanceTest() {\r
+\r
+               new MockUp<RequestsDatabase>() {\r
+                       @Mock\r
+                       public OperationStatus getOperationStatus(String serviceId,\r
+                                       String operationId) {\r
+                               OperationStatus os = new OperationStatus();\r
+                               os.setOperation("");\r
+                               os.setOperationContent("");\r
+                               os.setOperationId("123456");\r
+                               os.setProgress("");\r
+                               os.setServiceId("12345");\r
+                               os.setServiceName("VoLTE");\r
+                               os.setReason("");\r
+                               os.setResult("");\r
+                               os.setUserId("");\r
+                               return os;\r
+                       }\r
+               };\r
+\r
+               E2EServiceInstances instance = new E2EServiceInstances();\r
+               Response resp = instance\r
+                               .getE2EServiceInstances("12345", "v3", "123456");\r
+\r
+       }\r
 }\r
index c6f0cea..98121d8 100644 (file)
@@ -559,6 +559,70 @@ public class RequestsDatabase {
         return operStatus;
     }
     
+    /**
+     * get the operation progress
+     * <br>
+     * 
+     * @param serviceId the serviceId
+     * @return current progress of the operation
+     * @since ONAP Amsterdam Release
+     */
+    public OperationStatus getOperationStatusByServiceId(String serviceId) {
+
+        long startTime = System.currentTimeMillis();
+        msoLogger.debug("Execute query on infra active request table");
+
+        OperationStatus operStatus = null;
+        Session session = sessionFactoryRequestDB.getSessionFactory().openSession();
+        try {
+            session.beginTransaction();
+            String hql = "FROM OperationStatus WHERE SERVICE_ID = :service_id";
+            Query query = session.createQuery(hql);
+            query.setParameter("service_id", serviceId);
+            operStatus = (OperationStatus)query.uniqueResult();
+
+        } finally {
+            if(session != null && session.isOpen()) {
+                session.close();
+            }
+            msoLogger.recordMetricEvent(startTime, MsoLogger.StatusCode.COMPLETE, MsoLogger.ResponseCode.Suc,
+                    "Successfully", "RequestDB", "getOperationStatus", null);
+        }
+        return operStatus;
+    }
+    
+    /**
+     * get the operation progress
+     * <br>
+     * 
+     * @param serviceName the serviceName
+     * @return current progress of the operation
+     * @since ONAP Amsterdam Release
+     */
+    public OperationStatus getOperationStatusByServiceName(String serviceName) {
+
+        long startTime = System.currentTimeMillis();
+        msoLogger.debug("Execute query on infra active request table");
+
+        OperationStatus operStatus = null;
+        Session session = sessionFactoryRequestDB.getSessionFactory().openSession();
+        try {
+            session.beginTransaction();
+            String hql = "FROM OperationStatus WHERE SERVICE_NAME = :service_name";
+            Query query = session.createQuery(hql);
+            query.setParameter("service_name", serviceName);
+            operStatus = (OperationStatus)query.uniqueResult();
+
+        } finally {
+            if(session != null && session.isOpen()) {
+                session.close();
+            }
+            msoLogger.recordMetricEvent(startTime, MsoLogger.StatusCode.COMPLETE, MsoLogger.ResponseCode.Suc,
+                    "Successfully", "RequestDB", "getOperationStatus", null);
+        }
+        return operStatus;
+    }
+    
     /**
      * update the operation status
      * <br>