import org.onap.cps.spi.FetchDescendantsOption
import org.springframework.web.multipart.MultipartFile
+import java.util.concurrent.TimeUnit
+
class CpsPerfTestBase extends PerfTestBase {
static final def CPS_PERFORMANCE_TEST_DATASPACE = 'cpsPerformanceDataspace'
- static final def OPENROADM_ANCHORS = 5
- static final def OPENROADM_DEVICES_PER_ANCHOR = 50
+ static final def OPENROADM_ANCHORS = 3
+ static final def OPENROADM_DEVICES_PER_ANCHOR = 1000
static final def OPENROADM_DATANODES_PER_DEVICE = 86
def printTitle() {
}
def createInitialData() {
- createWarmupData()
- createLargeBookstoresData()
addOpenRoadModel()
addOpenRoadData()
}
- def createWarmupData() {
- def data = "{\"bookstore\":{}}"
- stopWatch.start()
- addAnchorsWithData(1, CPS_PERFORMANCE_TEST_DATASPACE, BOOKSTORE_SCHEMA_SET, 'warmup', data)
- stopWatch.stop()
- def durationInMillis = stopWatch.getTotalTimeMillis()
- recordAndAssertPerformance('Creating warmup anchor with tiny data tree', 500, durationInMillis)
- }
-
- def createLargeBookstoresData() {
- def data = readResourceDataFile('bookstore/largeModelData.json')
- stopWatch.start()
- addAnchorsWithData(5, CPS_PERFORMANCE_TEST_DATASPACE, BOOKSTORE_SCHEMA_SET, 'bookstore', data)
- stopWatch.stop()
- def durationInMillis = stopWatch.getTotalTimeMillis()
- recordAndAssertPerformance('Creating bookstore anchors with large data tree', 1_500, durationInMillis)
- }
-
def addOpenRoadModel() {
def file = new File('src/test/resources/data/openroadm/correctedModel.zip')
def multipartFile = Mock(MultipartFile)
addAnchorsWithData(OPENROADM_ANCHORS, CPS_PERFORMANCE_TEST_DATASPACE, LARGE_SCHEMA_SET, 'openroadm', data)
stopWatch.stop()
def durationInMillis = stopWatch.getTotalTimeMillis()
- recordAndAssertPerformance('Creating openroadm anchors with large data tree', 20_000, durationInMillis)
+ recordAndAssertPerformance('Creating openroadm anchors with large data tree', TimeUnit.SECONDS.toMillis(200), durationInMillis)
}
def generateOpenRoadData(numberOfNodes) {
}
def 'Warm the database'() {
- when: 'get data nodes for warmup anchor'
+ when: 'dummy get data nodes runs so that populating the DB does not get included in other test timings'
stopWatch.start()
- def result = cpsDataService.getDataNodes(CPS_PERFORMANCE_TEST_DATASPACE, 'warmup1', '/', FetchDescendantsOption.OMIT_DESCENDANTS)
+ def result = cpsDataService.getDataNodes(CPS_PERFORMANCE_TEST_DATASPACE, 'openroadm1', '/', FetchDescendantsOption.OMIT_DESCENDANTS)
assert countDataNodesInTree(result) == 1
stopWatch.stop()
def durationInMillis = stopWatch.getTotalTimeMillis()
- then: 'all data is read within 20 seconds'
- recordAndAssertPerformance("Warming database", 20_000, durationInMillis)
+ then: 'all data is read within expected time'
+ recordAndAssertPerformance("Warming database", 100, durationInMillis)
}
}