From a7eed5cf5cefe05eeb2f5610d117b12d36b53512 Mon Sep 17 00:00:00 2001 From: grabinsk Date: Fri, 31 May 2019 11:23:13 +0200 Subject: Add test for ScheduleController; moving web related logic out from ScheduleTasksRunner Change-Id: I57c0311509ca94b639e3dc9978fbe602aec1f0c4 Issue-ID: DCAEGEN2-1544 Signed-off-by: grabinsk --- .../prh/controllers/ScheduleController.java | 9 ++- .../services/prh/tasks/ScheduledTasksRunner.java | 14 +--- .../prh/controllers/AppInfoControllerTest.java | 2 + .../prh/controllers/ScheduleControllerTest.java | 75 ++++++++++++++++++++++ 4 files changed, 84 insertions(+), 16 deletions(-) create mode 100644 prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/controllers/ScheduleControllerTest.java 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 index aa913654..a0aa17e3 100644 --- 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 @@ -60,15 +60,18 @@ public class ScheduleController { @ApiOperation(value = "Receiving stop scheduling worker request") public Mono> stopTask() { LOGGER.trace("Receiving stop scheduling worker request"); - return scheduledTasksRunner.getResponseFromCancellationOfTasks(); + return Mono.defer(() -> { + scheduledTasksRunner.cancelTasks(); + return Mono.just(new ResponseEntity<>("PRH Service has been stopped!", HttpStatus.OK)); + } + ); } - @ApiOperation(value = "Sends success or error response on starting task execution") private ResponseEntity createStartTaskResponse(boolean wasScheduled) { if (wasScheduled) { return new ResponseEntity<>("PRH Service has been started!", HttpStatus.CREATED); } else { - return new ResponseEntity<>("PRH Service is still running!", HttpStatus.NOT_ACCEPTABLE); + return new ResponseEntity<>("PRH Service is already running!", HttpStatus.NOT_ACCEPTABLE); } } } diff --git a/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/tasks/ScheduledTasksRunner.java b/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/tasks/ScheduledTasksRunner.java index e9c18109..bc13ddc4 100644 --- a/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/tasks/ScheduledTasksRunner.java +++ b/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/tasks/ScheduledTasksRunner.java @@ -20,7 +20,6 @@ package org.onap.dcaegen2.services.prh.tasks; -import io.swagger.annotations.ApiOperation; import java.time.Duration; import java.time.Instant; import java.util.ArrayList; @@ -35,11 +34,8 @@ import org.slf4j.Marker; import org.slf4j.MarkerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Configuration; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; import org.springframework.scheduling.TaskScheduler; import org.springframework.scheduling.annotation.EnableScheduling; -import reactor.core.publisher.Mono; /** @@ -70,16 +66,10 @@ public class ScheduledTasksRunner { /** * Function which have to stop tasks execution. - * - * @return response entity about status of cancellation operation */ - @ApiOperation(value = "Get response on stopping task execution") - public synchronized Mono> getResponseFromCancellationOfTasks() { + public synchronized void cancelTasks() { scheduledPrhTaskFutureList.forEach(x -> x.cancel(false)); scheduledPrhTaskFutureList.clear(); - return Mono.defer(() -> - Mono.just(new ResponseEntity<>("PRH Service has already been stopped!", HttpStatus.CREATED)) - ); } /** @@ -87,9 +77,7 @@ public class ScheduledTasksRunner { * * @return status of operation execution: true - started, false - not started */ - @PostConstruct - @ApiOperation(value = "Start task if possible") public synchronized boolean tryToStartTask() { LOGGER.info(ENTRY, "Start scheduling PRH workflow"); if (scheduledPrhTaskFutureList.isEmpty()) { diff --git a/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/controllers/AppInfoControllerTest.java b/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/controllers/AppInfoControllerTest.java index 23a444c4..1dba66a1 100644 --- a/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/controllers/AppInfoControllerTest.java +++ b/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/controllers/AppInfoControllerTest.java @@ -27,11 +27,13 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.core.io.ByteArrayResource; import org.springframework.http.MediaType; +import org.springframework.test.annotation.DirtiesContext; import org.springframework.test.web.reactive.server.WebTestClient; import static org.mockito.Mockito.when; @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) +@DirtiesContext class AppInfoControllerTest { private static final String SAMPLE_GIT_INFO_CONTENT = "{ \"git.commit.id\" : \"37444e\" }"; diff --git a/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/controllers/ScheduleControllerTest.java b/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/controllers/ScheduleControllerTest.java new file mode 100644 index 00000000..ebdec09e --- /dev/null +++ b/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/controllers/ScheduleControllerTest.java @@ -0,0 +1,75 @@ +/* + * ============LICENSE_START======================================================= + * PNF-REGISTRATION-HANDLER + * ================================================================================ + * Copyright (C) 2019 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 org.junit.jupiter.api.Test; +import org.onap.dcaegen2.services.prh.tasks.ScheduledTasksRunner; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.http.HttpStatus; +import org.springframework.test.annotation.DirtiesContext; +import org.springframework.test.web.reactive.server.WebTestClient; + +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) +@DirtiesContext +class ScheduleControllerTest { + + @MockBean + private ScheduledTasksRunner scheduledTasksRunner; + + @Autowired + private WebTestClient webTestClient; + + @Test + void startEndpointShouldAllowStartingPrhTasks() { + when(scheduledTasksRunner.tryToStartTask()).thenReturn(true); + webTestClient + .get().uri("/start") + .exchange() + .expectStatus().isCreated() + .expectBody(String.class).isEqualTo("PRH Service has been started!"); + } + + @Test + void whenPrhTasksAreAlreadyStarted_shouldRespondThatRequestWasNotAccepted() { + when(scheduledTasksRunner.tryToStartTask()).thenReturn(false); + webTestClient + .get().uri("/start") + .exchange() + .expectStatus().isEqualTo(HttpStatus.NOT_ACCEPTABLE) + .expectBody(String.class).isEqualTo("PRH Service is already running!"); + } + + @Test + void stopEndpointShouldAllowStoppingPrhTasks() { + webTestClient + .get().uri("/stopPrh") + .exchange() + .expectStatus().isOk() + .expectBody(String.class).isEqualTo("PRH Service has been stopped!"); + + verify(scheduledTasksRunner).cancelTasks(); + } +} \ No newline at end of file -- cgit 1.2.3-korg