diff options
author | waqas.ikram <waqas.ikram@est.tech> | 2023-12-14 12:17:03 +0000 |
---|---|---|
committer | waqas.ikram <waqas.ikram@est.tech> | 2023-12-18 12:34:36 +0000 |
commit | 66d033e5bb4317d02d343fc3a5f50dde2d4097d6 (patch) | |
tree | ff4b8353c507f9c5bde698fe98bf0df8d4a2f74e /cps-ncmp-service/src/test/groovy/org/onap | |
parent | c08b6d25f232907c51d84f0eb31ca8b977469e02 (diff) |
Enhancing the REST template with HttpClient5
for better performance and allowing users to configure timeouts as per their requirements
Issue-ID: CPS-1994
Change-Id: I9fa94fb3923a50e33b3850ec0f190a51e278698f
Signed-off-by: waqas.ikram <waqas.ikram@est.tech>
Diffstat (limited to 'cps-ncmp-service/src/test/groovy/org/onap')
3 files changed, 62 insertions, 6 deletions
diff --git a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/NetworkCmProxyDataServiceImplRegistrationSpec.groovy b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/NetworkCmProxyDataServiceImplRegistrationSpec.groovy index 51b00d1431..013341f4bc 100644 --- a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/NetworkCmProxyDataServiceImplRegistrationSpec.groovy +++ b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/NetworkCmProxyDataServiceImplRegistrationSpec.groovy @@ -212,7 +212,7 @@ class NetworkCmProxyDataServiceImplRegistrationSpec extends Specification { 1 * mockLcmEventsCmHandleStateHandler.initiateStateAdvised(_) >> { args -> { - def cmHandleStatePerCmHandle = (args[0] as Map) + def cmHandleStatePerCmHandle = (args[0] as List) cmHandleStatePerCmHandle.each { assert (it.id == 'cmhandle' && it.dmiServiceName == 'my-server') } diff --git a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/config/HttpClientConfigurationSpec.groovy b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/config/HttpClientConfigurationSpec.groovy new file mode 100644 index 0000000000..941c8b8a70 --- /dev/null +++ b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/config/HttpClientConfigurationSpec.groovy @@ -0,0 +1,48 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2023 Nordix Foundation. + * ================================================================================ + * 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.cps.ncmp.api.impl.config + +import java.time.Duration +import org.springframework.beans.factory.annotation.Autowired +import org.springframework.boot.context.properties.EnableConfigurationProperties +import org.springframework.boot.test.context.SpringBootTest +import org.springframework.test.context.ContextConfiguration +import org.springframework.test.context.TestPropertySource +import org.springframework.test.context.support.AnnotationConfigContextLoader +import spock.lang.Specification + +@SpringBootTest +@ContextConfiguration(classes = [HttpClientConfiguration]) +@EnableConfigurationProperties(HttpClientConfiguration.class) +@TestPropertySource(properties = ["httpclient5.connectionTimeoutInSeconds=1", "httpclient5.maximumConnectionsTotal=200"]) +class HttpClientConfigurationSpec extends Specification { + + @Autowired + private HttpClientConfiguration httpClientConfiguration + + def 'Test HttpClientConfiguration properties with custom and default values'() { + expect: 'custom property values' + httpClientConfiguration.getConnectionTimeoutInSeconds() == Duration.ofSeconds(1) + httpClientConfiguration.getMaximumConnectionsTotal() == 200 + and: 'default property values' + httpClientConfiguration.getMaximumConnectionsPerRoute() == 50 + httpClientConfiguration.getIdleConnectionEvictionThresholdInSeconds() == Duration.ofSeconds(5) + } +} diff --git a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/config/NcmpConfigurationSpec.groovy b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/config/NcmpConfigurationSpec.groovy index e1aba79a50..a4df9b37cf 100644 --- a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/config/NcmpConfigurationSpec.groovy +++ b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/config/NcmpConfigurationSpec.groovy @@ -1,6 +1,6 @@ /* * ============LICENSE_START======================================================= - * Copyright (C) 2021 Nordix Foundation + * Copyright (C) 2021-2023 Nordix Foundation * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,22 +19,27 @@ */ package org.onap.cps.ncmp.api.impl.config +import org.apache.hc.client5.http.impl.classic.CloseableHttpClient import org.springframework.beans.factory.annotation.Autowired import org.springframework.boot.test.context.SpringBootTest import org.springframework.boot.web.client.RestTemplateBuilder import org.springframework.http.MediaType +import org.springframework.http.client.HttpComponentsClientHttpRequestFactory import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter import org.springframework.test.context.ContextConfiguration import org.springframework.web.client.RestTemplate import spock.lang.Specification @SpringBootTest -@ContextConfiguration(classes = [NcmpConfiguration.DmiProperties]) +@ContextConfiguration(classes = [NcmpConfiguration.DmiProperties, HttpClientConfiguration]) class NcmpConfigurationSpec extends Specification{ @Autowired NcmpConfiguration.DmiProperties dmiProperties - + + @Autowired + HttpClientConfiguration httpClientConfiguration + def mockRestTemplateBuilder = new RestTemplateBuilder() def 'NcmpConfiguration Construction.'() { @@ -48,11 +53,14 @@ class NcmpConfigurationSpec extends Specification{ dmiProperties.authPassword == 'some-password' } - def 'Rest Template creation.'() { + def 'Rest Template creation with CloseableHttpClient and MappingJackson2HttpMessageConverter.'() { when: 'a rest template is created' - def result = NcmpConfiguration.restTemplate(mockRestTemplateBuilder) + def result = NcmpConfiguration.restTemplate(mockRestTemplateBuilder, httpClientConfiguration) then: 'the rest template is returned' assert result instanceof RestTemplate + and: 'the rest template is created with httpclient5' + assert result.getRequestFactory() instanceof HttpComponentsClientHttpRequestFactory + assert ((HttpComponentsClientHttpRequestFactory) result.getRequestFactory()).getHttpClient() instanceof CloseableHttpClient; and: 'a jackson media converter has been added' def lastMessageConverter = result.getMessageConverters().get(result.getMessageConverters().size()-1) lastMessageConverter instanceof MappingJackson2HttpMessageConverter |