Merge "CPS-NCMP: No yang resources stored during cmhandle discovery however cmhandles...
[cps.git] / integration-test / src / test / groovy / org / onap / cps / integration / performance / cps / DeletePerfTest.groovy
index fb836b1..0dcd995 100644 (file)
@@ -26,8 +26,6 @@ import java.time.OffsetDateTime
 import org.onap.cps.api.CpsDataService
 import org.onap.cps.integration.performance.base.CpsPerfTestBase
 
-import java.util.concurrent.TimeUnit
-
 class DeletePerfTest extends CpsPerfTestBase {
 
     CpsDataService objectUnderTest
@@ -36,13 +34,13 @@ class DeletePerfTest extends CpsPerfTestBase {
 
     def 'Create test data (please note, subsequent tests depend on this running first).'() {
         when: 'multiple anchors with a node with a large number of descendants is created'
-            stopWatch.start()
+            resourceMeter.start()
             def data = generateOpenRoadData(300)
             addAnchorsWithData(10, CPS_PERFORMANCE_TEST_DATASPACE, LARGE_SCHEMA_SET, 'delete', data)
-            stopWatch.stop()
-            def setupDurationInMillis = stopWatch.getTotalTimeMillis()
-        then: 'setup duration is within expected time'
-            recordAndAssertPerformance('Delete test setup', TimeUnit.SECONDS.toMillis(200), setupDurationInMillis)
+            resourceMeter.stop()
+            def setupDurationInSeconds = resourceMeter.getTotalTimeInSeconds()
+        then: 'setup duration is within expected time and memory used is within limit'
+            recordAndAssertResourceUsage('Delete test setup', 200, setupDurationInSeconds, 200, resourceMeter.getTotalMemoryUsageInMB())
     }
 
     def 'Delete 100 container nodes'() {
@@ -51,14 +49,14 @@ class DeletePerfTest extends CpsPerfTestBase {
                 "/openroadm-devices/openroadm-device[@device-id='C201-7-1A-" + it + "']/org-openroadm-device"
             }
         when: 'child nodes are deleted'
-            stopWatch.start()
+            resourceMeter.start()
             xpathsToDelete.each {
                 objectUnderTest.deleteDataNode(CPS_PERFORMANCE_TEST_DATASPACE, 'delete1', it, OffsetDateTime.now())
             }
-            stopWatch.stop()
-            def deleteDurationInMillis = stopWatch.getTotalTimeMillis()
-        then: 'delete duration is within expected time'
-            recordAndAssertPerformance('Delete 100 containers', TimeUnit.SECONDS.toMillis(2), deleteDurationInMillis)
+            resourceMeter.stop()
+            def deleteDurationInSeconds = resourceMeter.getTotalTimeInSeconds()
+        then: 'delete duration is within expected time and memory used is within limit'
+            recordAndAssertResourceUsage('Delete 100 containers', 2, deleteDurationInSeconds, 30, resourceMeter.getTotalMemoryUsageInMB())
     }
 
     def 'Batch delete 100 container nodes'() {
@@ -67,12 +65,12 @@ class DeletePerfTest extends CpsPerfTestBase {
                 "/openroadm-devices/openroadm-device[@device-id='C201-7-1A-" + it + "']/org-openroadm-device"
             }
         when: 'child nodes are deleted'
-            stopWatch.start()
+            resourceMeter.start()
             objectUnderTest.deleteDataNodes(CPS_PERFORMANCE_TEST_DATASPACE, 'delete2', xpathsToDelete, OffsetDateTime.now())
-            stopWatch.stop()
-            def deleteDurationInMillis = stopWatch.getTotalTimeMillis()
-        then: 'delete duration is within expected time'
-            recordAndAssertPerformance('Batch delete 100 containers', 500, deleteDurationInMillis)
+            resourceMeter.stop()
+            def deleteDurationInSeconds = resourceMeter.getTotalTimeInSeconds()
+        then: 'delete duration is within expected time and memory used is within limit'
+            recordAndAssertResourceUsage('Batch delete 100 containers', 0.5, deleteDurationInSeconds, 5, resourceMeter.getTotalMemoryUsageInMB())
     }
 
     def 'Delete 100 list elements'() {
@@ -81,14 +79,14 @@ class DeletePerfTest extends CpsPerfTestBase {
                 "/openroadm-devices/openroadm-device[@device-id='C201-7-1A-" + it + "']"
             }
         when: 'list elements are deleted'
-            stopWatch.start()
+            resourceMeter.start()
             xpathsToDelete.each {
                 objectUnderTest.deleteDataNode(CPS_PERFORMANCE_TEST_DATASPACE, 'delete3', it, OffsetDateTime.now())
             }
-            stopWatch.stop()
-            def deleteDurationInMillis = stopWatch.getTotalTimeMillis()
-        then: 'delete duration is within expected time'
-            recordAndAssertPerformance('Delete 100 lists elements', TimeUnit.SECONDS.toMillis(2), deleteDurationInMillis)
+            resourceMeter.stop()
+            def deleteDurationInSeconds = resourceMeter.getTotalTimeInSeconds()
+        then: 'delete duration is within expected time and memory used is within limit'
+            recordAndAssertResourceUsage('Delete 100 lists elements', 2, deleteDurationInSeconds, 20, resourceMeter.getTotalMemoryUsageInMB())
     }
 
     def 'Batch delete 100 list elements'() {
@@ -97,12 +95,12 @@ class DeletePerfTest extends CpsPerfTestBase {
                 "/openroadm-devices/openroadm-device[@device-id='C201-7-1A-" + it + "']"
             }
         when: 'list elements are deleted'
-            stopWatch.start()
+            resourceMeter.start()
             objectUnderTest.deleteDataNodes(CPS_PERFORMANCE_TEST_DATASPACE, 'delete4', xpathsToDelete, OffsetDateTime.now())
-            stopWatch.stop()
-            def deleteDurationInMillis = stopWatch.getTotalTimeMillis()
-        then: 'delete duration is within expected time'
-            recordAndAssertPerformance('Batch delete 100 lists elements', 500, deleteDurationInMillis)
+            resourceMeter.stop()
+            def deleteDurationInSeconds = resourceMeter.getTotalTimeInSeconds()
+        then: 'delete duration is within expected time and memory used is within limit'
+            recordAndAssertResourceUsage('Batch delete 100 lists elements', 0.5, deleteDurationInSeconds, 2, resourceMeter.getTotalMemoryUsageInMB())
     }
 
     def 'Delete 100 whole lists'() {
@@ -111,14 +109,14 @@ class DeletePerfTest extends CpsPerfTestBase {
                 "/openroadm-devices/openroadm-device[@device-id='C201-7-1A-" + it + "']/org-openroadm-device/degree"
             }
         when: 'lists are deleted'
-            stopWatch.start()
+            resourceMeter.start()
             xpathsToDelete.each {
                 objectUnderTest.deleteDataNode(CPS_PERFORMANCE_TEST_DATASPACE, 'delete5', it, OffsetDateTime.now())
             }
-            stopWatch.stop()
-            def deleteDurationInMillis = stopWatch.getTotalTimeMillis()
-        then: 'delete duration is within expected time'
-            recordAndAssertPerformance('Delete 100 whole lists', TimeUnit.SECONDS.toMillis(5), deleteDurationInMillis)
+            resourceMeter.stop()
+            def deleteDurationInSeconds = resourceMeter.getTotalTimeInSeconds()
+        then: 'delete duration is within expected time and memory used is within limit'
+            recordAndAssertResourceUsage('Delete 100 whole lists', 5, deleteDurationInSeconds, 30, resourceMeter.getTotalMemoryUsageInMB())
     }
 
     def 'Batch delete 100 whole lists'() {
@@ -127,68 +125,68 @@ class DeletePerfTest extends CpsPerfTestBase {
                 "/openroadm-devices/openroadm-device[@device-id='C201-7-1A-" + it + "']/org-openroadm-device/degree"
             }
         when: 'lists are deleted'
-            stopWatch.start()
+            resourceMeter.start()
             objectUnderTest.deleteDataNodes(CPS_PERFORMANCE_TEST_DATASPACE, 'delete6', xpathsToDelete, OffsetDateTime.now())
-            stopWatch.stop()
-            def deleteDurationInMillis = stopWatch.getTotalTimeMillis()
-        then: 'delete duration is within expected time'
-            recordAndAssertPerformance('Batch delete 100 whole lists', TimeUnit.SECONDS.toMillis(4), deleteDurationInMillis)
+            resourceMeter.stop()
+            def deleteDurationInSeconds = resourceMeter.getTotalTimeInSeconds()
+        then: 'delete duration is within expected time and memory used is within limit'
+            recordAndAssertResourceUsage('Batch delete 100 whole lists', 4, deleteDurationInSeconds, 5, resourceMeter.getTotalMemoryUsageInMB())
     }
 
     def 'Delete 1 large data node'() {
         when: 'parent node is deleted'
-            stopWatch.start()
+            resourceMeter.start()
             objectUnderTest.deleteDataNode(CPS_PERFORMANCE_TEST_DATASPACE, 'delete7', '/openroadm-devices', OffsetDateTime.now())
-            stopWatch.stop()
-            def deleteDurationInMillis = stopWatch.getTotalTimeMillis()
-        then: 'delete duration is within expected time'
-            recordAndAssertPerformance('Delete one large node', TimeUnit.SECONDS.toMillis(2), deleteDurationInMillis)
+            resourceMeter.stop()
+            def deleteDurationInSeconds = resourceMeter.getTotalTimeInSeconds()
+        then: 'delete duration is within expected time and memory used is within limit'
+            recordAndAssertResourceUsage('Delete one large node', 2, deleteDurationInSeconds, 2, resourceMeter.getTotalMemoryUsageInMB())
     }
 
     def 'Delete root node with many descendants'() {
         when: 'root node is deleted'
-            stopWatch.start()
+            resourceMeter.start()
             objectUnderTest.deleteDataNode(CPS_PERFORMANCE_TEST_DATASPACE, 'delete8', '/', OffsetDateTime.now())
-            stopWatch.stop()
-            def deleteDurationInMillis = stopWatch.getTotalTimeMillis()
-        then: 'delete duration is within expected time'
-            recordAndAssertPerformance('Delete root node', TimeUnit.SECONDS.toMillis(2), deleteDurationInMillis)
+            resourceMeter.stop()
+            def deleteDurationInSeconds = resourceMeter.getTotalTimeInSeconds()
+        then: 'delete duration is within expected time and memory used is within limit'
+            recordAndAssertResourceUsage('Delete root node', 2, deleteDurationInSeconds, 2, resourceMeter.getTotalMemoryUsageInMB())
     }
 
     def 'Delete data nodes for an anchor'() {
         when: 'data nodes are deleted'
-            stopWatch.start()
+            resourceMeter.start()
             objectUnderTest.deleteDataNodes(CPS_PERFORMANCE_TEST_DATASPACE, 'delete9', OffsetDateTime.now())
-            stopWatch.stop()
-            def deleteDurationInMillis = stopWatch.getTotalTimeMillis()
-        then: 'delete duration is within expected time'
-            recordAndAssertPerformance('Delete data nodes for anchor', TimeUnit.SECONDS.toMillis(2), deleteDurationInMillis)
+            resourceMeter.stop()
+            def deleteDurationInSeconds = resourceMeter.getTotalTimeInSeconds()
+        then: 'delete duration is within expected time and memory used is within limit'
+            recordAndAssertResourceUsage('Delete data nodes for anchor', 2, deleteDurationInSeconds, 2, resourceMeter.getTotalMemoryUsageInMB())
     }
 
     def 'Batch delete 100 non-existing nodes'() {
         given: 'a list of xpaths to delete'
             def xpathsToDelete = (1..100).collect { "/path/to/non-existing/node[@id='" + it + "']" }
         when: 'child nodes are deleted'
-            stopWatch.start()
+            resourceMeter.start()
             try {
                 objectUnderTest.deleteDataNodes(CPS_PERFORMANCE_TEST_DATASPACE, 'delete10', xpathsToDelete, OffsetDateTime.now())
             } catch (DataNodeNotFoundException ignored) {}
-            stopWatch.stop()
-            def deleteDurationInMillis = stopWatch.getTotalTimeMillis()
-        then: 'delete duration is within expected time'
-            recordAndAssertPerformance('Batch delete 100 non-existing', TimeUnit.SECONDS.toMillis(6), deleteDurationInMillis)
+            resourceMeter.stop()
+            def deleteDurationInSeconds = resourceMeter.getTotalTimeInSeconds()
+        then: 'delete duration is within expected time and memory used is within limit'
+            recordAndAssertResourceUsage('Batch delete 100 non-existing', 7, deleteDurationInSeconds, 5, resourceMeter.getTotalMemoryUsageInMB())
     }
 
     def 'Clean up test data'() {
         given: 'a list of anchors to delete'
             def anchorNames = (1..10).collect {'delete' + it}
         when: 'data nodes are deleted'
-            stopWatch.start()
+            resourceMeter.start()
             cpsAdminService.deleteAnchors(CPS_PERFORMANCE_TEST_DATASPACE, anchorNames)
-            stopWatch.stop()
-            def deleteDurationInMillis = stopWatch.getTotalTimeMillis()
-        then: 'delete duration is within expected time'
-            recordAndAssertPerformance('Delete test cleanup', TimeUnit.SECONDS.toMillis(10), deleteDurationInMillis)
+            resourceMeter.stop()
+            def deleteDurationInSeconds = resourceMeter.getTotalTimeInSeconds()
+        then: 'delete duration is within expected time and memory used is within limit'
+            recordAndAssertResourceUsage('Delete test cleanup', 10, deleteDurationInSeconds, 2, resourceMeter.getTotalMemoryUsageInMB())
     }
 
 }