diff options
author | kissand <andras.zoltan.kiss@est.tech> | 2022-06-15 13:48:07 +0200 |
---|---|---|
committer | kissand <andras.zoltan.kiss@est.tech> | 2022-06-17 11:11:14 +0200 |
commit | 3b1d84ac048bd057a5497a2d0243cba675980781 (patch) | |
tree | b79e1f6cfab3da9d7b7ba6f4cc79ee6f70781c59 | |
parent | 44d933db05217eac411eec4972a0d7c880cf5c4e (diff) |
Quick fix for performance degradation bug
Issue-ID: CPS-1085
Change-Id: I15715ef37909d4e2fe2f1f80e621a21c8037fbd0
Signed-off-by: kissand <andras.zoltan.kiss@est.tech>
2 files changed, 14 insertions, 11 deletions
diff --git a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/NetworkCmProxyCmHandlerQueryServiceImpl.java b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/NetworkCmProxyCmHandlerQueryServiceImpl.java index 00cbe69f54..3deaa7d237 100644 --- a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/NetworkCmProxyCmHandlerQueryServiceImpl.java +++ b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/NetworkCmProxyCmHandlerQueryServiceImpl.java @@ -31,6 +31,7 @@ import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.onap.cps.ncmp.api.NetworkCmProxyCmHandlerQueryService; @@ -126,17 +127,19 @@ public class NetworkCmProxyCmHandlerQueryServiceImpl implements NetworkCmProxyCm final Map<DataNodeIdentifier, DataNode> amalgamatedQueryResults) { boolean firstQuery = true; if (!getModuleNames(cmHandleQueryServiceParameters.getCmHandleQueryParameters()).isEmpty()) { - final Collection<Anchor> anchors = cpsAdminPersistenceService.queryAnchors("NFP-Operational", - getModuleNames(cmHandleQueryServiceParameters.getCmHandleQueryParameters())); - anchors.forEach(anchor -> { - final List<DataNode> dataNodes = getDataNodes("//cm-handles[@id='" + anchor.getName() + "']"); - dataNodes.parallelStream().forEach(dataNode -> { + final Collection<String> anchorNames = cpsAdminPersistenceService.queryAnchors("NFP-Operational", + getModuleNames(cmHandleQueryServiceParameters.getCmHandleQueryParameters())) + .parallelStream().map(Anchor::getName).collect(Collectors.toList()); + + getAllCmHandles().forEach(dataNode -> { + if (anchorNames.contains(dataNode.getLeaves().get("id").toString())) { final DataNodeIdentifier dataNodeIdentifier = jsonObjectMapper.convertToValueType(dataNode, DataNodeIdentifier.class); amalgamatedQueryResultIdentifiers.add(dataNodeIdentifier); amalgamatedQueryResults.put(dataNodeIdentifier, dataNode); - }); + } }); + firstQuery = false; } return firstQuery; diff --git a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/NetworkCmProxyCmHandlerQueryServiceSpec.groovy b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/NetworkCmProxyCmHandlerQueryServiceSpec.groovy index b689097cc4..46c866282a 100644 --- a/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/NetworkCmProxyCmHandlerQueryServiceSpec.groovy +++ b/cps-ncmp-service/src/test/groovy/org/onap/cps/ncmp/api/impl/NetworkCmProxyCmHandlerQueryServiceSpec.groovy @@ -54,7 +54,7 @@ class NetworkCmProxyCmHandlerQueryServiceSpec extends Specification { when: 'the service is invoked' def returnedCmHandles = objectUnderTest.queryCmHandles(cmHandleQueryParameters) then: 'the correct expected cm handles are returned' - returnedCmHandles.stream().map(d -> d.leaves.get('id').toString()).collect(Collectors.toList()) == expectedCmHandleIds + returnedCmHandles.stream().map(d -> d.leaves.get('id').toString()).collect(Collectors.toSet()) == expectedCmHandleIds as Set where: 'the following data is used' scenario | publicProperties || expectedCmHandleIds 'single matching property' | [['Contact' : 'newemailforstore@bookstore.com']] || ['PNFDemo', 'PNFDemo2', 'PNFDemo4'] @@ -75,10 +75,10 @@ class NetworkCmProxyCmHandlerQueryServiceSpec extends Specification { when: 'the service is invoked' def returnedCmHandles = objectUnderTest.queryCmHandles(cmHandleQueryParameters) then: 'the correct expected cm handles are returned' - returnedCmHandles.stream().map(d -> d.leaves.get('id').toString()).collect(Collectors.toList()) == expectedCmHandleIds + returnedCmHandles.stream().map(d -> d.leaves.get('id').toString()).collect(Collectors.toSet()) == expectedCmHandleIds as Set where: 'the following data is used' scenario | moduleNames || expectedCmHandleIds - 'single matching module name' | [['moduleName' : 'MODULE-NAME-001']] || ['PNFDemo2', 'PNFDemo3', 'PNFDemo'] + 'single matching module name' | [['moduleName' : 'MODULE-NAME-001']] || ['PNFDemo3', 'PNFDemo', 'PNFDemo2'] 'module name dont match' | [['moduleName' : 'MODULE-NAME-004']] || [] '2 module names, only one match (and)' | [['moduleName' : 'MODULE-NAME-002'], ['moduleName': 'MODULE-NAME-003']] || ['PNFDemo4'] '2 module names, no match (and)' | [['moduleName' : 'MODULE-NAME-002'], ['moduleName': 'MODULE-NAME-004']] || [] @@ -99,7 +99,7 @@ class NetworkCmProxyCmHandlerQueryServiceSpec extends Specification { when: 'the service is invoked' def returnedCmHandles = objectUnderTest.queryCmHandles(cmHandleQueryParameters) then: 'the correct expected cm handles are returned' - returnedCmHandles.stream().map(d -> d.leaves.get('id').toString()).collect(Collectors.toList()) == expectedCmHandleIds + returnedCmHandles.stream().map(d -> d.leaves.get('id').toString()).collect(Collectors.toSet()) == expectedCmHandleIds as Set where: 'the following data is used' scenario | moduleNames | publicProperties || expectedCmHandleIds 'particularly intersect' | [['moduleName' : 'MODULE-NAME-001']] | [['Contact' : 'newemailforstore@bookstore.com']] || ['PNFDemo2', 'PNFDemo'] @@ -114,7 +114,7 @@ class NetworkCmProxyCmHandlerQueryServiceSpec extends Specification { def cmHandleQueryParameters = new CmHandleQueryServiceParameters() def returnedCmHandles = objectUnderTest.queryCmHandles(cmHandleQueryParameters) then: 'the correct expected cm handles are returned' - returnedCmHandles.stream().map(d -> d.leaves.get('id').toString()).collect(Collectors.toList()) == ['PNFDemo', 'PNFDemo2', 'PNFDemo3', 'PNFDemo4'] + returnedCmHandles.stream().map(d -> d.leaves.get('id').toString()).collect(Collectors.toSet()) == ['PNFDemo', 'PNFDemo2', 'PNFDemo3', 'PNFDemo4'] as Set } void mockResponses() { |