This is an automated email from the ASF dual-hosted git repository. bhliva pushed a commit to branch DLAB-927 in repository https://gitbox.apache.org/repos/asf/incubator-dlab.git
The following commit(s) were added to refs/heads/DLAB-927 by this push: new d850ed0 DLAB-927 added possibility to use multiple endpoints per project d850ed0 is described below commit d850ed06fd7a5f1c7f802bcf0b04d92237499b4c Author: bhliva <bohdan_hl...@epam.com> AuthorDate: Mon Sep 16 11:00:32 2019 +0300 DLAB-927 added possibility to use multiple endpoints per project --- .../epam/dlab/backendapi/dao/EndpointDAOImpl.java | 4 +- .../epam/dlab/backendapi/dao/ExploratoryDAO.java | 3 +- .../com/epam/dlab/backendapi/dao/ProjectDAO.java | 4 +- .../epam/dlab/backendapi/dao/ProjectDAOImpl.java | 7 ++-- .../dlab/backendapi/resources/ProjectResource.java | 13 +++--- .../resources/callback/ProjectCallback.java | 6 +-- .../backendapi/service/ExploratoryService.java | 3 +- .../dlab/backendapi/service/ProjectService.java | 4 +- .../service/impl/EnvironmentServiceImpl.java | 20 +++++---- .../service/impl/ExploratoryServiceImpl.java | 16 +++---- .../service/impl/ProjectServiceImpl.java | 49 ++++++++++++++-------- .../service/impl/ComputationalServiceImplTest.java | 35 ++++++++++++---- .../service/impl/EdgeServiceImplTest.java | 2 +- .../service/impl/ExploratoryServiceImplTest.java | 24 ++++++++--- .../service/impl/GitCredentialServiceImplTest.java | 12 +++++- .../InfrastructureTemplateServiceBaseTest.java | 37 ++++++++++------ .../service/impl/LibraryServiceImplTest.java | 24 +++++++++-- 17 files changed, 178 insertions(+), 85 deletions(-) diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/EndpointDAOImpl.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/EndpointDAOImpl.java index 413d06d..a614773 100644 --- a/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/EndpointDAOImpl.java +++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/EndpointDAOImpl.java @@ -6,7 +6,7 @@ import org.bson.conversions.Bson; import java.util.List; import java.util.Optional; -import static com.mongodb.client.model.Filters.regex; +import static com.mongodb.client.model.Filters.eq; public class EndpointDAOImpl extends BaseDAO implements EndpointDAO { @@ -33,6 +33,6 @@ public class EndpointDAOImpl extends BaseDAO implements EndpointDAO { } private Bson endpointCondition(String name) { - return regex("name", "^" + name, "i"); + return eq("name", name); } } diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/ExploratoryDAO.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/ExploratoryDAO.java index bda1d6a..ca11b9d 100644 --- a/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/ExploratoryDAO.java +++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/ExploratoryDAO.java @@ -204,12 +204,13 @@ public class ExploratoryDAO extends BaseDAO { false); } - public List<UserInstanceDTO> fetchProjectExploratoriesWhereStatusNotIn(String project, + public List<UserInstanceDTO> fetchProjectExploratoriesWhereStatusNotIn(String project, String endpoint, UserInstanceStatus... statuses) { final List<String> statusList = statusList(statuses); return getUserInstances( and( eq(PROJECT, project), + eq("endpoint", endpoint), not(in(STATUS, statusList)) ), false); diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/ProjectDAO.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/ProjectDAO.java index 1bc806e..0a2216a 100644 --- a/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/ProjectDAO.java +++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/ProjectDAO.java @@ -2,7 +2,6 @@ package com.epam.dlab.backendapi.dao; import com.epam.dlab.auth.UserInfo; import com.epam.dlab.backendapi.domain.ProjectDTO; -import com.epam.dlab.backendapi.domain.UpdateProjectDTO; import com.epam.dlab.dto.UserInstanceStatus; import com.epam.dlab.dto.base.edge.EdgeInfo; @@ -20,13 +19,14 @@ public interface ProjectDAO { void create(ProjectDTO projectDTO); void updateStatus(String projectName, ProjectDTO.Status status); + void updateEdgeStatus(String projectName, String endpoint, UserInstanceStatus status); void updateEdgeInfo(String projectName, String endpointName, EdgeInfo edgeInfo); Optional<ProjectDTO> get(String name); - boolean update(UpdateProjectDTO projectDTO); + boolean update(ProjectDTO projectDTO); void remove(String name); diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/ProjectDAOImpl.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/ProjectDAOImpl.java index 7da6e15..bc9db38 100644 --- a/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/ProjectDAOImpl.java +++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/dao/ProjectDAOImpl.java @@ -2,7 +2,6 @@ package com.epam.dlab.backendapi.dao; import com.epam.dlab.auth.UserInfo; import com.epam.dlab.backendapi.domain.ProjectDTO; -import com.epam.dlab.backendapi.domain.UpdateProjectDTO; import com.epam.dlab.dto.UserInstanceStatus; import com.epam.dlab.dto.base.edge.EdgeInfo; import com.google.common.collect.Iterables; @@ -16,6 +15,7 @@ import java.util.Collections; import java.util.List; import java.util.Optional; import java.util.Set; +import java.util.stream.Collectors; import static com.mongodb.client.model.Filters.*; @@ -86,10 +86,11 @@ public class ProjectDAOImpl extends BaseDAO implements ProjectDAO { } @Override - public boolean update(UpdateProjectDTO projectDTO) { + public boolean update(ProjectDTO projectDTO) { BasicDBObject updateProject = new BasicDBObject(); updateProject.put(GROUPS, projectDTO.getGroups()); - updateProject.put(ENDPOINTS, projectDTO.getEndpoints()); + updateProject.put(ENDPOINTS, + projectDTO.getEndpoints().stream().map(this::convertToBson).collect(Collectors.toList())); return updateOne(PROJECTS_COLLECTION, projectCondition(projectDTO.getName()), new Document(SET, updateProject)).getMatchedCount() > 0L; } diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/ProjectResource.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/ProjectResource.java index 1df46d9..59251c6 100644 --- a/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/ProjectResource.java +++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/ProjectResource.java @@ -174,7 +174,7 @@ public class ProjectResource { @PUT @RolesAllowed("/api/project") public Response updateProject(@Parameter(hidden = true) @Auth UserInfo userInfo, UpdateProjectDTO projectDTO) { - projectService.update(projectDTO); + projectService.update(userInfo, projectDTO); return Response.ok().build(); } @@ -185,14 +185,13 @@ public class ProjectResource { content = @Content(mediaType = MediaType.APPLICATION_JSON, schema = @Schema(implementation = ErrorDTO.class))) }) - @DELETE - @Path("{name}") + @POST + @Path("terminate") @RolesAllowed("/api/project") - public Response removeProject( + public Response removeProjectEndpoint( @Parameter(hidden = true) @Auth UserInfo userInfo, - @Parameter(description = "Project name") - @PathParam("name") String name) { - projectService.terminate(userInfo, name); + ProjectActionFormDTO projectActionDTO) { + projectService.terminateEndpoint(userInfo, projectActionDTO.getEndpoint(), projectActionDTO.getProjectName()); return Response.ok().build(); } diff --git a/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/callback/ProjectCallback.java b/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/callback/ProjectCallback.java index b349f08..e5e9f93 100644 --- a/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/callback/ProjectCallback.java +++ b/services/self-service/src/main/java/com/epam/dlab/backendapi/resources/callback/ProjectCallback.java @@ -42,15 +42,15 @@ public class ProjectCallback { if (UserInstanceStatus.RUNNING == status && Objects.nonNull(projectResult.getEdgeInfo())) { projectDAO.updateEdgeInfo(projectName, projectResult.getEndpointName(), projectResult.getEdgeInfo()); } else { - updateExploratoriesStatusIfNeeded(status, projectResult.getProjectName()); + updateExploratoriesStatusIfNeeded(status, projectResult.getProjectName(), projectResult.getEndpointName()); projectDAO.updateEdgeStatus(projectName, projectResult.getEndpointName(), status); } return Response.ok().build(); } - private void updateExploratoriesStatusIfNeeded(UserInstanceStatus status, String projectName) { + private void updateExploratoriesStatusIfNeeded(UserInstanceStatus status, String projectName, String endpoint) { if (UserInstanceStatus.TERMINATED == status) { - exploratoryService.updateProjectExploratoryStatuses(projectName, UserInstanceStatus.TERMINATED); + exploratoryService.updateProjectExploratoryStatuses(projectName, endpoint, UserInstanceStatus.TERMINATED); } } } 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 2dec798..76956c6 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 @@ -40,7 +40,8 @@ public interface ExploratoryService { String create(UserInfo userInfo, Exploratory exploratory, String project); void updateExploratoryStatuses(String user, UserInstanceStatus status); - void updateProjectExploratoryStatuses(String project, UserInstanceStatus status); + + void updateProjectExploratoryStatuses(String project, String endpoint, UserInstanceStatus status); void updateExploratoriesReuploadKeyFlag(String user, boolean reuploadKeyRequired, UserInstanceStatus... exploratoryStatuses); 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 c2b407b..50eaede 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 @@ -17,13 +17,13 @@ public interface ProjectService { ProjectDTO get(String name); - void terminate(UserInfo userInfo, String name); + void terminateEndpoint(UserInfo userInfo, String endpoint, String name); void start(UserInfo userInfo, String endpoint, String name); void stop(UserInfo userInfo, String endpoint, String name); - void update(UpdateProjectDTO projectDTO); + void update(UserInfo userInfo, UpdateProjectDTO projectDTO); void updateBudget(String project, Integer budget); 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 2e101d8..700c4ee 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 @@ -37,7 +37,10 @@ import com.google.inject.Inject; import com.google.inject.Singleton; import lombok.extern.slf4j.Slf4j; -import java.util.*; +import java.util.Arrays; +import java.util.Collection; +import java.util.List; +import java.util.Set; import java.util.stream.Stream; import static com.epam.dlab.backendapi.resources.dto.UserDTO.Status.ACTIVE; @@ -223,19 +226,18 @@ public class EnvironmentServiceImpl implements EnvironmentService { private List<UserResourceInfo> getProjectEnv(ProjectDTO projectDTO, List<UserInstanceDTO> allInstances) { final Stream<UserResourceInfo> userResources = allInstances.stream() .filter(instance -> instance.getProject().equals(projectDTO.getName())).map(this::toUserResourceInfo); - /*if (projectDTO.getEndpointEdgeInfo() != null) { - final Stream<UserResourceInfo> edges = projectDTO.getEndpointEdgeInfo().values() + if (projectDTO.getEndpoints() != null) { + final Stream<UserResourceInfo> edges = projectDTO.getEndpoints() .stream() - .map(ei -> new UserResourceInfo().withResourceType(ResourceEnum.EDGE_NODE) - .withResourceStatus(ProjectDTO.Status.from(projectDTO.getStatus()).toString()) + .map(e -> new UserResourceInfo().withResourceType(ResourceEnum.EDGE_NODE) + .withResourceStatus(e.getStatus().toString()) .withProject(projectDTO.getName()) - .withIp(ei.getPublicIp())); - return Stream.concat(Stream.of(edgeResource), userResources) + .withIp(e.getEdgeInfo() != null ? e.getEdgeInfo().getIp() : null)); + return Stream.concat(edges, userResources) .collect(toList()); } else { return userResources.collect(toList()); - }*/ - return Collections.emptyList(); + } } private UserResourceInfo toUserResourceInfo(UserInstanceDTO userInstance) { 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 1fb1a9e..9c5594b 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 @@ -132,8 +132,8 @@ public class ExploratoryServiceImpl implements ExploratoryService { } @Override - public void updateProjectExploratoryStatuses(String project, UserInstanceStatus status) { - exploratoryDAO.fetchProjectExploratoriesWhereStatusNotIn(project, TERMINATED, FAILED) + public void updateProjectExploratoryStatuses(String project, String endpoint, UserInstanceStatus status) { + exploratoryDAO.fetchProjectExploratoriesWhereStatusNotIn(project, endpoint, TERMINATED, FAILED) .forEach(ui -> updateExploratoryStatus(ui.getExploratoryName(), status, ui.getUser())); } @@ -175,8 +175,9 @@ public class ExploratoryServiceImpl implements ExploratoryService { exploratoryName); final ExploratoryReconfigureSparkClusterActionDTO updateClusterConfigDTO = requestBuilder.newClusterConfigUpdate(userInfo, userInstanceDTO, config); - final String uuid = provisioningService.post(endpointService.get(userInstanceDTO.getEndpoint()).getUrl() + EXPLORATORY_RECONFIGURE_SPARK, token, updateClusterConfigDTO, - String.class); + final String uuid = + provisioningService.post(endpointService.get(userInstanceDTO.getEndpoint()).getUrl() + EXPLORATORY_RECONFIGURE_SPARK, token, updateClusterConfigDTO, + String.class); requestId.put(userName, uuid); exploratoryDAO.updateExploratoryFields(new ExploratoryStatusDTO() .withUser(userName) @@ -240,9 +241,10 @@ public class ExploratoryServiceImpl implements ExploratoryService { updateExploratoryStatus(exploratoryName, status, userInfo.getName()); UserInstanceDTO userInstance = exploratoryDAO.fetchExploratoryFields(userInfo.getName(), exploratoryName); - final String uuid = provisioningService.post(endpointService.get(userInstance.getEndpoint()).getUrl() + action, - userInfo.getAccessToken(), - getExploratoryActionDto(userInfo, status, userInstance), String.class); + final String uuid = + provisioningService.post(endpointService.get(userInstance.getEndpoint()).getUrl() + action, + userInfo.getAccessToken(), + getExploratoryActionDto(userInfo, status, userInstance), String.class); requestId.put(userInfo.getName(), uuid); return uuid; } catch (Exception t) { 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 ac6c63d..d9496cc 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 @@ -6,6 +6,7 @@ import com.epam.dlab.backendapi.annotation.Project; import com.epam.dlab.backendapi.dao.ProjectDAO; import com.epam.dlab.backendapi.dao.UserGroupDao; import com.epam.dlab.backendapi.domain.ProjectDTO; +import com.epam.dlab.backendapi.domain.ProjectEndpointDTO; import com.epam.dlab.backendapi.domain.RequestId; import com.epam.dlab.backendapi.domain.UpdateProjectDTO; import com.epam.dlab.backendapi.service.EndpointService; @@ -21,9 +22,11 @@ import com.google.inject.Inject; import com.google.inject.name.Named; import lombok.extern.slf4j.Slf4j; +import java.util.HashSet; import java.util.List; import java.util.Set; import java.util.function.Supplier; +import java.util.stream.Collectors; import static java.util.stream.Collectors.toSet; import static java.util.stream.Stream.concat; @@ -92,13 +95,10 @@ public class ProjectServiceImpl implements ProjectService { } @Override - public void terminate(UserInfo userInfo, String name) { - get(name).getEndpoints().forEach(endpoint -> projectActionOnCloud(userInfo, name, TERMINATE_PRJ_API, - endpoint.getName())); - - exploratoryService.updateProjectExploratoryStatuses(name, UserInstanceStatus.TERMINATING); - projectDAO.updateStatus(name, ProjectDTO.Status.DELETING); - + public void terminateEndpoint(UserInfo userInfo, String endpoint, String name) { + projectActionOnCloud(userInfo, name, TERMINATE_PRJ_API, endpoint); + projectDAO.updateEdgeStatus(name, endpoint, UserInstanceStatus.TERMINATING); + exploratoryService.updateProjectExploratoryStatuses(name, endpoint, UserInstanceStatus.TERMINATING); } @BudgetLimited @@ -115,10 +115,20 @@ public class ProjectServiceImpl implements ProjectService { } @Override - public void update(UpdateProjectDTO projectDTO) { - if (!projectDAO.update(projectDTO)) { - throw projectNotFound().get(); - } + public void update(UserInfo userInfo, UpdateProjectDTO projectDTO) { + final ProjectDTO project = projectDAO.get(projectDTO.getName()).orElseThrow(projectNotFound()); + final Set<String> endpoints = project.getEndpoints() + .stream() + .map(ProjectEndpointDTO::getName) + .collect(toSet()); + final HashSet<String> newEndpoints = new HashSet<>(projectDTO.getEndpoints()); + newEndpoints.removeAll(endpoints); + final List<ProjectEndpointDTO> endpointsToBeCreated = newEndpoints.stream() + .map(e -> new ProjectEndpointDTO(e, UserInstanceStatus.CREATING, null)) + .collect(Collectors.toList()); + project.getEndpoints().addAll(endpointsToBeCreated); + projectDAO.update(project); + endpointsToBeCreated.forEach(e -> createEndpoint(userInfo, project, e.getName())); } @Override @@ -141,19 +151,22 @@ public class ProjectServiceImpl implements ProjectService { private void createProjectOnCloud(UserInfo user, ProjectDTO projectDTO) { try { - projectDTO.getEndpoints().forEach(endpoint -> { - String uuid = - provisioningService.post(endpointService.get(endpoint.getName()).getUrl() + CREATE_PRJ_API, - user.getAccessToken(), - requestBuilder.newProjectCreate(user, projectDTO, endpoint.getName()), String.class); - requestId.put(user.getName(), uuid); - }); + projectDTO.getEndpoints().forEach(endpoint -> createEndpoint(user, projectDTO, + endpoint.getName())); } catch (Exception e) { log.error("Can not create project due to: {}", e.getMessage()); projectDAO.updateStatus(projectDTO.getName(), ProjectDTO.Status.FAILED); } } + private void createEndpoint(UserInfo user, ProjectDTO projectDTO, String endpointName) { + String uuid = + provisioningService.post(endpointService.get(endpointName).getUrl() + CREATE_PRJ_API, + user.getAccessToken(), + requestBuilder.newProjectCreate(user, projectDTO, endpointName), String.class); + requestId.put(user.getName(), uuid); + } + private void projectActionOnCloud(UserInfo user, String projectName, String provisioningApiUri, String endpoint) { try { 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 78e8459..376b458 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 @@ -23,9 +23,11 @@ import com.epam.dlab.auth.UserInfo; import com.epam.dlab.backendapi.SelfServiceApplicationConfiguration; import com.epam.dlab.backendapi.dao.ComputationalDAO; import com.epam.dlab.backendapi.dao.ExploratoryDAO; +import com.epam.dlab.backendapi.domain.EndpointDTO; import com.epam.dlab.backendapi.domain.RequestId; import com.epam.dlab.backendapi.resources.dto.ComputationalCreateFormDTO; import com.epam.dlab.backendapi.resources.dto.SparkStandaloneClusterCreateForm; +import com.epam.dlab.backendapi.service.EndpointService; import com.epam.dlab.backendapi.service.TagService; import com.epam.dlab.backendapi.util.RequestBuilder; import com.epam.dlab.dto.SchedulerJobDTO; @@ -99,6 +101,8 @@ public class ComputationalServiceImplTest { private RequestId requestId; @Mock private TagService tagService; + @Mock + private EndpointService endpointService; @InjectMocks private ComputationalServiceImpl computationalService; @@ -121,6 +125,7 @@ public class ComputationalServiceImplTest { @Test public void createSparkCluster() { + when(endpointService.get(anyString())).thenReturn(endpointDTO()); when(computationalDAO.addComputational(anyString(), anyString(), any(SparkStandaloneClusterResource.class))).thenReturn(true); when(exploratoryDAO.fetchExploratoryFields(anyString(), anyString())).thenReturn(userInstance); @@ -144,12 +149,12 @@ public class ComputationalServiceImplTest { refEq(userInfo), refEq(userInstance), refEq(sparkClusterCreateForm)); verify(provisioningService) - .post(ComputationalAPI.COMPUTATIONAL_CREATE_SPARK, TOKEN, compBaseMocked, String.class); + .post(endpointDTO().getUrl() + ComputationalAPI.COMPUTATIONAL_CREATE_SPARK, TOKEN, compBaseMocked, + String.class); verify(requestId).put(USER, UUID); verifyNoMoreInteractions(configuration, computationalDAO, requestBuilder, provisioningService, requestId); } - @Test public void createSparkClusterWhenResourceAlreadyExists() { when(computationalDAO.addComputational(anyString(), anyString(), @@ -218,6 +223,7 @@ public class ComputationalServiceImplTest { @Test public void terminateComputationalEnvironment() { + when(endpointService.get(anyString())).thenReturn(endpointDTO()); when(computationalDAO.updateComputationalStatus(any(ComputationalStatusDTO.class))) .thenReturn(mock(UpdateResult.class)); String explId = "explId"; @@ -248,7 +254,7 @@ public class ComputationalServiceImplTest { verify(requestBuilder).newComputationalTerminate(userInfo, EXPLORATORY_NAME, explId, COMP_NAME, compId, DataEngineType.CLOUD_SERVICE, null); - verify(provisioningService).post(ComputationalAPI.COMPUTATIONAL_TERMINATE_CLOUD_SPECIFIC, TOKEN, ctDto, + verify(provisioningService).post(endpointDTO().getUrl() + ComputationalAPI.COMPUTATIONAL_TERMINATE_CLOUD_SPECIFIC, TOKEN, ctDto, String.class); verify(requestId).put(USER, UUID); @@ -341,6 +347,7 @@ public class ComputationalServiceImplTest { @Test public void createDataEngineService() { + when(endpointService.get(anyString())).thenReturn(endpointDTO()); when(computationalDAO.addComputational(anyString(), anyString(), any(UserComputationalResource.class))) .thenReturn(true); when(exploratoryDAO.fetchExploratoryFields(anyString(), anyString())).thenReturn(userInstance); @@ -364,7 +371,8 @@ public class ComputationalServiceImplTest { refEq(userInfo), refEq(userInstance), any(ComputationalCreateFormDTO.class)); verify(provisioningService) - .post(ComputationalAPI.COMPUTATIONAL_CREATE_CLOUD_SPECIFIC, TOKEN, compBaseMocked, String.class); + .post(endpointDTO().getUrl() + ComputationalAPI.COMPUTATIONAL_CREATE_CLOUD_SPECIFIC, TOKEN, + compBaseMocked, String.class); verify(requestId).put(USER, UUID); verifyNoMoreInteractions(computationalDAO, exploratoryDAO, requestBuilder, provisioningService, requestId); @@ -412,6 +420,7 @@ public class ComputationalServiceImplTest { @Test public void createDataEngineServiceWhenMethodNewComputationalCreateThrowsException() { + when(endpointService.get(anyString())).thenReturn(endpointDTO()); when(computationalDAO.addComputational(anyString(), anyString(), any(UserComputationalResource.class))) .thenReturn(true); when(exploratoryDAO.fetchExploratoryFields(anyString(), anyString())).thenReturn(userInstance); @@ -444,6 +453,7 @@ public class ComputationalServiceImplTest { public void stopSparkCluster() { final UserInstanceDTO exploratory = getUserInstanceDto(); exploratory.setResources(singletonList(getUserComputationalResource(RUNNING, DOCKER_DLAB_DATAENGINE))); + when(endpointService.get(anyString())).thenReturn(endpointDTO()); when(exploratoryDAO.fetchExploratoryFields(anyString(), anyString(), anyBoolean())).thenReturn(exploratory); when(computationalDAO.updateComputationalStatus(any(ComputationalStatusDTO.class))) .thenReturn(mock(UpdateResult.class)); @@ -461,7 +471,8 @@ public class ComputationalServiceImplTest { verify(exploratoryDAO).fetchExploratoryFields(USER, EXPLORATORY_NAME, true); verify(requestBuilder).newComputationalStop(refEq(userInfo), refEq(exploratory), eq(COMP_NAME)); verify(provisioningService) - .post(eq("computational/stop/spark"), eq(TOKEN), refEq(computationalStopDTO), eq(String.class)); + .post(eq(endpointDTO().getUrl() + "computational/stop/spark"), eq(TOKEN), refEq(computationalStopDTO), + eq(String.class)); verify(requestId).put(USER, "someUuid"); verifyNoMoreInteractions(computationalDAO, exploratoryDAO, requestBuilder, provisioningService, requestId); @@ -480,6 +491,7 @@ public class ComputationalServiceImplTest { @Test public void startSparkCluster() { + when(endpointService.get(anyString())).thenReturn(endpointDTO()); final UserInstanceDTO exploratory = getUserInstanceDto(); exploratory.setResources(singletonList(getUserComputationalResource(STOPPED, DOCKER_DLAB_DATAENGINE))); when(exploratoryDAO.fetchExploratoryFields(anyString(), anyString(), anyBoolean())).thenReturn(exploratory); @@ -499,7 +511,9 @@ public class ComputationalServiceImplTest { verify(exploratoryDAO).fetchExploratoryFields(USER, EXPLORATORY_NAME, true); verify(requestBuilder).newComputationalStart(refEq(userInfo), refEq(exploratory), eq(COMP_NAME)); verify(provisioningService) - .post(eq("computational/start/spark"), eq(TOKEN), refEq(computationalStartDTO), eq(String.class)); + .post(eq(endpointDTO().getUrl() + "computational/start/spark"), eq(TOKEN), + refEq(computationalStartDTO), + eq(String.class)); verify(requestId).put(USER, "someUuid"); verifyNoMoreInteractions(computationalDAO, exploratoryDAO, requestBuilder, provisioningService, requestId); @@ -562,6 +576,7 @@ public class ComputationalServiceImplTest { @Test public void testUpdateSparkClusterConfig() { + when(endpointService.get(anyString())).thenReturn(endpointDTO()); final ComputationalClusterConfigDTO clusterConfigDTO = new ComputationalClusterConfigDTO(); final UserInstanceDTO userInstanceDto = getUserInstanceDto(); final List<ClusterConfig> config = Collections.singletonList(new ClusterConfig()); @@ -585,7 +600,8 @@ public class ComputationalServiceImplTest { .withExploratoryName(EXPLORATORY_NAME) .withComputationalName(COMP_NAME) .withStatus(UserInstanceStatus.RECONFIGURING.toString()), "self")); - verify(provisioningService).post(eq("computational/spark/reconfigure"), eq(getUserInfo().getAccessToken()), + verify(provisioningService).post(eq(endpointDTO().getUrl() + "computational/spark/reconfigure"), + eq(getUserInfo().getAccessToken()), refEq(new ComputationalClusterConfigDTO()), eq(String.class)); } @@ -702,6 +718,11 @@ public class ComputationalServiceImplTest { .build(); } + private EndpointDTO endpointDTO() { + return new EndpointDTO("test", "url", "", null); + } + + private UserComputationalResource getUserComputationalResource(UserInstanceStatus status, String imageName) { UserComputationalResource ucResource = new UserComputationalResource(); ucResource.setComputationalName(COMP_NAME); diff --git a/services/self-service/src/test/java/com/epam/dlab/backendapi/service/impl/EdgeServiceImplTest.java b/services/self-service/src/test/java/com/epam/dlab/backendapi/service/impl/EdgeServiceImplTest.java index 09784eb..6e47ca1 100644 --- a/services/self-service/src/test/java/com/epam/dlab/backendapi/service/impl/EdgeServiceImplTest.java +++ b/services/self-service/src/test/java/com/epam/dlab/backendapi/service/impl/EdgeServiceImplTest.java @@ -216,7 +216,7 @@ public class EdgeServiceImplTest { try { edgeService.terminate(userInfo); } catch (DlabException e) { - assertEquals("Could not terminate EDGE node: Could not infrastructure/edge/terminate EDGE node : " + + assertEquals("Could not terminate EDGE node: " + "Cannot create instance of resource class ", e.getMessage()); } verify(keyDAO).getEdgeStatus(USER); diff --git a/services/self-service/src/test/java/com/epam/dlab/backendapi/service/impl/ExploratoryServiceImplTest.java b/services/self-service/src/test/java/com/epam/dlab/backendapi/service/impl/ExploratoryServiceImplTest.java index 6a4e771..aa02ccd 100644 --- a/services/self-service/src/test/java/com/epam/dlab/backendapi/service/impl/ExploratoryServiceImplTest.java +++ b/services/self-service/src/test/java/com/epam/dlab/backendapi/service/impl/ExploratoryServiceImplTest.java @@ -23,7 +23,9 @@ import com.epam.dlab.auth.UserInfo; import com.epam.dlab.backendapi.dao.ComputationalDAO; import com.epam.dlab.backendapi.dao.ExploratoryDAO; import com.epam.dlab.backendapi.dao.GitCredsDAO; +import com.epam.dlab.backendapi.domain.EndpointDTO; import com.epam.dlab.backendapi.domain.RequestId; +import com.epam.dlab.backendapi.service.EndpointService; import com.epam.dlab.backendapi.service.TagService; import com.epam.dlab.backendapi.util.RequestBuilder; import com.epam.dlab.dto.StatusEnvBaseDTO; @@ -81,6 +83,8 @@ public class ExploratoryServiceImplTest { private RequestId requestId; @Mock private TagService tagService; + @Mock + private EndpointService endpointService; @InjectMocks private ExploratoryServiceImpl exploratoryService; @@ -96,6 +100,7 @@ public class ExploratoryServiceImplTest { @Test public void start() { + when(endpointService.get(anyString())).thenReturn(endpointDTO()); when(exploratoryDAO.updateExploratoryStatus(any(StatusEnvBaseDTO.class))).thenReturn(mock(UpdateResult.class)); when(exploratoryDAO.fetchExploratoryFields(anyString(), anyString())).thenReturn(userInstance); @@ -120,7 +125,7 @@ public class ExploratoryServiceImplTest { verify(exploratoryDAO).updateExploratoryStatus(refEq(statusEnvBaseDTO, "self")); verify(exploratoryDAO).fetchExploratoryFields(USER, EXPLORATORY_NAME); - verify(provisioningService).post(exploratoryStart, TOKEN, egcuDto, String.class); + verify(provisioningService).post(endpointDTO().getUrl() + exploratoryStart, TOKEN, egcuDto, String.class); verify(requestId).put(USER, UUID); verifyNoMoreInteractions(exploratoryDAO, provisioningService, requestId); } @@ -147,6 +152,7 @@ public class ExploratoryServiceImplTest { @Test public void stop() { + when(endpointService.get(anyString())).thenReturn(endpointDTO()); when(exploratoryDAO.updateExploratoryStatus(any(StatusEnvBaseDTO.class))).thenReturn(mock(UpdateResult.class)); when(computationalDAO.updateComputationalStatusesForExploratory(any(StatusEnvBaseDTO.class))).thenReturn(1); when(exploratoryDAO.fetchExploratoryFields(anyString(), anyString())).thenReturn(userInstance); @@ -168,7 +174,7 @@ public class ExploratoryServiceImplTest { verify(exploratoryDAO).updateExploratoryStatus(refEq(statusEnvBaseDTO, "self")); verify(exploratoryDAO).fetchExploratoryFields(USER, EXPLORATORY_NAME); - verify(provisioningService).post(exploratoryStop, TOKEN, eaDto, String.class); + verify(provisioningService).post(endpointDTO().getUrl() + exploratoryStop, TOKEN, eaDto, String.class); verify(computationalDAO).updateComputationalStatusesForExploratory(userInfo.getName(), EXPLORATORY_NAME, UserInstanceStatus.STOPPING, UserInstanceStatus.TERMINATING, UserInstanceStatus.FAILED, UserInstanceStatus.TERMINATED, UserInstanceStatus.STOPPED); @@ -198,6 +204,7 @@ public class ExploratoryServiceImplTest { @Test public void terminate() { + when(endpointService.get(anyString())).thenReturn(endpointDTO()); when(exploratoryDAO.updateExploratoryStatus(any(StatusEnvBaseDTO.class))).thenReturn(mock(UpdateResult.class)); when(computationalDAO.updateComputationalStatusesForExploratory(any(StatusEnvBaseDTO.class))).thenReturn(1); when(exploratoryDAO.fetchExploratoryFields(anyString(), anyString())).thenReturn(userInstance); @@ -223,7 +230,7 @@ public class ExploratoryServiceImplTest { .TERMINATING, UserInstanceStatus.TERMINATING, UserInstanceStatus.TERMINATED, UserInstanceStatus.FAILED); verify(requestBuilder).newExploratoryStop(userInfo, userInstance); - verify(provisioningService).post(exploratoryTerminate, TOKEN, eaDto, String.class); + verify(provisioningService).post(endpointDTO().getUrl() + exploratoryTerminate, TOKEN, eaDto, String.class); verify(requestId).put(USER, UUID); verifyNoMoreInteractions(exploratoryDAO, computationalDAO, requestBuilder, provisioningService, requestId); } @@ -250,6 +257,7 @@ public class ExploratoryServiceImplTest { @Test public void create() { + when(endpointService.get(anyString())).thenReturn(endpointDTO()); doNothing().when(exploratoryDAO).insertExploratory(any(UserInstanceDTO.class)); ExploratoryGitCredsDTO egcDto = new ExploratoryGitCredsDTO(); when(gitCredsDAO.findGitCreds(anyString())).thenReturn(egcDto); @@ -272,7 +280,7 @@ public class ExploratoryServiceImplTest { verify(exploratoryDAO).insertExploratory(userInstance); verify(gitCredsDAO).findGitCreds(USER); verify(requestBuilder).newExploratoryCreate(exploratory, userInfo, egcDto, Collections.emptyMap()); - verify(provisioningService).post(exploratoryCreate, TOKEN, ecDto, String.class); + verify(provisioningService).post(endpointDTO().getUrl() + exploratoryCreate, TOKEN, ecDto, String.class); verify(requestId).put(USER, UUID); verifyNoMoreInteractions(exploratoryDAO, gitCredsDAO, requestBuilder, provisioningService, requestId); } @@ -308,6 +316,7 @@ public class ExploratoryServiceImplTest { @Test public void createWhenMethodNewExploratoryCreateThrowsException() { + when(endpointService.get(anyString())).thenReturn(endpointDTO()); doNothing().when(exploratoryDAO).insertExploratory(any(UserInstanceDTO.class)); ExploratoryGitCredsDTO egcDto = new ExploratoryGitCredsDTO(); when(gitCredsDAO.findGitCreds(anyString())).thenReturn(egcDto); @@ -449,6 +458,7 @@ public class ExploratoryServiceImplTest { @Test public void testUpdateExploratoryClusterConfig() { + when(endpointService.get(anyString())).thenReturn(endpointDTO()); when(exploratoryDAO.fetchRunningExploratoryFields(anyString(), anyString())).thenReturn(getUserInstanceDto()); when(requestBuilder.newClusterConfigUpdate(any(UserInfo.class), any(UserInstanceDTO.class), anyListOf(ClusterConfig.class))).thenReturn(new ExploratoryReconfigureSparkClusterActionDTO()); @@ -461,7 +471,7 @@ public class ExploratoryServiceImplTest { verify(requestBuilder).newClusterConfigUpdate(refEq(getUserInfo()), refEq(getUserInstanceDto()), refEq(singletonList(new ClusterConfig()))); verify(requestId).put(USER, UUID); - verify(provisioningService).post(eq("exploratory/reconfigure_spark"), eq(TOKEN), + verify(provisioningService).post(eq(endpointDTO().getUrl() + "exploratory/reconfigure_spark"), eq(TOKEN), refEq(new ExploratoryReconfigureSparkClusterActionDTO(), "self"), eq(String.class)); verify(exploratoryDAO).updateExploratoryFields(refEq(new ExploratoryStatusDTO() .withUser(USER) @@ -542,4 +552,8 @@ public class ExploratoryServiceImplTest { .withStatus(status); } + private EndpointDTO endpointDTO() { + return new EndpointDTO("test", "url", "", null); + } + } diff --git a/services/self-service/src/test/java/com/epam/dlab/backendapi/service/impl/GitCredentialServiceImplTest.java b/services/self-service/src/test/java/com/epam/dlab/backendapi/service/impl/GitCredentialServiceImplTest.java index 2029cea..f6191a1 100644 --- a/services/self-service/src/test/java/com/epam/dlab/backendapi/service/impl/GitCredentialServiceImplTest.java +++ b/services/self-service/src/test/java/com/epam/dlab/backendapi/service/impl/GitCredentialServiceImplTest.java @@ -22,7 +22,9 @@ package com.epam.dlab.backendapi.service.impl; import com.epam.dlab.auth.UserInfo; import com.epam.dlab.backendapi.dao.ExploratoryDAO; import com.epam.dlab.backendapi.dao.GitCredsDAO; +import com.epam.dlab.backendapi.domain.EndpointDTO; import com.epam.dlab.backendapi.domain.RequestId; +import com.epam.dlab.backendapi.service.EndpointService; import com.epam.dlab.backendapi.util.RequestBuilder; import com.epam.dlab.dto.UserInstanceDTO; import com.epam.dlab.dto.exploratory.ExploratoryGitCredsDTO; @@ -56,6 +58,8 @@ public class GitCredentialServiceImplTest { private RequestBuilder requestBuilder; @Mock private RequestId requestId; + @Mock + private EndpointService endpointService; @InjectMocks private GitCredentialServiceImpl gitCredentialService; @@ -65,6 +69,7 @@ public class GitCredentialServiceImplTest { String token = "token"; UserInfo userInfo = new UserInfo(USER, token); doNothing().when(gitCredsDAO).updateGitCreds(anyString(), any(ExploratoryGitCredsDTO.class)); + when(endpointService.get(anyString())).thenReturn(endpointDTO()); String exploratoryName = "explName"; UserInstanceDTO uiDto = new UserInstanceDTO().withExploratoryName(exploratoryName).withUser(USER); @@ -85,7 +90,8 @@ public class GitCredentialServiceImplTest { verify(gitCredsDAO).updateGitCreds(USER, egcDto); verify(exploratoryDAO).fetchRunningExploratoryFields(USER); verify(requestBuilder).newGitCredentialsUpdate(userInfo, uiDto, egcDto); - verify(provisioningService).post("exploratory/git_creds", token, egcuDto, String.class); + verify(provisioningService).post(endpointDTO().getUrl() + "exploratory/git_creds", token, egcuDto, + String.class); verify(requestId).put(USER, uuid); verifyNoMoreInteractions(gitCredsDAO, exploratoryDAO, requestBuilder, provisioningService, requestId); } @@ -160,4 +166,8 @@ public class GitCredentialServiceImplTest { verify(gitCredsDAO).findGitCreds(USER, true); verifyNoMoreInteractions(gitCredsDAO); } + + private EndpointDTO endpointDTO() { + return new EndpointDTO("test", "url", "", null); + } } diff --git a/services/self-service/src/test/java/com/epam/dlab/backendapi/service/impl/InfrastructureTemplateServiceBaseTest.java b/services/self-service/src/test/java/com/epam/dlab/backendapi/service/impl/InfrastructureTemplateServiceBaseTest.java index 907da6b..fdbacab 100644 --- a/services/self-service/src/test/java/com/epam/dlab/backendapi/service/impl/InfrastructureTemplateServiceBaseTest.java +++ b/services/self-service/src/test/java/com/epam/dlab/backendapi/service/impl/InfrastructureTemplateServiceBaseTest.java @@ -22,7 +22,9 @@ package com.epam.dlab.backendapi.service.impl; import com.epam.dlab.auth.UserInfo; import com.epam.dlab.backendapi.dao.ProjectDAO; import com.epam.dlab.backendapi.dao.SettingsDAO; +import com.epam.dlab.backendapi.domain.EndpointDTO; import com.epam.dlab.backendapi.domain.ProjectDTO; +import com.epam.dlab.backendapi.service.EndpointService; import com.epam.dlab.dto.base.computational.FullComputationalTemplate; import com.epam.dlab.dto.imagemetadata.ComputationalMetadataDTO; import com.epam.dlab.dto.imagemetadata.ComputationalResourceShapeDto; @@ -51,6 +53,8 @@ public class InfrastructureTemplateServiceBaseTest { private RESTService provisioningService; @Mock private ProjectDAO projectDAO; + @Mock + private EndpointService endpointService; @InjectMocks private InfrastructureTemplateServiceBaseChild infrastructureTemplateServiceBaseChild = @@ -58,6 +62,7 @@ public class InfrastructureTemplateServiceBaseTest { @Test public void getExploratoryTemplates() { + when(endpointService.get(anyString())).thenReturn(endpointDTO()); ExploratoryMetadataDTO emDto1 = new ExploratoryMetadataDTO("someImage1"); HashMap<String, List<ComputationalResourceShapeDto>> shapes1 = new HashMap<>(); shapes1.put("Memory optimized", Arrays.asList( @@ -76,8 +81,8 @@ public class InfrastructureTemplateServiceBaseTest { "someRam2", 6))); emDto2.setExploratoryEnvironmentShapes(shapes2); List<ExploratoryMetadataDTO> expectedEmdDtoList = Arrays.asList(emDto1, emDto2); - /*when(projectDAO.get(anyString())).thenReturn(Optional.of(new ProjectDTO("project", Collections.emptySet(), - Collections.singleton("project"), null, null, null)));*/ + when(projectDAO.get(anyString())).thenReturn(Optional.of(new ProjectDTO("project", Collections.emptySet(), + null, null, null, null))); when(provisioningService.get(anyString(), anyString(), any())).thenReturn(expectedEmdDtoList.toArray()); when(settingsDAO.getConfOsFamily()).thenReturn("someConfOsFamily"); @@ -87,13 +92,14 @@ public class InfrastructureTemplateServiceBaseTest { assertNotNull(actualEmdDtoList); assertEquals(expectedEmdDtoList, actualEmdDtoList); - verify(provisioningService).get("docker/exploratory", "token", ExploratoryMetadataDTO[].class); + verify(provisioningService).get(endpointDTO().getUrl() + "docker/exploratory", "token", ExploratoryMetadataDTO[].class); verify(settingsDAO, times(2)).getConfOsFamily(); verifyNoMoreInteractions(provisioningService, settingsDAO); } @Test public void getExploratoryTemplatesWithException() { + when(endpointService.get(anyString())).thenReturn(endpointDTO()); doThrow(new DlabException("Could not load list of exploratory templates for user")) .when(provisioningService).get(anyString(), anyString(), any()); @@ -103,20 +109,21 @@ public class InfrastructureTemplateServiceBaseTest { } catch (DlabException e) { assertEquals("Could not load list of exploratory templates for user", e.getMessage()); } - verify(provisioningService).get("docker/exploratory", "token", ExploratoryMetadataDTO[].class); + verify(provisioningService).get(endpointDTO().getUrl() + "docker/exploratory", "token", ExploratoryMetadataDTO[].class); verifyNoMoreInteractions(provisioningService); } @Test public void getComputationalTemplates() throws NoSuchFieldException, IllegalAccessException { + when(endpointService.get(anyString())).thenReturn(endpointDTO()); final ComputationalMetadataDTO computationalMetadataDTO = new ComputationalMetadataDTO("dataengine-service"); computationalMetadataDTO.setComputationResourceShapes(Collections.emptyMap()); List<ComputationalMetadataDTO> expectedCmdDtoList = Collections.singletonList( computationalMetadataDTO ); - /*when(projectDAO.get(anyString())).thenReturn(Optional.of(new ProjectDTO("project", Collections.emptySet(), - Collections.singleton("project"), null, null, null)));*/ + when(projectDAO.get(anyString())).thenReturn(Optional.of(new ProjectDTO("project", Collections.emptySet(), + null, null, null, null))); when(provisioningService.get(anyString(), anyString(), any())).thenReturn(expectedCmdDtoList.toArray(new ComputationalMetadataDTO[]{})); List<FullComputationalTemplate> expectedFullCmdDtoList = expectedCmdDtoList.stream() @@ -132,12 +139,13 @@ public class InfrastructureTemplateServiceBaseTest { assertTrue(areFullComputationalTemplatesEqual(expectedFullCmdDtoList.get(i), actualFullCmdDtoList.get(i))); } - verify(provisioningService).get("docker/computational", "token", ComputationalMetadataDTO[].class); + verify(provisioningService).get(endpointDTO().getUrl() + "docker/computational", "token", ComputationalMetadataDTO[].class); verifyNoMoreInteractions(provisioningService); } @Test public void getComputationalTemplatesWhenMethodThrowsException() { + when(endpointService.get(anyString())).thenReturn(endpointDTO()); doThrow(new DlabException("Could not load list of computational templates for user")) .when(provisioningService).get(anyString(), anyString(), any()); @@ -147,18 +155,20 @@ public class InfrastructureTemplateServiceBaseTest { } catch (DlabException e) { assertEquals("Could not load list of computational templates for user", e.getMessage()); } - verify(provisioningService).get("docker/computational", "token", ComputationalMetadataDTO[].class); + verify(provisioningService).get(endpointDTO().getUrl() + "docker/computational", "token", + ComputationalMetadataDTO[].class); verifyNoMoreInteractions(provisioningService); } @Test public void getComputationalTemplatesWithInapproprietaryImageName() { + when(endpointService.get(anyString())).thenReturn(endpointDTO()); final ComputationalMetadataDTO computationalMetadataDTO = new ComputationalMetadataDTO("dataengine-service"); computationalMetadataDTO.setComputationResourceShapes(Collections.emptyMap()); List<ComputationalMetadataDTO> expectedCmdDtoList = Collections.singletonList(computationalMetadataDTO); when(provisioningService.get(anyString(), anyString(), any())).thenReturn(expectedCmdDtoList.toArray(new ComputationalMetadataDTO[]{})); - /*when(projectDAO.get(anyString())).thenReturn(Optional.of(new ProjectDTO("project", Collections.emptySet(), - Collections.singleton("project"), null, null,null)));*/ + when(projectDAO.get(anyString())).thenReturn(Optional.of(new ProjectDTO("project", Collections.emptySet(), + null, null, null, null))); UserInfo userInfo = new UserInfo("test", "token"); try { @@ -166,14 +176,13 @@ public class InfrastructureTemplateServiceBaseTest { } catch (IllegalArgumentException e) { assertEquals("Unknown data engine null", e.getMessage()); } - verify(provisioningService).get("docker/computational", "token", ComputationalMetadataDTO[].class); + verify(provisioningService).get(endpointDTO().getUrl() + "docker/computational", "token", ComputationalMetadataDTO[].class); verifyNoMoreInteractions(provisioningService); } private boolean areFullComputationalTemplatesEqual(FullComputationalTemplate object1, FullComputationalTemplate object2) throws NoSuchFieldException, IllegalAccessException { - String project = "";//TODO CHANGEIT Field computationalMetadataDTO1 = object1.getClass().getDeclaredField("computationalMetadataDTO"); computationalMetadataDTO1.setAccessible(true); Field computationalMetadataDTO2 = object2.getClass().getDeclaredField("computationalMetadataDTO"); @@ -187,4 +196,8 @@ public class InfrastructureTemplateServiceBaseTest { return new FullComputationalTemplate(metadataDTO); } } + + private EndpointDTO endpointDTO() { + return new EndpointDTO("test", "url", "", null); + } } diff --git a/services/self-service/src/test/java/com/epam/dlab/backendapi/service/impl/LibraryServiceImplTest.java b/services/self-service/src/test/java/com/epam/dlab/backendapi/service/impl/LibraryServiceImplTest.java index 9354fd3..4a076f8 100644 --- a/services/self-service/src/test/java/com/epam/dlab/backendapi/service/impl/LibraryServiceImplTest.java +++ b/services/self-service/src/test/java/com/epam/dlab/backendapi/service/impl/LibraryServiceImplTest.java @@ -22,11 +22,13 @@ package com.epam.dlab.backendapi.service.impl; import com.epam.dlab.auth.UserInfo; import com.epam.dlab.backendapi.dao.ExploratoryDAO; import com.epam.dlab.backendapi.dao.ExploratoryLibDAO; +import com.epam.dlab.backendapi.domain.EndpointDTO; import com.epam.dlab.backendapi.domain.RequestId; import com.epam.dlab.backendapi.resources.dto.LibInfoRecord; import com.epam.dlab.backendapi.resources.dto.LibInstallFormDTO; import com.epam.dlab.backendapi.resources.dto.LibKey; import com.epam.dlab.backendapi.resources.dto.LibraryStatus; +import com.epam.dlab.backendapi.service.EndpointService; import com.epam.dlab.backendapi.util.RequestBuilder; import com.epam.dlab.dto.UserInstanceDTO; import com.epam.dlab.dto.computational.UserComputationalResource; @@ -81,6 +83,8 @@ public class LibraryServiceImplTest { private RequestId requestId; @Mock private RESTService provisioningService; + @Mock + private EndpointService endpointService; @Rule public ExpectedException expectedException = ExpectedException.none(); @@ -142,6 +146,7 @@ public class LibraryServiceImplTest { libraryInstallDTO.setLibs(libsToInstall); final UserInfo user = getUser(); + when(endpointService.get(anyString())).thenReturn(endpointDTO()); when(exploratoryDAO.fetchExploratoryFields(anyString(), anyString(), anyString())).thenReturn(getUserInstanceDto()); when(provisioningService.post(anyString(), anyString(), any(LibraryInstallDTO.class), any())).thenReturn(UUID); when(requestBuilder.newLibInstall(any(UserInfo.class), any(UserInstanceDTO.class), @@ -156,7 +161,7 @@ public class LibraryServiceImplTest { verify(libraryDAO).getLibrary(USER, EXPLORATORY_NAME, COMPUTATIONAL_NAME, LIB_GROUP, LIB_NAME); verify(requestBuilder).newLibInstall(refEq(user), refEq(getUserInstanceDto()), refEq(getUserComputationalResourceWithName(COMPUTATIONAL_NAME)), eq(libsToInstall)); - verify(provisioningService).post(eq("library/computational/lib_install"), eq(user.getAccessToken()), + verify(provisioningService).post(eq(endpointDTO().getUrl() + "library/computational/lib_install"), eq(user.getAccessToken()), refEq(libraryInstallDTO), eq(String.class)); verify(libraryDAO).addLibrary(eq(USER), eq(EXPLORATORY_NAME), eq(COMPUTATIONAL_NAME), refEq(libsToInstall.get(0)), eq(false)); @@ -172,6 +177,7 @@ public class LibraryServiceImplTest { libraryInstallDTO.setLibs(libsToInstall); final UserInfo user = getUser(); + when(endpointService.get(anyString())).thenReturn(endpointDTO()); when(exploratoryDAO.fetchExploratoryFields(anyString(), anyString(), anyString())).thenReturn(getUserInstanceDto()); when(provisioningService.post(anyString(), anyString(), any(LibraryInstallDTO.class), any())).thenReturn(UUID); when(requestBuilder.newLibInstall(any(UserInfo.class), any(UserInstanceDTO.class), @@ -192,6 +198,7 @@ public class LibraryServiceImplTest { libraryInstallDTO.setLibs(libsToInstall); final UserInfo user = getUser(); + when(endpointService.get(anyString())).thenReturn(endpointDTO()); when(exploratoryDAO.fetchExploratoryFields(anyString(), anyString(), anyString())).thenReturn(getUserInstanceDto()); when(provisioningService.post(anyString(), anyString(), any(LibraryInstallDTO.class), any())).thenReturn(UUID); when(requestBuilder.newLibInstall(any(UserInfo.class), any(UserInstanceDTO.class), @@ -210,7 +217,8 @@ public class LibraryServiceImplTest { refEq(libsToInstall.get(0)), eq(true)); verify(requestBuilder).newLibInstall(refEq(user), refEq(getUserInstanceDto()), refEq(getUserComputationalResourceWithName(COMPUTATIONAL_NAME)), eq(libsToInstall)); - verify(provisioningService).post(eq("library/computational/lib_install"), eq(user.getAccessToken()), + verify(provisioningService).post(eq(endpointDTO().getUrl() + "library/computational/lib_install"), + eq(user.getAccessToken()), refEq(libraryInstallDTO), eq(String.class)); verify(requestId).put(user.getName(), UUID); verifyNoMoreInteractions(libraryDAO, requestBuilder, provisioningService, requestId, exploratoryDAO); @@ -225,6 +233,7 @@ public class LibraryServiceImplTest { libraryInstallDTO.setLibs(libsToInstall); final UserInfo user = getUser(); + when(endpointService.get(anyString())).thenReturn(endpointDTO()); when(exploratoryDAO.fetchExploratoryFields(anyString(), anyString(), anyString())).thenReturn(getUserInstanceDto()); when(provisioningService.post(anyString(), anyString(), any(LibraryInstallDTO.class), any())).thenReturn(UUID); when(requestBuilder.newLibInstall(any(UserInfo.class), any(UserInstanceDTO.class), @@ -250,6 +259,7 @@ public class LibraryServiceImplTest { libraryInstallDTO.setLibs(libsToInstall); final UserInfo user = getUser(); + when(endpointService.get(anyString())).thenReturn(endpointDTO()); when(exploratoryDAO.fetchRunningExploratoryFields(anyString(), anyString())).thenReturn(getUserInstanceDto()); when(provisioningService.post(anyString(), anyString(), any(LibraryInstallDTO.class), any())).thenReturn(UUID); when(requestBuilder.newLibInstall(any(UserInfo.class), any(UserInstanceDTO.class), @@ -262,7 +272,7 @@ public class LibraryServiceImplTest { verify(libraryDAO).getLibrary(USER, EXPLORATORY_NAME, LIB_GROUP, LIB_NAME); verify(requestBuilder).newLibInstall(refEq(user), refEq(getUserInstanceDto()), eq(libsToInstall)); - verify(provisioningService).post(eq("library/exploratory/lib_install"), eq(user.getAccessToken()), + verify(provisioningService).post(eq(endpointDTO().getUrl() + "library/exploratory/lib_install"), eq(user.getAccessToken()), refEq(libraryInstallDTO), eq(String.class)); verify(libraryDAO).addLibrary(eq(USER), eq(EXPLORATORY_NAME), refEq(libsToInstall.get(0)), eq(false)); verify(requestId).put(user.getName(), UUID); @@ -277,6 +287,7 @@ public class LibraryServiceImplTest { libraryInstallDTO.setLibs(libsToInstall); final UserInfo user = getUser(); + when(endpointService.get(anyString())).thenReturn(endpointDTO()); when(exploratoryDAO.fetchRunningExploratoryFields(anyString(), anyString())).thenReturn(getUserInstanceDto()); when(provisioningService.post(anyString(), anyString(), any(LibraryInstallDTO.class), any())).thenReturn(UUID); when(requestBuilder.newLibInstall(any(UserInfo.class), any(UserInstanceDTO.class), @@ -292,7 +303,7 @@ public class LibraryServiceImplTest { verify(libraryDAO).addLibrary(eq(USER), eq(EXPLORATORY_NAME), refEq(libsToInstall.get(0)), eq(true)); verify(requestBuilder).newLibInstall(refEq(user), refEq(getUserInstanceDto()), eq(libsToInstall)); verify(exploratoryDAO).fetchRunningExploratoryFields(USER, EXPLORATORY_NAME); - verify(provisioningService).post(eq("library/exploratory/lib_install"), eq(user.getAccessToken()), + verify(provisioningService).post(eq(endpointDTO().getUrl() + "library/exploratory/lib_install"), eq(user.getAccessToken()), refEq(libraryInstallDTO), eq(String.class)); verify(requestId).put(USER, uuid); verifyNoMoreInteractions(libraryDAO, requestBuilder, provisioningService, requestId, exploratoryDAO); @@ -305,6 +316,7 @@ public class LibraryServiceImplTest { libraryInstallDTO.setLibs(libsToInstall); final UserInfo user = getUser(); + when(endpointService.get(anyString())).thenReturn(endpointDTO()); when(exploratoryDAO.fetchRunningExploratoryFields(anyString(), anyString())).thenReturn(getUserInstanceDto()); when(provisioningService.post(anyString(), anyString(), any(LibraryInstallDTO.class), any())).thenReturn(UUID); when(requestBuilder.newLibInstall(any(UserInfo.class), any(UserInstanceDTO.class), @@ -407,4 +419,8 @@ public class LibraryServiceImplTest { ); } + private EndpointDTO endpointDTO() { + return new EndpointDTO("test", "url", "", null); + } + } --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@dlab.apache.org For additional commands, e-mail: commits-h...@dlab.apache.org