Merge "Part 1: Refactor CPS Delta code to utility class"
[cps.git] / integration-test / src / test / groovy / org / onap / cps / integration / performance / cps / WritePerfTest.groovy
index 96f85ff..f468b36 100644 (file)
@@ -1,6 +1,7 @@
 /*
  *  ============LICENSE_START=======================================================
- *  Copyright (C) 2023-2024 Nordix Foundation
+ *  Copyright (C) 2023-2025 OpenInfra Foundation Europe. All rights reserved.
+ *  Modifications Copyright (C) 2024 TechMahindra Ltd.
  *  ================================================================================
  *  Licensed under the Apache License, Version 2.0 (the 'License');
  *  you may not use this file except in compliance with the License.
 
 package org.onap.cps.integration.performance.cps
 
-import java.time.OffsetDateTime
 import org.onap.cps.integration.performance.base.CpsPerfTestBase
+import org.onap.cps.utils.ContentType
+
+import java.time.OffsetDateTime
 
 class WritePerfTest extends CpsPerfTestBase {
 
@@ -36,18 +39,16 @@ class WritePerfTest extends CpsPerfTestBase {
             resourceMeter.start()
             cpsDataService.saveData(CPS_PERFORMANCE_TEST_DATASPACE, WRITE_TEST_ANCHOR, jsonData, OffsetDateTime.now())
             resourceMeter.stop()
-        then: 'the operation takes less than #expectedDuration and memory used is within limit'
-            recordAndAssertResourceUsage("Writing ${totalNodes} devices",
-                    expectedDuration, resourceMeter.getTotalTimeInSeconds(),
-                    memoryLimit, resourceMeter.getTotalMemoryUsageInMB())
+        then: 'the operation takes less than #expectedDuration with a margin of 100%'
+            recordAndAssertResourceUsage("CPS:Writing ${totalNodes} devices", expectedDuration, resourceMeter.getTotalTimeInSeconds(), resourceMeter.getTotalMemoryUsageInMB(), referenceGraph)
         cleanup:
             cpsAnchorService.deleteAnchor(CPS_PERFORMANCE_TEST_DATASPACE, WRITE_TEST_ANCHOR)
         where:
-            totalNodes || expectedDuration | memoryLimit
-            50         || 2                | 100
-            100        || 4                | 200
-            200        || 7                | 400
-            400        || 14               | 500
+            totalNodes || expectedDuration | referenceGraph
+            50         || 1.45             | false
+            100        || 2.9              | false
+            200        || 6.2              | true
+            400        || 13.0             | false
     }
 
     def 'Writing bookstore data has exponential time.'() {
@@ -61,18 +62,16 @@ class WritePerfTest extends CpsPerfTestBase {
             resourceMeter.start()
             cpsDataService.saveData(CPS_PERFORMANCE_TEST_DATASPACE, WRITE_TEST_ANCHOR, '/bookstore/categories[@code=1]', booksData, OffsetDateTime.now())
             resourceMeter.stop()
-        then: 'the operation takes less than #expectedDuration and memory used is within limit'
-            recordAndAssertResourceUsage("Writing ${totalBooks} books",
-                    expectedDuration, resourceMeter.totalTimeInSeconds,
-                    memoryLimit, resourceMeter.totalMemoryUsageInMB)
+        then: 'the operation takes less than #expectedDuration with a margin of 100%'
+            recordAndAssertResourceUsage("CPS:Writing ${totalBooks} books", expectedDuration, resourceMeter.totalTimeInSeconds, resourceMeter.totalMemoryUsageInMB, referenceGraph)
         cleanup:
             cpsAnchorService.deleteAnchor(CPS_PERFORMANCE_TEST_DATASPACE, WRITE_TEST_ANCHOR)
         where:
-            totalBooks || expectedDuration | memoryLimit
-            800        || 0.5              | 50
-            1600       || 1.5              | 100
-            3200       || 6.0              | 150
-            6400       || 18.0             | 200
+            totalBooks || expectedDuration | referenceGraph
+            800        || 0.31             | false
+            1600       || 0.8              | false
+            3200       || 2.2              | false
+            6400       || 6.9              | true
     }
 
     def 'Writing openroadm list data using saveListElements.'() {
@@ -87,20 +86,18 @@ class WritePerfTest extends CpsPerfTestBase {
                     ']}'
         when: 'device nodes are added'
             resourceMeter.start()
-            cpsDataService.saveListElements(CPS_PERFORMANCE_TEST_DATASPACE, WRITE_TEST_ANCHOR, '/openroadm-devices', jsonListData, OffsetDateTime.now())
+            cpsDataService.saveListElements(CPS_PERFORMANCE_TEST_DATASPACE, WRITE_TEST_ANCHOR, '/openroadm-devices', jsonListData, OffsetDateTime.now(), ContentType.JSON)
             resourceMeter.stop()
-        then: 'the operation takes less than #expectedDuration and memory used is within limit'
-            recordAndAssertResourceUsage("Saving list of ${totalNodes} devices",
-                    expectedDuration, resourceMeter.totalTimeInSeconds,
-                    memoryLimit, resourceMeter.totalMemoryUsageInMB)
+        then: 'the operation takes less than #expectedDuration with a margin of 100%'
+            recordAndAssertResourceUsage("CPS:Saving list of ${totalNodes} devices", expectedDuration, resourceMeter.totalTimeInSeconds, resourceMeter.totalMemoryUsageInMB)
         cleanup:
             cpsAnchorService.deleteAnchor(CPS_PERFORMANCE_TEST_DATASPACE, WRITE_TEST_ANCHOR)
         where:
-            totalNodes || expectedDuration | memoryLimit
-            50         || 2                | 100
-            100        || 4                | 200
-            200        || 7                | 400
-            400        || 14               | 500
+            totalNodes || expectedDuration
+            50         || 1.5
+            100        || 3.0
+            200        || 6.4
+            400        || 14.0
     }
 
 }