/*
* ============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 {
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.'() {
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.'() {
']}'
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
}
}