From: Arpit Singh Date: Thu, 18 Dec 2025 05:21:11 +0000 (+0530) Subject: Adjust timing for Delta Report performance test and make OpenROADM test data determin... X-Git-Url: https://gerrit.onap.org/r/gitweb?a=commitdiff_plain;h=4d979587d2be2e90ff8f6b56327ee63b67b0ffd4;p=cps.git Adjust timing for Delta Report performance test and make OpenROADM test data deterministic - Adjusted timing for Delta Report performance test to account for changes observed after isolating anchors within DeltaPerfTest. - Change applies to Delta between 2 anchors test - Modified approach for creating modified OpenROADM test data: - Replaced random generation with deterministic logic - Ensures consistent and reliable performance test results Issue-ID: CPS-3101 Change-Id: Ic64e242d400915a958b9817407a3b0fa991b86a7 Signed-off-by: Arpit Singh --- diff --git a/integration-test/src/test/groovy/org/onap/cps/integration/performance/base/CpsPerfTestBase.groovy b/integration-test/src/test/groovy/org/onap/cps/integration/performance/base/CpsPerfTestBase.groovy index e5bf7f2b4f..990d8cad0c 100644 --- a/integration-test/src/test/groovy/org/onap/cps/integration/performance/base/CpsPerfTestBase.groovy +++ b/integration-test/src/test/groovy/org/onap/cps/integration/performance/base/CpsPerfTestBase.groovy @@ -21,8 +21,7 @@ package org.onap.cps.integration.performance.base -import groovy.json.JsonOutput -import groovy.json.JsonSlurper + import org.onap.cps.api.parameters.FetchDescendantsOption import org.onap.cps.integration.ResourceMeter import org.onap.cps.rest.utils.MultipartFileUtil @@ -88,48 +87,4 @@ class CpsPerfTestBase extends PerfTestBase { (1..numberOfNodes).collect { innerNode.replace('NODE_ID_HERE', it.toString()) }.join(',') + ']}}' } - - def generateModifiedOpenRoadData(numberOfNodes, removeNodesCount, addNodesCount, updateCount) { - def innerNode = readResourceDataFile('openroadm/innerNode.json') - def allIndices = (0.. - def jsonNode = slurper.parseText(data) - if (idx < updateCount) { - jsonNode['status'] = 'fail' - def childNode = jsonNode['org-openroadm-device']['degree'][0] - if (childNode) { - childNode['max-wavelengths'] += 100 - } - } - return JsonOutput.toJson(jsonNode) - } - } - } diff --git a/integration-test/src/test/groovy/org/onap/cps/integration/performance/cps/DeltaPerfTest.groovy b/integration-test/src/test/groovy/org/onap/cps/integration/performance/cps/DeltaPerfTest.groovy index 5a2555285a..1a2c0179b2 100644 --- a/integration-test/src/test/groovy/org/onap/cps/integration/performance/cps/DeltaPerfTest.groovy +++ b/integration-test/src/test/groovy/org/onap/cps/integration/performance/cps/DeltaPerfTest.groovy @@ -74,7 +74,7 @@ class DeltaPerfTest extends CpsPerfTestBase{ scenario | xpath | fetchDescendantsOption || expectedDuration 'no descendants' | '/openroadm-devices/openroadm-device[@device-id=\'C201-7-1A-1\']' | OMIT_DESCENDANTS || 2.0 'direct descendants' | '/' | DIRECT_CHILDREN_ONLY || 3.0 - 'all descendants' | '/' | INCLUDE_ALL_DESCENDANTS || 18.0 + 'all descendants' | '/' | INCLUDE_ALL_DESCENDANTS || 23.0 } @Ignore @@ -141,14 +141,35 @@ class DeltaPerfTest extends CpsPerfTestBase{ recordAndAssertResourceUsage('CPS:Apply delta report to an anchor', 20.0, durationInSeconds, resourceMeter.getTotalMemoryUsageInMB()) } - def 'Clean up test data'() { - when: 'anchor is deleted' - def anchorNames = ['source-anchor1', 'target-anchor1'] - resourceMeter.start() - cpsAnchorService.deleteAnchors(CPS_PERFORMANCE_TEST_DATASPACE, anchorNames) - resourceMeter.stop() - def durationInSeconds = resourceMeter.getTotalTimeInSeconds() - then: 'delete duration is below accepted margin of the expected average' - recordAndAssertResourceUsage('CPS: Delta Report test cleanup', 5, durationInSeconds, resourceMeter.getTotalMemoryUsageInMB()) + def 'Clean up for CPS Delta API'() { + cleanup: 'test anchors and data nodes' + def anchors = ['source-anchor1', 'target-anchor1'] + cpsAnchorService.deleteAnchors(CPS_PERFORMANCE_TEST_DATASPACE, anchors) + } + + def generateModifiedOpenRoadData(numberOfNodes, removeNodesCount, addNodesCount, updateCount) { + def nodeIds = (1..numberOfNodes).toList() + def nodeIdsAfterRemove = nodeIds.drop(removeNodesCount) + def maxNodeId = nodeIdsAfterRemove.isEmpty() ? 1 : (nodeIdsAfterRemove.max() + 1) + def newNodeIds = (maxNodeId..<(maxNodeId + addNodesCount)).toList() + def finalNodeIds = nodeIdsAfterRemove + newNodeIds + def updatedNodes = updateNodes(finalNodeIds, updateCount) + return '{ "openroadm-devices": { "openroadm-device": [' + updatedNodes.join(',') + ']}}' + } + + def updateNodes(List nodeIds, int updateCount) { + nodeIds.withIndex().collect { id, idx -> + def changeLeaves = (idx < updateCount) + makeInnerNodeJson(id as int, changeLeaves) + } + } + + def makeInnerNodeJson(int nodeId, boolean changeLeaf) { + def innerNodeJson = readResourceDataFile('openroadm/innerNode.json') + def nodeJson = innerNodeJson.replace('NODE_ID_HERE', nodeId.toString()) + if (changeLeaf) { + nodeJson = nodeJson.replace('"status": "success"', '"status": "fail"') + } + return nodeJson } }