This is an automated email from the ASF dual-hosted git repository. ofuks pushed a commit to branch audit in repository https://gitbox.apache.org/repos/asf/incubator-dlab.git
The following commit(s) were added to refs/heads/audit by this push: new 5973a0e Code refactoring 5973a0e is described below commit 5973a0e8c5b2c80c7ab21c6ba0e823aa1de4d662 Author: Oleh Fuks <olegfuk...@gmail.com> AuthorDate: Thu Jun 11 14:59:50 2020 +0300 Code refactoring --- .../dlab/backendapi/domain/AuditCreateDTO.java | 4 +- .../com/epam/dlab/backendapi/domain/AuditDTO.java | 3 +- .../backendapi/interceptor/AuditInterceptor.java | 12 +- .../resources/aws/ComputationalResourceAws.java | 5 +- .../azure/ComputationalResourceAzure.java | 5 +- .../resources/gcp/ComputationalResourceGcp.java | 5 +- .../backendapi/service/ComputationalService.java | 40 +++--- .../backendapi/service/ExploratoryService.java | 6 +- .../dlab/backendapi/service/ProjectService.java | 2 +- .../service/impl/ComputationalServiceImpl.java | 134 +++++++++---------- .../service/impl/EnvironmentServiceImpl.java | 16 +-- .../service/impl/ExploratoryServiceImpl.java | 34 ++--- .../service/impl/ProjectServiceImpl.java | 144 ++++++++++----------- .../service/impl/SchedulerJobServiceImpl.java | 61 +++++---- .../resources/ExploratoryResourceTest.java | 89 +++++++------ .../service/impl/ComputationalServiceImplTest.java | 32 ++--- .../service/impl/EnvironmentServiceImplTest.java | 49 ++++--- .../service/impl/SchedulerJobServiceImplTest.java | 134 +++++++++---------- 18 files changed, 380 insertions(+), 395 deletions(-) diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/domain/AuditCreateDTO.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/domain/AuditCreateDTO.java index b99b909..1deb5ae 100644 --- a/services/self-service/src/main/java/com/epam/dlab/backendapi/domain/AuditCreateDTO.java +++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/domain/AuditCreateDTO.java @@ -24,8 +24,6 @@ import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Data; import org.hibernate.validator.constraints.NotBlank; -import java.util.List; - @Data @JsonIgnoreProperties(ignoreUnknown = true) @@ -33,5 +31,5 @@ public class AuditCreateDTO { @NotBlank(message = "field cannot be empty") @JsonProperty("resource_name") private final String resourceName; - private final List<String> info; + private final String info; } diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/domain/AuditDTO.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/domain/AuditDTO.java index f01237c..d7a2d98 100644 --- a/services/self-service/src/main/java/com/epam/dlab/backendapi/domain/AuditDTO.java +++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/domain/AuditDTO.java @@ -24,7 +24,6 @@ import lombok.Builder; import lombok.Data; import java.util.Date; -import java.util.List; @Data @Builder @@ -34,6 +33,6 @@ public class AuditDTO { private final AuditActionEnum action; private final String project; private final String resourceName; - private final List<String> info; + private final String info; private Date timestamp; } diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/interceptor/AuditInterceptor.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/interceptor/AuditInterceptor.java index e4def6c..a5a9166 100644 --- a/services/self-service/src/main/java/com/epam/dlab/backendapi/interceptor/AuditInterceptor.java +++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/interceptor/AuditInterceptor.java @@ -38,8 +38,6 @@ import org.apache.commons.lang3.StringUtils; import java.lang.annotation.Annotation; import java.lang.reflect.Method; import java.lang.reflect.Parameter; -import java.util.Collections; -import java.util.List; import java.util.Objects; import java.util.stream.IntStream; @@ -56,14 +54,14 @@ public class AuditInterceptor implements MethodInterceptor { final AuditActionEnum action = getAuditActionEnum(method); final String project = getProject(mi, parameters); final String resourceName = getResourceName(mi, parameters); - final List<String> infoMap = getInfo(mi, parameters); + final String auditInfo = getInfo(mi, parameters); AuditDTO auditCreateDTO = AuditDTO.builder() .user(user) .action(action) .project(project) .resourceName(resourceName) - .info(infoMap) + .info(auditInfo) .build(); auditService.save(auditCreateDTO); return mi.proceed(); @@ -102,11 +100,11 @@ public class AuditInterceptor implements MethodInterceptor { .orElseThrow(() -> new DlabException("Resource name parameter wanted!")); } - private List<String> getInfo(MethodInvocation mi, Parameter[] parameters) { + private String getInfo(MethodInvocation mi, Parameter[] parameters) { return IntStream.range(0, parameters.length) .filter(i -> Objects.nonNull(parameters[i].getAnnotation(Info.class)) && Objects.nonNull(mi.getArguments()[i])) - .mapToObj(i -> (List<String>) mi.getArguments()[i]) + .mapToObj(i -> (String) mi.getArguments()[i]) .findAny() - .orElseGet(Collections::emptyList); + .orElse(StringUtils.EMPTY); } } diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/aws/ComputationalResourceAws.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/aws/ComputationalResourceAws.java index a6f2f97..9c82f04 100644 --- a/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/aws/ComputationalResourceAws.java +++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/aws/ComputationalResourceAws.java @@ -48,7 +48,6 @@ import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; -import java.util.Collections; import java.util.List; import static com.epam.dlab.dto.UserInstanceStatus.CREATING; @@ -265,7 +264,7 @@ public class ComputationalResourceAws implements ComputationalAPI { } } - private List<String> getAuditInfo(String exploratoryName) { - return Collections.singletonList(String.format(AUDIT_MESSAGE, exploratoryName)); + private String getAuditInfo(String exploratoryName) { + return String.format(AUDIT_MESSAGE, exploratoryName); } } diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/azure/ComputationalResourceAzure.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/azure/ComputationalResourceAzure.java index e063d26..89dd91c 100644 --- a/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/azure/ComputationalResourceAzure.java +++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/azure/ComputationalResourceAzure.java @@ -42,7 +42,6 @@ import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; -import java.util.Collections; import java.util.List; import static com.epam.dlab.rest.contracts.ComputationalAPI.AUDIT_MESSAGE; @@ -174,7 +173,7 @@ public class ComputationalResourceAzure { return Response.ok(computationalService.getClusterConfig(userInfo, projectName, exploratoryName, computationalName)).build(); } - private List<String> getAuditInfo(String exploratoryName) { - return Collections.singletonList(String.format(AUDIT_MESSAGE, exploratoryName)); + private String getAuditInfo(String exploratoryName) { + return String.format(AUDIT_MESSAGE, exploratoryName); } } diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/gcp/ComputationalResourceGcp.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/gcp/ComputationalResourceGcp.java index 336629b..c5a9b6b 100644 --- a/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/gcp/ComputationalResourceGcp.java +++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/gcp/ComputationalResourceGcp.java @@ -48,7 +48,6 @@ import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; -import java.util.Collections; import java.util.List; import static com.epam.dlab.dto.UserInstanceStatus.CREATING; @@ -252,7 +251,7 @@ public class ComputationalResourceGcp implements ComputationalAPI { } } - private List<String> getAuditInfo(String exploratoryName) { - return Collections.singletonList(String.format(AUDIT_MESSAGE, exploratoryName)); + private String getAuditInfo(String exploratoryName) { + return String.format(AUDIT_MESSAGE, exploratoryName); } } diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/ComputationalService.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/ComputationalService.java index b9071b9..77722dd 100644 --- a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/ComputationalService.java +++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/ComputationalService.java @@ -33,36 +33,36 @@ public interface ComputationalService { ComputationalTemplatesDTO getComputationalNamesAndTemplates(UserInfo user, String project, String endpoint); /** - * Asynchronously triggers creation of Spark cluster - * - * @param userInfo user authentication info - * @param resourceName name of computational resource - * @param form input cluster parameters - * @param auditInfo additional info for audit - * @return <code>true</code> if action is successfully triggered, <code>false</code>false if cluster with the same - * name already exists - * @throws IllegalArgumentException if input parameters exceed limits or docker image name is malformed - */ - boolean createSparkCluster(UserInfo userInfo, String resourceName, SparkStandaloneClusterCreateForm form, String project, List<String> auditInfo); + * Asynchronously triggers creation of Spark cluster + * + * @param userInfo user authentication info + * @param resourceName name of computational resource + * @param form input cluster parameters + * @param auditInfo additional info for audit + * @return <code>true</code> if action is successfully triggered, <code>false</code>false if cluster with the same + * name already exists + * @throws IllegalArgumentException if input parameters exceed limits or docker image name is malformed + */ + boolean createSparkCluster(UserInfo userInfo, String resourceName, SparkStandaloneClusterCreateForm form, String project, String auditInfo); - /** - * Asynchronously triggers termination of computational resources - * - * @param userInfo user info of authenticated user - * @param resourceCreator username of resource creator + /** + * Asynchronously triggers termination of computational resources + * + * @param userInfo user info of authenticated user + * @param resourceCreator username of resource creator * @param project project name * @param exploratoryName name of exploratory where to terminate computational resources with <code>computationalName</code> * @param computationalName computational name * @param auditInfo additional info for audit */ - void terminateComputational(UserInfo userInfo, String resourceCreator, String project, String exploratoryName, String computationalName, List<String> auditInfo); + void terminateComputational(UserInfo userInfo, String resourceCreator, String project, String exploratoryName, String computationalName, String auditInfo); boolean createDataEngineService(UserInfo userInfo, String resourceName, ComputationalCreateFormDTO formDTO, UserComputationalResource - computationalResource, String project, List<String> auditInfo); + computationalResource, String project, String auditInfo); - void stopSparkCluster(UserInfo userInfo, String resourceCreator, String project, String exploratoryName, String computationalName, List<String> auditInfo); + void stopSparkCluster(UserInfo userInfo, String resourceCreator, String project, String exploratoryName, String computationalName, String auditInfo); - void startSparkCluster(UserInfo userInfo, String exploratoryName, String computationalName, String project, List<String> auditInfo); + void startSparkCluster(UserInfo userInfo, String exploratoryName, String computationalName, String project, String auditInfo); void updateSparkClusterConfig(UserInfo userInfo, String project, String exploratoryName, String computationalName, List<ClusterConfig> config); diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/ExploratoryService.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/ExploratoryService.java index 7caa8f7..6b54473 100644 --- a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/ExploratoryService.java +++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/ExploratoryService.java @@ -34,11 +34,11 @@ import java.util.Set; public interface ExploratoryService { - String start(UserInfo userInfo, String exploratoryName, String project, List<String> auditInfo); + String start(UserInfo userInfo, String exploratoryName, String project, String auditInfo); - String stop(UserInfo userInfo, String resourceCreator, String project, String exploratoryName, List<String> auditInfo); + String stop(UserInfo userInfo, String resourceCreator, String project, String exploratoryName, String auditInfo); - String terminate(UserInfo userInfo, String resourceCreator, String project, String exploratoryName, List<String> auditInfo); + String terminate(UserInfo userInfo, String resourceCreator, String project, String exploratoryName, String auditInfo); String create(UserInfo userInfo, Exploratory exploratory, String project, String exploratoryName); diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/ProjectService.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/ProjectService.java index ad75f8a..e6745db 100644 --- a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/ProjectService.java +++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/ProjectService.java @@ -28,7 +28,7 @@ public interface ProjectService { void start(UserInfo userInfo, List<String> endpoints, String name); - void stop(UserInfo userInfo, String endpoint, String name, List<String> auditInfo); + void stop(UserInfo userInfo, String endpoint, String name, String auditInfo); void stopWithResources(UserInfo userInfo, List<String> endpoints, String projectName); diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/ComputationalServiceImpl.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/ComputationalServiceImpl.java index 2895cbd..0f24936 100644 --- a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/ComputationalServiceImpl.java +++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/ComputationalServiceImpl.java @@ -152,20 +152,20 @@ public class ComputationalServiceImpl implements ComputationalService { } @BudgetLimited - @Audit(action = CREATE_DATA_ENGINE) - @Override - public boolean createSparkCluster(@User UserInfo userInfo, @ResourceName String resourceName, SparkStandaloneClusterCreateForm form, @Project String project, - @Info List<String> auditInfo) { - final ProjectDTO projectDTO = projectService.get(project); - final UserInstanceDTO instance = - exploratoryDAO.fetchExploratoryFields(userInfo.getName(), project, form.getNotebookName()); - final SparkStandaloneClusterResource compResource = createInitialComputationalResource(form); - compResource.setTags(tagService.getResourceTags(userInfo, instance.getEndpoint(), project, - form.getCustomTag())); - if (computationalDAO.addComputational(userInfo.getName(), form.getNotebookName(), project, compResource)) { - try { - EndpointDTO endpointDTO = endpointService.get(instance.getEndpoint()); - ComputationalBase<?> dto = requestBuilder.newComputationalCreate(userInfo, projectDTO, instance, form, endpointDTO); + @Audit(action = CREATE_DATA_ENGINE) + @Override + public boolean createSparkCluster(@User UserInfo userInfo, @ResourceName String resourceName, SparkStandaloneClusterCreateForm form, @Project String project, + @Info String auditInfo) { + final ProjectDTO projectDTO = projectService.get(project); + final UserInstanceDTO instance = + exploratoryDAO.fetchExploratoryFields(userInfo.getName(), project, form.getNotebookName()); + final SparkStandaloneClusterResource compResource = createInitialComputationalResource(form); + compResource.setTags(tagService.getResourceTags(userInfo, instance.getEndpoint(), project, + form.getCustomTag())); + if (computationalDAO.addComputational(userInfo.getName(), form.getNotebookName(), project, compResource)) { + try { + EndpointDTO endpointDTO = endpointService.get(instance.getEndpoint()); + ComputationalBase<?> dto = requestBuilder.newComputationalCreate(userInfo, projectDTO, instance, form, endpointDTO); String uuid = provisioningService.post(endpointDTO.getUrl() + ComputationalAPI.COMPUTATIONAL_CREATE_SPARK, @@ -187,19 +187,19 @@ public class ComputationalServiceImpl implements ComputationalService { } } - @Audit(action = TERMINATE_COMPUTATIONAL) - @Override - public void terminateComputational(@User UserInfo userInfo, String resourceCreator, @Project String project, String exploratoryName, @ResourceName String computationalName, - @Info List<String> auditInfo) { - try { - updateComputationalStatus(resourceCreator, project, exploratoryName, computationalName, TERMINATING); + @Audit(action = TERMINATE_COMPUTATIONAL) + @Override + public void terminateComputational(@User UserInfo userInfo, String resourceCreator, @Project String project, String exploratoryName, @ResourceName String computationalName, + @Info String auditInfo) { + try { + updateComputationalStatus(resourceCreator, project, exploratoryName, computationalName, TERMINATING); - final UserInstanceDTO userInstanceDTO = exploratoryDAO.fetchExploratoryFields(resourceCreator, project, exploratoryName); - UserComputationalResource compResource = computationalDAO.fetchComputationalFields(resourceCreator, project, exploratoryName, computationalName); + final UserInstanceDTO userInstanceDTO = exploratoryDAO.fetchExploratoryFields(resourceCreator, project, exploratoryName); + UserComputationalResource compResource = computationalDAO.fetchComputationalFields(resourceCreator, project, exploratoryName, computationalName); - final DataEngineType dataEngineType = compResource.getDataEngineType(); - EndpointDTO endpointDTO = endpointService.get(userInstanceDTO.getEndpoint()); - ComputationalTerminateDTO dto = requestBuilder.newComputationalTerminate(resourceCreator, userInstanceDTO, compResource, endpointDTO); + final DataEngineType dataEngineType = compResource.getDataEngineType(); + EndpointDTO endpointDTO = endpointService.get(userInstanceDTO.getEndpoint()); + ComputationalTerminateDTO dto = requestBuilder.newComputationalTerminate(resourceCreator, userInstanceDTO, compResource, endpointDTO); final String provisioningUrl = Optional.ofNullable(DATA_ENGINE_TYPE_TERMINATE_URLS.get(dataEngineType)) .orElseThrow(UnsupportedOperationException::new); @@ -215,21 +215,21 @@ public class ComputationalServiceImpl implements ComputationalService { } } - @BudgetLimited - @Audit(action = CREATE_DATA_ENGINE_SERVICE) - @Override - public boolean createDataEngineService(@User UserInfo userInfo, @ResourceName String resourceName, ComputationalCreateFormDTO formDTO, - UserComputationalResource computationalResource, @Project String project, @Info List<String> auditInfo) { - final ProjectDTO projectDTO = projectService.get(project); - final UserInstanceDTO instance = exploratoryDAO.fetchExploratoryFields(userInfo.getName(), project, formDTO - .getNotebookName()); - final Map<String, String> tags = tagService.getResourceTags(userInfo, instance.getEndpoint(), project, - formDTO.getCustomTag()); - computationalResource.setTags(tags); - boolean isAdded = computationalDAO.addComputational(userInfo.getName(), formDTO.getNotebookName(), project, - computationalResource); - - if (isAdded) { + @BudgetLimited + @Audit(action = CREATE_DATA_ENGINE_SERVICE) + @Override + public boolean createDataEngineService(@User UserInfo userInfo, @ResourceName String resourceName, ComputationalCreateFormDTO formDTO, + UserComputationalResource computationalResource, @Project String project, @Info String auditInfo) { + final ProjectDTO projectDTO = projectService.get(project); + final UserInstanceDTO instance = exploratoryDAO.fetchExploratoryFields(userInfo.getName(), project, formDTO + .getNotebookName()); + final Map<String, String> tags = tagService.getResourceTags(userInfo, instance.getEndpoint(), project, + formDTO.getCustomTag()); + computationalResource.setTags(tags); + boolean isAdded = computationalDAO.addComputational(userInfo.getName(), formDTO.getNotebookName(), project, + computationalResource); + + if (isAdded) { try { EndpointDTO endpointDTO = endpointService.get(instance.getEndpoint()); String uuid = @@ -255,19 +255,19 @@ public class ComputationalServiceImpl implements ComputationalService { } } - @Audit(action = STOP_COMPUTATIONAL) - @Override - public void stopSparkCluster(@User UserInfo userInfo, String resourceCreator, @Project String project, String expName, @ResourceName String compName, @Info List<String> auditInfo) { - final UserInstanceDTO userInstance = exploratoryDAO.fetchExploratoryFields(resourceCreator, project, expName, true); - final UserInstanceStatus requiredStatus = UserInstanceStatus.RUNNING; - if (computationalWithStatusResourceExist(compName, userInstance, requiredStatus)) { - log.debug("{} spark cluster {} for userInstance {}", STOPPING.toString(), compName, expName); - updateComputationalStatus(resourceCreator, project, expName, compName, STOPPING); - EndpointDTO endpointDTO = endpointService.get(userInstance.getEndpoint()); - final String uuid = provisioningService.post(endpointDTO.getUrl() + ComputationalAPI.COMPUTATIONAL_STOP_SPARK, - userInfo.getAccessToken(), - requestBuilder.newComputationalStop(resourceCreator, userInstance, compName, endpointDTO), - String.class); + @Audit(action = STOP_COMPUTATIONAL) + @Override + public void stopSparkCluster(@User UserInfo userInfo, String resourceCreator, @Project String project, String expName, @ResourceName String compName, @Info String auditInfo) { + final UserInstanceDTO userInstance = exploratoryDAO.fetchExploratoryFields(resourceCreator, project, expName, true); + final UserInstanceStatus requiredStatus = UserInstanceStatus.RUNNING; + if (computationalWithStatusResourceExist(compName, userInstance, requiredStatus)) { + log.debug("{} spark cluster {} for userInstance {}", STOPPING.toString(), compName, expName); + updateComputationalStatus(resourceCreator, project, expName, compName, STOPPING); + EndpointDTO endpointDTO = endpointService.get(userInstance.getEndpoint()); + final String uuid = provisioningService.post(endpointDTO.getUrl() + ComputationalAPI.COMPUTATIONAL_STOP_SPARK, + userInfo.getAccessToken(), + requestBuilder.newComputationalStop(resourceCreator, userInstance, compName, endpointDTO), + String.class); requestId.put(resourceCreator, uuid); } else { throw new IllegalStateException(String.format(DATAENGINE_NOT_PRESENT_FORMAT, requiredStatus.toString(), compName, expName)); @@ -275,20 +275,20 @@ public class ComputationalServiceImpl implements ComputationalService { } - @BudgetLimited - @Audit(action = START_COMPUTATIONAL) - @Override - public void startSparkCluster(@User UserInfo userInfo, String expName, @ResourceName String compName, @Project String project, @Info List<String> auditInfo) { - final UserInstanceDTO userInstance = exploratoryDAO.fetchExploratoryFields(userInfo.getName(), project, expName, true); - final UserInstanceStatus requiredStatus = UserInstanceStatus.STOPPED; - if (computationalWithStatusResourceExist(compName, userInstance, requiredStatus)) { - log.debug("{} spark cluster {} for userInstance {}", STARTING.toString(), compName, expName); - updateComputationalStatus(userInfo.getName(), project, expName, compName, STARTING); - EndpointDTO endpointDTO = endpointService.get(userInstance.getEndpoint()); - final String uuid = provisioningService.post(endpointDTO.getUrl() + ComputationalAPI.COMPUTATIONAL_START_SPARK, - userInfo.getAccessToken(), - requestBuilder.newComputationalStart(userInfo, userInstance, compName, endpointDTO), - String.class); + @BudgetLimited + @Audit(action = START_COMPUTATIONAL) + @Override + public void startSparkCluster(@User UserInfo userInfo, String expName, @ResourceName String compName, @Project String project, @Info String auditInfo) { + final UserInstanceDTO userInstance = exploratoryDAO.fetchExploratoryFields(userInfo.getName(), project, expName, true); + final UserInstanceStatus requiredStatus = UserInstanceStatus.STOPPED; + if (computationalWithStatusResourceExist(compName, userInstance, requiredStatus)) { + log.debug("{} spark cluster {} for userInstance {}", STARTING.toString(), compName, expName); + updateComputationalStatus(userInfo.getName(), project, expName, compName, STARTING); + EndpointDTO endpointDTO = endpointService.get(userInstance.getEndpoint()); + final String uuid = provisioningService.post(endpointDTO.getUrl() + ComputationalAPI.COMPUTATIONAL_START_SPARK, + userInfo.getAccessToken(), + requestBuilder.newComputationalStart(userInfo, userInstance, compName, endpointDTO), + String.class); requestId.put(userInfo.getName(), uuid); } else { throw new IllegalStateException(String.format(DATAENGINE_NOT_PRESENT_FORMAT, requiredStatus.toString(), compName, expName)); diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/EnvironmentServiceImpl.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/EnvironmentServiceImpl.java index d7fdef1..dff0a0b 100644 --- a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/EnvironmentServiceImpl.java +++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/EnvironmentServiceImpl.java @@ -44,7 +44,6 @@ import lombok.extern.slf4j.Slf4j; import java.util.Arrays; import java.util.Collection; -import java.util.Collections; import java.util.List; import java.util.Set; import java.util.stream.Stream; @@ -137,7 +136,7 @@ public class EnvironmentServiceImpl implements EnvironmentService { .stream() .filter(e -> UserInstanceStatus.RUNNING == e.getStatus()) .forEach(endpoint -> projectService.stop(securityService.getServiceAccountInfo(DLAB_SYSTEM_USER), - endpoint.getName(), project, Collections.singletonList(AUDIT_QUOTA_MESSAGE))); + endpoint.getName(), project, AUDIT_QUOTA_MESSAGE)); } @ProjectAdmin @@ -150,7 +149,7 @@ public class EnvironmentServiceImpl implements EnvironmentService { @Override public void stopComputational(@User UserInfo userInfo, String user, @Project String project, String exploratoryName, String computationalName) { computationalService.stopSparkCluster(userInfo, user, project, exploratoryName, computationalName, - Collections.singletonList(String.format(AUDIT_MESSAGE, exploratoryName))); + String.format(AUDIT_MESSAGE, exploratoryName)); } @ProjectAdmin @@ -162,9 +161,8 @@ public class EnvironmentServiceImpl implements EnvironmentService { @ProjectAdmin @Override public void terminateComputational(@User UserInfo userInfo, String user, @Project String project, String exploratoryName, String computationalName) { - computationalService.terminateComputational(userInfo, user, project, exploratoryName, computationalName, - Collections.singletonList(String.format(AUDIT_MESSAGE, exploratoryName))); - } + computationalService.terminateComputational(userInfo, user, project, exploratoryName, computationalName, String.format(AUDIT_MESSAGE, exploratoryName)); + } private UserDTO toUserDTO(String u, UserDTO.Status status) { return new UserDTO(u, settingsDAO.getAllowedBudget(u).orElse(null), status); @@ -184,9 +182,9 @@ public class EnvironmentServiceImpl implements EnvironmentService { } private void stopNotebookWithServiceAccount(UserInstanceDTO instance) { - final UserInfo userInfo = securityService.getServiceAccountInfo(DLAB_SYSTEM_USER); - exploratoryService.stop(userInfo, instance.getUser(), instance.getProject(), instance.getExploratoryName(), Collections.singletonList(AUDIT_QUOTA_MESSAGE)); - } + final UserInfo userInfo = securityService.getServiceAccountInfo(DLAB_SYSTEM_USER); + exploratoryService.stop(userInfo, instance.getUser(), instance.getProject(), instance.getExploratoryName(), AUDIT_QUOTA_MESSAGE); + } private List<UserResourceInfo> getProjectEnv(ProjectDTO projectDTO, List<UserInstanceDTO> allInstances) { final Stream<UserResourceInfo> userResources = allInstances diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/ExploratoryServiceImpl.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/ExploratoryServiceImpl.java index cb44f72..8e60635 100644 --- a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/ExploratoryServiceImpl.java +++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/ExploratoryServiceImpl.java @@ -116,23 +116,23 @@ public class ExploratoryServiceImpl implements ExploratoryService { } @BudgetLimited - @Audit(action = START_NOTEBOOK) - @Override - public String start(@User UserInfo userInfo, @ResourceName String exploratoryName, @Project String project, @Info List<String> auditInfo) { - return action(userInfo, userInfo.getName(), project, exploratoryName, EXPLORATORY_START, STARTING); - } - - @Audit(action = STOP_NOTEBOOK) - @Override - public String stop(@User UserInfo userInfo, String resourceCreator, @Project String project, @ResourceName String exploratoryName, @Info List<String> auditInfo) { - return action(userInfo, resourceCreator, project, exploratoryName, EXPLORATORY_STOP, STOPPING); - } - - @Audit(action = TERMINATE_NOTEBOOK) - @Override - public String terminate(@User UserInfo userInfo, String resourceCreator, @Project String project, @ResourceName String exploratoryName, @Info List<String> auditInfo) { - return action(userInfo, resourceCreator, project, exploratoryName, EXPLORATORY_TERMINATE, TERMINATING); - } + @Audit(action = START_NOTEBOOK) + @Override + public String start(@User UserInfo userInfo, @ResourceName String exploratoryName, @Project String project, @Info String auditInfo) { + return action(userInfo, userInfo.getName(), project, exploratoryName, EXPLORATORY_START, STARTING); + } + + @Audit(action = STOP_NOTEBOOK) + @Override + public String stop(@User UserInfo userInfo, String resourceCreator, @Project String project, @ResourceName String exploratoryName, @Info String auditInfo) { + return action(userInfo, resourceCreator, project, exploratoryName, EXPLORATORY_STOP, STOPPING); + } + + @Audit(action = TERMINATE_NOTEBOOK) + @Override + public String terminate(@User UserInfo userInfo, String resourceCreator, @Project String project, @ResourceName String exploratoryName, @Info String auditInfo) { + return action(userInfo, resourceCreator, project, exploratoryName, EXPLORATORY_TERMINATE, TERMINATING); + } @BudgetLimited @Audit(action = CREATE_NOTEBOOK) diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/ProjectServiceImpl.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/ProjectServiceImpl.java index 106c608..b1156f6 100644 --- a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/ProjectServiceImpl.java +++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/ProjectServiceImpl.java @@ -32,9 +32,7 @@ import com.google.inject.Inject; import com.google.inject.name.Named; import lombok.extern.slf4j.Slf4j; -import java.util.ArrayList; import java.util.Arrays; -import java.util.Collections; import java.util.HashSet; import java.util.List; import java.util.Objects; @@ -161,11 +159,11 @@ public class ProjectServiceImpl implements ProjectService { } @Audit(action = STOP_EDGE_NODE) - @Override - public void stop(@User UserInfo userInfo, @ResourceName String endpoint, @Project String name, @Info List<String> auditInfo) { - projectActionOnCloud(userInfo, name, STOP_PRJ_API, endpoint); - projectDAO.updateEdgeStatus(name, endpoint, UserInstanceStatus.STOPPING); - } + @Override + public void stop(@User UserInfo userInfo, @ResourceName String endpoint, @Project String name, @Info String auditInfo) { + projectActionOnCloud(userInfo, name, STOP_PRJ_API, endpoint); + projectDAO.updateEdgeStatus(name, endpoint, UserInstanceStatus.STOPPING); + } @ProjectAdmin @Override @@ -194,29 +192,29 @@ public class ProjectServiceImpl implements ProjectService { @ProjectAdmin @Override public void update(@User UserInfo userInfo, UpdateProjectDTO projectDTO, @Project String projectName) { - final ProjectDTO project = projectDAO.get(projectDTO.getName()).orElseThrow(projectNotFound()); - final Set<String> endpoints = project.getEndpoints() - .stream() - .map(ProjectEndpointDTO::getName) - .collect(toSet()); - final Set<String> newEndpoints = new HashSet<>(projectDTO.getEndpoints()); - newEndpoints.removeAll(endpoints); - final List<String> projectAudit = updateProjectAudit(projectDTO, project, newEndpoints); - updateProject(userInfo, projectName, projectDTO, project, newEndpoints, projectAudit); - } - - @Audit(action = UPDATE_PROJECT) - public void updateProject(@User UserInfo userInfo, @Project @ResourceName String projectName, UpdateProjectDTO projectDTO, ProjectDTO project, Set<String> newEndpoints, - @Info List<String> projectAudit) { - final List<ProjectEndpointDTO> endpointsToBeCreated = newEndpoints - .stream() - .map(e -> new ProjectEndpointDTO(e, UserInstanceStatus.CREATING, null)) - .collect(Collectors.toList()); - project.getEndpoints().addAll(endpointsToBeCreated); - projectDAO.update(new ProjectDTO(project.getName(), projectDTO.getGroups(), project.getKey(), - project.getTag(), project.getBudget(), project.getEndpoints(), projectDTO.isSharedImageEnabled())); - endpointsToBeCreated.forEach(e -> createEndpoint(userInfo, projectName, project, e.getName())); - } + final ProjectDTO project = projectDAO.get(projectDTO.getName()).orElseThrow(projectNotFound()); + final Set<String> endpoints = project.getEndpoints() + .stream() + .map(ProjectEndpointDTO::getName) + .collect(toSet()); + final Set<String> newEndpoints = new HashSet<>(projectDTO.getEndpoints()); + newEndpoints.removeAll(endpoints); + final String projectUpdateAudit = updateProjectAudit(projectDTO, project, newEndpoints); + updateProject(userInfo, projectName, projectDTO, project, newEndpoints, projectUpdateAudit); + } + + @Audit(action = UPDATE_PROJECT) + public void updateProject(@User UserInfo userInfo, @Project @ResourceName String projectName, UpdateProjectDTO projectDTO, ProjectDTO project, Set<String> newEndpoints, + @Info String projectAudit) { + final List<ProjectEndpointDTO> endpointsToBeCreated = newEndpoints + .stream() + .map(e -> new ProjectEndpointDTO(e, UserInstanceStatus.CREATING, null)) + .collect(Collectors.toList()); + project.getEndpoints().addAll(endpointsToBeCreated); + projectDAO.update(new ProjectDTO(project.getName(), projectDTO.getGroups(), project.getKey(), + project.getTag(), project.getBudget(), project.getEndpoints(), projectDTO.isSharedImageEnabled())); + endpointsToBeCreated.forEach(e -> createEndpoint(userInfo, projectName, project, e.getName())); + } @Override public void updateBudget(UserInfo userInfo, List<UpdateProjectBudgetDTO> dtos) { @@ -229,10 +227,10 @@ public class ProjectServiceImpl implements ProjectService { projects.forEach(p -> updateBudget(userInfo, p.getName(), p.getBudget(), getUpdateBudgetAudit(p))); } - @Audit(action = UPDATE_PROJECT) - public void updateBudget(@User UserInfo userInfo, @Project @ResourceName String name, Integer budget, @Info List<String> updateBudgetAudit) { - projectDAO.updateBudget(name, budget); - } + @Audit(action = UPDATE_PROJECT) + public void updateBudget(@User UserInfo userInfo, @Project @ResourceName String name, Integer budget, @Info String updateBudgetAudit) { + projectDAO.updateBudget(name, budget); + } @Override public boolean isAnyProjectAssigned(UserInfo userInfo) { @@ -285,43 +283,43 @@ public class ProjectServiceImpl implements ProjectService { private void checkProjectRelatedResourcesInProgress(String projectName, List<ProjectEndpointDTO> endpoints, String action) { boolean edgeProgress = endpoints .stream().anyMatch(e -> - Arrays.asList(UserInstanceStatus.CREATING, UserInstanceStatus.STARTING, UserInstanceStatus.STOPPING, - UserInstanceStatus.TERMINATING).contains(e.getStatus())); - - List<String> endpointsName = endpoints.stream().map(ProjectEndpointDTO::getName).collect(Collectors.toList()); - if (edgeProgress || !checkExploratoriesAndComputationalProgress(projectName, endpointsName)) { - throw new ResourceConflictException((String.format("Can not %s environment because one of project " + - "resource is in processing stage", action))); - } - } - - private List<String> updateProjectAudit(UpdateProjectDTO projectDTO, ProjectDTO project, Set<String> newEndpoints) { - if (configuration.isAuditEnabled()) { - return null; - } - final List<String> audit = new ArrayList<>(); - final Set<String> newGroups = new HashSet<>(projectDTO.getGroups()); - newGroups.removeAll(project.getGroups()); - final Set<String> removedGroups = new HashSet<>(project.getGroups()); - removedGroups.removeAll(projectDTO.getGroups()); - - if (!newEndpoints.isEmpty()) { - audit.add(String.format(AUDIT_ADD_ENDPOINT, String.join(", ", newEndpoints))); - } - if (!newGroups.isEmpty()) { - audit.add(String.format(AUDIT_ADD_GROUP, String.join(", ", newGroups))); - } - if (!removedGroups.isEmpty()) { - audit.add(String.format(AUDIT_REMOVE_GROUP, String.join(", ", removedGroups))); - } - return audit; - } - - private List<String> getUpdateBudgetAudit(ProjectDTO p) { - return Collections.singletonList(String.format(AUDIT_UPDATE_BUDGET, get(p.getName()).getBudget(), p.getBudget())); - } - - private Supplier<ResourceNotFoundException> projectNotFound() { - return () -> new ResourceNotFoundException("Project with passed name not found"); - } + Arrays.asList(UserInstanceStatus.CREATING, UserInstanceStatus.STARTING, UserInstanceStatus.STOPPING, + UserInstanceStatus.TERMINATING).contains(e.getStatus())); + + List<String> endpointsName = endpoints.stream().map(ProjectEndpointDTO::getName).collect(Collectors.toList()); + if (edgeProgress || !checkExploratoriesAndComputationalProgress(projectName, endpointsName)) { + throw new ResourceConflictException((String.format("Can not %s environment because one of project " + + "resource is in processing stage", action))); + } + } + + private String updateProjectAudit(UpdateProjectDTO projectDTO, ProjectDTO project, Set<String> newEndpoints) { + if (configuration.isAuditEnabled()) { + return null; + } + StringBuilder audit = new StringBuilder(); + final Set<String> newGroups = new HashSet<>(projectDTO.getGroups()); + newGroups.removeAll(project.getGroups()); + final Set<String> removedGroups = new HashSet<>(project.getGroups()); + removedGroups.removeAll(projectDTO.getGroups()); + + if (!newEndpoints.isEmpty()) { + audit.append(String.format(AUDIT_ADD_ENDPOINT, String.join(", ", newEndpoints))); + } + if (!newGroups.isEmpty()) { + audit.append(String.format(AUDIT_ADD_GROUP, String.join(", ", newGroups))); + } + if (!removedGroups.isEmpty()) { + audit.append(String.format(AUDIT_REMOVE_GROUP, String.join(", ", removedGroups))); + } + return audit.toString(); + } + + private String getUpdateBudgetAudit(ProjectDTO p) { + return String.format(AUDIT_UPDATE_BUDGET, get(p.getName()).getBudget(), p.getBudget()); + } + + private Supplier<ResourceNotFoundException> projectNotFound() { + return () -> new ResourceNotFoundException("Project with passed name not found"); + } } diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/SchedulerJobServiceImpl.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/SchedulerJobServiceImpl.java index 6033576..127c394 100644 --- a/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/SchedulerJobServiceImpl.java +++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/service/impl/SchedulerJobServiceImpl.java @@ -51,7 +51,6 @@ import java.time.LocalTime; import java.time.OffsetDateTime; import java.time.ZoneOffset; import java.time.temporal.ChronoUnit; -import java.util.Collections; import java.util.Date; import java.util.List; import java.util.Objects; @@ -219,7 +218,7 @@ public class SchedulerJobServiceImpl implements SchedulerJobService { final String compName = job.getComputationalName(); final String user = job.getUser(); log.debug("Stopping exploratory {} computational {} for user {} by scheduler", expName, compName, user); - computationalService.stopSparkCluster(securityService.getServiceAccountInfo(user), user, project, expName, compName, Collections.singletonList(AUDIT_MESSAGE)); + computationalService.stopSparkCluster(securityService.getServiceAccountInfo(user), user, project, expName, compName, AUDIT_MESSAGE); } private void terminateComputational(SchedulerJobData job) { @@ -228,16 +227,16 @@ public class SchedulerJobServiceImpl implements SchedulerJobService { final String compName = job.getComputationalName(); final UserInfo userInfo = securityService.getServiceAccountInfo(user); log.debug("Terminating exploratory {} computational {} for user {} by scheduler", expName, compName, user); - computationalService.terminateComputational(userInfo, user, job.getProject(), expName, compName, Collections.singletonList(AUDIT_MESSAGE)); + computationalService.terminateComputational(userInfo, user, job.getProject(), expName, compName, AUDIT_MESSAGE); } private void stopExploratory(SchedulerJobData job) { - final String expName = job.getExploratoryName(); - final String user = job.getUser(); - final String project = job.getProject(); - log.debug("Stopping exploratory {} for user {} by scheduler", expName, user); - exploratoryService.stop(securityService.getServiceAccountInfo(user), user, project, expName, Collections.singletonList(AUDIT_MESSAGE)); - } + final String expName = job.getExploratoryName(); + final String user = job.getUser(); + final String project = job.getProject(); + log.debug("Stopping exploratory {} for user {} by scheduler", expName, user); + exploratoryService.stop(securityService.getServiceAccountInfo(user), user, project, expName, AUDIT_MESSAGE); + } private List<SchedulerJobData> getExploratorySchedulersForTerminating(OffsetDateTime now) { return schedulerJobDAO.getExploratorySchedulerDataWithOneOfStatus(RUNNING, STOPPED) @@ -254,35 +253,35 @@ public class SchedulerJobServiceImpl implements SchedulerJobService { } private void startExploratory(SchedulerJobData schedulerJobData) { - final String user = schedulerJobData.getUser(); - final String exploratoryName = schedulerJobData.getExploratoryName(); - final String project = schedulerJobData.getProject(); - log.debug("Starting exploratory {} for user {} by scheduler", exploratoryName, user); - exploratoryService.start(securityService.getServiceAccountInfo(user), exploratoryName, project, Collections.singletonList(AUDIT_MESSAGE)); - if (schedulerJobData.getJobDTO().isSyncStartRequired()) { - log.trace("Starting computational for exploratory {} for user {} by scheduler", exploratoryName, user); - final DataEngineType sparkCluster = DataEngineType.SPARK_STANDALONE; - final List<UserComputationalResource> compToBeStarted = - computationalDAO.findComputationalResourcesWithStatus(user, project, exploratoryName, STOPPED); - - compToBeStarted - .stream() - .filter(compResource -> shouldClusterBeStarted(sparkCluster, compResource)) - .forEach(comp -> startSpark(user, exploratoryName, comp.getComputationalName(), project)); + final String user = schedulerJobData.getUser(); + final String exploratoryName = schedulerJobData.getExploratoryName(); + final String project = schedulerJobData.getProject(); + log.debug("Starting exploratory {} for user {} by scheduler", exploratoryName, user); + exploratoryService.start(securityService.getServiceAccountInfo(user), exploratoryName, project, AUDIT_MESSAGE); + if (schedulerJobData.getJobDTO().isSyncStartRequired()) { + log.trace("Starting computational for exploratory {} for user {} by scheduler", exploratoryName, user); + final DataEngineType sparkCluster = DataEngineType.SPARK_STANDALONE; + final List<UserComputationalResource> compToBeStarted = + computationalDAO.findComputationalResourcesWithStatus(user, project, exploratoryName, STOPPED); + + compToBeStarted + .stream() + .filter(compResource -> shouldClusterBeStarted(sparkCluster, compResource)) + .forEach(comp -> startSpark(user, exploratoryName, comp.getComputationalName(), project)); } } private void terminateExploratory(SchedulerJobData job) { - final String user = job.getUser(); - final String project = job.getProject(); - final String expName = job.getExploratoryName(); - log.debug("Terminating exploratory {} for user {} by scheduler", expName, user); - exploratoryService.terminate(securityService.getUserInfoOffline(user), user, project, expName, Collections.singletonList(AUDIT_MESSAGE)); - } + final String user = job.getUser(); + final String project = job.getProject(); + final String expName = job.getExploratoryName(); + log.debug("Terminating exploratory {} for user {} by scheduler", expName, user); + exploratoryService.terminate(securityService.getUserInfoOffline(user), user, project, expName, AUDIT_MESSAGE); + } private void startSpark(String user, String expName, String compName, String project) { log.debug("Starting exploratory {} computational {} for user {} by scheduler", expName, compName, user); - computationalService.startSparkCluster(securityService.getServiceAccountInfo(user), expName, compName, project, Collections.singletonList(AUDIT_MESSAGE)); + computationalService.startSparkCluster(securityService.getServiceAccountInfo(user), expName, compName, project, AUDIT_MESSAGE); } private boolean shouldClusterBeStarted(DataEngineType sparkCluster, UserComputationalResource compResource) { diff --git a/services/self-service/src/test/java/com/epam/dlab/backendapi/resources/ExploratoryResourceTest.java b/services/self-service/src/test/java/com/epam/dlab/backendapi/resources/ExploratoryResourceTest.java index a9ab5f2..b68ea11 100644 --- a/services/self-service/src/test/java/com/epam/dlab/backendapi/resources/ExploratoryResourceTest.java +++ b/services/self-service/src/test/java/com/epam/dlab/backendapi/resources/ExploratoryResourceTest.java @@ -46,7 +46,6 @@ import java.util.List; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import static org.mockito.Matchers.any; -import static org.mockito.Matchers.anyList; import static org.mockito.Matchers.anyString; import static org.mockito.Mockito.doThrow; import static org.mockito.Mockito.eq; @@ -112,7 +111,7 @@ public class ExploratoryResourceTest extends TestBase { @Test public void start() { ExploratoryActionFormDTO exploratoryDTO = getExploratoryActionFormDTO(); - when(exploratoryService.start(any(UserInfo.class), anyString(), anyString(), anyList())).thenReturn("someUuid"); + when(exploratoryService.start(any(UserInfo.class), anyString(), anyString(), anyString())).thenReturn("someUuid"); final Response response = resources.getJerseyTest() .target("/infrastructure_provision/exploratory_environment") .request() @@ -130,7 +129,7 @@ public class ExploratoryResourceTest extends TestBase { @Test public void startUnprocessableEntity() { - when(exploratoryService.start(any(UserInfo.class), anyString(), anyString(), anyList())).thenReturn("someUuid"); + when(exploratoryService.start(any(UserInfo.class), anyString(), anyString(), anyString())).thenReturn("someUuid"); final Response response = resources.getJerseyTest() .target("/infrastructure_provision/exploratory_environment") .request() @@ -145,16 +144,16 @@ public class ExploratoryResourceTest extends TestBase { @Test public void stop() { - when(exploratoryService.stop(any(UserInfo.class), anyString(), anyString(), anyString(), anyList())).thenReturn("someUuid"); - final Response response = resources.getJerseyTest() - .target("/infrastructure_provision/exploratory_environment/project/someName/stop") - .request() - .header("Authorization", "Bearer " + TOKEN) - .delete(); + when(exploratoryService.stop(any(UserInfo.class), anyString(), anyString(), anyString(), anyString())).thenReturn("someUuid"); + final Response response = resources.getJerseyTest() + .target("/infrastructure_provision/exploratory_environment/project/someName/stop") + .request() + .header("Authorization", "Bearer " + TOKEN) + .delete(); - assertEquals(HttpStatus.SC_OK, response.getStatus()); - assertEquals("someUuid", response.readEntity(String.class)); - assertEquals(MediaType.APPLICATION_JSON, response.getHeaderString(HttpHeaders.CONTENT_TYPE)); + assertEquals(HttpStatus.SC_OK, response.getStatus()); + assertEquals("someUuid", response.readEntity(String.class)); + assertEquals(MediaType.APPLICATION_JSON, response.getHeaderString(HttpHeaders.CONTENT_TYPE)); verify(exploratoryService).stop(getUserInfo(), getUserInfo().getName(), "project", "someName", null); verifyNoMoreInteractions(exploratoryService); @@ -162,17 +161,17 @@ public class ExploratoryResourceTest extends TestBase { @Test public void stopWithFailedAuth() throws AuthenticationException { - authFailSetup(); - when(exploratoryService.stop(any(UserInfo.class), anyString(), anyString(), anyString(), anyList())).thenReturn("someUuid"); - final Response response = resources.getJerseyTest() - .target("/infrastructure_provision/exploratory_environment/project/someName/stop") - .request() - .header("Authorization", "Bearer " + TOKEN) - .delete(); + authFailSetup(); + when(exploratoryService.stop(any(UserInfo.class), anyString(), anyString(), anyString(), anyString())).thenReturn("someUuid"); + final Response response = resources.getJerseyTest() + .target("/infrastructure_provision/exploratory_environment/project/someName/stop") + .request() + .header("Authorization", "Bearer " + TOKEN) + .delete(); - assertEquals(HttpStatus.SC_OK, response.getStatus()); - assertEquals("someUuid", response.readEntity(String.class)); - assertEquals(MediaType.APPLICATION_JSON, response.getHeaderString(HttpHeaders.CONTENT_TYPE)); + assertEquals(HttpStatus.SC_OK, response.getStatus()); + assertEquals("someUuid", response.readEntity(String.class)); + assertEquals(MediaType.APPLICATION_JSON, response.getHeaderString(HttpHeaders.CONTENT_TYPE)); verify(exploratoryService).stop(getUserInfo(), getUserInfo().getName(), "project", "someName", null); verifyNoMoreInteractions(exploratoryService); @@ -180,8 +179,8 @@ public class ExploratoryResourceTest extends TestBase { @Test public void stopWithException() { - doThrow(new DlabException("Could not stop exploratory environment")) - .when(exploratoryService).stop(any(UserInfo.class), anyString(), anyString(), anyString(), anyList()); + doThrow(new DlabException("Could not stop exploratory environment")) + .when(exploratoryService).stop(any(UserInfo.class), anyString(), anyString(), anyString(), anyString()); final Response response = resources.getJerseyTest() .target("/infrastructure_provision/exploratory_environment/project/someName/stop") .request() @@ -201,16 +200,16 @@ public class ExploratoryResourceTest extends TestBase { @Test public void terminate() { - when(exploratoryService.terminate(any(UserInfo.class), anyString(), anyString(), anyString(), anyList())).thenReturn("someUuid"); - final Response response = resources.getJerseyTest() - .target("/infrastructure_provision/exploratory_environment/project/someName/terminate") - .request() - .header("Authorization", "Bearer " + TOKEN) - .delete(); + when(exploratoryService.terminate(any(UserInfo.class), anyString(), anyString(), anyString(), anyString())).thenReturn("someUuid"); + final Response response = resources.getJerseyTest() + .target("/infrastructure_provision/exploratory_environment/project/someName/terminate") + .request() + .header("Authorization", "Bearer " + TOKEN) + .delete(); - assertEquals(HttpStatus.SC_OK, response.getStatus()); - assertEquals("someUuid", response.readEntity(String.class)); - assertEquals(MediaType.APPLICATION_JSON, response.getHeaderString(HttpHeaders.CONTENT_TYPE)); + assertEquals(HttpStatus.SC_OK, response.getStatus()); + assertEquals("someUuid", response.readEntity(String.class)); + assertEquals(MediaType.APPLICATION_JSON, response.getHeaderString(HttpHeaders.CONTENT_TYPE)); verify(exploratoryService).terminate(getUserInfo(), getUserInfo().getName(), "project", "someName", null); verifyNoMoreInteractions(exploratoryService); @@ -218,17 +217,17 @@ public class ExploratoryResourceTest extends TestBase { @Test public void terminateWithFailedAuth() throws AuthenticationException { - authFailSetup(); - when(exploratoryService.terminate(any(UserInfo.class), anyString(), anyString(), anyString(), anyList())).thenReturn("someUuid"); - final Response response = resources.getJerseyTest() - .target("/infrastructure_provision/exploratory_environment/project/someName/terminate") - .request() - .header("Authorization", "Bearer " + TOKEN) - .delete(); + authFailSetup(); + when(exploratoryService.terminate(any(UserInfo.class), anyString(), anyString(), anyString(), anyString())).thenReturn("someUuid"); + final Response response = resources.getJerseyTest() + .target("/infrastructure_provision/exploratory_environment/project/someName/terminate") + .request() + .header("Authorization", "Bearer " + TOKEN) + .delete(); - assertEquals(HttpStatus.SC_OK, response.getStatus()); - assertEquals("someUuid", response.readEntity(String.class)); - assertEquals(MediaType.APPLICATION_JSON, response.getHeaderString(HttpHeaders.CONTENT_TYPE)); + assertEquals(HttpStatus.SC_OK, response.getStatus()); + assertEquals("someUuid", response.readEntity(String.class)); + assertEquals(MediaType.APPLICATION_JSON, response.getHeaderString(HttpHeaders.CONTENT_TYPE)); verify(exploratoryService).terminate(getUserInfo(), getUserInfo().getName(), "project", "someName", null); verifyNoMoreInteractions(exploratoryService); @@ -236,8 +235,8 @@ public class ExploratoryResourceTest extends TestBase { @Test public void terminateWithException() { - doThrow(new DlabException("Could not terminate exploratory environment")) - .when(exploratoryService).terminate(any(UserInfo.class), anyString(), anyString(), anyString(), anyList()); + doThrow(new DlabException("Could not terminate exploratory environment")) + .when(exploratoryService).terminate(any(UserInfo.class), anyString(), anyString(), anyString(), anyString()); final Response response = resources.getJerseyTest() .target("/infrastructure_provision/exploratory_environment/project/someName/terminate") .request() diff --git a/services/self-service/src/test/java/com/epam/dlab/backendapi/service/impl/ComputationalServiceImplTest.java b/services/self-service/src/test/java/com/epam/dlab/backendapi/service/impl/ComputationalServiceImplTest.java index fb44f30..1b9babc 100644 --- a/services/self-service/src/test/java/com/epam/dlab/backendapi/service/impl/ComputationalServiceImplTest.java +++ b/services/self-service/src/test/java/com/epam/dlab/backendapi/service/impl/ComputationalServiceImplTest.java @@ -172,7 +172,7 @@ public class ComputationalServiceImplTest { SparkStandaloneClusterCreateForm form = (SparkStandaloneClusterCreateForm) formList.get(0); boolean creationResult = computationalService.createSparkCluster(userInfo, form.getName(), form, PROJECT, - Collections.singletonList(String.format(AUDIT_MESSAGE, form.getNotebookName()))); + String.format(AUDIT_MESSAGE, form.getNotebookName())); assertTrue(creationResult); verify(projectService).get(PROJECT); @@ -198,7 +198,7 @@ public class ComputationalServiceImplTest { SparkStandaloneClusterCreateForm form = (SparkStandaloneClusterCreateForm) formList.get(0); boolean creationResult = computationalService.createSparkCluster(userInfo, form.getName(), form, PROJECT, - Collections.singletonList(String.format(AUDIT_MESSAGE, form.getNotebookName()))); + String.format(AUDIT_MESSAGE, form.getNotebookName())); assertFalse(creationResult); verify(computationalDAO).addComputational(eq(USER), eq(EXPLORATORY_NAME), eq(PROJECT), refEq(sparkClusterResource)); verifyNoMoreInteractions(configuration, computationalDAO); @@ -216,7 +216,7 @@ public class ComputationalServiceImplTest { SparkStandaloneClusterCreateForm form = (SparkStandaloneClusterCreateForm) formList.get(0); try { - computationalService.createSparkCluster(userInfo, form.getName(), form, PROJECT, Collections.singletonList(String.format(AUDIT_MESSAGE, form.getNotebookName()))); + computationalService.createSparkCluster(userInfo, form.getName(), form, PROJECT, String.format(AUDIT_MESSAGE, form.getNotebookName())); } catch (ResourceNotFoundException e) { assertEquals("Exploratory for user with name not found", e.getMessage()); } @@ -246,7 +246,7 @@ public class ComputationalServiceImplTest { SparkStandaloneClusterCreateForm form = (SparkStandaloneClusterCreateForm) formList.get(0); try { - computationalService.createSparkCluster(userInfo, form.getName(), form, PROJECT, Collections.singletonList(String.format(AUDIT_MESSAGE, form.getNotebookName()))); + computationalService.createSparkCluster(userInfo, form.getName(), form, PROJECT, String.format(AUDIT_MESSAGE, form.getNotebookName())); } catch (DlabException e) { assertEquals("Cannot create instance of resource class ", e.getMessage()); } @@ -283,7 +283,7 @@ public class ComputationalServiceImplTest { .thenReturn(UUID); when(requestId.put(anyString(), anyString())).thenReturn(UUID); - computationalService.terminateComputational(userInfo, userInfo.getName(), PROJECT, EXPLORATORY_NAME, COMP_NAME, Collections.singletonList(AUDIT_MESSAGE)); + computationalService.terminateComputational(userInfo, userInfo.getName(), PROJECT, EXPLORATORY_NAME, COMP_NAME, AUDIT_MESSAGE); verify(computationalDAO).updateComputationalStatus(refEq(computationalStatusDTOWithStatusTerminating, "self")); verify(computationalDAO).fetchComputationalFields(USER, PROJECT, EXPLORATORY_NAME, COMP_NAME); @@ -308,7 +308,7 @@ public class ComputationalServiceImplTest { .thenReturn(mock(UpdateResult.class)); try { - computationalService.terminateComputational(userInfo, userInfo.getName(), PROJECT, EXPLORATORY_NAME, COMP_NAME, Collections.singletonList(AUDIT_MESSAGE)); + computationalService.terminateComputational(userInfo, userInfo.getName(), PROJECT, EXPLORATORY_NAME, COMP_NAME, AUDIT_MESSAGE); } catch (DlabException e) { assertEquals("Could not update computational resource status", e.getMessage()); } @@ -329,7 +329,7 @@ public class ComputationalServiceImplTest { .thenReturn(mock(UpdateResult.class)); try { - computationalService.terminateComputational(userInfo, userInfo.getName(), PROJECT, EXPLORATORY_NAME, COMP_NAME, Collections.singletonList(AUDIT_MESSAGE)); + computationalService.terminateComputational(userInfo, userInfo.getName(), PROJECT, EXPLORATORY_NAME, COMP_NAME, AUDIT_MESSAGE); } catch (DlabException e) { assertEquals("Computational resource for user with exploratory name not found.", e.getMessage()); } @@ -363,7 +363,7 @@ public class ComputationalServiceImplTest { .thenReturn(mock(UpdateResult.class)); try { - computationalService.terminateComputational(userInfo, userInfo.getName(), PROJECT, EXPLORATORY_NAME, COMP_NAME, Collections.singletonList(AUDIT_MESSAGE)); + computationalService.terminateComputational(userInfo, userInfo.getName(), PROJECT, EXPLORATORY_NAME, COMP_NAME, AUDIT_MESSAGE); } catch (DlabException e) { assertEquals("Cannot create instance of resource class ", e.getMessage()); } @@ -397,7 +397,7 @@ public class ComputationalServiceImplTest { ComputationalCreateFormDTO form = formList.get(1); boolean creationResult = computationalService.createDataEngineService(userInfo, form.getName(), form, ucResource, PROJECT, - Collections.singletonList(String.format(AUDIT_MESSAGE, form.getNotebookName()))); + String.format(AUDIT_MESSAGE, form.getNotebookName())); assertTrue(creationResult); verify(projectService).get(PROJECT); @@ -425,7 +425,7 @@ public class ComputationalServiceImplTest { ComputationalCreateFormDTO form = formList.get(1); boolean creationResult = computationalService.createDataEngineService(userInfo, form.getName(), form, ucResource, PROJECT, - Collections.singletonList(String.format(AUDIT_MESSAGE, form.getNotebookName()))); + String.format(AUDIT_MESSAGE, form.getNotebookName())); assertFalse(creationResult); verify(computationalDAO).addComputational(eq(USER), eq(EXPLORATORY_NAME), eq(PROJECT), refEq(ucResource)); @@ -445,7 +445,7 @@ public class ComputationalServiceImplTest { ComputationalCreateFormDTO form = formList.get(1); try { computationalService.createDataEngineService(userInfo, form.getName(), form, ucResource, PROJECT, - Collections.singletonList(String.format(AUDIT_MESSAGE, form.getNotebookName()))); + String.format(AUDIT_MESSAGE, form.getNotebookName())); } catch (DlabException e) { assertEquals("Exploratory for user with name not found", e.getMessage()); } @@ -479,7 +479,7 @@ public class ComputationalServiceImplTest { ComputationalCreateFormDTO form = formList.get(1); try { computationalService.createDataEngineService(userInfo, form.getName(), form, ucResource, PROJECT, - Collections.singletonList(String.format(AUDIT_MESSAGE, form.getNotebookName()))); + String.format(AUDIT_MESSAGE, form.getNotebookName())); } catch (DlabException e) { assertEquals("Could not send request for creation the computational resource compName: " + "Cannot create instance of resource class ", e.getMessage()); @@ -511,7 +511,7 @@ public class ComputationalServiceImplTest { .thenReturn("someUuid"); when(requestId.put(anyString(), anyString())).thenReturn("someUuid"); - computationalService.stopSparkCluster(userInfo, userInfo.getName(), PROJECT, EXPLORATORY_NAME, COMP_NAME, Collections.singletonList(String.format(AUDIT_MESSAGE, EXPLORATORY_NAME))); + computationalService.stopSparkCluster(userInfo, userInfo.getName(), PROJECT, EXPLORATORY_NAME, COMP_NAME, String.format(AUDIT_MESSAGE, EXPLORATORY_NAME)); verify(computationalDAO).updateComputationalStatus(refEq(computationalStatusDTOWithStatusStopping, "self")); verify(exploratoryDAO).fetchExploratoryFields(USER, PROJECT, EXPLORATORY_NAME, true); @@ -532,7 +532,7 @@ public class ComputationalServiceImplTest { expectedException.expect(IllegalStateException.class); expectedException.expectMessage("There is no running dataengine compName for exploratory expName"); - computationalService.stopSparkCluster(userInfo, userInfo.getName(), PROJECT, EXPLORATORY_NAME, COMP_NAME, Collections.singletonList(String.format(AUDIT_MESSAGE, EXPLORATORY_NAME))); + computationalService.stopSparkCluster(userInfo, userInfo.getName(), PROJECT, EXPLORATORY_NAME, COMP_NAME, String.format(AUDIT_MESSAGE, EXPLORATORY_NAME)); } @Test @@ -551,7 +551,7 @@ public class ComputationalServiceImplTest { .thenReturn("someUuid"); when(requestId.put(anyString(), anyString())).thenReturn("someUuid"); - computationalService.startSparkCluster(userInfo, EXPLORATORY_NAME, COMP_NAME, PROJECT, Collections.singletonList(String.format(AUDIT_MESSAGE, EXPLORATORY_NAME))); + computationalService.startSparkCluster(userInfo, EXPLORATORY_NAME, COMP_NAME, PROJECT, String.format(AUDIT_MESSAGE, EXPLORATORY_NAME)); verify(computationalDAO).updateComputationalStatus(refEq(computationalStatusDTOWithStatusStarting, "self")); verify(exploratoryDAO).fetchExploratoryFields(USER, PROJECT, EXPLORATORY_NAME, true); @@ -575,7 +575,7 @@ public class ComputationalServiceImplTest { expectedException.expect(IllegalStateException.class); expectedException.expectMessage("There is no stopped dataengine compName for exploratory expName"); - computationalService.startSparkCluster(userInfo, EXPLORATORY_NAME, COMP_NAME, PROJECT, Collections.singletonList(String.format(AUDIT_MESSAGE, EXPLORATORY_NAME))); + computationalService.startSparkCluster(userInfo, EXPLORATORY_NAME, COMP_NAME, PROJECT, String.format(AUDIT_MESSAGE, EXPLORATORY_NAME)); } @Test diff --git a/services/self-service/src/test/java/com/epam/dlab/backendapi/service/impl/EnvironmentServiceImplTest.java b/services/self-service/src/test/java/com/epam/dlab/backendapi/service/impl/EnvironmentServiceImplTest.java index bf4753e..fc619d2 100644 --- a/services/self-service/src/test/java/com/epam/dlab/backendapi/service/impl/EnvironmentServiceImplTest.java +++ b/services/self-service/src/test/java/com/epam/dlab/backendapi/service/impl/EnvironmentServiceImplTest.java @@ -48,7 +48,6 @@ import java.util.List; import java.util.Optional; import static org.junit.Assert.assertEquals; -import static org.mockito.Matchers.anyList; import static org.mockito.Mockito.any; import static org.mockito.Mockito.anySet; import static org.mockito.Mockito.anyString; @@ -132,18 +131,18 @@ public class EnvironmentServiceImplTest { final ProjectDTO projectDTO = getProjectDTO(); when(exploratoryDAO.fetchRunningExploratoryFieldsForProject(anyString())).thenReturn(getUserInstances()); when(securityService.getServiceAccountInfo(anyString())).thenReturn(userInfo); - when(exploratoryService.stop(any(UserInfo.class), anyString(), anyString(), anyString(), anyList())).thenReturn(UUID); + when(exploratoryService.stop(any(UserInfo.class), anyString(), anyString(), anyString(), anyString())).thenReturn(UUID); when(projectService.get(anyString())).thenReturn(projectDTO); - doNothing().when(projectService).stop(any(UserInfo.class), anyString(), anyString(), anyList()); + doNothing().when(projectService).stop(any(UserInfo.class), anyString(), anyString(), anyString()); environmentService.stopProjectEnvironment(PROJECT_NAME); verify(exploratoryDAO).fetchRunningExploratoryFieldsForProject(PROJECT_NAME); - verify(exploratoryService).stop(refEq(userInfo), eq(USER), eq(PROJECT_NAME), eq(EXPLORATORY_NAME_1), eq(Collections.singletonList(AUDIT_QUOTA_MESSAGE))); - verify(exploratoryService).stop(refEq(userInfo), eq(USER), eq(PROJECT_NAME), eq(EXPLORATORY_NAME_2), eq(Collections.singletonList(AUDIT_QUOTA_MESSAGE))); + verify(exploratoryService).stop(refEq(userInfo), eq(USER), eq(PROJECT_NAME), eq(EXPLORATORY_NAME_1), eq(AUDIT_QUOTA_MESSAGE)); + verify(exploratoryService).stop(refEq(userInfo), eq(USER), eq(PROJECT_NAME), eq(EXPLORATORY_NAME_2), eq(AUDIT_QUOTA_MESSAGE)); verify(securityService, times(3)).getServiceAccountInfo(DLAB_SYSTEM_USER); verify(projectService).get(eq(PROJECT_NAME)); - verify(projectService).stop(refEq(userInfo), eq(ENDPOINT_NAME), eq(PROJECT_NAME), eq(Collections.singletonList(AUDIT_QUOTA_MESSAGE))); + verify(projectService).stop(refEq(userInfo), eq(ENDPOINT_NAME), eq(PROJECT_NAME), eq(AUDIT_QUOTA_MESSAGE)); verify(exploratoryDAO).fetchProjectExploratoriesWhereStatusIn(PROJECT_NAME, Arrays.asList(UserInstanceStatus.CREATING, UserInstanceStatus.STARTING, UserInstanceStatus.CREATING_IMAGE), UserInstanceStatus.CREATING, UserInstanceStatus.STARTING, UserInstanceStatus.CREATING_IMAGE); @@ -152,49 +151,49 @@ public class EnvironmentServiceImplTest { @Test public void stopExploratory() { - final UserInfo userInfo = getUserInfo(); - when(exploratoryService.stop(any(UserInfo.class), anyString(), anyString(), anyString(), anyList())).thenReturn(UUID); + final UserInfo userInfo = getUserInfo(); + when(exploratoryService.stop(any(UserInfo.class), anyString(), anyString(), anyString(), anyString())).thenReturn(UUID); - environmentService.stopExploratory(userInfo, USER, PROJECT_NAME, EXPLORATORY_NAME_1); + environmentService.stopExploratory(userInfo, USER, PROJECT_NAME, EXPLORATORY_NAME_1); - verify(exploratoryService).stop(refEq(userInfo), eq(USER), eq(PROJECT_NAME), eq(EXPLORATORY_NAME_1), eq(null)); - verifyNoMoreInteractions(securityService, exploratoryService); - } + verify(exploratoryService).stop(refEq(userInfo), eq(USER), eq(PROJECT_NAME), eq(EXPLORATORY_NAME_1), eq(null)); + verifyNoMoreInteractions(securityService, exploratoryService); + } @Test public void stopComputational() { final UserInfo userInfo = getUserInfo(); - doNothing().when(computationalService).stopSparkCluster(any(UserInfo.class), anyString(), anyString(), anyString(), anyString(), anyList()); + doNothing().when(computationalService).stopSparkCluster(any(UserInfo.class), anyString(), anyString(), anyString(), anyString(), anyString()); environmentService.stopComputational(userInfo, USER, PROJECT_NAME, EXPLORATORY_NAME_1, "compName"); verify(computationalService).stopSparkCluster(refEq(userInfo), eq(userInfo.getName()), eq(PROJECT_NAME), eq(EXPLORATORY_NAME_1), eq("compName"), - eq(Collections.singletonList(String.format(AUDIT_MESSAGE, EXPLORATORY_NAME_1)))); + eq(String.format(AUDIT_MESSAGE, EXPLORATORY_NAME_1))); verifyNoMoreInteractions(securityService, computationalService); } @Test public void terminateExploratory() { - final UserInfo userInfo = getUserInfo(); - when(exploratoryService.terminate(any(UserInfo.class), anyString(), anyString(), anyString(), anyList())).thenReturn(UUID); + final UserInfo userInfo = getUserInfo(); + when(exploratoryService.terminate(any(UserInfo.class), anyString(), anyString(), anyString(), anyString())).thenReturn(UUID); - environmentService.terminateExploratory(userInfo, USER, PROJECT_NAME, EXPLORATORY_NAME_1); + environmentService.terminateExploratory(userInfo, USER, PROJECT_NAME, EXPLORATORY_NAME_1); - verify(exploratoryService).terminate(refEq(userInfo), eq(USER), eq(PROJECT_NAME), eq(EXPLORATORY_NAME_1), eq(null)); - verifyNoMoreInteractions(securityService, exploratoryService); - } + verify(exploratoryService).terminate(refEq(userInfo), eq(USER), eq(PROJECT_NAME), eq(EXPLORATORY_NAME_1), eq(null)); + verifyNoMoreInteractions(securityService, exploratoryService); + } @Test public void terminateComputational() { final UserInfo userInfo = getUserInfo(); - doNothing().when(computationalService) - .terminateComputational(any(UserInfo.class), anyString(), anyString(), anyString(), anyString(), anyList()); + doNothing().when(computationalService) + .terminateComputational(any(UserInfo.class), anyString(), anyString(), anyString(), anyString(), anyString()); environmentService.terminateComputational(userInfo, USER, PROJECT_NAME, EXPLORATORY_NAME_1, "compName"); - verify(computationalService).terminateComputational(refEq(userInfo), eq(userInfo.getName()), eq(PROJECT_NAME), eq(EXPLORATORY_NAME_1), eq("compName"), - eq(Collections.singletonList(String.format(AUDIT_MESSAGE, EXPLORATORY_NAME_1)))); - verifyNoMoreInteractions(securityService, computationalService); + verify(computationalService).terminateComputational(refEq(userInfo), eq(userInfo.getName()), eq(PROJECT_NAME), eq(EXPLORATORY_NAME_1), eq("compName"), + eq(String.format(AUDIT_MESSAGE, EXPLORATORY_NAME_1))); + verifyNoMoreInteractions(securityService, computationalService); } private UserInfo getUserInfo() { diff --git a/services/self-service/src/test/java/com/epam/dlab/backendapi/service/impl/SchedulerJobServiceImplTest.java b/services/self-service/src/test/java/com/epam/dlab/backendapi/service/impl/SchedulerJobServiceImplTest.java index c8e9035..6c72ef8 100644 --- a/services/self-service/src/test/java/com/epam/dlab/backendapi/service/impl/SchedulerJobServiceImplTest.java +++ b/services/self-service/src/test/java/com/epam/dlab/backendapi/service/impl/SchedulerJobServiceImplTest.java @@ -420,7 +420,7 @@ public class SchedulerJobServiceImplTest { verify(schedulerJobDAO) .getComputationalSchedulerDataWithOneOfStatus(RUNNING, DataEngineType.SPARK_STANDALONE, STOPPED); verify(computationalService).startSparkCluster(refEq(getUserInfo()), eq(EXPLORATORY_NAME), - eq(COMPUTATIONAL_NAME), eq(PROJECT), eq(Collections.singletonList(AUDIT_MESSAGE))); + eq(COMPUTATIONAL_NAME), eq(PROJECT), eq(AUDIT_MESSAGE)); verifyNoMoreInteractions(securityService, schedulerJobDAO, computationalService); } @@ -521,7 +521,7 @@ public class SchedulerJobServiceImplTest { verify(schedulerJobDAO) .getComputationalSchedulerDataWithOneOfStatus(RUNNING, DataEngineType.SPARK_STANDALONE, RUNNING); verify(computationalService).stopSparkCluster(refEq(userInfo), eq(userInfo.getName()), eq(PROJECT), - eq(EXPLORATORY_NAME), eq(COMPUTATIONAL_NAME), eq(Collections.singletonList(AUDIT_MESSAGE))); + eq(EXPLORATORY_NAME), eq(COMPUTATIONAL_NAME), eq(AUDIT_MESSAGE)); verifyNoMoreInteractions(securityService, schedulerJobDAO, computationalService); } @@ -609,19 +609,19 @@ public class SchedulerJobServiceImplTest { when(schedulerJobDAO.getExploratorySchedulerWithStatusAndClusterLastActivityLessThan(any(UserInstanceStatus.class), any(Date.class))). thenReturn(singletonList(getSchedulerJobData(LocalDate.now(), LocalDate.now().plusDays(1), Arrays.asList(DayOfWeek.values()), Arrays.asList(DayOfWeek.values()), - LocalDateTime.of(LocalDate.now(), - LocalTime.now().truncatedTo(ChronoUnit.MINUTES)), false, USER, - LocalTime.now().truncatedTo(ChronoUnit.MINUTES)))); - when(securityService.getServiceAccountInfo(anyString())).thenReturn(userInfo); + LocalDateTime.of(LocalDate.now(), + LocalTime.now().truncatedTo(ChronoUnit.MINUTES)), false, USER, + LocalTime.now().truncatedTo(ChronoUnit.MINUTES)))); + when(securityService.getServiceAccountInfo(anyString())).thenReturn(userInfo); - schedulerJobService.stopExploratoryByScheduler(); + schedulerJobService.stopExploratoryByScheduler(); - verify(securityService).getServiceAccountInfo(USER); - verify(schedulerJobDAO).getExploratorySchedulerWithStatusAndClusterLastActivityLessThan(eq(RUNNING), - any(Date.class)); - verify(exploratoryService).stop(refEq(userInfo), eq(USER), eq(PROJECT), eq(EXPLORATORY_NAME), eq(Collections.singletonList(AUDIT_MESSAGE))); - verifyNoMoreInteractions(securityService, schedulerJobDAO, exploratoryService); - } + verify(securityService).getServiceAccountInfo(USER); + verify(schedulerJobDAO).getExploratorySchedulerWithStatusAndClusterLastActivityLessThan(eq(RUNNING), + any(Date.class)); + verify(exploratoryService).stop(refEq(userInfo), eq(USER), eq(PROJECT), eq(EXPLORATORY_NAME), eq(AUDIT_MESSAGE)); + verifyNoMoreInteractions(securityService, schedulerJobDAO, exploratoryService); + } @Test public void testStopExploratoryBySchedulerWhenSchedulerIsNotConfigured() { @@ -704,22 +704,22 @@ public class SchedulerJobServiceImplTest { final List<DayOfWeek> stopDays = Arrays.asList(DayOfWeek.values()); when(schedulerJobDAO.getExploratorySchedulerDataWithStatus(any(UserInstanceStatus.class))) .thenReturn(singletonList(getSchedulerJobData(LocalDate.now(), finishDate, - Arrays.asList(DayOfWeek.values()), stopDays, LocalDateTime.of(LocalDate.now(), - LocalTime.now().truncatedTo(ChronoUnit.MINUTES)), false, USER, - LocalTime.now().truncatedTo(ChronoUnit.MINUTES) - ))); - when(securityService.getServiceAccountInfo(anyString())).thenReturn(getUserInfo()); + Arrays.asList(DayOfWeek.values()), stopDays, LocalDateTime.of(LocalDate.now(), + LocalTime.now().truncatedTo(ChronoUnit.MINUTES)), false, USER, + LocalTime.now().truncatedTo(ChronoUnit.MINUTES) + ))); + when(securityService.getServiceAccountInfo(anyString())).thenReturn(getUserInfo()); - schedulerJobService.startExploratoryByScheduler(); + schedulerJobService.startExploratoryByScheduler(); - verify(securityService).getServiceAccountInfo(USER); - verify(schedulerJobDAO).getExploratorySchedulerDataWithStatus(STOPPED); - verify(exploratoryService).start(refEq(getUserInfo()), eq(EXPLORATORY_NAME), eq(PROJECT), eq(Collections.singletonList(AUDIT_MESSAGE))); - verifyNoMoreInteractions(securityService, schedulerJobDAO, exploratoryService); - verify(exploratoryService).start(refEq(getUserInfo()), eq(EXPLORATORY_NAME), eq(PROJECT), eq(Collections.singletonList(AUDIT_MESSAGE))); - verifyNoMoreInteractions(schedulerJobDAO, exploratoryService); - verifyZeroInteractions(computationalService, computationalDAO); - } + verify(securityService).getServiceAccountInfo(USER); + verify(schedulerJobDAO).getExploratorySchedulerDataWithStatus(STOPPED); + verify(exploratoryService).start(refEq(getUserInfo()), eq(EXPLORATORY_NAME), eq(PROJECT), eq(AUDIT_MESSAGE)); + verifyNoMoreInteractions(securityService, schedulerJobDAO, exploratoryService); + verify(exploratoryService).start(refEq(getUserInfo()), eq(EXPLORATORY_NAME), eq(PROJECT), eq(AUDIT_MESSAGE)); + verifyNoMoreInteractions(schedulerJobDAO, exploratoryService); + verifyZeroInteractions(computationalService, computationalDAO); + } @Test public void testStartExploratoryBySchedulerWithSyncComputationalStart() { @@ -740,10 +740,10 @@ public class SchedulerJobServiceImplTest { verify(securityService, times(2)).getServiceAccountInfo(USER); verify(schedulerJobDAO).getExploratorySchedulerDataWithStatus(STOPPED); - verify(exploratoryService).start(refEq(getUserInfo()), eq(EXPLORATORY_NAME), eq(PROJECT), eq(Collections.singletonList(AUDIT_MESSAGE))); + verify(exploratoryService).start(refEq(getUserInfo()), eq(EXPLORATORY_NAME), eq(PROJECT), eq(AUDIT_MESSAGE)); verify(computationalDAO).findComputationalResourcesWithStatus(USER, PROJECT, EXPLORATORY_NAME, STOPPED); verify(computationalService).startSparkCluster(refEq(getUserInfo()), eq(EXPLORATORY_NAME), eq(COMPUTATIONAL_NAME), - eq(PROJECT), eq(Collections.singletonList(AUDIT_MESSAGE))); + eq(PROJECT), eq(AUDIT_MESSAGE)); verifyNoMoreInteractions(securityService, schedulerJobDAO, exploratoryService, computationalService, computationalDAO); } @@ -757,21 +757,21 @@ public class SchedulerJobServiceImplTest { Arrays.asList(DayOfWeek.values()), stopDays, LocalDateTime.of(LocalDate.now(), LocalTime.now().truncatedTo(ChronoUnit.MINUTES)), true, USER, LocalTime.now().truncatedTo(ChronoUnit.MINUTES) - ))); - when(securityService.getServiceAccountInfo(anyString())).thenReturn(getUserInfo()); - when(computationalDAO.findComputationalResourcesWithStatus(anyString(), anyString(), - anyString(), any(UserInstanceStatus.class))).thenReturn(singletonList(getComputationalResource( - DataEngineType.CLOUD_SERVICE, true))); + ))); + when(securityService.getServiceAccountInfo(anyString())).thenReturn(getUserInfo()); + when(computationalDAO.findComputationalResourcesWithStatus(anyString(), anyString(), + anyString(), any(UserInstanceStatus.class))).thenReturn(singletonList(getComputationalResource( + DataEngineType.CLOUD_SERVICE, true))); - schedulerJobService.startExploratoryByScheduler(); + schedulerJobService.startExploratoryByScheduler(); - verify(securityService).getServiceAccountInfo(USER); - verify(schedulerJobDAO).getExploratorySchedulerDataWithStatus(STOPPED); - verify(exploratoryService).start(refEq(getUserInfo()), eq(EXPLORATORY_NAME), eq(PROJECT), eq(Collections.singletonList(AUDIT_MESSAGE))); - verify(computationalDAO).findComputationalResourcesWithStatus(USER, PROJECT, EXPLORATORY_NAME, STOPPED); - verifyNoMoreInteractions(securityService, schedulerJobDAO, exploratoryService, computationalDAO); - verifyZeroInteractions(computationalService); - } + verify(securityService).getServiceAccountInfo(USER); + verify(schedulerJobDAO).getExploratorySchedulerDataWithStatus(STOPPED); + verify(exploratoryService).start(refEq(getUserInfo()), eq(EXPLORATORY_NAME), eq(PROJECT), eq(AUDIT_MESSAGE)); + verify(computationalDAO).findComputationalResourcesWithStatus(USER, PROJECT, EXPLORATORY_NAME, STOPPED); + verifyNoMoreInteractions(securityService, schedulerJobDAO, exploratoryService, computationalDAO); + verifyZeroInteractions(computationalService); + } @Test public void testStartExploratoryBySchedulerWithSyncComputationalStartOnExploratoryButNotOnComputational() { @@ -782,21 +782,21 @@ public class SchedulerJobServiceImplTest { Arrays.asList(DayOfWeek.values()), stopDays, LocalDateTime.of(LocalDate.now(), LocalTime.now().truncatedTo(ChronoUnit.MINUTES)), true, USER, LocalTime.now().truncatedTo(ChronoUnit.MINUTES) - ))); - when(securityService.getServiceAccountInfo(anyString())).thenReturn(getUserInfo()); - when(computationalDAO.findComputationalResourcesWithStatus(anyString(), anyString(), - anyString(), any(UserInstanceStatus.class))).thenReturn(singletonList(getComputationalResource( - DataEngineType.SPARK_STANDALONE, false))); + ))); + when(securityService.getServiceAccountInfo(anyString())).thenReturn(getUserInfo()); + when(computationalDAO.findComputationalResourcesWithStatus(anyString(), anyString(), + anyString(), any(UserInstanceStatus.class))).thenReturn(singletonList(getComputationalResource( + DataEngineType.SPARK_STANDALONE, false))); - schedulerJobService.startExploratoryByScheduler(); + schedulerJobService.startExploratoryByScheduler(); - verify(securityService).getServiceAccountInfo(USER); - verify(schedulerJobDAO).getExploratorySchedulerDataWithStatus(STOPPED); - verify(exploratoryService).start(refEq(getUserInfo()), eq(EXPLORATORY_NAME), eq(PROJECT), eq(Collections.singletonList(AUDIT_MESSAGE))); - verify(computationalDAO).findComputationalResourcesWithStatus(USER, PROJECT, EXPLORATORY_NAME, STOPPED); - verifyNoMoreInteractions(securityService, schedulerJobDAO, exploratoryService, computationalDAO); - verifyZeroInteractions(computationalService); - } + verify(securityService).getServiceAccountInfo(USER); + verify(schedulerJobDAO).getExploratorySchedulerDataWithStatus(STOPPED); + verify(exploratoryService).start(refEq(getUserInfo()), eq(EXPLORATORY_NAME), eq(PROJECT), eq(AUDIT_MESSAGE)); + verify(computationalDAO).findComputationalResourcesWithStatus(USER, PROJECT, EXPLORATORY_NAME, STOPPED); + verifyNoMoreInteractions(securityService, schedulerJobDAO, exploratoryService, computationalDAO); + verifyZeroInteractions(computationalService); + } @Test public void testStartExploratoryBySchedulerWhenSchedulerIsNotConfigured() { @@ -886,7 +886,7 @@ public class SchedulerJobServiceImplTest { verify(schedulerJobDAO) .getComputationalSchedulerDataWithOneOfStatus(RUNNING, STOPPED, RUNNING); verify(computationalService).terminateComputational(refEq(userInfo), eq(userInfo.getName()), eq(PROJECT), eq(EXPLORATORY_NAME), eq(COMPUTATIONAL_NAME), - eq(Collections.singletonList(AUDIT_MESSAGE))); + eq(AUDIT_MESSAGE)); verifyNoMoreInteractions(securityService, schedulerJobDAO, computationalService); } @@ -968,19 +968,19 @@ public class SchedulerJobServiceImplTest { final LocalDateTime terminateDateTime = LocalDateTime.of(LocalDate.now(), LocalTime.now().truncatedTo(ChronoUnit.MINUTES)); final LocalDate finishDate = LocalDate.now().plusDays(1); - final SchedulerJobData schedulerJobData = getSchedulerJobData(LocalDate.now(), finishDate, startDays, stopDays - , terminateDateTime, false, USER, LocalTime.now().truncatedTo(ChronoUnit.MINUTES) - ); - when(schedulerJobDAO.getExploratorySchedulerDataWithOneOfStatus(anyVararg())).thenReturn(singletonList(schedulerJobData)); - when(securityService.getUserInfoOffline(anyString())).thenReturn(getUserInfo()); + final SchedulerJobData schedulerJobData = getSchedulerJobData(LocalDate.now(), finishDate, startDays, stopDays + , terminateDateTime, false, USER, LocalTime.now().truncatedTo(ChronoUnit.MINUTES) + ); + when(schedulerJobDAO.getExploratorySchedulerDataWithOneOfStatus(anyVararg())).thenReturn(singletonList(schedulerJobData)); + when(securityService.getUserInfoOffline(anyString())).thenReturn(getUserInfo()); - schedulerJobService.terminateExploratoryByScheduler(); + schedulerJobService.terminateExploratoryByScheduler(); - verify(securityService).getUserInfoOffline(USER); - verify(schedulerJobDAO).getExploratorySchedulerDataWithOneOfStatus(RUNNING, STOPPED); - verify(exploratoryService).terminate(refEq(getUserInfo()), eq(USER), eq(PROJECT), eq(EXPLORATORY_NAME), eq(Collections.singletonList(AUDIT_MESSAGE))); - verifyNoMoreInteractions(securityService, schedulerJobDAO, computationalService, exploratoryService); - } + verify(securityService).getUserInfoOffline(USER); + verify(schedulerJobDAO).getExploratorySchedulerDataWithOneOfStatus(RUNNING, STOPPED); + verify(exploratoryService).terminate(refEq(getUserInfo()), eq(USER), eq(PROJECT), eq(EXPLORATORY_NAME), eq(AUDIT_MESSAGE)); + verifyNoMoreInteractions(securityService, schedulerJobDAO, computationalService, exploratoryService); + } @Test public void testTerminateExploratoryBySchedulerWhenSchedulerIsNotConfigured() { --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@dlab.apache.org For additional commands, e-mail: commits-h...@dlab.apache.org