Check preformance impacts 13/132813/2
authorToineSiebelink <toine.siebelink@est.tech>
Tue, 20 Dec 2022 11:32:26 +0000 (11:32 +0000)
committerToineSiebelink <toine.siebelink@est.tech>
Tue, 20 Dec 2022 13:53:33 +0000 (13:53 +0000)
-Added a basic perf. test to process 200K CPS paths using parser

Issue-ID: CPS-1409
Signed-off-by: ToineSiebelink <toine.siebelink@est.tech>
Change-Id: Ibf8aed53506d28ba08f7166a44bd6fe9aefa5952

cps-path-parser/src/test/groovy/org/onap/cps/cpspath/parser/CpsPathUtilSpec.groovy

index 31c1ed4..662e42b 100644 (file)
@@ -20,6 +20,7 @@
 
 package org.onap.cps.cpspath.parser
 
+import org.springframework.util.StopWatch
 import spock.lang.Specification
 
 class CpsPathUtilSpec extends Specification {
@@ -71,4 +72,17 @@ class CpsPathUtilSpec extends Specification {
             thrown(PathParsingException)
     }
 
+    def 'CPS Path Processing Performance Test.'() {
+        when: '200,000 paths are processed'
+            def setupStopWatch = new StopWatch()
+            setupStopWatch.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')
+            }
+            setupStopWatch.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 setupStopWatch.getTotalTimeMillis() < 10000
+    }
 }