diff options
-rw-r--r-- | prh-app-server/config/application.yaml | 33 | ||||
-rw-r--r-- | prh-app-server/pom.xml | 2 | ||||
-rw-r--r-- | prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/MainApp.java | 10 | ||||
-rw-r--r-- | prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/controllers/ScheduleController.java | 67 | ||||
-rw-r--r-- | prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/tasks/DmaapConsumerTask.java | 3 | ||||
-rw-r--r-- | prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/tasks/ScheduledTask.java | 6 | ||||
-rw-r--r-- | prh-app-server/src/main/resources/logback.xml | 58 | ||||
-rw-r--r-- | prh-app-server/src/main/resources/scheduled-context.xml | 2 | ||||
-rw-r--r-- | prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/tasks/ScheduleControllerSpy.java (renamed from prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/config/ApplicationProperties.java) | 25 | ||||
-rw-r--r-- | prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/tasks/ScheduledXmlContextITest.java | 17 |
10 files changed, 176 insertions, 47 deletions
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 @@ <stagingProfileId>176c31dfe190a</stagingProfileId> </configuration> </plugin> - - </plugins> </build> <dependencies> 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 <a href="mailto:przemyslaw.wasala@nokia.com">Przemysław Wąsala</a> 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/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 <a href="mailto:przemyslaw.wasala@nokia.com">Przemysław Wąsala</a> 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<Void> startTask() { + scheduledFuture = taskScheduler + .scheduleWithFixedDelay(scheduledTask::scheduledTaskAskingDMaaPOfConsumeEvent, SCHEDULING_DELAY); + return new ResponseEntity<>(HttpStatus.OK); + } + + @RequestMapping("stopPrh") + public ResponseEntity<Void> 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 @@ <?xml version="1.0" encoding="UTF-8"?> <configuration> - <property name="LOG_PATH" value="logs"/> - <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> - <encoder> - <pattern>%d{yyyy-MM-dd HH:mm:ss} | %-5p | [%thread] %logger{5}:%L - %msg%n</pattern> - </encoder> - </appender> + <include resource="org/springframework/boot/logging/logback/defaults.xml"/> + <property name="LOG_FILE" + value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}/}spring.log}"/> - <appender name="FILE" class="ch.qos.logback.core.FileAppender"> - <file>${LOG_PATH}/logFile.log</file> - <append>true</append> - <encoder> - <pattern>%d{yyyy-MM-dd HH:mm:ss} | %-5p | [%thread] %logger{5}:%L - %msg%n</pattern> - </encoder> - </appender> + <springProfile name="dev"> + <include resource="org/springframework/boot/logging/logback/console-appender.xml"/> + <appender name="ROLLING-FILE" + class="ch.qos.logback.core.rolling.RollingFileAppender"> + <encoder> + <pattern>${FILE_LOG_PATTERN}</pattern> + </encoder> + <file>${LOG_FILE}</file> + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> + <fileNamePattern>${LOG_FILE}.%d{yyyy-MM-dd}.log</fileNamePattern> + </rollingPolicy> + </appender> + <root level="ERROR"> + <appender-ref ref="CONSOLE"/> + <appender-ref ref="ROLLING-FILE"/> + </root> + </springProfile> - <logger name="org.onap.dcaegen2.services.prh" level="TRACE"/> - <root level="DEBUG"> - <appender-ref ref="STDOUT"/> - <appender-ref ref="FILE"/> - </root> + <springProfile name="prod"> + <appender name="ROLLING-FILE" + class="ch.qos.logback.core.rolling.RollingFileAppender"> + <encoder> + <pattern>${FILE_LOG_PATTERN}</pattern> + </encoder> + <file>${LOG_FILE}</file> + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> + <fileNamePattern>${LOG_FILE}.%d{yyyy-MM-dd}.%i.gz</fileNamePattern> + <timeBasedFileNamingAndTriggeringPolicy + class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> + <maxFileSize>10MB</maxFileSize> + </timeBasedFileNamingAndTriggeringPolicy> + </rollingPolicy> + </appender> + + <root level="ERROR"> + <appender-ref ref="ROLLING-FILE"/> + </root> + </springProfile> </configuration>
\ 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 @@ <context:component-scan base-package="org.onap.dcaegen2.services.prh"/> <task:scheduled-tasks> - <task:scheduled ref="scheduledTask" method="scheduledTaskAskingDMaaPOfConsumeEvent" + <task:scheduled ref="scheduleController" method="startTask" fixed-rate="1000"/> </task:scheduled-tasks> </beans> diff --git a/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/config/ApplicationProperties.java b/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/tasks/ScheduleControllerSpy.java index 67d1c370..a5581767 100644 --- a/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/config/ApplicationProperties.java +++ b/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/tasks/ScheduleControllerSpy.java @@ -1,4 +1,4 @@ -/*- +/* * ============LICENSE_START======================================================= * PNF-REGISTRATION-HANDLER * ================================================================================ @@ -17,11 +17,28 @@ * limitations under the License. * ============LICENSE_END========================================================= */ -package org.onap.dcaegen2.services.prh.config; +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 <a href="mailto:przemyslaw.wasala@nokia.com">Przemysław Wąsala</a> on 4/3/18 + * @author <a href="mailto:przemyslaw.wasala@nokia.com">Przemysław Wąsala</a> on 4/5/18 */ -public class ApplicationProperties { +@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(); } |