diff options
author | ToineSiebelink <toine.siebelink@est.tech> | 2022-12-23 10:11:38 +0000 |
---|---|---|
committer | ToineSiebelink <toine.siebelink@est.tech> | 2022-12-23 10:38:03 +0000 |
commit | 83e50552e12a74acb312c196d80bcde0a3351e6a (patch) | |
tree | 286f6af9a07f57a6b827efc99023dcbb11535d3c | |
parent | 30d76ed37b777e642854d5ab4e94a6fc5f6af84a (diff) |
Organize performance test
- Separated CpsPathUtil performance tests in dedicated file
- Used smaller sample to speed up CpsPathUtil test
- Increased margin on CpsModuleReferenceRepository performance test to rpevent accidental failures
- Added profiles to cps path parser module
- Use Regex to include any (future) perforamcne test using same naming
Issue-ID: CPS-1421
Signed-off-by: ToineSiebelink <toine.siebelink@est.tech>
Change-Id: I9da1614b6f067e946a4f088c6417479fa6c71988
5 files changed, 71 insertions, 18 deletions
diff --git a/cps-path-parser/pom.xml b/cps-path-parser/pom.xml index d9c150881d..d0da105aae 100644 --- a/cps-path-parser/pom.xml +++ b/cps-path-parser/pom.xml @@ -89,4 +89,29 @@ </dependency> </dependencies> + <profiles> + <profile> + <id>default</id> + <activation> + <activeByDefault>true</activeByDefault> + </activation> + <build> + <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-surefire-plugin</artifactId> + <configuration> + <excludes> + <exclude>%regex[.*PerfTest.*]</exclude> + </excludes> + </configuration> + </plugin> + </plugins> + </build> + </profile> + <profile> + <id>include-performance</id> + </profile> + </profiles> + </project> diff --git a/cps-path-parser/src/test/groovy/org/onap/cps/cpspath/parser/CpsPathUtilSpec.groovy b/cps-path-parser/src/test/groovy/org/onap/cps/cpspath/parser/CpsPathUtilSpec.groovy index 36e89127c1..d62f337b75 100644 --- a/cps-path-parser/src/test/groovy/org/onap/cps/cpspath/parser/CpsPathUtilSpec.groovy +++ b/cps-path-parser/src/test/groovy/org/onap/cps/cpspath/parser/CpsPathUtilSpec.groovy @@ -20,7 +20,6 @@ package org.onap.cps.cpspath.parser -import org.springframework.util.StopWatch import spock.lang.Specification class CpsPathUtilSpec extends Specification { @@ -88,18 +87,4 @@ class CpsPathUtilSpec extends Specification { thrown(PathParsingException) } - def 'CPS Path Processing Performance Test.'() { - when: '200,000 paths are processed' - def stopWatch = new StopWatch() - stopWatch.start() - (1..100000).each { - CpsPathUtil.getNormalizedXpath('/long/path/to/see/if/it/adds/paring/time/significantly/parent/child[@common-leaf-name="123"]') - CpsPathUtil.getNormalizedXpath('//child[@other-leaf=1]/leaf-name[text()="search"]/ancestor::parent') - } - stopWatch.stop() - then: 'it takes less then 10,000 milliseconds' - // In CI this actually takes about 3-5 sec which is approx. 50+ parser executions per millisecond! - assert stopWatch.getTotalTimeMillis() < 10000 - } - } diff --git a/cps-path-parser/src/test/groovy/org/onap/cps/cpspath/parser/performance/CpsPathUtilPerfTest.groovy b/cps-path-parser/src/test/groovy/org/onap/cps/cpspath/parser/performance/CpsPathUtilPerfTest.groovy new file mode 100644 index 0000000000..2ba20c1c5f --- /dev/null +++ b/cps-path-parser/src/test/groovy/org/onap/cps/cpspath/parser/performance/CpsPathUtilPerfTest.groovy @@ -0,0 +1,43 @@ +/* + * ============LICENSE_START======================================================= + * Copyright (C) 2022 Nordix Foundation + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.cps.cpspath.parser.performance + +import org.onap.cps.cpspath.parser.CpsPathUtil +import org.springframework.util.StopWatch +import spock.lang.Specification + +class CpsPathUtilPerfTest extends Specification { + + def 'CPS Path Processing Performance Test.'() { + when: '20,000 paths are processed' + def stopWatch = new StopWatch() + stopWatch.start() + (1..10000).each { + CpsPathUtil.getNormalizedXpath('/long/path/to/see/if/it/adds/paring/time/significantly/parent/child[@common-leaf-name="123"]') + CpsPathUtil.getNormalizedXpath('//child[@other-leaf=1]/leaf-name[text()="search"]/ancestor::parent') + } + stopWatch.stop() + then: 'it takes less then 1,000 milliseconds' + // In CI this actually takes about 0.3-0.5 sec which is approx. 50+ parser executions per millisecond! + assert stopWatch.getTotalTimeMillis() < 1000 + } + +} diff --git a/cps-ri/pom.xml b/cps-ri/pom.xml index b6fe284c2e..6cca8b4a5e 100644 --- a/cps-ri/pom.xml +++ b/cps-ri/pom.xml @@ -146,7 +146,7 @@ <artifactId>maven-surefire-plugin</artifactId>
<configuration>
<excludes>
- <exclude>org.onap.cps.spi.performance.CpsToDataNodePerfTest</exclude>
+ <exclude>%regex[.*PerfTest.*]</exclude>
</excludes>
</configuration>
</plugin>
diff --git a/cps-ri/src/test/groovy/org/onap/cps/spi/performance/CpsModuleReferenceRepositoryPerfTest.groovy b/cps-ri/src/test/groovy/org/onap/cps/spi/performance/CpsModuleReferenceRepositoryPerfTest.groovy index 8da6c3a0ba..9b722cddae 100644 --- a/cps-ri/src/test/groovy/org/onap/cps/spi/performance/CpsModuleReferenceRepositoryPerfTest.groovy +++ b/cps-ri/src/test/groovy/org/onap/cps/spi/performance/CpsModuleReferenceRepositoryPerfTest.groovy @@ -77,7 +77,7 @@ class CpsModuleReferenceRepositoryPerfTest extends CpsPersistenceSpecBase { def dataspaceEntity = dataspaceRepository.getByName('PERF-DATASPACE') SchemaSetEntity result = schemaSetRepository.getByDataspaceAndName(dataspaceEntity, 'perfSchemaSet') result.yangResources.size() == 200 - and: 'identification of new module resources is fast enough (1,000 executions less then 5,000 milliseconds)' + and: 'identification of new module resources is fast enough (1,000 executions less then 6,000 milliseconds)' def stopWatch = new StopWatch() 1000.times() { def moduleReferencesToCheck = createModuleReferencesWithRandomMatchingExistingModuleReferences() @@ -86,7 +86,7 @@ class CpsModuleReferenceRepositoryPerfTest extends CpsPersistenceSpecBase { stopWatch.stop() assert newModuleReferences.size() > 0 && newModuleReferences.size() < 300 } - assert stopWatch.getTotalTimeMillis() < 5000 + assert stopWatch.getTotalTimeMillis() < 6000 } def createModuleReferencesWithRandomMatchingExistingModuleReferences() { |