From 68ee90a369acd2df9f7d8f6ea165aa1d55da50c1 Mon Sep 17 00:00:00 2001 From: Ndacyayisenga-droid Date: Wed, 11 Sep 2024 03:19:29 +0300 Subject: [PATCH] Fix query for systemMemory --- .../server/store/data/EnvironmentQuery.java | 10 ++++++--- .../BenchmarkEnvironmentEndpoint.java | 14 +++++++----- .../store/entities/EnvironmentEntity.java | 6 ++--- .../server/store/export/ExportEndpoint.java | 6 ++++- .../repositories/EnvironmentRepository.java | 22 +++++++++++++++---- .../store/services/EnvironmentService.java | 17 ++++++++------ 6 files changed, 52 insertions(+), 23 deletions(-) diff --git a/server/src/main/java/com/openelements/benchscape/server/store/data/EnvironmentQuery.java b/server/src/main/java/com/openelements/benchscape/server/store/data/EnvironmentQuery.java index 6e640827..e6256f4e 100644 --- a/server/src/main/java/com/openelements/benchscape/server/store/data/EnvironmentQuery.java +++ b/server/src/main/java/com/openelements/benchscape/server/store/data/EnvironmentQuery.java @@ -16,9 +16,10 @@ * @param systemProcessors system processors of the environment * @param systemProcessorsMin min system processors of the environment * @param systemProcessorsMax max system processors of the environment -// * @param systemMemory system memory of the environment -// * @param systemMemoryMin min system memory of the environment -// * @param systemMemoryMax max system memory of the environment + * @param systemMemory system memory of the environment + * @param systemMemoryMin min system memory of the environment + * @param systemMemoryMax max system memory of the environment + * @param osFamily os family of the environment * @param osName os name of the environment * @param osVersion os version of the environment * @param jvmVersion jvm version of the environment @@ -32,6 +33,9 @@ public record EnvironmentQuery(@Nullable String name, @Nullable Integer systemProcessors, @Nullable Integer systemProcessorsMin, @Nullable Integer systemProcessorsMax, + @Nullable SystemMemory systemMemory, + @Nullable SystemMemory systemMemoryMin, + @Nullable SystemMemory systemMemoryMax, @Nullable OperationSystem osFamily, @Nullable String osName, @Nullable String osVersion, diff --git a/server/src/main/java/com/openelements/benchscape/server/store/endpoints/BenchmarkEnvironmentEndpoint.java b/server/src/main/java/com/openelements/benchscape/server/store/endpoints/BenchmarkEnvironmentEndpoint.java index 859db7d2..dc67dcd6 100644 --- a/server/src/main/java/com/openelements/benchscape/server/store/endpoints/BenchmarkEnvironmentEndpoint.java +++ b/server/src/main/java/com/openelements/benchscape/server/store/endpoints/BenchmarkEnvironmentEndpoint.java @@ -86,10 +86,10 @@ public Environment find(@RequestParam final String id) { * systemProcessors will be ignored) * @param systemProcessorsMax the maximum number of system processors of the environment (if defined * systemProcessors will be ignored) -// * @param systemMemory the system memory of the environment -// * @param systemMemoryMin the minimum system memory of the environment (if defined systemMemory will be -// * ignored) -// * @param systemMemoryMax the maximum system memory of the environment (if defined systemMemory will be + * @param systemMemory the system memory of the environment + * @param systemMemoryMin the minimum system memory of the environment (if defined systemMemory will be + * ignored) + * @param systemMemoryMax the maximum system memory of the environment (if defined systemMemory will be * ignored) * @param osName the os name of the environment (can contain wildcards) * @param osVersion the os version of the environment (can contain wildcards) @@ -107,6 +107,9 @@ public List findByQuery( @RequestParam(required = false) Integer systemProcessors, @RequestParam(required = false) Integer systemProcessorsMin, @RequestParam(required = false) Integer systemProcessorsMax, + @RequestParam(required = false) SystemMemory systemMemory, + @RequestParam(required = false) SystemMemory systemMemoryMin, + @RequestParam(required = false) SystemMemory systemMemoryMax, @RequestParam(required = false) OperationSystem osFamily, @RequestParam(required = false) String osName, @RequestParam(required = false) String osVersion, @@ -114,7 +117,8 @@ public List findByQuery( @RequestParam(required = false) String jvmName, @RequestParam(required = false) String jmhVersion) { final EnvironmentQuery environmentQuery = new EnvironmentQuery(name, gitOriginUrl, gitBranch, systemArch, - systemProcessors, systemProcessorsMin, systemProcessorsMax, osFamily, osName, osVersion, jvmVersion, jvmName, jmhVersion); + systemProcessors, systemProcessorsMin, systemProcessorsMax, systemMemory, systemMemoryMin, systemMemoryMax, + osFamily, osName, osVersion, jvmVersion, jvmName, jmhVersion); return environmentService.findByQuery(environmentQuery); } diff --git a/server/src/main/java/com/openelements/benchscape/server/store/entities/EnvironmentEntity.java b/server/src/main/java/com/openelements/benchscape/server/store/entities/EnvironmentEntity.java index 4027e925..be773018 100644 --- a/server/src/main/java/com/openelements/benchscape/server/store/entities/EnvironmentEntity.java +++ b/server/src/main/java/com/openelements/benchscape/server/store/entities/EnvironmentEntity.java @@ -1,12 +1,12 @@ package com.openelements.benchscape.server.store.entities; +import java.util.Objects; + import com.openelements.benchscape.server.store.data.OperationSystem; import com.openelements.server.base.tenantdata.AbstractEntityWithTenant; -import jakarta.persistence.Column; +import jakarta.persistence.*; import jakarta.persistence.Entity; -import jakarta.persistence.PrePersist; import jakarta.persistence.PreUpdate; -import java.util.Objects; @Entity(name = "Environment") public class EnvironmentEntity extends AbstractEntityWithTenant { diff --git a/server/src/main/java/com/openelements/benchscape/server/store/export/ExportEndpoint.java b/server/src/main/java/com/openelements/benchscape/server/store/export/ExportEndpoint.java index 7af11e29..048eef92 100644 --- a/server/src/main/java/com/openelements/benchscape/server/store/export/ExportEndpoint.java +++ b/server/src/main/java/com/openelements/benchscape/server/store/export/ExportEndpoint.java @@ -55,6 +55,9 @@ public ExportEndpoint(@NonNull final EnvironmentService environmentService, @RequestParam(required = false) Integer systemProcessors, @RequestParam(required = false) Integer systemProcessorsMin, @RequestParam(required = false) Integer systemProcessorsMax, + @RequestParam(required = false) SystemMemory systemMemory, + @RequestParam(required = false) SystemMemory systemMemoryMin, + @RequestParam(required = false) SystemMemory systemMemoryMax, @RequestParam(required = false) OperationSystem osFamily, @RequestParam(required = false) String osName, @RequestParam(required = false) String osVersion, @@ -62,7 +65,8 @@ public ExportEndpoint(@NonNull final EnvironmentService environmentService, @RequestParam(required = false) String jvmName, @RequestParam(required = false) String jmhVersion) { final List filteredEnvironments = environmentService.getFilteredEnvironments(name, gitOriginUrl, gitBranch, - systemArch, systemProcessors, systemProcessorsMin, systemProcessorsMax, osFamily, osName, osVersion, jvmVersion, jvmName, jmhVersion); + systemArch, systemProcessors, systemProcessorsMin, systemProcessorsMax, systemMemory, systemMemoryMin, systemMemoryMax, + osFamily, osName, osVersion, jvmVersion, jvmName, jmhVersion); return createData(osw -> CsvExport.exportEnvironments(osw, filteredEnvironments)); } diff --git a/server/src/main/java/com/openelements/benchscape/server/store/repositories/EnvironmentRepository.java b/server/src/main/java/com/openelements/benchscape/server/store/repositories/EnvironmentRepository.java index a5380eb4..a8cc2468 100644 --- a/server/src/main/java/com/openelements/benchscape/server/store/repositories/EnvironmentRepository.java +++ b/server/src/main/java/com/openelements/benchscape/server/store/repositories/EnvironmentRepository.java @@ -1,6 +1,7 @@ package com.openelements.benchscape.server.store.repositories; import com.openelements.benchscape.server.store.data.OperationSystem; +import com.openelements.benchscape.server.store.data.SystemMemory; import com.openelements.benchscape.server.store.entities.EnvironmentEntity; import com.openelements.benchscape.server.store.entities.EnvironmentEntity_; import com.openelements.server.base.tenantdata.EntityWithTenantRepository; @@ -18,18 +19,20 @@ public interface EnvironmentRepository extends EntityWithTenantRepository findFilteredEnvironments(String name, String gitOriginUrl, String gitBranch, String systemArch, Integer systemProcessors, Integer systemProcessorsMin, - Integer systemProcessorsMax, OperationSystem osFamily, - String osName, String osVersion, String jvmVersion, + Integer systemProcessorsMax, SystemMemory systemMemory, + SystemMemory systemMemoryMin, SystemMemory systemMemoryMax, + OperationSystem osFamily, String osName, String osVersion, String jvmVersion, String jvmName, String jmhVersion) { return findAll(createSpecificationForQuery(name, gitOriginUrl, gitBranch, systemArch, - systemProcessors, systemProcessorsMin, systemProcessorsMax, + systemProcessors, systemProcessorsMin, systemProcessorsMax, systemMemory, systemMemoryMin, systemMemoryMax, osFamily, osName, osVersion, jvmVersion, jvmName, jmhVersion)); } private static Specification createSpecificationForQuery(String name, String gitOriginUrl, String gitBranch, String systemArch, Integer systemProcessors, Integer systemProcessorsMin, Integer systemProcessorsMax, - OperationSystem osFamily, + SystemMemory systemMemory, SystemMemory systemMemoryMin, + SystemMemory systemMemoryMax, OperationSystem osFamily, String osName, String osVersion, String jvmVersion, String jvmName, String jmhVersion) { return (root, criteriaQuery, criteriaBuilder) -> { @@ -60,6 +63,17 @@ private static Specification createSpecificationForQuery(Stri if (systemProcessorsMax != null) { predicates.add(criteriaBuilder.lessThanOrEqualTo(root.get(EnvironmentEntity_.systemProcessors), systemProcessorsMax)); } + if (systemMemory != null) { + predicates.add(criteriaBuilder.equal(root.get(EnvironmentEntity_.systemMemory).get("type"), systemMemory.toBytes())); + } + + if (systemMemoryMin != null) { + predicates.add(criteriaBuilder.greaterThanOrEqualTo(root.get(EnvironmentEntity_.systemMemory).get("value"), systemMemoryMin.toBytes())); + } + + if (systemMemoryMax != null) { + predicates.add(criteriaBuilder.lessThanOrEqualTo(root.get(EnvironmentEntity_.systemMemory).get("value"), systemMemoryMax.toBytes())); + } if (osFamily != null) { predicates.add(criteriaBuilder.equal(root.get(EnvironmentEntity_.osFamily), osFamily)); } diff --git a/server/src/main/java/com/openelements/benchscape/server/store/services/EnvironmentService.java b/server/src/main/java/com/openelements/benchscape/server/store/services/EnvironmentService.java index a290f191..1797b38f 100644 --- a/server/src/main/java/com/openelements/benchscape/server/store/services/EnvironmentService.java +++ b/server/src/main/java/com/openelements/benchscape/server/store/services/EnvironmentService.java @@ -91,10 +91,11 @@ protected EnvironmentEntity createNewEntity() { public List getFilteredEnvironments(String name, String gitOriginUrl, String gitBranch, String systemArch, Integer systemProcessors, Integer systemProcessorsMin, Integer systemProcessorsMax, - OperationSystem osFamily, String osName, String osVersion, String jvmVersion, String jvmName, - String jmhVersion) { + SystemMemory systemMemory, SystemMemory systemMemoryMin, SystemMemory systemMemoryMax, + OperationSystem osFamily, String osName, String osVersion, String jvmVersion, + String jvmName, String jmhVersion) { List filteredEntities = repository.findFilteredEnvironments(name, gitOriginUrl, gitBranch, systemArch, - systemProcessors, systemProcessorsMin, systemProcessorsMax, osFamily, osName, osVersion, jvmVersion, jvmName, jmhVersion); + systemProcessors, systemProcessorsMin, systemProcessorsMax, systemMemory, systemMemoryMin, systemMemoryMax, osFamily, osName, osVersion, jvmVersion, jvmName, jmhVersion); return filteredEntities.stream().map(this::mapToData).collect(Collectors.toList()); } @@ -265,10 +266,12 @@ private boolean stringMetadataValueMatches(@NonNull final String environmentPatt @NonNull public List findByQuery(@NonNull final EnvironmentQuery environmentQuery) { Objects.requireNonNull(environmentQuery, "environmentQuery must not be null"); - return repository.findFilteredEnvironments(environmentQuery.name(), environmentQuery.gitOriginUrl(), environmentQuery.gitBranch(), environmentQuery.systemArch(), - environmentQuery.systemProcessors(), environmentQuery.systemProcessorsMin(), environmentQuery.systemProcessorsMax(), - environmentQuery.osFamily(), environmentQuery.osName(), environmentQuery.osVersion(), environmentQuery.jvmVersion(), - environmentQuery.jvmName(), environmentQuery.jmhVersion()).stream() + return repository.findFilteredEnvironments(environmentQuery.name(), environmentQuery.gitOriginUrl(), environmentQuery.gitBranch(), + environmentQuery.systemArch(), environmentQuery.systemProcessors(), environmentQuery.systemProcessorsMin(), + environmentQuery.systemProcessorsMax(), environmentQuery.systemMemory(), environmentQuery.systemMemoryMin(), + environmentQuery.systemMemoryMax(), environmentQuery.osFamily(), environmentQuery.osName(), + environmentQuery.osVersion(), environmentQuery.jvmVersion(), environmentQuery.jvmName(), + environmentQuery.jmhVersion()).stream() .map(this::mapToData) .collect(Collectors.toList()); }