X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=integration-test%2Fsrc%2Ftest%2Fgroovy%2Forg%2Fonap%2Fcps%2Fintegration%2Fperformance%2Fcps%2FUpdatePerfTest.groovy;h=8118010b4e23115f3af529e9766bb24f60bfa027;hb=09086b5a7ce9a7467b42c6a86374f22318aaa4cd;hp=c2819086536299c407bba21fa80dabcea0218448;hpb=e626c9661fd88a585b50dafab5f5542784690143;p=cps.git diff --git a/integration-test/src/test/groovy/org/onap/cps/integration/performance/cps/UpdatePerfTest.groovy b/integration-test/src/test/groovy/org/onap/cps/integration/performance/cps/UpdatePerfTest.groovy index c28190865..8118010b4 100644 --- a/integration-test/src/test/groovy/org/onap/cps/integration/performance/cps/UpdatePerfTest.groovy +++ b/integration-test/src/test/groovy/org/onap/cps/integration/performance/cps/UpdatePerfTest.groovy @@ -27,6 +27,7 @@ import org.onap.cps.integration.performance.base.CpsPerfTestBase class UpdatePerfTest extends CpsPerfTestBase { CpsDataService objectUnderTest + def now = OffsetDateTime.now() def setup() { objectUnderTest = cpsDataService } @@ -35,28 +36,56 @@ class UpdatePerfTest extends CpsPerfTestBase { def parentNodeXpath = "/openroadm-devices/openroadm-device[@device-id='C201-7-1A-10']" def jsonData = readResourceDataFile('openroadm/innerNode.json').replace('NODE_ID_HERE', '10') when: 'the fragment entities are updated by the data nodes' - stopWatch.start() - objectUnderTest.updateDataNodeAndDescendants(CPS_PERFORMANCE_TEST_DATASPACE, 'openroadm1', parentNodeXpath, jsonData, OffsetDateTime.now()) - stopWatch.stop() - def updateDurationInMillis = stopWatch.getTotalTimeMillis() - then: 'update duration is under 1000 milliseconds' - recordAndAssertPerformance('Update 1 data node', 1000, updateDurationInMillis) + resourceMeter.start() + objectUnderTest.updateDataNodeAndDescendants(CPS_PERFORMANCE_TEST_DATASPACE, 'openroadm1', parentNodeXpath, jsonData, now) + resourceMeter.stop() + def updateDurationInSeconds = resourceMeter.getTotalTimeInSeconds() + then: 'update completes within expected time and memory used is within limit' + recordAndAssertResourceUsage('Update 1 data node', 0.6, updateDurationInSeconds, 100, resourceMeter.getTotalMemoryUsageInMB()) } - def 'Batch update 10 data nodes with descendants'() { + def 'Batch update 100 data nodes with descendants'() { given: 'a list of data nodes to update as JSON' def innerNodeJson = readResourceDataFile('openroadm/innerNode.json') - def nodesJsonData = (20..30).collectEntries {[ + def nodesJsonData = (1..100).collectEntries {[ "/openroadm-devices/openroadm-device[@device-id='C201-7-1A-" + it + "']", innerNodeJson.replace('NODE_ID_HERE', it.toString()) ]} when: 'the fragment entities are updated by the data nodes' - stopWatch.start() - objectUnderTest.updateDataNodesAndDescendants(CPS_PERFORMANCE_TEST_DATASPACE, 'openroadm2', nodesJsonData, OffsetDateTime.now()) - stopWatch.stop() - def updateDurationInMillis = stopWatch.getTotalTimeMillis() - then: 'update duration is under 5000 milliseconds' - recordAndAssertPerformance('Update 10 data nodes', 5000, updateDurationInMillis) + resourceMeter.start() + objectUnderTest.updateDataNodesAndDescendants(CPS_PERFORMANCE_TEST_DATASPACE, 'openroadm1', nodesJsonData, now) + resourceMeter.stop() + def updateDurationInSeconds = resourceMeter.getTotalTimeInSeconds() + then: 'update completes within expected time and memory used is within limit' + recordAndAssertResourceUsage('Update 100 data nodes', 40, updateDurationInSeconds, 800, resourceMeter.getTotalMemoryUsageInMB()) + } + + def 'Update leaves for 1 data node (twice)'() { + given: 'Updated json for openroadm data' + def jsonDataUpdated = "{'openroadm-device':{'device-id':'C201-7-1A-10','status':'fail','ne-state':'jeopardy'}}" + def jsonDataOriginal = "{'openroadm-device':{'device-id':'C201-7-1A-10','status':'success','ne-state':'inservice'}}" + when: 'update is performed for leaves' + resourceMeter.start() + objectUnderTest.updateNodeLeaves(CPS_PERFORMANCE_TEST_DATASPACE, 'openroadm2', "/openroadm-devices", jsonDataUpdated, now) + objectUnderTest.updateNodeLeaves(CPS_PERFORMANCE_TEST_DATASPACE, 'openroadm2', "/openroadm-devices", jsonDataOriginal, now) + resourceMeter.stop() + def updateDurationInSeconds = resourceMeter.getTotalTimeInSeconds() + then: 'update completes within expected time and memory used is within limit' + recordAndAssertResourceUsage('Update leaves for 1 data node', 0.7, updateDurationInSeconds, 200, resourceMeter.getTotalMemoryUsageInMB()) + } + + def 'Batch update leaves for 100 data nodes (twice)'() { + given: 'Updated json for openroadm data' + def jsonDataUpdated = "{'openroadm-device':[" + (1..100).collect { "{'device-id':'C201-7-1A-" + it + "','status':'fail','ne-state':'jeopardy'}" }.join(",") + "]}" + def jsonDataOriginal = "{'openroadm-device':[" + (1..100).collect { "{'device-id':'C201-7-1A-" + it + "','status':'success','ne-state':'inservice'}" }.join(",") + "]}" + when: 'update is performed for leaves' + resourceMeter.start() + objectUnderTest.updateNodeLeaves(CPS_PERFORMANCE_TEST_DATASPACE, 'openroadm2', "/openroadm-devices", jsonDataUpdated, now) + objectUnderTest.updateNodeLeaves(CPS_PERFORMANCE_TEST_DATASPACE, 'openroadm2', "/openroadm-devices", jsonDataOriginal, now) + resourceMeter.stop() + def updateDurationInSeconds = resourceMeter.getTotalTimeInSeconds() + then: 'update completes within expected time and memory used is within limit' + recordAndAssertResourceUsage('Batch update leaves for 100 data nodes', 1, updateDurationInSeconds, 200, resourceMeter.getTotalMemoryUsageInMB()) } }