From 6930f1f6540273cbdfe325e5f77dcbb4960fd9f3 Mon Sep 17 00:00:00 2001 From: wasala Date: Thu, 5 Apr 2018 15:01:38 +0200 Subject: Add endpoint for load configuration(DMaaP, A&AI) Refactor from tests ppoint of view Change-Id: If747a499c70517a74bda6fbc895306271dc61d13 Issue-ID: DCAEGEN2-407 Signed-off-by: wasala --- prh-app-server/config/application.yaml | 33 ++++++++--- prh-app-server/pom.xml | 2 - .../org/onap/dcaegen2/services/prh/MainApp.java | 10 ++++ .../services/prh/config/ApplicationProperties.java | 27 --------- .../prh/controllers/ScheduleController.java | 67 ++++++++++++++++++++++ .../services/prh/tasks/DmaapConsumerTask.java | 3 +- .../dcaegen2/services/prh/tasks/ScheduledTask.java | 6 +- prh-app-server/src/main/resources/logback.xml | 58 +++++++++++++------ .../src/main/resources/scheduled-context.xml | 2 +- .../services/prh/tasks/ScheduleControllerSpy.java | 44 ++++++++++++++ .../prh/tasks/ScheduledXmlContextITest.java | 17 +++--- 11 files changed, 199 insertions(+), 70 deletions(-) delete mode 100644 prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/config/ApplicationProperties.java create mode 100644 prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/controllers/ScheduleController.java create mode 100644 prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/tasks/ScheduleControllerSpy.java (limited to 'prh-app-server') diff --git a/prh-app-server/config/application.yaml b/prh-app-server/config/application.yaml index efdaa9cf..8b2e7ac7 100644 --- a/prh-app-server/config/application.yaml +++ b/prh-app-server/config/application.yaml @@ -1,13 +1,32 @@ +spring: + profiles: + active: prod server: port: 8100 +logging: + level: + ROOT: ERROR + org.springframework: ERROR + org.springframework.data: ERROR + org.onap.dcaegen2.services.prh: INFO + file: opt/log/application.log app: - AAIHttpClientConfiguration: - aaiHost: "localhost" - aaiHostPortNumber: 8080 - aaiProtocol: "http" - aaiUserName: "admin" - aaiUserPassword: "admin" - aaiIgnoreSSLCertificateErrors: true + configs: + aaiHttpClientConfiguration: + aaiHost: "dns.aai.host" + aaiHostPortNumber: 8080 + aaiProtocol: "https" + aaiUserName: "admin" + aaiUserPassword: "admin" + aaiIgnoreSSLCertificateErrors: true +#app: +# AAIHttpClientConfiguration: +# aaiHost: "localhost" +# aaiHostPortNumber: 8080 +# aaiProtocol: "http" +# aaiUserName: "admin" +# aaiUserPassword: "admin" +# aaiIgnoreSSLCertificateErrors: true # dmaap-consumer-configuration: # dmmaphost-name: "localhost" # dmmapport-number: 2222 diff --git a/prh-app-server/pom.xml b/prh-app-server/pom.xml index 7da9ac16..44ebca2f 100644 --- a/prh-app-server/pom.xml +++ b/prh-app-server/pom.xml @@ -104,8 +104,6 @@ 176c31dfe190a - - diff --git a/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/MainApp.java b/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/MainApp.java index 18db4082..9a1fec28 100644 --- a/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/MainApp.java +++ b/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/MainApp.java @@ -21,9 +21,12 @@ package org.onap.dcaegen2.services.prh; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.TaskScheduler; import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.scheduling.concurrent.ConcurrentTaskScheduler; /** * @author Przemysław Wąsala on 3/23/18 @@ -33,7 +36,14 @@ import org.springframework.scheduling.annotation.EnableScheduling; @ComponentScan @EnableScheduling public class MainApp { + public static void main(String[] args) { SpringApplication.run(MainApp.class, args); } + + + @Bean + TaskScheduler taskScheduler() { + return new ConcurrentTaskScheduler(); + } } diff --git a/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/config/ApplicationProperties.java b/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/config/ApplicationProperties.java deleted file mode 100644 index 67d1c370..00000000 --- a/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/config/ApplicationProperties.java +++ /dev/null @@ -1,27 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * PNF-REGISTRATION-HANDLER - * ================================================================================ - * Copyright (C) 2018 NOKIA Intellectual Property. All rights reserved. - * ================================================================================ - * 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. - * ============LICENSE_END========================================================= - */ -package org.onap.dcaegen2.services.prh.config; - -/** - * @author Przemysław Wąsala on 4/3/18 - */ -public class ApplicationProperties { - -} diff --git a/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/controllers/ScheduleController.java b/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/controllers/ScheduleController.java new file mode 100644 index 00000000..a0739637 --- /dev/null +++ b/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/controllers/ScheduleController.java @@ -0,0 +1,67 @@ +/*- + * ============LICENSE_START======================================================= + * PNF-REGISTRATION-HANDLER + * ================================================================================ + * Copyright (C) 2018 NOKIA Intellectual Property. All rights reserved. + * ================================================================================ + * 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. + * ============LICENSE_END========================================================= + */ +package org.onap.dcaegen2.services.prh.controllers; + +import java.util.concurrent.ScheduledFuture; +import org.onap.dcaegen2.services.prh.tasks.ScheduledTask; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.scheduling.TaskScheduler; +import org.springframework.stereotype.Component; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; + +/** + * @author Przemysław Wąsala on 4/5/18 + */ +@Controller +@Component +public class ScheduleController { + + private static final int SCHEDULING_DELAY = 20000; + + private final TaskScheduler taskScheduler; + private final ScheduledTask scheduledTask; + + private ScheduledFuture scheduledFuture; + + @Autowired + public ScheduleController(TaskScheduler taskScheduler, ScheduledTask scheduledTask) { + this.taskScheduler = taskScheduler; + this.scheduledTask = scheduledTask; + } + + + @RequestMapping(value = "preferences", method = RequestMethod.PUT) + public ResponseEntity startTask() { + scheduledFuture = taskScheduler + .scheduleWithFixedDelay(scheduledTask::scheduledTaskAskingDMaaPOfConsumeEvent, SCHEDULING_DELAY); + return new ResponseEntity<>(HttpStatus.OK); + } + + @RequestMapping("stopPrh") + public ResponseEntity stopTask() { + scheduledFuture.cancel(false); + return new ResponseEntity<>(HttpStatus.OK); + } + +} diff --git a/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/tasks/DmaapConsumerTask.java b/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/tasks/DmaapConsumerTask.java index 706794f0..812f920c 100644 --- a/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/tasks/DmaapConsumerTask.java +++ b/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/tasks/DmaapConsumerTask.java @@ -31,14 +31,15 @@ import org.springframework.stereotype.Component; @Component public class DmaapConsumerTask implements DmaapTask { + private static final Logger logger = LoggerFactory.getLogger(DmaapConsumerTask.class); private static final DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("HH:mm:ss"); @Override public void execute() { + logger.debug("Start task DmaapConsumerTask::execute() :: Execution Time - {}", dateTimeFormatter.format( LocalDateTime.now())); - logger.debug("End task DmaapConsumerTask::execute() :: Execution Time - {}", dateTimeFormatter.format(LocalDateTime.now())); } diff --git a/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/tasks/ScheduledTask.java b/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/tasks/ScheduledTask.java index 90c1466c..a8a0f0be 100644 --- a/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/tasks/ScheduledTask.java +++ b/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/tasks/ScheduledTask.java @@ -25,6 +25,7 @@ import org.onap.dcaegen2.services.prh.exceptions.AAINotFoundException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.scheduling.TaskScheduler; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; @@ -34,7 +35,6 @@ import org.springframework.stereotype.Component; @Component public class ScheduledTask { - private static final int SCHEDULING_DELAY = 1000; private static final Logger logger = LoggerFactory.getLogger(ScheduledTask.class); private static final DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("HH:mm:ss"); @@ -45,8 +45,6 @@ public class ScheduledTask { this.dmaapConsumerTask = dmaapConsumerTask; } - - @Scheduled(fixedDelay = SCHEDULING_DELAY) public void scheduledTaskAskingDMaaPOfConsumeEvent() { logger.debug("Task scheduledTaskAskingDMaaPOfConsumeEvent() :: Execution Time - {}", dateTimeFormatter.format( LocalDateTime.now())); @@ -54,7 +52,7 @@ public class ScheduledTask { dmaapConsumerTask.execute(); } catch (AAINotFoundException e) { logger - .error("Task scheduledTaskAskingDMaaPOfConsumeEvent()::AAINotFoundException :: Execution Time - {}:{}", + .warn("Task scheduledTaskAskingDMaaPOfConsumeEvent()::AAINotFoundException :: Execution Time - {}:{}", dateTimeFormatter.format( LocalDateTime.now()), e); } diff --git a/prh-app-server/src/main/resources/logback.xml b/prh-app-server/src/main/resources/logback.xml index 5f5175e0..af4ab189 100644 --- a/prh-app-server/src/main/resources/logback.xml +++ b/prh-app-server/src/main/resources/logback.xml @@ -1,23 +1,45 @@ - - - - %d{yyyy-MM-dd HH:mm:ss} | %-5p | [%thread] %logger{5}:%L - %msg%n - - + + - - ${LOG_PATH}/logFile.log - true - - %d{yyyy-MM-dd HH:mm:ss} | %-5p | [%thread] %logger{5}:%L - %msg%n - - + + + + + ${FILE_LOG_PATTERN} + + ${LOG_FILE} + + ${LOG_FILE}.%d{yyyy-MM-dd}.log + + + + + + + - - - - - + + + + ${FILE_LOG_PATTERN} + + ${LOG_FILE} + + ${LOG_FILE}.%d{yyyy-MM-dd}.%i.gz + + 10MB + + + + + + + + \ No newline at end of file diff --git a/prh-app-server/src/main/resources/scheduled-context.xml b/prh-app-server/src/main/resources/scheduled-context.xml index 1c60df8b..d1c80caf 100644 --- a/prh-app-server/src/main/resources/scheduled-context.xml +++ b/prh-app-server/src/main/resources/scheduled-context.xml @@ -10,7 +10,7 @@ - diff --git a/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/tasks/ScheduleControllerSpy.java b/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/tasks/ScheduleControllerSpy.java new file mode 100644 index 00000000..a5581767 --- /dev/null +++ b/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/tasks/ScheduleControllerSpy.java @@ -0,0 +1,44 @@ +/* + * ============LICENSE_START======================================================= + * PNF-REGISTRATION-HANDLER + * ================================================================================ + * Copyright (C) 2018 NOKIA Intellectual Property. All rights reserved. + * ================================================================================ + * 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. + * ============LICENSE_END========================================================= + */ +package org.onap.dcaegen2.services.prh.tasks; + +import static org.mockito.Mockito.spy; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Primary; + +/** + * @author Przemysław Wąsala on 4/5/18 + */ +@Configuration +public class ScheduleControllerSpy { + + @Autowired + private DmaapConsumerTask dmaapConsumerTaskSpy; + + @Bean + @Primary + public ScheduledTask registerSimpleDmaapConsumerTask() { + return spy(new ScheduledTask(dmaapConsumerTaskSpy)); + } + +} diff --git a/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/tasks/ScheduledXmlContextITest.java b/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/tasks/ScheduledXmlContextITest.java index a27b454c..ed80a0a1 100644 --- a/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/tasks/ScheduledXmlContextITest.java +++ b/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/tasks/ScheduledXmlContextITest.java @@ -25,15 +25,14 @@ import static org.mockito.Mockito.verify; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; -import org.junit.Test; +import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; -import org.junit.runner.RunWith; import org.onap.dcaegen2.services.prh.IT.junit5.mockito.MockitoExtension; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringRunner; +import org.springframework.test.context.junit.jupiter.SpringExtension; import org.springframework.test.context.testng.AbstractTestNGSpringContextTests; /** @@ -42,25 +41,23 @@ import org.springframework.test.context.testng.AbstractTestNGSpringContextTests; @Configuration @ComponentScan -@RunWith(SpringRunner.class) -@ExtendWith(MockitoExtension.class) +@ExtendWith({MockitoExtension.class, SpringExtension.class}) @ContextConfiguration(locations = {"classpath:scheduled-context.xml"}) -public class ScheduledXmlContextITest extends AbstractTestNGSpringContextTests { +class ScheduledXmlContextITest extends AbstractTestNGSpringContextTests { private static final int WAIT_FOR_SCHEDULING = 1; @Autowired - private DmaapConsumerTask dmaapConsumerTaskSpy; - + private ScheduledTask scheduledTask; @Test - public void testScheduling() { + void testScheduling() { final ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor(); executorService.scheduleWithFixedDelay(this::verifyDmaapConsumerTask, 0, WAIT_FOR_SCHEDULING, TimeUnit.SECONDS); } private void verifyDmaapConsumerTask() { - verify(dmaapConsumerTaskSpy, atLeast(2)).execute(); + verify(scheduledTask, atLeast(2)).scheduledTaskAskingDMaaPOfConsumeEvent(); } -- cgit 1.2.3-korg