From 614a6c32dae6a7794fc90a36a8594cb0e5cac8dd Mon Sep 17 00:00:00 2001
From: Rafal Mucha <rafal.mucha@cern.ch>
Date: Mon, 18 Mar 2024 15:36:29 +0100
Subject: [PATCH] NXCALS-7572 Add performance test

---
 .../performancetests/metadata/HierarchyTest.java  | 15 +++++++++++++--
 1 file changed, 13 insertions(+), 2 deletions(-)

diff --git a/performance-tests/src/jmh/java/cern/nxcals/performancetests/metadata/HierarchyTest.java b/performance-tests/src/jmh/java/cern/nxcals/performancetests/metadata/HierarchyTest.java
index ac1858d31c..ba74ad89db 100644
--- a/performance-tests/src/jmh/java/cern/nxcals/performancetests/metadata/HierarchyTest.java
+++ b/performance-tests/src/jmh/java/cern/nxcals/performancetests/metadata/HierarchyTest.java
@@ -33,8 +33,9 @@ public class HierarchyTest extends AbstractPerformanceTest {
     private Set<Hierarchy> parents;
     private Set<Hierarchy> leafs;
     private Set<Long> variableIds;
+    private long variableIdWithHierarchies;
 
-    @Setup()
+    @Setup
     public void createHierarchies() {
         SystemSpec system = systemService.findByName(CMW).orElseThrow();
         parents = createParents(10, "HierarchyTest_Read_", system);
@@ -42,6 +43,10 @@ public class HierarchyTest extends AbstractPerformanceTest {
         Set<Variable> variables = createVariables(NUMBER_OF_VARIABLES, system);
         assertEquals(NUMBER_OF_VARIABLES, variables.size());
         variableIds = variables.stream().map(Variable::getId).collect(Collectors.toSet());
+        variableIdWithHierarchies = variableIds.stream().findFirst().get();
+        for (Hierarchy hierarchy : leafs) {
+            hierarchyService.addVariables(hierarchy.getId(), Set.of(variableIdWithHierarchies));
+        }
     }
 
     @BenchmarkThreshold(threshold = 10)
@@ -76,13 +81,19 @@ public class HierarchyTest extends AbstractPerformanceTest {
     @BenchmarkThreshold(threshold = 10)
     @Benchmark
     public void shouldAttachMoreThan1kVariablesToHierarchy() {
-        // create parents
+        // find any hierarchy
         Hierarchy hierarchy = parents.stream().findFirst().get();
 
         // update
         hierarchyService.addVariables(hierarchy.getId(), variableIds);
     }
 
+    @BenchmarkThreshold(threshold = 10)
+    @Benchmark
+    public void shouldGetAllHierarchiesForVariable(Blackhole blackhole) {
+        blackhole.consume(hierarchyService.getHierarchiesForVariable(variableIdWithHierarchies));
+    }
+
     @BenchmarkThreshold(threshold = 0.1)
     @Benchmark
     public void shouldFindMoreThan1kHierarchiesById(Blackhole blackhole) {
-- 
GitLab