diff options
Diffstat (limited to 'so-monitoring')
34 files changed, 585 insertions, 835 deletions
diff --git a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/camunda/model/ActivityInstance.java b/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/camunda/model/ActivityInstance.java index f92d9fcbfe..7ef00bd798 100644 --- a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/camunda/model/ActivityInstance.java +++ b/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/camunda/model/ActivityInstance.java @@ -20,7 +20,6 @@ package org.onap.so.monitoring.camunda.model; import static org.onap.so.monitoring.utils.ObjectEqualsUtils.isEqual; - import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; @@ -184,5 +183,5 @@ public class ActivityInstance { } return false; } - + } diff --git a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/camunda/model/ProcessDefinition.java b/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/camunda/model/ProcessDefinition.java index c38cbcf5c3..76dc096c45 100644 --- a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/camunda/model/ProcessDefinition.java +++ b/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/camunda/model/ProcessDefinition.java @@ -20,7 +20,6 @@ package org.onap.so.monitoring.camunda.model; import static org.onap.so.monitoring.utils.ObjectEqualsUtils.isEqual; - import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; diff --git a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/camunda/model/ProcessInstance.java b/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/camunda/model/ProcessInstance.java index 0a2db7dea7..872fae50b0 100644 --- a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/camunda/model/ProcessInstance.java +++ b/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/camunda/model/ProcessInstance.java @@ -20,7 +20,6 @@ package org.onap.so.monitoring.camunda.model; import static org.onap.so.monitoring.utils.ObjectEqualsUtils.isEqual; - import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; diff --git a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/camunda/model/ProcessInstanceVariable.java b/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/camunda/model/ProcessInstanceVariable.java index 4154133cce..6d7da58f90 100644 --- a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/camunda/model/ProcessInstanceVariable.java +++ b/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/camunda/model/ProcessInstanceVariable.java @@ -20,7 +20,6 @@ package org.onap.so.monitoring.camunda.model; import static org.onap.so.monitoring.utils.ObjectEqualsUtils.isEqual; - import com.fasterxml.jackson.annotation.JsonIgnore; /** diff --git a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/camunda/model/SoActiveInfraRequests.java b/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/camunda/model/SoActiveInfraRequests.java index 124101a999..6c1d1ad99f 100644 --- a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/camunda/model/SoActiveInfraRequests.java +++ b/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/camunda/model/SoActiveInfraRequests.java @@ -20,7 +20,6 @@ package org.onap.so.monitoring.camunda.model; import static org.onap.so.monitoring.utils.ObjectEqualsUtils.isEqual; - import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; diff --git a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/configuration/camunda/CamundaRestUrlProvider.java b/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/configuration/camunda/CamundaRestUrlProvider.java index dc887bbac1..ab23f24b2a 100644 --- a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/configuration/camunda/CamundaRestUrlProvider.java +++ b/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/configuration/camunda/CamundaRestUrlProvider.java @@ -20,7 +20,6 @@ package org.onap.so.monitoring.configuration.camunda; import java.net.URI; - import org.springframework.stereotype.Service; import org.springframework.web.util.UriComponentsBuilder; @@ -52,8 +51,8 @@ public class CamundaRestUrlProvider { /** * see {@link <a href= - * "https://docs.camunda.org/manual/7.5/reference/rest/history/process-instance/get-process-instance/">Get - * Single Process Instance</a>}. + * "https://docs.camunda.org/manual/7.5/reference/rest/history/process-instance/get-process-instance/">Get Single + * Process Instance</a>}. * * @param processInstanceId the process instance id. * @return URL @@ -64,8 +63,7 @@ public class CamundaRestUrlProvider { } /** - * see {@link <a href= - * "https://docs.camunda.org/manual/7.5/reference/rest/process-definition/get-xml/">Get BPMN 2.0 + * see {@link <a href= "https://docs.camunda.org/manual/7.5/reference/rest/process-definition/get-xml/">Get BPMN 2.0 * XML</a>}. * * @param processDefinitionId the process definition id. @@ -78,8 +76,8 @@ public class CamundaRestUrlProvider { /** * see {@link <a href= - * "https://docs.camunda.org/manual/7.5/reference/rest/history/activity-instance/get-activity-instance/">Get - * Single Activity Instance (Historic)</a>}. + * "https://docs.camunda.org/manual/7.5/reference/rest/history/activity-instance/get-activity-instance/">Get Single + * Activity Instance (Historic)</a>}. * * @param processInstanceId the process instance id. * @return URL @@ -92,8 +90,8 @@ public class CamundaRestUrlProvider { /** * see {@link <a href= - * "https://docs.camunda.org/manual/7.5/reference/rest/history/variable-instance/get-variable-instance/">Get - * Single Variable Instance</a>}. + * "https://docs.camunda.org/manual/7.5/reference/rest/history/variable-instance/get-variable-instance/">Get Single + * Variable Instance</a>}. * * @param processInstanceId the process instance id. * @return URL diff --git a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/configuration/database/DatabaseUrlProvider.java b/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/configuration/database/DatabaseUrlProvider.java index 7531cfcf7e..67f588eb54 100644 --- a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/configuration/database/DatabaseUrlProvider.java +++ b/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/configuration/database/DatabaseUrlProvider.java @@ -20,7 +20,6 @@ package org.onap.so.monitoring.configuration.database; import java.net.URI; - import org.springframework.web.util.UriComponentsBuilder; /** diff --git a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/configuration/rest/BasicAuthorizationHttpRequestInterceptor.java b/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/configuration/rest/BasicAuthorizationHttpRequestInterceptor.java deleted file mode 100644 index 34afd825cb..0000000000 --- a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/configuration/rest/BasicAuthorizationHttpRequestInterceptor.java +++ /dev/null @@ -1,49 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2018 Ericsson. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ -package org.onap.so.monitoring.configuration.rest; - -import java.io.IOException; - -import org.springframework.http.HttpHeaders; -import org.springframework.http.HttpRequest; -import org.springframework.http.client.ClientHttpRequestExecution; -import org.springframework.http.client.ClientHttpRequestInterceptor; -import org.springframework.http.client.ClientHttpResponse; - -/** - * @author waqas.ikram@ericsson.com - * - */ -public class BasicAuthorizationHttpRequestInterceptor implements ClientHttpRequestInterceptor { - - private final String authorization; - - public BasicAuthorizationHttpRequestInterceptor(final String authorization) { - this.authorization = authorization; - } - - @Override - public ClientHttpResponse intercept(final HttpRequest request, final byte[] body, - final ClientHttpRequestExecution execution) throws IOException { - final HttpHeaders headers = request.getHeaders(); - headers.add("Authorization", authorization); - return execution.execute(request, body); - } -} diff --git a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/configuration/rest/HttpClientConnectionConfiguration.java b/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/configuration/rest/HttpClientConnectionConfiguration.java deleted file mode 100644 index 1260e535a1..0000000000 --- a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/configuration/rest/HttpClientConnectionConfiguration.java +++ /dev/null @@ -1,87 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2018 Ericsson. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ -package org.onap.so.monitoring.configuration.rest; - -import java.util.concurrent.TimeUnit; - -import org.springframework.beans.factory.annotation.Value; -import org.springframework.stereotype.Service; - -@Service -public class HttpClientConnectionConfiguration { - - @Value(value = "${rest.http.client.configuration.connTimeOutInSec:10}") - private int connectionTimeOutInSeconds; - - @Value(value = "${rest.http.client.configuration.socketTimeOutInSec:180}") - private int socketTimeOutInSeconds; - - @Value(value = "${rest.http.client.configuration.socketTimeOutInSec:600}") - private int timeToLiveInSeconds; - - @Value(value = "${rest.http.client.configuration.maxConnections:10}") - private int maxConnections; - - @Value(value = "${rest.http.client.configuration.maxConnectionsPerRoute:2}") - private int maxConnectionsPerRoute; - - /** - * @return the socketTimeOut - */ - public int getSocketTimeOutInMiliSeconds() { - return (int) TimeUnit.SECONDS.toMillis(socketTimeOutInSeconds); - } - - /** - * @return the maxConnections - */ - public int getMaxConnections() { - return maxConnections; - } - - /** - * @return the maxConnectionsPerRoute - */ - public int getMaxConnectionsPerRoute() { - return maxConnectionsPerRoute; - } - - /** - * @return the connectionTimeOut - */ - public int getConnectionTimeOutInMilliSeconds() { - return (int) TimeUnit.SECONDS.toMillis(connectionTimeOutInSeconds); - } - - /** - * @return the timeToLive - */ - public int getTimeToLiveInMins() { - return (int) TimeUnit.SECONDS.toMinutes(timeToLiveInSeconds); - } - - @Override - public String toString() { - return "HttpClientConnectionConfiguration [connectionTimeOutInSeconds=" + connectionTimeOutInSeconds - + ", socketTimeOutInSeconds=" + socketTimeOutInSeconds + ", timeToLiveInSeconds=" + timeToLiveInSeconds - + ", maxConnections=" + maxConnections + ", maxConnectionsPerRoute=" + maxConnectionsPerRoute + "]"; - } - -} diff --git a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/configuration/rest/HttpServiceProviderConfiguration.java b/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/configuration/rest/HttpServiceProviderConfiguration.java index a590d7908f..6d8d82bc44 100644 --- a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/configuration/rest/HttpServiceProviderConfiguration.java +++ b/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/configuration/rest/HttpServiceProviderConfiguration.java @@ -19,17 +19,16 @@ */ package org.onap.so.monitoring.configuration.rest; -import static org.onap.so.monitoring.configuration.rest.RestTemplateConfiguration.CAMUNDA_REST_TEMPLATE; -import static org.onap.so.monitoring.configuration.rest.RestTemplateConfiguration.DATABASE_REST_TEMPLATE; - -import org.onap.so.monitoring.rest.service.HttpRestServiceProvider; -import org.onap.so.monitoring.rest.service.HttpRestServiceProviderImpl; +import static org.onap.so.client.RestTemplateConfig.CONFIGURABLE_REST_TEMPLATE; +import org.onap.so.configuration.rest.BasicHttpHeadersProvider; +import org.onap.so.configuration.rest.HttpHeadersProvider; +import org.onap.so.rest.service.HttpRestServiceProvider; +import org.onap.so.rest.service.HttpRestServiceProviderImpl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import org.springframework.http.client.ClientHttpRequestInterceptor; import org.springframework.web.client.RestTemplate; /** @@ -45,28 +44,22 @@ public class HttpServiceProviderConfiguration { @Bean @Qualifier(CAMUNDA_HTTP_REST_SERVICE_PROVIDER) public HttpRestServiceProvider camundaHttpRestServiceProvider( - @Qualifier(CAMUNDA_REST_TEMPLATE) @Autowired final RestTemplate restTemplate, + @Qualifier(CONFIGURABLE_REST_TEMPLATE) @Autowired final RestTemplate restTemplate, @Value(value = "${camunda.rest.api.auth:#{null}}") final String authorization) { - return getHttpRestServiceProvider(restTemplate, authorization); + return getHttpRestServiceProvider(restTemplate, new BasicHttpHeadersProvider(authorization)); } @Bean @Qualifier(DATABASE_HTTP_REST_SERVICE_PROVIDER) public HttpRestServiceProvider databaseHttpRestServiceProvider( - @Qualifier(DATABASE_REST_TEMPLATE) @Autowired final RestTemplate restTemplate, + @Qualifier(CONFIGURABLE_REST_TEMPLATE) @Autowired final RestTemplate restTemplate, @Value(value = "${mso.database.rest.api.auth:#{null}}") final String authorization) { - - return getHttpRestServiceProvider(restTemplate, authorization); + return getHttpRestServiceProvider(restTemplate, new BasicHttpHeadersProvider(authorization)); } private HttpRestServiceProvider getHttpRestServiceProvider(final RestTemplate restTemplate, - final String authorization) { - if (authorization != null && !authorization.isEmpty()) { - final ClientHttpRequestInterceptor authorizationInterceptor = - new BasicAuthorizationHttpRequestInterceptor(authorization); - restTemplate.getInterceptors().add(authorizationInterceptor); - } - return new HttpRestServiceProviderImpl(restTemplate); + final HttpHeadersProvider httpHeadersProvider) { + return new HttpRestServiceProviderImpl(restTemplate, httpHeadersProvider); } diff --git a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/configuration/rest/RestTemplateConfiguration.java b/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/configuration/rest/RestTemplateConfiguration.java deleted file mode 100644 index f8f0f687cf..0000000000 --- a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/configuration/rest/RestTemplateConfiguration.java +++ /dev/null @@ -1,85 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2018 Ericsson. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.so.monitoring.configuration.rest; - -import java.util.concurrent.TimeUnit; - -import org.apache.http.client.config.RequestConfig; -import org.apache.http.impl.client.CloseableHttpClient; -import org.apache.http.impl.client.HttpClientBuilder; -import org.apache.http.impl.conn.PoolingHttpClientConnectionManager; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Qualifier; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.http.client.HttpComponentsClientHttpRequestFactory; -import org.springframework.web.client.RestTemplate; - -/** - * @author waqas.ikram@ericsson.com - */ -@Configuration -public class RestTemplateConfiguration { - - public static final String DATABASE_REST_TEMPLATE = "databaseRestTemplate"; - - public static final String CAMUNDA_REST_TEMPLATE = "camundaRestTemplate"; - - @Autowired - private HttpClientConnectionConfiguration clientConnectionConfiguration; - - @Bean - @Qualifier(CAMUNDA_REST_TEMPLATE) - public RestTemplate camundaRestTemplate() { - return new RestTemplate(httpComponentsClientHttpRequestFactory()); - } - - @Bean - @Qualifier(DATABASE_REST_TEMPLATE) - public RestTemplate dataBasecamundaRestTemplate() { - return new RestTemplate(httpComponentsClientHttpRequestFactory()); - } - - @Bean - public HttpComponentsClientHttpRequestFactory httpComponentsClientHttpRequestFactory() { - return new HttpComponentsClientHttpRequestFactory(httpClient()); - } - - @Bean - public CloseableHttpClient httpClient() { - return HttpClientBuilder.create().setConnectionManager(poolingHttpClientConnectionManager()) - .setMaxConnPerRoute(clientConnectionConfiguration.getMaxConnectionsPerRoute()) - .setMaxConnTotal(clientConnectionConfiguration.getMaxConnections()) - .setDefaultRequestConfig(requestConfig()).build(); - } - - @Bean - public PoolingHttpClientConnectionManager poolingHttpClientConnectionManager() { - return new PoolingHttpClientConnectionManager(clientConnectionConfiguration.getTimeToLiveInMins(), - TimeUnit.MINUTES); - } - - @Bean - public RequestConfig requestConfig() { - return RequestConfig.custom().setSocketTimeout(clientConnectionConfiguration.getSocketTimeOutInMiliSeconds()) - .setConnectTimeout(clientConnectionConfiguration.getConnectionTimeOutInMilliSeconds()).build(); - } -} diff --git a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/db/service/DatabaseServiceProvider.java b/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/db/service/DatabaseServiceProvider.java index 209fac8fe1..b701203564 100644 --- a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/db/service/DatabaseServiceProvider.java +++ b/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/db/service/DatabaseServiceProvider.java @@ -21,7 +21,6 @@ package org.onap.so.monitoring.db.service; import java.util.List; import java.util.Map; - import org.onap.so.monitoring.model.SoInfraRequest; diff --git a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/db/service/DatabaseServiceProviderImpl.java b/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/db/service/DatabaseServiceProviderImpl.java index 6be6367302..9ef54272ef 100644 --- a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/db/service/DatabaseServiceProviderImpl.java +++ b/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/db/service/DatabaseServiceProviderImpl.java @@ -20,21 +20,18 @@ package org.onap.so.monitoring.db.service; import static org.onap.so.monitoring.configuration.rest.HttpServiceProviderConfiguration.DATABASE_HTTP_REST_SERVICE_PROVIDER; - import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Map; - import org.onap.so.monitoring.camunda.model.SoActiveInfraRequests; import org.onap.so.monitoring.configuration.database.DatabaseUrlProvider; import org.onap.so.monitoring.model.SoInfraRequest; import org.onap.so.monitoring.model.SoInfraRequestBuilder; -import org.onap.so.monitoring.rest.service.HttpRestServiceProvider; +import org.onap.so.rest.service.HttpRestServiceProvider; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Service; - import com.google.common.base.Optional; /** @@ -60,7 +57,7 @@ public class DatabaseServiceProviderImpl implements DatabaseServiceProvider { final String url = urlProvider.getSearchUrl(startTime, endTime, maxResult); final Optional<SoActiveInfraRequests[]> optionalRequests = - httpRestServiceProvider.postHttpRequest(filters, url, SoActiveInfraRequests[].class); + httpRestServiceProvider.post(filters, url, SoActiveInfraRequests[].class); if (optionalRequests.isPresent()) { return getSoInfraRequest(optionalRequests.get()); } diff --git a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/exception/InvalidRestRequestException.java b/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/exception/InvalidRestRequestException.java deleted file mode 100644 index 4d3c489fa9..0000000000 --- a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/exception/InvalidRestRequestException.java +++ /dev/null @@ -1,36 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2018 Ericsson. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ -package org.onap.so.monitoring.exception; - -/** - * @author waqas.ikram@ericsson.com - * - */ -public class InvalidRestRequestException extends RuntimeException { - private static final long serialVersionUID = -1158414939006977465L; - - public InvalidRestRequestException(final String message) { - super(message); - } - - public InvalidRestRequestException(final String message, final Throwable cause) { - super(message, cause); - } -} diff --git a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/exception/RestProcessingException.java b/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/exception/RestProcessingException.java deleted file mode 100644 index ab25854542..0000000000 --- a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/exception/RestProcessingException.java +++ /dev/null @@ -1,37 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2018 Ericsson. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ -package org.onap.so.monitoring.exception; - -/** - * @author waqas.ikram@ericsson.com - * - */ -public class RestProcessingException extends RuntimeException { - - private static final long serialVersionUID = 16862313537198441L; - - public RestProcessingException(final String message) { - super(message); - } - - public RestProcessingException(final String message, final Throwable cause) { - super(message, cause); - } -} diff --git a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/rest/service/CamundaProcessDataServiceProvider.java b/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/rest/service/CamundaProcessDataServiceProvider.java index e0e0432452..729e57b885 100644 --- a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/rest/service/CamundaProcessDataServiceProvider.java +++ b/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/rest/service/CamundaProcessDataServiceProvider.java @@ -20,13 +20,11 @@ package org.onap.so.monitoring.rest.service; import java.util.List; - import org.onap.so.monitoring.model.ActivityInstanceDetail; import org.onap.so.monitoring.model.ProcessDefinitionDetail; import org.onap.so.monitoring.model.ProcessInstanceDetail; import org.onap.so.monitoring.model.ProcessInstanceIdDetail; import org.onap.so.monitoring.model.ProcessInstanceVariableDetail; - import com.google.common.base.Optional; /** @@ -35,13 +33,13 @@ import com.google.common.base.Optional; public interface CamundaProcessDataServiceProvider { Optional<ProcessInstanceIdDetail> getProcessInstanceIdDetail(final String requestId); - + Optional<ProcessInstanceDetail> getSingleProcessInstanceDetail(final String processInstanceId); Optional<ProcessDefinitionDetail> getProcessDefinition(final String processDefinitionId); - + List<ActivityInstanceDetail> getActivityInstance(final String processInstanceId); - + List<ProcessInstanceVariableDetail> getProcessInstanceVariable(final String processInstanceId); } diff --git a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/rest/service/CamundaProcessDataServiceProviderImpl.java b/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/rest/service/CamundaProcessDataServiceProviderImpl.java index e6fbb68456..e0996fd2ad 100644 --- a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/rest/service/CamundaProcessDataServiceProviderImpl.java +++ b/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/rest/service/CamundaProcessDataServiceProviderImpl.java @@ -20,11 +20,9 @@ package org.onap.so.monitoring.rest.service; import static org.onap.so.monitoring.configuration.rest.HttpServiceProviderConfiguration.CAMUNDA_HTTP_REST_SERVICE_PROVIDER; - import java.util.ArrayList; import java.util.Collections; import java.util.List; - import org.onap.so.monitoring.camunda.model.ActivityInstance; import org.onap.so.monitoring.camunda.model.ProcessDefinition; import org.onap.so.monitoring.camunda.model.ProcessInstance; @@ -35,15 +33,14 @@ import org.onap.so.monitoring.model.ProcessDefinitionDetail; import org.onap.so.monitoring.model.ProcessInstanceDetail; import org.onap.so.monitoring.model.ProcessInstanceIdDetail; import org.onap.so.monitoring.model.ProcessInstanceVariableDetail; +import org.onap.so.rest.service.HttpRestServiceProvider; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Service; - import com.google.common.base.Optional; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - /** * @author waqas.ikram@ericsson.com */ @@ -64,13 +61,12 @@ public class CamundaProcessDataServiceProviderImpl implements CamundaProcessData @Override public Optional<ProcessInstanceIdDetail> getProcessInstanceIdDetail(final String requestId) { final String url = urlProvider.getHistoryProcessInstanceUrl(requestId); - final Optional<ProcessInstance[]> processInstances = - httpRestServiceProvider.getHttpResponse(url, ProcessInstance[].class); + final Optional<ProcessInstance[]> processInstances = httpRestServiceProvider.get(url, ProcessInstance[].class); if (processInstances.isPresent()) { final ProcessInstance[] instances = processInstances.get(); - final String message = "found process instance for request id: " + requestId + - ", result size: " + instances.length; + final String message = + "found process instance for request id: " + requestId + ", result size: " + instances.length; LOGGER.debug(message); if (instances.length > 0) { @@ -79,8 +75,8 @@ public class CamundaProcessDataServiceProviderImpl implements CamundaProcessData if (processInstance.getSuperProcessInstanceId() == null) { return Optional.of(new ProcessInstanceIdDetail(processInstance.getId())); } - LOGGER.debug("found sub process instance id with super process instanceId: " + - processInstance.getSuperProcessInstanceId()); + LOGGER.debug("found sub process instance id with super process instanceId: " + + processInstance.getSuperProcessInstanceId()); } } } @@ -91,8 +87,7 @@ public class CamundaProcessDataServiceProviderImpl implements CamundaProcessData @Override public Optional<ProcessInstanceDetail> getSingleProcessInstanceDetail(final String processInstanceId) { final String url = urlProvider.getSingleProcessInstanceUrl(processInstanceId); - final Optional<ProcessInstance> processInstances = - httpRestServiceProvider.getHttpResponse(url, ProcessInstance.class); + final Optional<ProcessInstance> processInstances = httpRestServiceProvider.get(url, ProcessInstance.class); if (processInstances.isPresent()) { final ProcessInstance processInstance = processInstances.get(); @@ -111,8 +106,7 @@ public class CamundaProcessDataServiceProviderImpl implements CamundaProcessData @Override public Optional<ProcessDefinitionDetail> getProcessDefinition(final String processDefinitionId) { final String url = urlProvider.getProcessDefinitionUrl(processDefinitionId); - final Optional<ProcessDefinition> response = - httpRestServiceProvider.getHttpResponse(url, ProcessDefinition.class); + final Optional<ProcessDefinition> response = httpRestServiceProvider.get(url, ProcessDefinition.class); if (response.isPresent()) { final ProcessDefinition processDefinition = response.get(); final String xmlDefinition = processDefinition.getBpmn20Xml(); @@ -120,16 +114,14 @@ public class CamundaProcessDataServiceProviderImpl implements CamundaProcessData return Optional.of(new ProcessDefinitionDetail(processDefinitionId, xmlDefinition)); } } - LOGGER.error("Unable to find process definition for processDefinitionId: " + - processDefinitionId); + LOGGER.error("Unable to find process definition for processDefinitionId: " + processDefinitionId); return Optional.absent(); } @Override public List<ActivityInstanceDetail> getActivityInstance(final String processInstanceId) { final String url = urlProvider.getActivityInstanceUrl(processInstanceId); - final Optional<ActivityInstance[]> response = - httpRestServiceProvider.getHttpResponse(url, ActivityInstance[].class); + final Optional<ActivityInstance[]> response = httpRestServiceProvider.get(url, ActivityInstance[].class); if (response.isPresent()) { final ActivityInstance[] activityInstances = response.get(); final List<ActivityInstanceDetail> activityInstanceDetails = new ArrayList<>(activityInstances.length); @@ -148,8 +140,7 @@ public class CamundaProcessDataServiceProviderImpl implements CamundaProcessData } return activityInstanceDetails; } - LOGGER.error("Unable to find activity intance detail for process instance id: " + - processInstanceId); + LOGGER.error("Unable to find activity intance detail for process instance id: " + processInstanceId); return Collections.emptyList(); } @@ -157,7 +148,7 @@ public class CamundaProcessDataServiceProviderImpl implements CamundaProcessData public List<ProcessInstanceVariableDetail> getProcessInstanceVariable(final String processInstanceId) { final String url = urlProvider.getProcessInstanceVariablesUrl(processInstanceId); final Optional<ProcessInstanceVariable[]> response = - httpRestServiceProvider.getHttpResponse(url, ProcessInstanceVariable[].class); + httpRestServiceProvider.get(url, ProcessInstanceVariable[].class); if (response.isPresent()) { final ProcessInstanceVariable[] instanceVariables = response.get(); final List<ProcessInstanceVariableDetail> instanceVariableDetails = @@ -171,8 +162,7 @@ public class CamundaProcessDataServiceProviderImpl implements CamundaProcessData } return instanceVariableDetails; } - LOGGER.error("Unable to find process intance variable details for process instance id: " - + processInstanceId); + LOGGER.error("Unable to find process intance variable details for process instance id: " + processInstanceId); return Collections.emptyList(); } diff --git a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/rest/service/HttpRestServiceProvider.java b/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/rest/service/HttpRestServiceProvider.java deleted file mode 100644 index 4606c04e05..0000000000 --- a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/rest/service/HttpRestServiceProvider.java +++ /dev/null @@ -1,33 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2018 Ericsson. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ -package org.onap.so.monitoring.rest.service; - -import com.google.common.base.Optional; - -/** - * @author waqas.ikram@ericsson.com - */ -public interface HttpRestServiceProvider { - - public <T> Optional<T> getHttpResponse(final String url, final Class<T> clazz); - - public <T> Optional<T> postHttpRequest(final Object object, final String url, final Class<T> clazz); - -} diff --git a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/rest/service/HttpRestServiceProviderImpl.java b/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/rest/service/HttpRestServiceProviderImpl.java deleted file mode 100644 index 82a54c10a2..0000000000 --- a/so-monitoring/so-monitoring-handler/src/main/java/org/onap/so/monitoring/rest/service/HttpRestServiceProviderImpl.java +++ /dev/null @@ -1,119 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2018 Ericsson. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ -package org.onap.so.monitoring.rest.service; - -import org.onap.so.monitoring.exception.InvalidRestRequestException; -import org.onap.so.monitoring.exception.RestProcessingException; -import org.springframework.http.HttpEntity; -import org.springframework.http.HttpMethod; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.web.client.HttpClientErrorException; -import org.springframework.web.client.RestClientException; -import org.springframework.web.client.RestTemplate; - -import com.google.common.base.Optional; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * @author waqas.ikram@ericsson.com - */ -public class HttpRestServiceProviderImpl implements HttpRestServiceProvider { - - private static final Logger LOGGER = LoggerFactory.getLogger(HttpRestServiceProviderImpl.class); - private final RestTemplate restTemplate; - - public HttpRestServiceProviderImpl(final RestTemplate restTemplate) { - this.restTemplate = restTemplate; - } - - @Override - public <T> Optional<T> getHttpResponse(final String url, final Class<T> clazz) { - LOGGER.trace("Will invoke HTTP GET using URL: " + url); - try { - final ResponseEntity<T> response = restTemplate.exchange(url, HttpMethod.GET, null, clazz); - if (!response.getStatusCode().equals(HttpStatus.OK)) { - final String message = "Unable to invoke HTTP GET using URL: " + url + - ", Response Code: " + response.getStatusCode(); - LOGGER.error(message); - return Optional.absent(); - } - - if (response.hasBody()) { - return Optional.of(response.getBody()); - } - } catch (final HttpClientErrorException httpClientErrorException) { - final String message = "Unable to invoke HTTP GET using url: " + url + ", Response: " + - httpClientErrorException.getRawStatusCode(); - LOGGER.error(message, httpClientErrorException); - final int rawStatusCode = httpClientErrorException.getRawStatusCode(); - if (rawStatusCode == HttpStatus.BAD_REQUEST.value() || rawStatusCode == HttpStatus.NOT_FOUND.value()) { - throw new InvalidRestRequestException("No result found for given url: " + url); - } - throw new RestProcessingException("Unable to invoke HTTP GET using URL: " + url); - - } catch (final RestClientException restClientException) { - LOGGER.error("Unable to invoke HTTP GET using url: " + url, restClientException); - throw new RestProcessingException("Unable to invoke HTTP GET using URL: " + - url, restClientException); - } - - return Optional.absent(); - } - - @Override - public <T> Optional<T> postHttpRequest(final Object object, final String url, final Class<T> clazz) { - try { - final HttpEntity<?> request = new HttpEntity<>(object); - final ResponseEntity<T> response = restTemplate.exchange(url, HttpMethod.POST, request, clazz); - if (!response.getStatusCode().equals(HttpStatus.OK)) { - final String message = "Unable to invoke HTTP GET using URL: " + url + - ", Response Code: " + response.getStatusCode(); - LOGGER.error(message); - return Optional.absent(); - } - - if (response.hasBody()) { - return Optional.of(response.getBody()); - } - - } catch (final HttpClientErrorException httpClientErrorException) { - final String message = "Unable to invoke HTTP POST using url: " + url + - ", Response: " + httpClientErrorException.getRawStatusCode(); - LOGGER.error(message, httpClientErrorException); - final int rawStatusCode = httpClientErrorException.getRawStatusCode(); - if (rawStatusCode == HttpStatus.BAD_REQUEST.value() || rawStatusCode == HttpStatus.NOT_FOUND.value()) { - throw new InvalidRestRequestException("No result found for given url: " + url); - } - throw new RestProcessingException("Unable to invoke HTTP POST using URL: " + url); - - } catch (final RestClientException restClientException) { - LOGGER.error("Unable to invoke HTTP POST using url: " + url, restClientException); - throw new RestProcessingException("Unable to invoke HTTP POST using URL: " - + url, restClientException); - } - - return Optional.absent(); - } - - -} diff --git a/so-monitoring/so-monitoring-handler/src/test/java/org/onap/so/monitoring/configuration/CamundaConfigurationTest.java b/so-monitoring/so-monitoring-handler/src/test/java/org/onap/so/monitoring/configuration/CamundaConfigurationTest.java index fb56d841e4..b08d247106 100644 --- a/so-monitoring/so-monitoring-handler/src/test/java/org/onap/so/monitoring/configuration/CamundaConfigurationTest.java +++ b/so-monitoring/so-monitoring-handler/src/test/java/org/onap/so/monitoring/configuration/CamundaConfigurationTest.java @@ -20,7 +20,6 @@ package org.onap.so.monitoring.configuration; import static org.junit.Assert.assertEquals; - import org.junit.Test; import org.onap.so.monitoring.configuration.camunda.CamundaConfiguration; import org.onap.so.monitoring.configuration.camunda.CamundaRestUrlProvider; diff --git a/so-monitoring/so-monitoring-handler/src/test/java/org/onap/so/monitoring/configuration/CamundaRestUrlProviderTest.java b/so-monitoring/so-monitoring-handler/src/test/java/org/onap/so/monitoring/configuration/CamundaRestUrlProviderTest.java index 3cd8a33d77..e2d6ddb959 100644 --- a/so-monitoring/so-monitoring-handler/src/test/java/org/onap/so/monitoring/configuration/CamundaRestUrlProviderTest.java +++ b/so-monitoring/so-monitoring-handler/src/test/java/org/onap/so/monitoring/configuration/CamundaRestUrlProviderTest.java @@ -20,9 +20,7 @@ package org.onap.so.monitoring.configuration; import static org.junit.Assert.assertEquals; - import java.util.UUID; - import org.junit.Test; import org.onap.so.monitoring.configuration.camunda.CamundaRestUrlProvider; diff --git a/so-monitoring/so-monitoring-handler/src/test/java/org/onap/so/monitoring/configuration/HttpServiceProviderConfigurationTest.java b/so-monitoring/so-monitoring-handler/src/test/java/org/onap/so/monitoring/configuration/HttpServiceProviderConfigurationTest.java index 1b3e168c12..d85a03485f 100644 --- a/so-monitoring/so-monitoring-handler/src/test/java/org/onap/so/monitoring/configuration/HttpServiceProviderConfigurationTest.java +++ b/so-monitoring/so-monitoring-handler/src/test/java/org/onap/so/monitoring/configuration/HttpServiceProviderConfigurationTest.java @@ -20,10 +20,9 @@ package org.onap.so.monitoring.configuration; import static org.junit.Assert.assertNotNull; - import org.junit.Test; import org.onap.so.monitoring.configuration.rest.HttpServiceProviderConfiguration; -import org.onap.so.monitoring.rest.service.HttpRestServiceProvider; +import org.onap.so.rest.service.HttpRestServiceProvider; import org.springframework.web.client.RestTemplate; /** diff --git a/so-monitoring/so-monitoring-handler/src/test/java/org/onap/so/monitoring/configuration/PojoClassesTests.java b/so-monitoring/so-monitoring-handler/src/test/java/org/onap/so/monitoring/configuration/PojoClassesTests.java index f51d4c64b1..fbd0aea5ec 100644 --- a/so-monitoring/so-monitoring-handler/src/test/java/org/onap/so/monitoring/configuration/PojoClassesTests.java +++ b/so-monitoring/so-monitoring-handler/src/test/java/org/onap/so/monitoring/configuration/PojoClassesTests.java @@ -20,22 +20,18 @@ package org.onap.so.monitoring.configuration; import static org.junit.Assert.assertFalse; - import java.util.Set; import java.util.regex.Pattern; - import org.junit.Test; import org.onap.so.openpojo.rules.ToStringTester; import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider; import org.springframework.core.type.filter.RegexPatternTypeFilter; - import com.openpojo.reflection.filters.FilterPackageInfo; import com.openpojo.validation.Validator; import com.openpojo.validation.ValidatorBuilder; import com.openpojo.validation.test.impl.GetterTester; import com.openpojo.validation.test.impl.SetterTester; - import nl.jqno.equalsverifier.EqualsVerifier; import nl.jqno.equalsverifier.Warning; diff --git a/so-monitoring/so-monitoring-handler/src/test/java/org/onap/so/monitoring/configuration/database/DatabaseUrlProviderTest.java b/so-monitoring/so-monitoring-handler/src/test/java/org/onap/so/monitoring/configuration/database/DatabaseUrlProviderTest.java index d820e9435d..5484b7a7ca 100644 --- a/so-monitoring/so-monitoring-handler/src/test/java/org/onap/so/monitoring/configuration/database/DatabaseUrlProviderTest.java +++ b/so-monitoring/so-monitoring-handler/src/test/java/org/onap/so/monitoring/configuration/database/DatabaseUrlProviderTest.java @@ -20,7 +20,6 @@ package org.onap.so.monitoring.configuration.database; import static org.junit.Assert.assertEquals; - import org.junit.Test; diff --git a/so-monitoring/so-monitoring-handler/src/test/java/org/onap/so/monitoring/db/api/DatabaseServiceProviderTest.java b/so-monitoring/so-monitoring-handler/src/test/java/org/onap/so/monitoring/db/api/DatabaseServiceProviderTest.java index 58666671a7..36a39d9cad 100644 --- a/so-monitoring/so-monitoring-handler/src/test/java/org/onap/so/monitoring/db/api/DatabaseServiceProviderTest.java +++ b/so-monitoring/so-monitoring-handler/src/test/java/org/onap/so/monitoring/db/api/DatabaseServiceProviderTest.java @@ -25,21 +25,18 @@ import static org.junit.Assert.assertTrue; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; - import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.UUID; - import org.junit.Test; import org.onap.so.monitoring.camunda.model.SoActiveInfraRequests; import org.onap.so.monitoring.configuration.database.DatabaseUrlProvider; import org.onap.so.monitoring.db.service.DatabaseServiceProvider; import org.onap.so.monitoring.db.service.DatabaseServiceProviderImpl; import org.onap.so.monitoring.model.SoInfraRequest; -import org.onap.so.monitoring.rest.service.HttpRestServiceProvider; - +import org.onap.so.rest.service.HttpRestServiceProvider; import com.google.common.base.Optional; @@ -57,8 +54,8 @@ public class DatabaseServiceProviderTest { final String searchUrl = URL_PROVIDER.getSearchUrl(0, 0, null); final Optional<SoActiveInfraRequests[]> response = Optional.of(new SoActiveInfraRequests[] {}); - when(mockServiceProvider.postHttpRequest(eq(Collections.emptyMap()), eq(searchUrl), - eq(SoActiveInfraRequests[].class))).thenReturn(response); + when(mockServiceProvider.post(eq(Collections.emptyMap()), eq(searchUrl), eq(SoActiveInfraRequests[].class))) + .thenReturn(response); final DatabaseServiceProvider objUnderTest = new DatabaseServiceProviderImpl(URL_PROVIDER, mockServiceProvider); @@ -71,8 +68,8 @@ public class DatabaseServiceProviderTest { final String searchUrl = URL_PROVIDER.getSearchUrl(0, 0, null); final Optional<SoActiveInfraRequests[]> response = Optional.absent(); - when(mockServiceProvider.postHttpRequest(eq(Collections.emptyMap()), eq(searchUrl), - eq(SoActiveInfraRequests[].class))).thenReturn(response); + when(mockServiceProvider.post(eq(Collections.emptyMap()), eq(searchUrl), eq(SoActiveInfraRequests[].class))) + .thenReturn(response); final DatabaseServiceProvider objUnderTest = new DatabaseServiceProviderImpl(URL_PROVIDER, mockServiceProvider); @@ -94,7 +91,7 @@ public class DatabaseServiceProviderTest { final HttpRestServiceProvider mockServiceProvider = mock(HttpRestServiceProvider.class); - when(mockServiceProvider.postHttpRequest(eq(filters), eq(searchUrl), eq(SoActiveInfraRequests[].class))) + when(mockServiceProvider.post(eq(filters), eq(searchUrl), eq(SoActiveInfraRequests[].class))) .thenReturn(response); final DatabaseServiceProvider objUnderTest = new DatabaseServiceProviderImpl(URL_PROVIDER, mockServiceProvider); diff --git a/so-monitoring/so-monitoring-handler/src/test/java/org/onap/so/monitoring/rest/service/CamundaProcessDataServiceProviderTest.java b/so-monitoring/so-monitoring-handler/src/test/java/org/onap/so/monitoring/rest/service/CamundaProcessDataServiceProviderTest.java index c3930df196..61b8b898a9 100644 --- a/so-monitoring/so-monitoring-handler/src/test/java/org/onap/so/monitoring/rest/service/CamundaProcessDataServiceProviderTest.java +++ b/so-monitoring/so-monitoring-handler/src/test/java/org/onap/so/monitoring/rest/service/CamundaProcessDataServiceProviderTest.java @@ -24,10 +24,8 @@ import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; - import java.util.List; import java.util.UUID; - import org.junit.Test; import org.onap.so.monitoring.camunda.model.ActivityInstance; import org.onap.so.monitoring.camunda.model.ProcessDefinition; @@ -38,7 +36,7 @@ import org.onap.so.monitoring.model.ActivityInstanceDetail; import org.onap.so.monitoring.model.ProcessDefinitionDetail; import org.onap.so.monitoring.model.ProcessInstanceIdDetail; import org.onap.so.monitoring.model.ProcessInstanceVariableDetail; - +import org.onap.so.rest.service.HttpRestServiceProvider; import com.google.common.base.Optional; @@ -65,7 +63,7 @@ public class CamundaProcessDataServiceProviderTest { public void test_GetProcessInstanceDetail_EmptyResponse() { final Optional<ProcessInstance[]> response = Optional.<ProcessInstance[]>absent(); final String url = CAMUNDA_REST_API_URL + DEFAULT + "/history/process-instance?variables=requestId_eq_" + ID; - when(httpRestServiceProvider.getHttpResponse(url, ProcessInstance[].class)).thenReturn(response); + when(httpRestServiceProvider.get(url, ProcessInstance[].class)).thenReturn(response); final CamundaProcessDataServiceProvider objUnderTest = new CamundaProcessDataServiceProviderImpl(camundaRestUrlProvider, httpRestServiceProvider); @@ -77,7 +75,7 @@ public class CamundaProcessDataServiceProviderTest { public void test_GetProcessInstanceDetail_NonEmptyResponseWithSuperProcessIdNull() { final Optional<ProcessInstance[]> response = Optional.of(getProcessInstance()); final String url = CAMUNDA_REST_API_URL + DEFAULT + "/history/process-instance?variables=requestId_eq_" + ID; - when(httpRestServiceProvider.getHttpResponse(url, ProcessInstance[].class)).thenReturn(response); + when(httpRestServiceProvider.get(url, ProcessInstance[].class)).thenReturn(response); final CamundaProcessDataServiceProvider objUnderTest = new CamundaProcessDataServiceProviderImpl(camundaRestUrlProvider, httpRestServiceProvider); @@ -92,7 +90,7 @@ public class CamundaProcessDataServiceProviderTest { public void test_GetProcessInstanceDetail_NonEmptyResponseWithSuperProcessIdNotNull() { final Optional<ProcessInstance[]> response = Optional.of(getProcessInstance(SUPER_PROCESS_ID)); final String url = CAMUNDA_REST_API_URL + DEFAULT + "/history/process-instance?variables=requestId_eq_" + ID; - when(httpRestServiceProvider.getHttpResponse(url, ProcessInstance[].class)).thenReturn(response); + when(httpRestServiceProvider.get(url, ProcessInstance[].class)).thenReturn(response); final CamundaProcessDataServiceProvider objUnderTest = new CamundaProcessDataServiceProviderImpl(camundaRestUrlProvider, httpRestServiceProvider); @@ -105,7 +103,7 @@ public class CamundaProcessDataServiceProviderTest { public void test_GetProcessDefinition_EmptyResponse() { final Optional<ProcessDefinition> response = Optional.<ProcessDefinition>absent(); final String url = CAMUNDA_REST_API_URL + DEFAULT + "/process-definition/" + ID + "/xml"; - when(httpRestServiceProvider.getHttpResponse(url, ProcessDefinition.class)).thenReturn(response); + when(httpRestServiceProvider.get(url, ProcessDefinition.class)).thenReturn(response); final CamundaProcessDataServiceProvider objUnderTest = new CamundaProcessDataServiceProviderImpl(camundaRestUrlProvider, httpRestServiceProvider); @@ -117,7 +115,7 @@ public class CamundaProcessDataServiceProviderTest { public void test_GetProcessDefinition_NonEmptyResponse() { final Optional<ProcessDefinition> response = getProcessDefinition(); final String url = CAMUNDA_REST_API_URL + DEFAULT + "/process-definition/" + PROCESS_ID + "/xml"; - when(httpRestServiceProvider.getHttpResponse(url, ProcessDefinition.class)).thenReturn(response); + when(httpRestServiceProvider.get(url, ProcessDefinition.class)).thenReturn(response); final CamundaProcessDataServiceProvider objUnderTest = new CamundaProcessDataServiceProviderImpl(camundaRestUrlProvider, httpRestServiceProvider); @@ -132,7 +130,7 @@ public class CamundaProcessDataServiceProviderTest { final Optional<ActivityInstance[]> response = Optional.<ActivityInstance[]>absent(); final String url = CAMUNDA_REST_API_URL + DEFAULT + "/history/activity-instance?processInstanceId=" + PROCESS_ID + "&sortBy=startTime&sortOrder=asc"; - when(httpRestServiceProvider.getHttpResponse(url, ActivityInstance[].class)).thenReturn(response); + when(httpRestServiceProvider.get(url, ActivityInstance[].class)).thenReturn(response); final CamundaProcessDataServiceProvider objUnderTest = new CamundaProcessDataServiceProviderImpl(camundaRestUrlProvider, httpRestServiceProvider); @@ -146,7 +144,7 @@ public class CamundaProcessDataServiceProviderTest { final Optional<ActivityInstance[]> response = getActivityInstance(); final String url = CAMUNDA_REST_API_URL + DEFAULT + "/history/activity-instance?processInstanceId=" + PROCESS_ID + "&sortBy=startTime&sortOrder=asc"; - when(httpRestServiceProvider.getHttpResponse(url, ActivityInstance[].class)).thenReturn(response); + when(httpRestServiceProvider.get(url, ActivityInstance[].class)).thenReturn(response); final CamundaProcessDataServiceProvider objUnderTest = new CamundaProcessDataServiceProviderImpl(camundaRestUrlProvider, httpRestServiceProvider); @@ -164,7 +162,7 @@ public class CamundaProcessDataServiceProviderTest { final Optional<ProcessInstanceVariable[]> response = Optional.<ProcessInstanceVariable[]>absent(); final String url = CAMUNDA_REST_API_URL + DEFAULT + "/history/variable-instance?processInstanceId=" + PROCESS_ID; - when(httpRestServiceProvider.getHttpResponse(url, ProcessInstanceVariable[].class)).thenReturn(response); + when(httpRestServiceProvider.get(url, ProcessInstanceVariable[].class)).thenReturn(response); final CamundaProcessDataServiceProvider objUnderTest = new CamundaProcessDataServiceProviderImpl(camundaRestUrlProvider, httpRestServiceProvider); @@ -178,7 +176,7 @@ public class CamundaProcessDataServiceProviderTest { final Optional<ProcessInstanceVariable[]> response = getProcessInstanceVariable(); final String url = CAMUNDA_REST_API_URL + DEFAULT + "/history/variable-instance?processInstanceId=" + PROCESS_ID; - when(httpRestServiceProvider.getHttpResponse(url, ProcessInstanceVariable[].class)).thenReturn(response); + when(httpRestServiceProvider.get(url, ProcessInstanceVariable[].class)).thenReturn(response); final CamundaProcessDataServiceProvider objUnderTest = new CamundaProcessDataServiceProviderImpl(camundaRestUrlProvider, httpRestServiceProvider); diff --git a/so-monitoring/so-monitoring-handler/src/test/java/org/onap/so/monitoring/utils/ObjectEqualsUtilsTest.java b/so-monitoring/so-monitoring-handler/src/test/java/org/onap/so/monitoring/utils/ObjectEqualsUtilsTest.java index dd363abe3a..b4dd27129d 100644 --- a/so-monitoring/so-monitoring-handler/src/test/java/org/onap/so/monitoring/utils/ObjectEqualsUtilsTest.java +++ b/so-monitoring/so-monitoring-handler/src/test/java/org/onap/so/monitoring/utils/ObjectEqualsUtilsTest.java @@ -21,10 +21,8 @@ package org.onap.so.monitoring.utils; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; - import java.util.Arrays; import java.util.List; - import org.junit.Test; diff --git a/so-monitoring/so-monitoring-service/src/main/java/org/onap/so/monitoring/rest/api/JerseyConfiguration.java b/so-monitoring/so-monitoring-service/src/main/java/org/onap/so/monitoring/rest/api/JerseyConfiguration.java index 0f03f23898..22a1583fc2 100644 --- a/so-monitoring/so-monitoring-service/src/main/java/org/onap/so/monitoring/rest/api/JerseyConfiguration.java +++ b/so-monitoring/so-monitoring-service/src/main/java/org/onap/so/monitoring/rest/api/JerseyConfiguration.java @@ -21,7 +21,6 @@ package org.onap.so.monitoring.rest.api; import javax.annotation.PostConstruct; import javax.ws.rs.ApplicationPath; - import org.glassfish.jersey.server.ResourceConfig; import org.springframework.context.annotation.Configuration; diff --git a/so-monitoring/so-monitoring-service/src/main/java/org/onap/so/monitoring/rest/api/SoMonitoringController.java b/so-monitoring/so-monitoring-service/src/main/java/org/onap/so/monitoring/rest/api/SoMonitoringController.java index 155b4e65a4..d48d18dad0 100644 --- a/so-monitoring/so-monitoring-service/src/main/java/org/onap/so/monitoring/rest/api/SoMonitoringController.java +++ b/so-monitoring/so-monitoring-service/src/main/java/org/onap/so/monitoring/rest/api/SoMonitoringController.java @@ -21,7 +21,6 @@ package org.onap.so.monitoring.rest.api; import java.util.List; import java.util.Map; - import javax.ws.rs.GET; import javax.ws.rs.POST; import javax.ws.rs.Path; @@ -31,10 +30,7 @@ import javax.ws.rs.QueryParam; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import javax.ws.rs.core.Response.Status; - import org.onap.so.monitoring.db.service.DatabaseServiceProvider; -import org.onap.so.monitoring.exception.InvalidRestRequestException; -import org.onap.so.monitoring.exception.RestProcessingException; import org.onap.so.monitoring.model.ActivityInstanceDetail; import org.onap.so.monitoring.model.ProcessDefinitionDetail; import org.onap.so.monitoring.model.ProcessInstanceDetail; @@ -42,14 +38,14 @@ import org.onap.so.monitoring.model.ProcessInstanceIdDetail; import org.onap.so.monitoring.model.ProcessInstanceVariableDetail; import org.onap.so.monitoring.model.SoInfraRequest; import org.onap.so.monitoring.rest.service.CamundaProcessDataServiceProvider; +import org.onap.so.rest.exceptions.InvalidRestRequestException; +import org.onap.so.rest.exceptions.RestProcessingException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; - import com.google.common.base.Optional; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - /** * @author waqas.ikram@ericsson.com */ @@ -134,8 +130,7 @@ public class SoMonitoringController { @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML}) public Response getProcessDefinitionXml(final @PathParam("processDefinitionId") String processDefinitionId) { if (processDefinitionId == null || processDefinitionId.isEmpty()) { - return Response.status(Status.BAD_REQUEST).entity("Invalid process definition id: " + - processDefinitionId) + return Response.status(Status.BAD_REQUEST).entity("Invalid process definition id: " + processDefinitionId) .build(); } try { @@ -145,18 +140,15 @@ public class SoMonitoringController { final ProcessDefinitionDetail definitionDetail = response.get(); return Response.status(Status.OK).entity(definitionDetail).build(); } - LOGGER.error("Unable to find process definition xml for processDefinitionId: " + - processDefinitionId); + LOGGER.error("Unable to find process definition xml for processDefinitionId: " + processDefinitionId); return Response.status(Status.NO_CONTENT).build(); } catch (final InvalidRestRequestException extensions) { final String message = - "Unable to find process definition xml for processDefinitionId: {}" + - processDefinitionId; + "Unable to find process definition xml for processDefinitionId: {}" + processDefinitionId; return Response.status(Status.BAD_REQUEST).entity(message).build(); } catch (final RestProcessingException restProcessingException) { - final String message = "Unable to get process definition xml for id: " + - processDefinitionId; + final String message = "Unable to get process definition xml for id: " + processDefinitionId; LOGGER.error(message); return Response.status(Status.INTERNAL_SERVER_ERROR).entity(message).build(); } @@ -175,13 +167,11 @@ public class SoMonitoringController { camundaProcessDataServiceProvider.getActivityInstance(processInstanceId); return Response.status(Status.OK).entity(activityInstanceDetails).build(); } catch (final InvalidRestRequestException extensions) { - final String message = "Unable to find activity instance for processInstanceId: " + - processInstanceId; + final String message = "Unable to find activity instance for processInstanceId: " + processInstanceId; LOGGER.error(message); return Response.status(Status.BAD_REQUEST).entity(message).build(); } catch (final RestProcessingException restProcessingException) { - final String message = "Unable to get activity instance detail for id: " + - processInstanceId; + final String message = "Unable to get activity instance detail for id: " + processInstanceId; LOGGER.error(message); return Response.status(Status.INTERNAL_SERVER_ERROR).entity(message).build(); } @@ -201,13 +191,11 @@ public class SoMonitoringController { return Response.status(Status.OK).entity(processInstanceVariable).build(); } catch (final InvalidRestRequestException extensions) { final String message = - "Unable to find process instance variables for processInstanceId: " + - processInstanceId; + "Unable to find process instance variables for processInstanceId: " + processInstanceId; LOGGER.error(message); return Response.status(Status.BAD_REQUEST).entity(message).build(); } catch (final RestProcessingException restProcessingException) { - final String message = "Unable to get process instance variables for id: " + - processInstanceId; + final String message = "Unable to get process instance variables for id: " + processInstanceId; LOGGER.error(message); return Response.status(Status.INTERNAL_SERVER_ERROR).entity(message).build(); } @@ -230,13 +218,13 @@ public class SoMonitoringController { return Response.status(Status.OK).entity(requests).build(); } catch (final InvalidRestRequestException extensions) { - final String message = "Unable to search request for filters: " + filters + ", from: " + - startTime + ", to: " + endTime + ", maxResult: " + maxResult; + final String message = "Unable to search request for filters: " + filters + ", from: " + startTime + + ", to: " + endTime + ", maxResult: " + maxResult; LOGGER.error(message); return Response.status(Status.BAD_REQUEST).entity(message).build(); } catch (final RestProcessingException restProcessingException) { - final String message = "Unable to search request for filters: " + filters + ", from: " + - startTime + ", to: " + endTime + ", maxResult: " + maxResult; + final String message = "Unable to search request for filters: " + filters + ", from: " + startTime + + ", to: " + endTime + ", maxResult: " + maxResult; LOGGER.error(message); return Response.status(Status.INTERNAL_SERVER_ERROR).entity(message).build(); } diff --git a/so-monitoring/so-monitoring-service/src/test/java/org/onap/so/monitoring/rest/api/SoMonitoringControllerTest.java b/so-monitoring/so-monitoring-service/src/test/java/org/onap/so/monitoring/rest/api/SoMonitoringControllerTest.java index 3ca184ebaa..e22f1a359f 100644 --- a/so-monitoring/so-monitoring-service/src/test/java/org/onap/so/monitoring/rest/api/SoMonitoringControllerTest.java +++ b/so-monitoring/so-monitoring-service/src/test/java/org/onap/so/monitoring/rest/api/SoMonitoringControllerTest.java @@ -22,8 +22,8 @@ package org.onap.so.monitoring.rest.api; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; -import static org.onap.so.monitoring.configuration.rest.RestTemplateConfiguration.CAMUNDA_REST_TEMPLATE; -import static org.onap.so.monitoring.configuration.rest.RestTemplateConfiguration.DATABASE_REST_TEMPLATE; +import static org.onap.so.client.RestTemplateConfig.CONFIGURABLE_REST_TEMPLATE; +import static org.onap.so.configuration.rest.BasicHttpHeadersProvider.AUTHORIZATION_HEADER; import static org.onap.so.monitoring.rest.api.Constants.ACTIVITY_INSTANCE_RESPONSE_JSON_FILE; import static org.onap.so.monitoring.rest.api.Constants.EMPTY_ARRAY_RESPONSE; import static org.onap.so.monitoring.rest.api.Constants.EMPTY_STRING; @@ -37,11 +37,11 @@ import static org.onap.so.monitoring.rest.api.Constants.PROCRESS_DEF_ID; import static org.onap.so.monitoring.rest.api.Constants.SEARCH_RESULT_RESPONSE_JSON_FILE; import static org.onap.so.monitoring.rest.api.Constants.SINGLE_PROCCESS_INSTANCE_RESPONSE_JSON_FILE; import static org.onap.so.monitoring.rest.api.Constants.START_TIME_IN_MS; +import static org.springframework.test.web.client.match.MockRestRequestMatchers.header; import static org.springframework.test.web.client.match.MockRestRequestMatchers.requestTo; import static org.springframework.test.web.client.response.MockRestResponseCreators.withBadRequest; import static org.springframework.test.web.client.response.MockRestResponseCreators.withSuccess; import static org.springframework.test.web.client.response.MockRestResponseCreators.withUnauthorizedRequest; - import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; @@ -49,10 +49,8 @@ import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; - import javax.ws.rs.core.Response; import javax.ws.rs.core.Response.Status; - import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; @@ -81,14 +79,14 @@ import org.springframework.web.client.RestTemplate; @ActiveProfiles("test") @SpringBootTest public class SoMonitoringControllerTest { + private static final String CAMUNDA_BASIC_AUTH = + "Basic YWRtaW46S3A4Yko0U1hzek0wV1hsaGFrM2VIbGNzZTJnQXc4NHZhb0dHbUp2VXkyVQ=="; - @Autowired - @Qualifier(CAMUNDA_REST_TEMPLATE) - private RestTemplate restTemplate; + private static final String DATABASE_BASIC_AUTH = "Basic YnBlbDpwYXNzd29yZDEk"; @Autowired - @Qualifier(DATABASE_REST_TEMPLATE) - private RestTemplate dataBaseRestTemplate; + @Qualifier(CONFIGURABLE_REST_TEMPLATE) + private RestTemplate restTemplate; @Autowired private CamundaRestUrlProvider urlProvider; @@ -96,23 +94,22 @@ public class SoMonitoringControllerTest { @Autowired private DatabaseUrlProvider databaseUrlProvider; - private MockRestServiceServer camundaMockServer; + private MockRestServiceServer mockRestServiceServer; - private MockRestServiceServer databaseMockServer; @Autowired private SoMonitoringController objUnderTest; @Before public void setUp() throws Exception { - camundaMockServer = MockRestServiceServer.bindTo(restTemplate).build(); - databaseMockServer = MockRestServiceServer.bindTo(dataBaseRestTemplate).build(); + mockRestServiceServer = MockRestServiceServer.bindTo(restTemplate).build(); } @Test public void test_GetProcessInstance_SuccessResponseWithDataFromCamunda() throws Exception { final String jsonString = getJsonResponse(PROCCESS_INSTANCE_RESPONSE_JSON_FILE); - this.camundaMockServer.expect(requestTo(urlProvider.getHistoryProcessInstanceUrl(ID))) + this.mockRestServiceServer.expect(requestTo(urlProvider.getHistoryProcessInstanceUrl(ID))) + .andExpect(header(AUTHORIZATION_HEADER, CAMUNDA_BASIC_AUTH)) .andRespond(withSuccess(jsonString, MediaType.APPLICATION_JSON)); final Response response = objUnderTest.getProcessInstanceId(ID); @@ -125,7 +122,7 @@ public class SoMonitoringControllerTest { @Test public void test_GetProcessInstance_SuccessResponseWithEmptyDataFromCamunda() throws Exception { final String jsonString = EMPTY_ARRAY_RESPONSE; - this.camundaMockServer.expect(requestTo(urlProvider.getHistoryProcessInstanceUrl(ID))) + this.mockRestServiceServer.expect(requestTo(urlProvider.getHistoryProcessInstanceUrl(ID))) .andRespond(withSuccess(jsonString, MediaType.APPLICATION_JSON)); final Response response = objUnderTest.getProcessInstanceId(ID); @@ -135,7 +132,7 @@ public class SoMonitoringControllerTest { @Test public void test_GetProcessInstance_FailureResponseWithEmptyDataFromCamunda() throws Exception { - this.camundaMockServer.expect(requestTo(urlProvider.getHistoryProcessInstanceUrl(ID))) + this.mockRestServiceServer.expect(requestTo(urlProvider.getHistoryProcessInstanceUrl(ID))) .andRespond(withBadRequest()); final Response response = objUnderTest.getProcessInstanceId(ID); @@ -144,7 +141,7 @@ public class SoMonitoringControllerTest { @Test public void test_GetProcessInstance_UnauthorizedRequestFromCamunda() throws Exception { - this.camundaMockServer.expect(requestTo(urlProvider.getHistoryProcessInstanceUrl(ID))) + this.mockRestServiceServer.expect(requestTo(urlProvider.getHistoryProcessInstanceUrl(ID))) .andRespond(withUnauthorizedRequest()); final Response response = objUnderTest.getProcessInstanceId(ID); @@ -155,7 +152,7 @@ public class SoMonitoringControllerTest { @Test public void test_GetSinlgeProcessInstance_SuccessResponseWithDataFromCamunda() throws Exception { final String jsonString = getJsonResponse(SINGLE_PROCCESS_INSTANCE_RESPONSE_JSON_FILE); - this.camundaMockServer.expect(requestTo(urlProvider.getSingleProcessInstanceUrl(PROCESS_INSTACE_ID))) + this.mockRestServiceServer.expect(requestTo(urlProvider.getSingleProcessInstanceUrl(PROCESS_INSTACE_ID))) .andRespond(withSuccess(jsonString, MediaType.APPLICATION_JSON)); final Response response = objUnderTest.getSingleProcessInstance(PROCESS_INSTACE_ID); @@ -171,7 +168,7 @@ public class SoMonitoringControllerTest { @Test public void test_GetSingleProcessInstance_WithBadRequestResponseFromCamunda() throws Exception { - this.camundaMockServer.expect(requestTo(urlProvider.getSingleProcessInstanceUrl(PROCESS_INSTACE_ID))) + this.mockRestServiceServer.expect(requestTo(urlProvider.getSingleProcessInstanceUrl(PROCESS_INSTACE_ID))) .andRespond(withBadRequest()); final Response response = objUnderTest.getSingleProcessInstance(PROCESS_INSTACE_ID); @@ -181,7 +178,7 @@ public class SoMonitoringControllerTest { @Test public void test_GetSingleProcessInstance_WithUnauthorizedRequestResponseFromCamunda() throws Exception { - this.camundaMockServer.expect(requestTo(urlProvider.getSingleProcessInstanceUrl(PROCESS_INSTACE_ID))) + this.mockRestServiceServer.expect(requestTo(urlProvider.getSingleProcessInstanceUrl(PROCESS_INSTACE_ID))) .andRespond(withUnauthorizedRequest()); final Response response = objUnderTest.getSingleProcessInstance(PROCESS_INSTACE_ID); @@ -216,7 +213,7 @@ public class SoMonitoringControllerTest { @Test public void test_GetProcessDefinitionXml_SuccessResponseWithDataFromCamunda() throws Exception { final String jsonString = getJsonResponse(PROCESS_DEF_RESPONSE_JSON_FILE); - this.camundaMockServer.expect(requestTo(urlProvider.getProcessDefinitionUrl(PROCRESS_DEF_ID))) + this.mockRestServiceServer.expect(requestTo(urlProvider.getProcessDefinitionUrl(PROCRESS_DEF_ID))) .andRespond(withSuccess(jsonString, MediaType.APPLICATION_JSON)); final Response response = objUnderTest.getProcessDefinitionXml(PROCRESS_DEF_ID); @@ -228,7 +225,7 @@ public class SoMonitoringControllerTest { @Test public void test_GetProcessDefinitionXml_BadRequestResponseFromCamunda() throws Exception { - this.camundaMockServer.expect(requestTo(urlProvider.getProcessDefinitionUrl(PROCRESS_DEF_ID))) + this.mockRestServiceServer.expect(requestTo(urlProvider.getProcessDefinitionUrl(PROCRESS_DEF_ID))) .andRespond(withBadRequest()); final Response response = objUnderTest.getProcessDefinitionXml(PROCRESS_DEF_ID); @@ -238,7 +235,7 @@ public class SoMonitoringControllerTest { @Test public void test_GetProcessDefinitionXml_UnauthorizedRequestFromCamunda() throws Exception { - this.camundaMockServer.expect(requestTo(urlProvider.getProcessDefinitionUrl(PROCRESS_DEF_ID))) + this.mockRestServiceServer.expect(requestTo(urlProvider.getProcessDefinitionUrl(PROCRESS_DEF_ID))) .andRespond(withUnauthorizedRequest()); final Response response = objUnderTest.getProcessDefinitionXml(PROCRESS_DEF_ID); @@ -260,7 +257,7 @@ public class SoMonitoringControllerTest { @Test public void test_GetActivityInstanceDetail_SuccessResponseWithDataFromCamunda() throws Exception { final String jsonString = getJsonResponse(ACTIVITY_INSTANCE_RESPONSE_JSON_FILE); - this.camundaMockServer.expect(requestTo(urlProvider.getActivityInstanceUrl(PROCESS_INSTACE_ID))) + this.mockRestServiceServer.expect(requestTo(urlProvider.getActivityInstanceUrl(PROCESS_INSTACE_ID))) .andRespond(withSuccess(jsonString, MediaType.APPLICATION_JSON)); final Response response = objUnderTest.getActivityInstanceDetail(PROCESS_INSTACE_ID); @@ -287,7 +284,7 @@ public class SoMonitoringControllerTest { @Test public void test_GetActivityInstanceDetail_SuccessResponseWithEmptyDataFromCamunda() throws Exception { - this.camundaMockServer.expect(requestTo(urlProvider.getActivityInstanceUrl(PROCESS_INSTACE_ID))) + this.mockRestServiceServer.expect(requestTo(urlProvider.getActivityInstanceUrl(PROCESS_INSTACE_ID))) .andRespond(withSuccess(EMPTY_ARRAY_RESPONSE, MediaType.APPLICATION_JSON)); final Response response = objUnderTest.getActivityInstanceDetail(PROCESS_INSTACE_ID); @@ -297,7 +294,7 @@ public class SoMonitoringControllerTest { @Test public void test_GetActivityInstanceDetail_UnauthorizedRequestFromCamunda() throws Exception { - this.camundaMockServer.expect(requestTo(urlProvider.getActivityInstanceUrl(PROCESS_INSTACE_ID))) + this.mockRestServiceServer.expect(requestTo(urlProvider.getActivityInstanceUrl(PROCESS_INSTACE_ID))) .andRespond(withUnauthorizedRequest()); final Response response = objUnderTest.getActivityInstanceDetail(PROCESS_INSTACE_ID); @@ -307,7 +304,7 @@ public class SoMonitoringControllerTest { @Test public void test_GetActivityInstanceDetail_BadRequestFromCamunda() throws Exception { - this.camundaMockServer.expect(requestTo(urlProvider.getActivityInstanceUrl(PROCESS_INSTACE_ID))) + this.mockRestServiceServer.expect(requestTo(urlProvider.getActivityInstanceUrl(PROCESS_INSTACE_ID))) .andRespond(withBadRequest()); final Response response = objUnderTest.getActivityInstanceDetail(PROCESS_INSTACE_ID); @@ -329,7 +326,7 @@ public class SoMonitoringControllerTest { @Test public void test_GetProcessInstanceVariables_SuccessResponseWithDataFromCamunda() throws Exception { final String jsonString = getJsonResponse(PROCESS_INSTANCE_VARIABLES_RESPONSE_JSON_FILE); - this.camundaMockServer.expect(requestTo(urlProvider.getProcessInstanceVariablesUrl(PROCESS_INSTACE_ID))) + this.mockRestServiceServer.expect(requestTo(urlProvider.getProcessInstanceVariablesUrl(PROCESS_INSTACE_ID))) .andRespond(withSuccess(jsonString, MediaType.APPLICATION_JSON)); final Response response = objUnderTest.getProcessInstanceVariables(PROCESS_INSTACE_ID); @@ -347,7 +344,7 @@ public class SoMonitoringControllerTest { @Test public void test_GetProcessInstanceVariables_SuccessResponseWithEmptyDataFromCamunda() throws Exception { - this.camundaMockServer.expect(requestTo(urlProvider.getProcessInstanceVariablesUrl(PROCESS_INSTACE_ID))) + this.mockRestServiceServer.expect(requestTo(urlProvider.getProcessInstanceVariablesUrl(PROCESS_INSTACE_ID))) .andRespond(withSuccess(EMPTY_ARRAY_RESPONSE, MediaType.APPLICATION_JSON)); final Response response = objUnderTest.getProcessInstanceVariables(PROCESS_INSTACE_ID); @@ -358,7 +355,7 @@ public class SoMonitoringControllerTest { @Test public void test_GetProcessInstanceVariables_BadRequestFromCamunda() throws Exception { - this.camundaMockServer.expect(requestTo(urlProvider.getProcessInstanceVariablesUrl(PROCESS_INSTACE_ID))) + this.mockRestServiceServer.expect(requestTo(urlProvider.getProcessInstanceVariablesUrl(PROCESS_INSTACE_ID))) .andRespond(withBadRequest()); final Response response = objUnderTest.getProcessInstanceVariables(PROCESS_INSTACE_ID); @@ -369,7 +366,7 @@ public class SoMonitoringControllerTest { @Test public void test_GetProcessInstanceVariables_UnauthorizedRequestFromCamunda() throws Exception { - this.camundaMockServer.expect(requestTo(urlProvider.getProcessInstanceVariablesUrl(PROCESS_INSTACE_ID))) + this.mockRestServiceServer.expect(requestTo(urlProvider.getProcessInstanceVariablesUrl(PROCESS_INSTACE_ID))) .andRespond(withUnauthorizedRequest()); final Response response = objUnderTest.getProcessInstanceVariables(PROCESS_INSTACE_ID); @@ -396,8 +393,9 @@ public class SoMonitoringControllerTest { @Test public void test_GetInfraActiveRequests_SuccessResponseWithSoInfraRequestList() throws Exception { final String jsonString = getJsonResponse(SEARCH_RESULT_RESPONSE_JSON_FILE); - this.databaseMockServer + this.mockRestServiceServer .expect(requestTo(databaseUrlProvider.getSearchUrl(START_TIME_IN_MS, END_TIME_IN_MS, null))) + .andExpect(header(AUTHORIZATION_HEADER, DATABASE_BASIC_AUTH)) .andRespond(withSuccess(jsonString, MediaType.APPLICATION_JSON)); final Response response = diff --git a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/details/details.component.spec.ts b/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/details/details.component.spec.ts index 8205226f9e..8f2af84b0d 100644 --- a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/details/details.component.spec.ts +++ b/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/details/details.component.spec.ts @@ -1,138 +1,218 @@ -/**
-============LICENSE_START=======================================================
- Copyright (C) 2018 Ericsson. All rights reserved.
-================================================================================
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
- limitations under the License.
-
-SPDX-License-Identifier: Apache-2.0
-============LICENSE_END=========================================================
-
-@authors: ronan.kenny@ericsson.com, waqas.ikram@ericsson.com
-*/
-
-import { async, ComponentFixture, TestBed } from '@angular/core/testing';
-
-import { DetailsComponent } from './details.component';
-import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
-import { RouterTestingModule } from '@angular/router/testing';
-import { MatTableModule } from '@angular/material';
-import { inject } from '@angular/core/testing';
-import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing';
-import { HttpClientModule } from '@angular/common/http';
-import { HttpClient } from '@angular/common/http';
-import { RouterModule } from '@angular/router';
-import { APP_BASE_HREF } from '@angular/common';
-import { ToastrNotificationService } from '../toastr-notification-service.service';
-import { DataService } from '../data.service';
-import { Observable, of } from 'rxjs';
-import { ACTINST } from '../model/activityInstance.model';
-import { PDI } from '../model/processDefinition.model';
-import { PII } from '../model/processInstance.model';
-import { VarInstance } from '../model/variableInstance.model';
-
-// Generate stub for toastr popup notifications
-class StubbedToastrNotificationService extends ToastrNotificationService {
- toastrSettings() {
- }
-}
-
-// Create SPY Object for Jasmine tests to mock DataService
-let spyDataService: jasmine.SpyObj<DataService>;
-
-describe('DetailsComponent', () => {
- beforeEach(async(() => {
- spyDataService = jasmine.createSpyObj('DataService', ['getActivityInstance', 'getVariableInstance']);
-
- TestBed.configureTestingModule({
- providers: [DetailsComponent, HttpClient, HttpTestingController,
- { provide: APP_BASE_HREF, useValue: '/' },
- { provide: ToastrNotificationService, useClass: StubbedToastrNotificationService },
- { provide: DataService, useValue: spyDataService }],
- imports: [RouterTestingModule, MatTableModule, HttpClientModule, RouterModule.forRoot([])],
- schemas: [
- CUSTOM_ELEMENTS_SCHEMA
- ]
- })
- .compileComponents();
- }));
-
- // Ensure creation of DetailsComponent component
- it('component should be created', inject([DetailsComponent],
- (detailsComponent: DetailsComponent) => {
- expect(detailsComponent).toBeTruthy();
- }));
-
-
- // Mock an activityInstance and ensure array is populated
- it('activityInstance should be defined if data service returns activities', inject([DetailsComponent],
- (detailsComponent: DetailsComponent) => {
- const activity: ACTINST = {
- activityId: "",
- processInstanceId: "",
- calledProcessInstanceId: "",
- activityName: "",
- activityType: "",
- durationInMillis: "1",
- endTime: "",
- startTime: ""
- };
- spyDataService.getActivityInstance.and.returnValue(of([activity]));
- detailsComponent.getActInst("");
- expect(detailsComponent.activityInstance.length).toEqual(1);
- }));
-
-
- // Create a processDefinition and ensure it is defined
- it('processDefinition should be defined if PDI populated', inject([DetailsComponent],
- (detailsComponent: DetailsComponent) => {
- const activity: PDI = {
- processDefinitionId: "1",
- processDefinitionXml: ""
- };
- detailsComponent.getProcessDefinition("");
- detailsComponent.processDefinition = activity;
- expect(detailsComponent.processDefinition).toBeDefined();
- }));
-
-
- // Create a processInstance and ensure it is defined
- it('processInstance should be defined if PII populated', inject([DetailsComponent],
- (detailsComponent: DetailsComponent) => {
- const testVals: PII = {
- processInstancId: "1",
- processDefinitionId: "1",
- processDefinitionName: "test",
- superProcessInstanceId: "1"
- };
- detailsComponent.getProcInstance("");
- detailsComponent.processInstance = testVals;
- expect(detailsComponent.processInstance).toBeDefined();
- }));
-
-
- // displayCamundaflow test
- // TODO
-
- // Mock an variableInstance and ensure array is populated
- it('variableInstance should be defined if data service returns activities', inject([DetailsComponent],
- (detailsComponent: DetailsComponent) => {
- const activity2: VarInstance = {
- name: "a",
- type: "a",
- value: "1"
- };
- spyDataService.getVariableInstance.and.returnValue(of([activity2]));
- detailsComponent.getVarInst("");
- expect(detailsComponent.variableInstance.length).toEqual(1);
- }));
-});
+/** +============LICENSE_START======================================================= + Copyright (C) 2018 Ericsson. All rights reserved. +================================================================================ +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and + limitations under the License. + +SPDX-License-Identifier: Apache-2.0 +============LICENSE_END========================================================= + +@authors: ronan.kenny@ericsson.com, waqas.ikram@ericsson.com, andrei.barcovschi@ericsson.com +*/ + +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { DetailsComponent } from './details.component'; +import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; +import { RouterTestingModule } from '@angular/router/testing'; +import { MatTableModule } from '@angular/material'; +import { inject } from '@angular/core/testing'; +import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { HttpClientModule } from '@angular/common/http'; +import { HttpClient } from '@angular/common/http'; +import { RouterModule } from '@angular/router'; +import { APP_BASE_HREF } from '@angular/common'; +import { ToastrNotificationService } from '../toastr-notification-service.service'; +import { DataService } from '../data.service'; +import { Observable, of, throwError } from 'rxjs'; +import { ACTINST } from '../model/activityInstance.model'; +import { PDI } from '../model/processDefinition.model'; +import { PII } from '../model/processInstance.model'; +import { VarInstance } from '../model/variableInstance.model'; +import { ActivatedRoute } from '@angular/router'; +import { Params } from '@angular/router'; + +// Generate stub for toastr popup notifications +class StubbedToastrNotificationService extends ToastrNotificationService { + toastrSettings() {} + info() {} + error() {} +} + +const startActivity: ACTINST = { + activityId: "StartEvent_1", + processInstanceId: "processInstanceId-val-1234", + calledProcessInstanceId: "", + activityName: "", + activityType: "", + durationInMillis: "1", + endTime: "", + startTime: "" +}; + +const subProcessActivity: ACTINST = { + activityId: "CallActivity_14h26ae", + processInstanceId: "processInstanceId-val-1234", + calledProcessInstanceId: "1234", + activityName: "", + activityType: "", + durationInMillis: "1", + endTime: "", + startTime: "" +}; + +const processDefinition: PDI = { + processDefinitionId: "processDefinitionId-val-1234", + processDefinitionXml: "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + + "<bpmn:definitions xmlns:bpmn=\"http://www.omg.org/spec/BPMN/20100524/MODEL\" xmlns:bpmndi=\"http://www.omg.org/spec/BPMN/20100524/DI\" xmlns:di=\"http://www.omg.org/spec/DD/20100524/DI\" xmlns:dc=\"http://www.omg.org/spec/DD/20100524/DC\" xmlns:camunda=\"http://camunda.org/schema/1.0/bpmn\" id=\"Definitions_01lwydo\" targetNamespace=\"http://bpmn.io/schema/bpmn\" exporter=\"Camunda Modeler\" exporterVersion=\"2.2.4\">" + + " <bpmn:process id=\"Process_1\" isExecutable=\"true\">" + + " <bpmn:startEvent id=\"StartEvent_1\">" + + " <bpmn:outgoing>SequenceFlow_1rrp6qt</bpmn:outgoing>" + + " </bpmn:startEvent>" + + " <bpmn:callActivity id=\"CallActivity_14h26ae\" name=\"Sub Process\" calledElement=\"DecomposeService\">" + + " <bpmn:incoming>SequenceFlow_1rrp6qt</bpmn:incoming>" + + " <bpmn:outgoing>SequenceFlow_0yvdjct</bpmn:outgoing>" + + " </bpmn:callActivity>" + + " <bpmn:sequenceFlow id=\"SequenceFlow_1rrp6qt\" sourceRef=\"StartEvent_1\" targetRef=\"CallActivity_14h26ae\" />" + + " <bpmn:endEvent id=\"EndEvent_039q5o1\">" + + " <bpmn:incoming>SequenceFlow_0yvdjct</bpmn:incoming>" + + " </bpmn:endEvent>" + + " <bpmn:sequenceFlow id=\"SequenceFlow_0yvdjct\" sourceRef=\"CallActivity_14h26ae\" targetRef=\"EndEvent_039q5o1\" />" + + " </bpmn:process>" + + " <bpmndi:BPMNDiagram id=\"BPMNDiagram_1\">" + + " <bpmndi:BPMNPlane id=\"BPMNPlane_1\" bpmnElement=\"Process_1\">" + + " <bpmndi:BPMNShape id=\"_BPMNShape_StartEvent_2\" bpmnElement=\"StartEvent_1\">" + + " <dc:Bounds x=\"173\" y=\"102\" width=\"36\" height=\"36\" />" + + " </bpmndi:BPMNShape>" + + " <bpmndi:BPMNShape id=\"CallActivity_14h26ae_di\" bpmnElement=\"CallActivity_14h26ae\">" + + " <dc:Bounds x=\"267\" y=\"80\" width=\"100\" height=\"80\" />" + + " </bpmndi:BPMNShape>" + + " <bpmndi:BPMNEdge id=\"SequenceFlow_1rrp6qt_di\" bpmnElement=\"SequenceFlow_1rrp6qt\">" + + " <di:waypoint x=\"209\" y=\"120\" />" + + " <di:waypoint x=\"267\" y=\"120\" />" + + " </bpmndi:BPMNEdge>" + + " <bpmndi:BPMNShape id=\"EndEvent_039q5o1_di\" bpmnElement=\"EndEvent_039q5o1\">" + + " <dc:Bounds x=\"451\" y=\"102\" width=\"36\" height=\"36\" />" + + " </bpmndi:BPMNShape>" + + " <bpmndi:BPMNEdge id=\"SequenceFlow_0yvdjct_di\" bpmnElement=\"SequenceFlow_0yvdjct\">" + + " <di:waypoint x=\"367\" y=\"120\" />" + + " <di:waypoint x=\"451\" y=\"120\" />" + + " </bpmndi:BPMNEdge>" + + " </bpmndi:BPMNPlane>" + + " </bpmndi:BPMNDiagram>" + + "</bpmn:definitions>" +}; + +const emptyProcessDefinition: PDI = { + processDefinitionId: "processDefinitionId-val", + processDefinitionXml: "" +}; + +const processInstance: PII = { + processInstancId: "processInstanceId-val-1234", + processDefinitionId: "1", + processDefinitionName: "test", + superProcessInstanceId: "1" +}; + +const varInstanceObj: VarInstance = { + name: 'ABC', + type: 'Object', + value: '{value: 1234}' +}; + +const varInstanceStr: VarInstance = { + name: 'NameStr', + type: 'String', + value: 'valOfStr' +}; + +describe('DetailsComponent', (displayCamundaflow = {}) => { + // Create SPY Object for Jasmine tests to mock DataService + let spyDataService: jasmine.SpyObj<DataService>; + let component: DetailsComponent; + let fixture: ComponentFixture<DetailsComponent>; + + beforeEach(async(() => { + spyDataService = jasmine.createSpyObj('DataService', ['getActivityInstance', 'getVariableInstance', 'getProcessDefinition', 'getProcessInstance']); + + TestBed.configureTestingModule({ + providers: [DetailsComponent, HttpClient, HttpTestingController, + { provide: APP_BASE_HREF, useValue: '/' }, + { provide: ToastrNotificationService, useClass: StubbedToastrNotificationService }, + { provide: DataService, useValue: spyDataService }, + { provide: ActivatedRoute, useValue: { params: of({ id: '1234' }) } }], + imports: [RouterTestingModule, MatTableModule, HttpClientModule, RouterModule.forRoot([])], + declarations: [DetailsComponent], + schemas: [ + CUSTOM_ELEMENTS_SCHEMA + ] + }); + fixture = TestBed.createComponent(DetailsComponent); + component = fixture.componentInstance; + })); + + // Ensure creation of DetailsComponent component + it('component should be created', inject([DetailsComponent], + (detailsComponent: DetailsComponent) => { + expect(detailsComponent).toBeTruthy(); + })); + + // Create a processInstance and ensure it is defined + it('processInstance should be defined if PII populated', async(() => { + spyDataService.getActivityInstance.and.returnValue(Promise.resolve([startActivity, subProcessActivity])); + spyDataService.getProcessDefinition.and.returnValue(of(processDefinition)); + spyDataService.getProcessInstance.and.returnValue(Promise.resolve(processInstance)); + spyDataService.getVariableInstance.and.returnValue(of([varInstanceObj])); + component.ngOnInit(); + + fixture.whenStable().then(() => { + expect(component.processInstance).toBeDefined(); + }); + })); + + it('should handle bpmnViewer.importXML error', () => { + spyDataService.getActivityInstance.and.returnValue(Promise.resolve([startActivity, subProcessActivity])); + spyDataService.getProcessDefinition.and.returnValue(of(emptyProcessDefinition)); + spyDataService.getProcessInstance.and.returnValue(Promise.resolve(processInstance)); + spyDataService.getVariableInstance.and.returnValue(of([varInstanceObj])); + component.ngOnInit(); + }); + + it('should handle error when dataService.getProcessInstance returns an error', () => { + spyDataService.getVariableInstance.and.returnValue(of([varInstanceObj])); + spyDataService.getProcessInstance.and.returnValue(Promise.reject(new Error('getProcessInstance Promise should not be resolved'))); + component.ngOnInit(); + }); + + it('should handle error when data.getVariableInstance returns an error', () => { + spyDataService.getActivityInstance.and.returnValue(Promise.resolve([startActivity, subProcessActivity])); + spyDataService.getProcessDefinition.and.returnValue(of(processDefinition)); + spyDataService.getProcessInstance.and.returnValue(Promise.resolve(processInstance)); + spyDataService.getVariableInstance.and.callFake(() => { + return throwError(new Error('getVariableInstance error')); + }); + component.ngOnInit(); + }); + + it('should handle error when data.getActivityInstance and data.getProcessDefinition return errors', () => { + spyDataService.getProcessInstance.and.returnValue(Promise.resolve(processInstance)); + spyDataService.getVariableInstance.and.returnValue(of([varInstanceObj])); + spyDataService.getProcessDefinition.and.returnValue(of(processDefinition)); + spyDataService.getActivityInstance.and.returnValue(Promise.reject(new Error('getActivityInstance Promise should not be resolved'))); + spyDataService.getProcessDefinition.and.callFake(() => { + return throwError(new Error('getProcessDefinition error')); + }); + component.ngOnInit(); + }); +}); diff --git a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/home/home.component.html b/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/home/home.component.html index 0c0e1c04c3..39fcdcb293 100644 --- a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/home/home.component.html +++ b/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/home/home.component.html @@ -30,7 +30,7 @@ SPDX-License-Identifier: Apache-2.0 <!-- Dropdown Filter and TextBox for Service Instance Id --> <div class="container-home"> <mat-form-field class="selectFilter"> - <mat-select class="formatBox" [(ngModel)]="searchData.selectedValueSII" name="sel" placeholder="Select Filter"> + <mat-select class="formatBox" [(value)]="searchData.selectedValueSII" placeholder="Select Filter"> <mat-option *ngFor="let option of options" [value]="option.value">{{option.name}}</mat-option> </mat-select> </mat-form-field> @@ -42,7 +42,7 @@ SPDX-License-Identifier: Apache-2.0 <!-- Dropdown Filter and TextBox for Request Id --> <div class="container-home"> <mat-form-field class="selectFilter"> - <mat-select class="formatBox" [(ngModel)]="searchData.selectedValueRI" name="sel" placeholder="Select Filter"> + <mat-select class="formatBox" [(value)]="searchData.selectedValueRI" placeholder="Select Filter"> <mat-option *ngFor="let option of options" [value]="option.value">{{option.name}}</mat-option> </mat-select> </mat-form-field> @@ -59,14 +59,14 @@ SPDX-License-Identifier: Apache-2.0 <!-- Dropdown box for Start Hour selection --> <mat-form-field class="selectHour"> - <mat-select class="formatBox" [(ngModel)]="searchData.selectedStartHour" name="hourFrom" placeholder="Select Hour"> + <mat-select class="formatBox" [(value)]="searchData.selectedStartHour" placeholder="Select Hour"> <mat-option *ngFor="let option of hourOptions" [value]="option">{{option}}</mat-option> </mat-select> </mat-form-field> <!-- Dropdown box for Start Minute selection --> <mat-form-field class="selectMinute"> - <mat-select class="formatBox" [(ngModel)]="searchData.selectedStartMinute" name="minuteFrom" placeholder="Select Minute"> + <mat-select class="formatBox" [(value)]="searchData.selectedStartMinute" placeholder="Select Minute"> <mat-option *ngFor="let option of minuteOptions" [value]="option">{{option}}</mat-option> </mat-select> </mat-form-field> @@ -75,7 +75,7 @@ SPDX-License-Identifier: Apache-2.0 <!-- Dropdown Filter and TextBox for Service Name --> <div class="container-home"> <mat-form-field class="selectFilter"> - <mat-select class="formatBox" [(ngModel)]="searchData.selectedValueSN" name="sel" placeholder="Select Filter"> + <mat-select class="formatBox" [(value)]="searchData.selectedValueSN" placeholder="Select Filter"> <mat-option *ngFor="let option of options" [value]="option.value">{{option.name}}</mat-option> </mat-select> </mat-form-field> @@ -92,14 +92,14 @@ SPDX-License-Identifier: Apache-2.0 <!-- Dropdown box for End Hour selection --> <mat-form-field class="selectHour"> - <mat-select class="formatBox" [(ngModel)]="searchData.selectedEndHour" name="hourTo" placeholder="Select Hour"> + <mat-select class="formatBox" [(value)]="searchData.selectedEndHour" placeholder="Select Hour"> <mat-option *ngFor="let option of hourOptions" [value]="option">{{option}}</mat-option> </mat-select> </mat-form-field> <!-- Dropdown box for End Minute selection --> <mat-form-field class="selectMinute"> - <mat-select class="formatBox" [(ngModel)]="searchData.selectedEndMinute" name="minuteTo" placeholder="Select Minute"> + <mat-select class="formatBox" [(value)]="searchData.selectedEndMinute" placeholder="Select Minute"> <mat-option *ngFor="let option of minuteOptions" [value]="option">{{option}}</mat-option> </mat-select> </mat-form-field> @@ -108,7 +108,7 @@ SPDX-License-Identifier: Apache-2.0 <!-- Dropdown Filter for Status --> <div class="container-home"> <mat-form-field class="selectFilter"> - <mat-select class="formatBox" [(ngModel)]="searchData.selectedValueSTATUS" name="sel" placeholder="Status"> + <mat-select class="formatBox" [(value)]="searchData.selectedValueSTATUS" placeholder="Status"> <mat-option *ngFor="let statusOption of statusOptions" [value]="statusOption.value">{{ statusOption.name }}</mat-option> </mat-select> </mat-form-field> diff --git a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/home/home.component.spec.ts b/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/home/home.component.spec.ts index 1e1485eaca..cc11ebc05d 100644 --- a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/home/home.component.spec.ts +++ b/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/home/home.component.spec.ts @@ -1,78 +1,178 @@ -/**
-============LICENSE_START=======================================================
- Copyright (C) 2018 Ericsson. All rights reserved.
-================================================================================
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
- limitations under the License.
-
-SPDX-License-Identifier: Apache-2.0
-============LICENSE_END=========================================================
-
-@authors: ronan.kenny@ericsson.com, waqas.ikram@ericsson.com
-*/
-
-import { async, ComponentFixture, TestBed } from '@angular/core/testing';
-
-import { HomeComponent } from './home.component';
-import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
-import { MatTableModule } from '@angular/material';
-import { FormsModule } from '@angular/forms';
-import { MatDatepickerModule } from '@angular/material/datepicker';
-import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing';
-import { HttpClientModule } from '@angular/common/http';
-import { HttpClient } from '@angular/common/http';
-import { inject } from '@angular/core/testing';
-import { RouterModule } from '@angular/router';
-import { APP_BASE_HREF } from '@angular/common';
-import { ToastrNotificationService } from '../toastr-notification-service.service';
-import { environment } from '../../environments/environment.prod';
-
-class StubbedToastrNotificationService extends ToastrNotificationService {
- toastrSettings() {
- }
-}
-
-describe('HomeComponent', () => {
- let component: HomeComponent;
- let fixture: ComponentFixture<HomeComponent>;
-
- beforeEach(async(() => {
- TestBed.configureTestingModule({
- providers: [HomeComponent, HttpClient, HttpTestingController,
- { provide: APP_BASE_HREF, useValue: '/' },
- { provide: ToastrNotificationService, useClass: StubbedToastrNotificationService }],
- imports: [MatTableModule, FormsModule, MatDatepickerModule, HttpClientModule, RouterModule.forRoot([])],
- declarations: [HomeComponent],
- schemas: [
- CUSTOM_ELEMENTS_SCHEMA
- ]
- })
- .compileComponents();
- }));
-
- // Ensure creation of HomeComponent component
- it('component should be created', inject([HttpTestingController, HomeComponent],
- (httpClient: HttpTestingController, service: HomeComponent) => {
- expect(service).toBeTruthy();
- }));
-
- // Ensure all statistic variables are initialised to zero
- it('ensure statistic variables are defaulted at zero', async(inject([HttpTestingController, HomeComponent],
- (httpClient: HttpTestingController, service: HomeComponent) => {
- expect(service.totalVal === 0 && service.completeVal === 0 &&
- service.inProgressVal === 0 && service.failedVal === 0 &&
- service.pendingVal === 0 && service.unlockedVal === 0 &&
- service.percentageComplete === 0 && service.percentageFailed === 0 &&
- service.percentageInProg === 0 && service.percentagePending === 0 &&
- service.percentageUnlocked === 0).toBeTruthy();
- })));
-});
+/** +============LICENSE_START======================================================= + Copyright (C) 2018 Ericsson. All rights reserved. +================================================================================ +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and + limitations under the License. + +SPDX-License-Identifier: Apache-2.0 +============LICENSE_END========================================================= + +@authors: ronan.kenny@ericsson.com, waqas.ikram@ericsson.com, andrei.barcovschi@ericsson.com +*/ + +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { HomeComponent } from './home.component'; +import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; +import { MatTableModule, MatNativeDateModule, MatTableDataSource, MatPaginatorModule } from '@angular/material'; +import { FormsModule } from '@angular/forms'; +import { MatDatepickerModule } from '@angular/material/datepicker'; +import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; +import { HttpClientModule } from '@angular/common/http'; +import { HttpClient } from '@angular/common/http'; +import { inject } from '@angular/core/testing'; +import { RouterModule } from '@angular/router'; +import { APP_BASE_HREF } from '@angular/common'; +import { ToastrNotificationService } from '../toastr-notification-service.service'; +import { environment } from '../../environments/environment.prod'; +import { Observable, of, throwError } from 'rxjs'; +import { SearchRequest } from '../model/SearchRequest.model'; +import { DataService } from '../data.service'; // may be able to remove +import { Process } from '../model/process.model'; +import { By } from '@angular/platform-browser'; +import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; +import { ProcessInstanceId } from '../model/processInstanceId.model'; +import { HttpResponse } from '@angular/common/http'; +import { Router } from '@angular/router'; +import { Routes } from '@angular/router'; +import { RouterTestingModule } from '@angular/router/testing'; +import { DetailsComponent } from '../details/details.component'; + +// Generate stub for toastr popup notifications +class StubbedToastrNotificationService extends ToastrNotificationService { + toastrSettings() {} + info() {} + error() {} +} + +const routes: Routes = [ { path: 'details/114e9ae4-4a32-11e9-8646-d663bd873d93' , component: DetailsComponent} ] + +describe('HomeComponent', () => { + let spyDataService: jasmine.SpyObj<DataService>; + let router: Router; + let component: HomeComponent; + let fixture: ComponentFixture<HomeComponent>; + + beforeEach(() => { + spyDataService = jasmine.createSpyObj('DataService', ['retrieveInstance', 'getProcessInstanceId']); + + TestBed.configureTestingModule({ + providers: [ + { provide: DataService, useValue: spyDataService }, + { provide: APP_BASE_HREF, useValue: '/' }, + { provide: ToastrNotificationService, useClass: StubbedToastrNotificationService }], + imports: [MatPaginatorModule, BrowserAnimationsModule, MatTableModule, FormsModule, MatDatepickerModule, MatNativeDateModule, HttpClientModule, RouterTestingModule.withRoutes(routes)], + declarations: [HomeComponent, DetailsComponent], + schemas: [ + CUSTOM_ELEMENTS_SCHEMA + ] + }); + + fixture = TestBed.createComponent(HomeComponent); + router = TestBed.get(Router); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + // Ensure creation of HomeComponent component + it('component should be created', () => { + expect(component).toBeTruthy(); + }); + + // Ensure all statistic variables are initialised to zero + it('should ensure statistic variables are defaulted at zero', () => { + expect(component.totalVal === 0 && component.completeVal === 0 && + component.inProgressVal === 0 && component.failedVal === 0 && + component.pendingVal === 0 && component.unlockedVal === 0 && + component.percentageComplete === 0 && component.percentageFailed === 0 && + component.percentageInProg === 0 && component.percentagePending === 0 && + component.percentageUnlocked === 0).toBeTruthy(); + }); + + it('should should navigate to a process if response status is OK', async(() => { + spyDataService.getProcessInstanceId.and.returnValue(of(<HttpResponse<ProcessInstanceId>>{body: {processInstanceId: '114e9ae4-4a32-11e9-8646-d663bd873d93'}, status: 200})); + spyOn(router, 'navigate'); + component.getProcessIsntanceId('e8a75940-4a32-11e9-8646-d663bd873d93'); + + fixture.whenStable().then(() => { + expect(router.navigate).toHaveBeenCalledWith(['/details/114e9ae4-4a32-11e9-8646-d663bd873d93']); + }); + })); + + it('should handle error if no process instance id found', () => { + spyDataService.getProcessInstanceId.and.returnValue(of(<HttpResponse<ProcessInstanceId>>{body: {processInstanceId: 'getProcessInstanceId error not found'}, status: 404})); + component.getProcessIsntanceId('e8a75940-4a32-11e9-8646-d663bd873d93'); + }); + + it('should handle error when searchData.getSearchRequest returns an error', () => { + spyOn(component.searchData, 'getSearchRequest').and.callFake(() => { + return throwError(new Error('getSearchRequest error')); + }); + component.makeCall(); + }); + + it('should handle error when dataService.retrieveInstance returns an error', () => { + spyOn(component.searchData, 'getSearchRequest').and.returnValue(of(getSearchRequest("965d3c92-44e0-11e9-b210-d663bd873d93", "85a7c354-44e0-11e9-b210-d663bd873d93", undefined, undefined, undefined, undefined, undefined, undefined, "ALL"))); + spyDataService.retrieveInstance.and.callFake(() => { + return throwError(new Error('retrieveInstance error')); + }); + component.makeCall(); + }); + + it('should calculate statistics correctly', async(() => { + let requestStatusTypes: string[] = ["COMPLETE", "IN_PROGRESS", "FAILED", "PENDING", "UNLOCKED"]; + let processArr: Process[] = []; + + // create 5 processes, one of each requestStatusType, with default time. + requestStatusTypes.forEach((status) => { + let serviceName = "service-" + status; + var process = getProcess("85a7c354-44e0-11e9-b210-d663bd873d93", "965d3c92-44e0-11e9-b210-d663bd873d93", serviceName, "048a6212-44e1-11e9-b210-d663bd873d93", status, "TestType", undefined, undefined); + processArr.push(process); + }) + + // search request has default filter. + spyOn(component.searchData, 'getSearchRequest').and.returnValue(of(getSearchRequest(undefined, undefined, undefined, undefined, undefined, undefined, undefined, undefined, "ALL"))); + spyDataService.retrieveInstance.and.returnValue(of(processArr)); + component.makeCall(); + + fixture.whenStable().then(() => { + fixture.detectChanges(); + + expect( + component.totalVal === 5 && component.completeVal === 1 && + component.inProgressVal === 1 && component.failedVal === 1 && + component.pendingVal === 1 && component.unlockedVal === 1 && + component.percentageComplete === 20 && + component.percentageFailed === 20 && + component.percentageInProg === 20 && + component.percentagePending === 20 && + component.percentageUnlocked === 20) + .toBeTruthy(); + }); + })); + + function getSearchRequest(selectedValueSII = "EQ", serviceInstanceIdVal: string, selectedValueRI = "EQ", requestIdVal: string, selectedValueSN = "EQ", serviceInstanceNameVal: string, startTimeInMilliseconds = 0, endTimeInMilliseconds = 4, selectedValueSTATUS?: string): SearchRequest { + if (startTimeInMilliseconds > endTimeInMilliseconds) { + console.error("End time cannot be greater than start time."); + return undefined; + } + if (typeof selectedValueSTATUS === "string") + return new SearchRequest({ serviceInstanceId: [selectedValueSII, serviceInstanceIdVal], requestId: [selectedValueRI, requestIdVal], serviceInstanceName: [selectedValueSN, serviceInstanceNameVal], requestStatus: ["EQ", selectedValueSTATUS] }, startTimeInMilliseconds, endTimeInMilliseconds); + else + return new SearchRequest({ serviceInstanceId: [selectedValueSII, serviceInstanceIdVal], requestId: [selectedValueRI, requestIdVal], serviceInstanceName: [selectedValueSN, serviceInstanceNameVal] }, startTimeInMilliseconds, endTimeInMilliseconds); + } + + function getProcess(requestIdVal: string, serviceInstanceIdVal: string, serviceIstanceNameVal: string, networkIdVal: string, requestStatusVal: string, serviceTypeVal: string, startTimeVal = "1", endTimeVal = "2"): Process { + return <Process>{ requestId: requestIdVal, serviceInstanceId: serviceInstanceIdVal, serviceIstanceName: serviceIstanceNameVal, networkId: networkIdVal, requestStatus: requestStatusVal, serviceType: serviceTypeVal, startTime: startTimeVal, endTime: endTimeVal }; + } +}); diff --git a/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/model/searchData.model.spec.ts b/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/model/searchData.model.spec.ts new file mode 100644 index 0000000000..5323cce1fd --- /dev/null +++ b/so-monitoring/so-monitoring-ui/src/main/frontend/src/app/model/searchData.model.spec.ts @@ -0,0 +1,78 @@ +/** +============LICENSE_START======================================================= + Copyright (C) 2018 Ericsson. All rights reserved. +================================================================================ +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and + limitations under the License. + +SPDX-License-Identifier: Apache-2.0 +============LICENSE_END========================================================= + +@authors: andrei.barcovschi@ericsson.com +*/ + +import { SearchData } from './searchData.model'; +import { SearchRequest } from './SearchRequest.model'; +import { Observable, throwError } from 'rxjs'; + +describe('SearchData', () => { + let searchRequest: SearchRequest; + let searchData: SearchData; + + beforeEach(() => { + searchData = new SearchData(); + }); + + it('should return a SearchRequest observable with selectedValueSTATUS != ALL', () => { // NOT ALL CHANGE TEST TO TEST THIS ISNTESASD + searchData.serviceInstanceId = "bd827d8c-4b07-11e9-8646-d663bd873d93"; + searchData.requestId = "cf1343d8-4b07-11e9-8646-d663bd873d93"; + searchData.serviceInstanceName = "service-123"; + searchData.selectedValueSTATUS = "COMPLETE"; + + searchData.getSearchRequest().subscribe((request: SearchRequest) => { + searchRequest = request; + }); + let filters = searchRequest.getFilters(); + expect(searchRequest.getFilters()).toEqual({ serviceInstanceId: [ 'EQ', 'bd827d8c-4b07-11e9-8646-d663bd873d93' ], + requestId: [ 'EQ', 'cf1343d8-4b07-11e9-8646-d663bd873d93' ], + serviceInstanceName: [ 'EQ', 'service-123' ], + requestStatus: [ 'EQ', 'COMPLETE' ] + }); + expect(searchRequest.getStartTimeInMilliseconds()).toBe(searchData.startDate.getTime()); + expect(searchRequest.getEndTimeInMilliseconds()).toBe(searchData.endDate.getTime()); + }); + + it('should throw an error if found incorrect start or end date', () => { + searchData.startDate = null; + searchData.endDate = undefined; + searchData.getSearchRequest().subscribe({ + error: (err) => { + expect(err).toEqual('Found end or start date empty, Please enter start and end date') + } + }); + }); + + it('should throw an error if startTimeInMilliseconds > endTimeInMilliseconds', () => { + searchData.startDate = new Date('March 20, 2019 02:00:00'); + searchData.endDate = new Date('March 20, 2019 01:00:00'); + searchData.selectedStartHour = '02'; + searchData.selectedEndHour = '01'; + searchData.selectedStartMinute = '00'; + searchData.selectedEndMinute = '00'; + + searchData.getSearchRequest().subscribe({ + error: (err) => { + expect(err).toEqual("End time: " + searchData.endDate + " can not be greater then start time: " + searchData.startDate) + } + }); + }); +}); |