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 6e64082..e6256f4 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 859db7d..dc67dcd 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 4027e92..be77301 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 7af11e2..048eef9 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 a5380eb..a8cc246 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 a290f19..1797b38 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()); }