aboutsummaryrefslogtreecommitdiffstats
path: root/src/main
diff options
context:
space:
mode:
authorEzekielaRakotoarijaona <ezekiela.rakotoarijaona@orange.com>2019-01-11 14:53:30 +0100
committerEzekielaRakotoarijaona <ezekiela.rakotoarijaona@orange.com>2019-01-18 17:28:05 +0100
commit05733ab5105f440e44eb56dc37e6d14615c36454 (patch)
tree3989eb8552ab271c9d5ba0a37b99960c49b36259 /src/main
parent09d6ce6112d61a7fc98c3038afce636b3e494f29 (diff)
Fix unit testing instability
Migration of most of the unit tests from JUnit to Karate Framework Remove of the scheduling tasks for testing. Change-Id: Ic51378443bd6c12f247fa50b2b08ee881264dac4 Issue-ID: EXTAPI-178 Signed-off-by: EzekielaRakotoarijaona <ezekiela.rakotoarijaona@orange.com>
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/org/onap/nbi/Application.java21
-rw-r--r--src/main/java/org/onap/nbi/apis/serviceorder/ServiceOrderResource.java46
-rw-r--r--src/main/java/org/onap/nbi/apis/serviceorder/workflow/ExecutionTaskProcessorScheduler.java44
-rw-r--r--src/main/java/org/onap/nbi/apis/serviceorder/workflow/SOTaskManager.java15
-rw-r--r--src/main/java/org/onap/nbi/apis/serviceorder/workflow/ServiceOrderCheckScheduler.java48
-rw-r--r--src/main/java/org/onap/nbi/configuration/RestConfiguration.java1
-rw-r--r--src/main/resources/application-test.properties72
-rw-r--r--src/main/resources/application.properties104
8 files changed, 263 insertions, 88 deletions
diff --git a/src/main/java/org/onap/nbi/Application.java b/src/main/java/org/onap/nbi/Application.java
index 05588b4..9f77ffe 100644
--- a/src/main/java/org/onap/nbi/Application.java
+++ b/src/main/java/org/onap/nbi/Application.java
@@ -1,22 +1,21 @@
/**
* Copyright (c) 2018 Orange
* <p>
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
* <p>
* http://www.apache.org/licenses/LICENSE-2.0
* <p>
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
*/
package org.onap.nbi;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.scheduling.annotation.EnableAsync;
@SpringBootApplication
@@ -24,7 +23,11 @@ import org.springframework.scheduling.annotation.EnableAsync;
public class Application {
public static void main(String[] args) {
- SpringApplication.run(Application.class, args);
+ run(args);
+ }
+
+ public static ConfigurableApplicationContext run(String[] args) {
+ return SpringApplication.run(Application.class, args);
}
}
diff --git a/src/main/java/org/onap/nbi/apis/serviceorder/ServiceOrderResource.java b/src/main/java/org/onap/nbi/apis/serviceorder/ServiceOrderResource.java
index e3f4442..2cd1c9a 100644
--- a/src/main/java/org/onap/nbi/apis/serviceorder/ServiceOrderResource.java
+++ b/src/main/java/org/onap/nbi/apis/serviceorder/ServiceOrderResource.java
@@ -33,8 +33,6 @@ import org.springframework.data.mongodb.core.query.Query;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
-import org.springframework.scheduling.annotation.EnableScheduling;
-import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.util.MultiValueMap;
import org.springframework.validation.Errors;
import org.springframework.web.bind.annotation.*;
@@ -44,11 +42,8 @@ import java.util.List;
@RestController
@RequestMapping("/serviceOrder")
-@EnableScheduling
public class ServiceOrderResource extends ResourceManagement {
-
-
@Autowired
ServiceOrderService serviceOrderService;
@@ -71,6 +66,8 @@ public class ServiceOrderResource extends ResourceManagement {
MultiCriteriaRequestBuilder multiCriteriaRequestBuilder;
+
+
@GetMapping(value = "/{serviceOrderId}", produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<Object> getServiceOrder(@PathVariable String serviceOrderId,
@RequestParam MultiValueMap<String, String> params) {
@@ -123,26 +120,33 @@ public class ServiceOrderResource extends ResourceManagement {
}
- @Scheduled(fixedDelay = 5000)
- public void scheduleCheckServiceOrders() {
- List<ServiceOrder> acknowledgedOrders = serviceOrderService.findServiceOrdersByState(StateType.ACKNOWLEDGED);
- for (ServiceOrder serviceOrder : acknowledgedOrders) {
- ServiceOrderInfo serviceOrderInfo = checkOrderConsistenceManager.checkServiceOrder(serviceOrder);
- if (serviceOrderInfo.isServiceOrderRejected()) {
- serviceOrderService.updateOrderState(serviceOrder, StateType.REJECTED);
- } else if (serviceOrderInfo.isAllItemsCompleted()) {
- serviceOrderService.updateOrderState(serviceOrder, StateType.COMPLETED);
- } else {
- createAAICustomer.createAAICustomer(serviceOrder,serviceOrderInfo);
+
+ @PutMapping(value = "/test/{serviceOrderId}",consumes = MediaType.APPLICATION_JSON_VALUE)
+ public ResponseEntity<Object> checkServiceOrderRessource(@PathVariable String serviceOrderId,@RequestParam MultiValueMap<String, String> params){
+ ServiceOrder serviceOrder = serviceOrderService.findServiceOrderById(serviceOrderId);
+ serviceOrder = checkServiceOrder(serviceOrder);
+ JsonRepresentation filter = new JsonRepresentation(params);
+ return this.createResponse(serviceOrder,filter);
+ }
+
+
+ public ServiceOrder checkServiceOrder(ServiceOrder serviceOrder) {
+ ServiceOrderInfo serviceOrderInfo = checkOrderConsistenceManager.checkServiceOrder(serviceOrder);
+ if (serviceOrderInfo.isServiceOrderRejected()) {
+ serviceOrderService.updateOrderState(serviceOrder, StateType.REJECTED);
+ } else if (serviceOrderInfo.isAllItemsCompleted()) {
+ serviceOrderService.updateOrderState(serviceOrder, StateType.COMPLETED);
+ } else {
+ createAAICustomer.createAAICustomer(serviceOrder,serviceOrderInfo);
+ if(StateType.ACKNOWLEDGED==serviceOrder.getState()) {
+ createAAIServiceType.createAAIServiceType(serviceOrder, serviceOrderInfo);
if(StateType.ACKNOWLEDGED==serviceOrder.getState()) {
- createAAIServiceType.createAAIServiceType(serviceOrder, serviceOrderInfo);
- if(StateType.ACKNOWLEDGED==serviceOrder.getState()) {
- serviceOrchestratorManager.registerServiceOrder(serviceOrder, serviceOrderInfo);
- }
+ serviceOrchestratorManager.registerServiceOrder(serviceOrder, serviceOrderInfo);
}
-
}
+
}
+ return serviceOrder;
}
}
diff --git a/src/main/java/org/onap/nbi/apis/serviceorder/workflow/ExecutionTaskProcessorScheduler.java b/src/main/java/org/onap/nbi/apis/serviceorder/workflow/ExecutionTaskProcessorScheduler.java
new file mode 100644
index 0000000..ee72515
--- /dev/null
+++ b/src/main/java/org/onap/nbi/apis/serviceorder/workflow/ExecutionTaskProcessorScheduler.java
@@ -0,0 +1,44 @@
+/**
+ * Copyright (c) 2018 Orange
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package org.onap.nbi.apis.serviceorder.workflow;
+
+import java.util.List;
+import org.onap.nbi.apis.serviceorder.model.orchestrator.ExecutionTask;
+import org.onap.nbi.apis.serviceorder.repositories.ExecutionTaskRepository;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Profile;
+import org.springframework.scheduling.annotation.EnableScheduling;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Service;
+
+@Profile("default")
+@Service
+@EnableScheduling
+public class ExecutionTaskProcessorScheduler {
+
+ @Autowired
+ ExecutionTaskRepository executionTaskRepository;
+
+ @Autowired
+ SOTaskProcessor soTaskProcessor;
+
+ // Using fixedDelay to mitigate against Scheduler queue backlog with fixedRate
+ @Scheduled(fixedDelayString = "${executionTask.schedule}", initialDelayString = "${executionTask.initial}")
+ private void processExecutionPlan() throws InterruptedException {
+ List<ExecutionTask> taskToExecute = executionTaskRepository.findByReliedTasksIsEmpty();
+ for (ExecutionTask executionTask : taskToExecute) {
+ soTaskProcessor.processOrderItem(executionTask);
+ }
+ }
+}
diff --git a/src/main/java/org/onap/nbi/apis/serviceorder/workflow/SOTaskManager.java b/src/main/java/org/onap/nbi/apis/serviceorder/workflow/SOTaskManager.java
index be8bdc0..26569f6 100644
--- a/src/main/java/org/onap/nbi/apis/serviceorder/workflow/SOTaskManager.java
+++ b/src/main/java/org/onap/nbi/apis/serviceorder/workflow/SOTaskManager.java
@@ -12,8 +12,6 @@
*/
package org.onap.nbi.apis.serviceorder.workflow;
-import java.util.*;
-import java.util.Map.Entry;
import org.onap.nbi.apis.serviceorder.model.OrderItemRelationship;
import org.onap.nbi.apis.serviceorder.model.ServiceOrder;
import org.onap.nbi.apis.serviceorder.model.ServiceOrderItem;
@@ -25,9 +23,11 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.EnableScheduling;
-import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Service;
+import java.util.*;
+import java.util.Map.Entry;
+
@Service
@EnableScheduling
public class SOTaskManager {
@@ -94,12 +94,5 @@ public class SOTaskManager {
registerOrderItemExecutionPlan(serviceOrder.getOrderItem(), serviceOrderInfoJson);
}
- // Using fixedDelay to mitigate against Scheduler queue backlog with fixedRate
- @Scheduled(fixedDelay = 2000)
- private void processExecutionPlan() throws InterruptedException {
- List<ExecutionTask> taskToExecute = executionTaskRepository.findByReliedTasksIsEmpty();
- for (ExecutionTask executionTask : taskToExecute) {
- soTaskProcessor.processOrderItem(executionTask);
- }
- }
+
}
diff --git a/src/main/java/org/onap/nbi/apis/serviceorder/workflow/ServiceOrderCheckScheduler.java b/src/main/java/org/onap/nbi/apis/serviceorder/workflow/ServiceOrderCheckScheduler.java
new file mode 100644
index 0000000..0d9f050
--- /dev/null
+++ b/src/main/java/org/onap/nbi/apis/serviceorder/workflow/ServiceOrderCheckScheduler.java
@@ -0,0 +1,48 @@
+/**
+ * Copyright (c) 2018 Orange
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package org.onap.nbi.apis.serviceorder.workflow;
+
+import java.util.List;
+import org.onap.nbi.apis.serviceorder.ServiceOrderResource;
+import org.onap.nbi.apis.serviceorder.model.ServiceOrder;
+import org.onap.nbi.apis.serviceorder.model.StateType;
+import org.onap.nbi.apis.serviceorder.service.ServiceOrderService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Profile;
+import org.springframework.scheduling.annotation.EnableScheduling;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Service;
+
+@Profile("default")
+@Service
+@EnableScheduling
+public class ServiceOrderCheckScheduler {
+
+ @Autowired
+ ServiceOrderService serviceOrderService;
+
+ @Autowired
+ ServiceOrderResource serviceOrderResource;
+
+
+ @Scheduled(fixedDelayString = "${serviceOrder.schedule}", initialDelayString = "${serviceOrder.initial}")
+ public void scheduleCheckServiceOrders() {
+ List<ServiceOrder> acknowledgedOrders = serviceOrderService
+ .findServiceOrdersByState(StateType.ACKNOWLEDGED);
+ for (ServiceOrder serviceOrder : acknowledgedOrders) {
+ serviceOrderResource.checkServiceOrder(serviceOrder);
+ }
+ }
+
+}
diff --git a/src/main/java/org/onap/nbi/configuration/RestConfiguration.java b/src/main/java/org/onap/nbi/configuration/RestConfiguration.java
index 835ce24..92108a4 100644
--- a/src/main/java/org/onap/nbi/configuration/RestConfiguration.java
+++ b/src/main/java/org/onap/nbi/configuration/RestConfiguration.java
@@ -21,6 +21,7 @@ import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;
+
@Configuration
public class RestConfiguration {
diff --git a/src/main/resources/application-test.properties b/src/main/resources/application-test.properties
new file mode 100644
index 0000000..b890216
--- /dev/null
+++ b/src/main/resources/application-test.properties
@@ -0,0 +1,72 @@
+#
+# Copyright (c) 2018 Orange
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+nbi.version = v3
+
+# SERVER
+server.contextPath = /nbi/api/${nbi.version}
+server.port = 8080
+
+# LOGGING
+logging.level. = ERROR
+
+# ONAP
+onap.lcpCloudRegionId = RegionOne
+onap.tenantId = 31047205ce114b60833b23e400d6a535
+onap.cloudOwner = CloudOwner
+
+# NBI
+nbi.url = http://localhost:${server.port}${server.contextPath}
+nbi.callForVNF = false
+
+# SCHEDULER
+scheduler.pollingDurationInMins = 0.1
+serviceOrder.schedule = 5000
+serviceOrder.initial = 1
+executionTask.schedule = 2000
+executionTask.initial = 1
+
+
+
+# SDC
+sdc.host = http://127.0.0.1:8091
+sdc.header.ecompInstanceId = Rene
+sdc.header.authorization = Basic YWFpOktwOGJKNFNYc3pNMFdYbGhhazNlSGxjc2UyZ0F3ODR2YW9HR21KdlV5MlU=
+
+# AAI
+aai.host = http://127.0.0.1:8091
+aai.header.authorization = Basic QUFJOkFBSQ==
+aai.api.id = AAI
+aai.header.transaction.id = 808b54e3-e563-4144-a1b9-e24e2ed93d4f
+
+# SO
+so.host = http://127.0.0.1:8091
+so.header.authorization =
+so.api.id = SO
+so.owning.entity.id = 6b5b6b70-4e9a-4f6f-8b7b-cbd7cf990c6e
+so.owning.entity.name = OE-generic
+so.project.name = Project-generic
+
+# MSB
+msb.enabled = false
+
+# H2
+spring.datasource.url = jdbc:h2:mem:~/db;DB_CLOSE_ON_EXIT=false
+spring.datasource.username = sa
+spring.datasource.password =
+spring.datasource.driver-class-name = org.h2.Driver
+spring.h2.console.enabled = true
+spring.h2.console.path = /h2-console \ No newline at end of file
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
index a6184f0..6a66737 100644
--- a/src/main/resources/application.properties
+++ b/src/main/resources/application.properties
@@ -14,71 +14,81 @@
# limitations under the License.
#
-nbi.version=v3
+
+# PROFILE
+# used for scheduling
+spring.profiles.active = default
+
+# VERSION
+nbi.version = v3
# SERVER
-server.contextPath=/nbi/api/${nbi.version}
-server.port=8080
+server.contextPath = /nbi/api/${nbi.version}
+server.port = 8080
# LOGGING
-logging.level.=INFO
+logging.level. = INFO
# ONAP
-onap.lcpCloudRegionId=RegionOne
-onap.tenantId=6e97a2bd51d74f6db5671d8dc1517d82
-onap.cloudOwner=CloudOwner
+onap.lcpCloudRegionId = RegionOne
+onap.tenantId = 6e97a2bd51d74f6db5671d8dc1517d82
+onap.cloudOwner = CloudOwner
# NBI
-nbi.url=http://localhost:${server.port}${server.contextPath}
-nbi.callForVNF=false
+nbi.url = http://localhost:${server.port}${server.contextPath}
+nbi.callForVNF = false
# SCHEDULER
-scheduler.pollingDurationInMins=360
+scheduler.pollingDurationInMins = 360
+serviceOrder.schedule = 5000
+serviceOrder.initial = 1
+executionTask.schedule = 2000
+executionTask.initial = 1
# SDC
-sdc.host=http://10.0.3.1:8080
-sdc.header.ecompInstanceId=demo
-sdc.header.authorization=Basic YWFpOktwOGJKNFNYc3pNMFdYbGhhazNlSGxjc2UyZ0F3ODR2YW9HR21KdlV5MlU=
-
+sdc.host = http://10.0.3.1:8080
+sdc.header.ecompInstanceId = demo
+sdc.header.authorization = Basic YWFpOktwOGJKNFNYc3pNMFdYbGhhazNlSGxjc2UyZ0F3ODR2YW9HR21KdlV5MlU=
# AAI
-aai.host=https://10.0.1.1:8443
-aai.header.authorization=Basic QUFJOkFBSQ==
-aai.api.id=NBI
-aai.header.transaction.id=808b54e3-e563-4144-a1b9-e24e2ed93d4f
+aai.host = https://10.0.1.1:8443
+aai.header.authorization = Basic QUFJOkFBSQ==
+aai.api.id = NBI
+aai.header.transaction.id = 808b54e3-e563-4144-a1b9-e24e2ed93d4f
# SO
-so.host=http://10.0.5.1:8080
-so.header.authorization=Basic SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA==
-so.api.id=SO
-so.owning.entity.id=6b5b6b70-4e9a-4f6f-8b7b-cbd7cf990c6e
-so.owning.entity.name=OE-generic
-so.project.name=Project-generic
+
+so.host = http://10.0.5.1:8080
+so.header.authorization = Basic SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA==
+so.api.id = SO
+so.owning.entity.id = 6b5b6b70-4e9a-4f6f-8b7b-cbd7cf990c6e
+so.owning.entity.name = OE-generic
+so.project.name = Project-generic
# MSB
-msb.enabled=true
-msb.discovery.host=msb_discovery
-msb.discovery.port=10081
-msb.discovery.retry=5
-msb.discovery.retry_interval=5000
-msb.service.host=
-msb.service.name=nbi
-msb.service.custom_path=
-msb.service.protocol=REST
-msb.service.visual_range=1
-msb.service.enable_ssl=false
+msb.enabled = true
+msb.discovery.host = msb_discovery
+msb.discovery.port = 10081
+msb.discovery.retry = 1
+msb.discovery.retry_interval = 5000
+msb.service.host =
+msb.service.name = nbi
+msb.service.custom_path =
+msb.service.protocol = REST
+msb.service.visual_range = 1
+msb.service.enable_ssl = false
# MONGO
-spring.data.mongodb.host=localhost
-spring.data.mongodb.port=27017
-spring.data.mongodb.database=ServiceOrderDB
+spring.data.mongodb.host = localhost
+spring.data.mongodb.port = 27017
+spring.data.mongodb.database = ServiceOrderDB
# MYSQL
-spring.datasource.url=jdbc:mariadb://localhost:3306/nbi
-spring.datasource.username=root
-spring.datasource.password=secret
-spring.datasource.testWhileIdle=true
-spring.datasource.validationQuery=SELECT 1
-spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
-spring.jpa.show-sql=false
-spring.jpa.hibernate.ddl-auto=update
-spring.jpa.hibernate.naming-strategy=org.hibernate.cfg.ImprovedNamingStrategy \ No newline at end of file
+spring.datasource.url = jdbc:mariadb://localhost:3306/nbi
+spring.datasource.username = root
+spring.datasource.password = secret
+spring.datasource.testWhileIdle = true
+spring.datasource.validationQuery = SELECT 1
+spring.datasource.driver-class-name = org.mariadb.jdbc.Driver
+spring.jpa.show-sql = false
+spring.jpa.hibernate.ddl-auto = update
+spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy \ No newline at end of file