diff --git a/perf-test/src/gatling/scala/simulations/heap/HeapSimulation.scala b/perf-test/src/gatling/scala/simulations/heap/HeapSimulation.scala index 41a1425..a28d5ba 100644 --- a/perf-test/src/gatling/scala/simulations/heap/HeapSimulation.scala +++ b/perf-test/src/gatling/scala/simulations/heap/HeapSimulation.scala @@ -1,27 +1,31 @@ package simulations.heap -import java.time.Duration import io.gatling.core.Predef._ import io.gatling.http.HeaderNames.{Accept, ContentType} import io.gatling.http.HeaderValues._ import io.gatling.http.Predef._ import io.gatling.http.protocol.HttpProtocolBuilder +import java.time.Duration +import scala.annotation.unused + /** * @author Jonatan Ivanov */ + +@unused class HeapSimulation extends Simulation { - val size = "512KB" - val ttl: Duration = Duration.ofMinutes(1) - val rate = 10 // 5MB/sec (300MB/min), 10 objects/sec (600 objects/min) - val duration = 300 + private val size = "512KB" + private val ttl: Duration = Duration.ofMinutes(1) + private val rate = 10 // 5MB/sec (300MB/min), 10 objects/sec (600 objects/min) + private val duration = 300 println(s"size: $size") println(s"ttl: $ttl") println(s"rate: $rate") println(s"duration: $duration") - val httpProtocol: HttpProtocolBuilder = http + private val httpProtocol: HttpProtocolBuilder = http .baseUrl("http://localhost:8080") .contentTypeHeader(ApplicationJson) .acceptHeader(ApplicationJson) diff --git a/src/main/java/resourceater/config/ModelAssemblerConfig.java b/src/main/java/resourceater/config/ModelAssemblerConfig.java index 6331795..4f55e97 100644 --- a/src/main/java/resourceater/config/ModelAssemblerConfig.java +++ b/src/main/java/resourceater/config/ModelAssemblerConfig.java @@ -40,6 +40,7 @@ * @author Jonatan Ivanov */ @Configuration +@SuppressWarnings("SpringJavaInjectionPointsAutowiringInspection") public class ModelAssemblerConfig { @Bean ModelAssembler classResourceModelAssembler(EntityLinks entityLinks) { diff --git a/src/main/java/resourceater/controller/ClassResourceController.java b/src/main/java/resourceater/controller/ClassResourceController.java index e9a38ed..249933d 100644 --- a/src/main/java/resourceater/controller/ClassResourceController.java +++ b/src/main/java/resourceater/controller/ClassResourceController.java @@ -21,6 +21,7 @@ @ExposesResourceFor(ClassResourceModel.class) @Tag(name = "Classes") public class ClassResourceController extends ResourceController { + @SuppressWarnings("SpringJavaInjectionPointsAutowiringInspection") public ClassResourceController( PagedResourcesAssembler pagedAssembler, ModelAssembler modelAssembler, diff --git a/src/main/java/resourceater/controller/ContainerThreadResourceController.java b/src/main/java/resourceater/controller/ContainerThreadResourceController.java index 8b9b994..3c1c755 100644 --- a/src/main/java/resourceater/controller/ContainerThreadResourceController.java +++ b/src/main/java/resourceater/controller/ContainerThreadResourceController.java @@ -31,6 +31,7 @@ public class ContainerThreadResourceController extends ResourceController { private final ContainerThreadResourceClient client; + @SuppressWarnings("SpringJavaInjectionPointsAutowiringInspection") public ContainerThreadResourceController( PagedResourcesAssembler pagedAssembler, ModelAssembler modelAssembler, diff --git a/src/main/java/resourceater/controller/CpuResourceController.java b/src/main/java/resourceater/controller/CpuResourceController.java index 52d02ce..211b18f 100644 --- a/src/main/java/resourceater/controller/CpuResourceController.java +++ b/src/main/java/resourceater/controller/CpuResourceController.java @@ -21,6 +21,7 @@ @ExposesResourceFor(CpuResourceModel.class) @Tag(name = "CPU Cores") public class CpuResourceController extends ResourceController { + @SuppressWarnings("SpringJavaInjectionPointsAutowiringInspection") public CpuResourceController( PagedResourcesAssembler pagedAssembler, ModelAssembler modelAssembler, diff --git a/src/main/java/resourceater/controller/DaemonThreadResourceController.java b/src/main/java/resourceater/controller/DaemonThreadResourceController.java index 13a15df..b8eff4e 100644 --- a/src/main/java/resourceater/controller/DaemonThreadResourceController.java +++ b/src/main/java/resourceater/controller/DaemonThreadResourceController.java @@ -21,6 +21,7 @@ @ExposesResourceFor(DaemonThreadResourceModel.class) @Tag(name = "Threads") public class DaemonThreadResourceController extends ResourceController { + @SuppressWarnings("SpringJavaInjectionPointsAutowiringInspection") public DaemonThreadResourceController( PagedResourcesAssembler pagedAssembler, ModelAssembler modelAssembler, diff --git a/src/main/java/resourceater/controller/FileResourceController.java b/src/main/java/resourceater/controller/FileResourceController.java index 4ba64da..ffa77eb 100644 --- a/src/main/java/resourceater/controller/FileResourceController.java +++ b/src/main/java/resourceater/controller/FileResourceController.java @@ -21,6 +21,7 @@ @ExposesResourceFor(FileResourceModel.class) @Tag(name = "Files") public class FileResourceController extends ResourceController { + @SuppressWarnings("SpringJavaInjectionPointsAutowiringInspection") public FileResourceController( PagedResourcesAssembler pagedAssembler, ModelAssembler modelAssembler, diff --git a/src/main/java/resourceater/controller/HeapResourceController.java b/src/main/java/resourceater/controller/HeapResourceController.java index 49f244e..cd799aa 100644 --- a/src/main/java/resourceater/controller/HeapResourceController.java +++ b/src/main/java/resourceater/controller/HeapResourceController.java @@ -21,6 +21,7 @@ @ExposesResourceFor(HeapResourceModel.class) @Tag(name = "Heap Objects") public class HeapResourceController extends ResourceController { + @SuppressWarnings("SpringJavaInjectionPointsAutowiringInspection") public HeapResourceController( PagedResourcesAssembler pagedAssembler, ModelAssembler modelAssembler, diff --git a/src/main/java/resourceater/controller/HttpResourceController.java b/src/main/java/resourceater/controller/HttpResourceController.java index 93116b1..28cc3b5 100644 --- a/src/main/java/resourceater/controller/HttpResourceController.java +++ b/src/main/java/resourceater/controller/HttpResourceController.java @@ -26,6 +26,7 @@ public class HttpResourceController extends ResourceController pagedAssembler, ModelAssembler modelAssembler, diff --git a/src/main/java/resourceater/controller/MeterResourceController.java b/src/main/java/resourceater/controller/MeterResourceController.java index 068ca11..88e1b8e 100644 --- a/src/main/java/resourceater/controller/MeterResourceController.java +++ b/src/main/java/resourceater/controller/MeterResourceController.java @@ -21,6 +21,7 @@ @ExposesResourceFor(MeterResourceModel.class) @Tag(name = "Micrometer Meter Objects") public class MeterResourceController extends ResourceController { + @SuppressWarnings("SpringJavaInjectionPointsAutowiringInspection") public MeterResourceController( PagedResourcesAssembler pagedAssembler, ModelAssembler modelAssembler, diff --git a/src/main/java/resourceater/controller/OffHeapResourceController.java b/src/main/java/resourceater/controller/OffHeapResourceController.java index c3abe18..5854aee 100644 --- a/src/main/java/resourceater/controller/OffHeapResourceController.java +++ b/src/main/java/resourceater/controller/OffHeapResourceController.java @@ -21,6 +21,7 @@ @ExposesResourceFor(OffHeapResourceModel.class) @Tag(name = "Off-Heap Direct Buffers") public class OffHeapResourceController extends ResourceController { + @SuppressWarnings("SpringJavaInjectionPointsAutowiringInspection") public OffHeapResourceController( PagedResourcesAssembler pagedAssembler, ModelAssembler modelAssembler, diff --git a/src/main/java/resourceater/controller/SocketResourceController.java b/src/main/java/resourceater/controller/SocketResourceController.java index 6e5919f..a38ab93 100644 --- a/src/main/java/resourceater/controller/SocketResourceController.java +++ b/src/main/java/resourceater/controller/SocketResourceController.java @@ -21,6 +21,7 @@ @ExposesResourceFor(SocketResourceModel.class) @Tag(name = "Sockets") public class SocketResourceController extends ResourceController { + @SuppressWarnings("SpringJavaInjectionPointsAutowiringInspection") public SocketResourceController( PagedResourcesAssembler pagedAssembler, ModelAssembler modelAssembler, diff --git a/src/main/java/resourceater/model/resource/CreateRequest.java b/src/main/java/resourceater/model/resource/CreateRequest.java index 6800e84..ce4d5bc 100644 --- a/src/main/java/resourceater/model/resource/CreateRequest.java +++ b/src/main/java/resourceater/model/resource/CreateRequest.java @@ -6,5 +6,5 @@ * @author Jonatan Ivanov */ public interface CreateRequest { - Duration getTtl(); + Duration ttl(); } diff --git a/src/main/java/resourceater/model/resource/Resource.java b/src/main/java/resourceater/model/resource/Resource.java index 1b8e9a8..5b76cad 100644 --- a/src/main/java/resourceater/model/resource/Resource.java +++ b/src/main/java/resourceater/model/resource/Resource.java @@ -3,6 +3,7 @@ import java.time.Duration; import java.time.Instant; import java.util.Optional; + import lombok.EqualsAndHashCode; import lombok.Getter; import lombok.ToString; diff --git a/src/main/java/resourceater/model/resource/clazz/ClassResource.java b/src/main/java/resourceater/model/resource/clazz/ClassResource.java index 9f9d5ed..4c957a9 100644 --- a/src/main/java/resourceater/model/resource/clazz/ClassResource.java +++ b/src/main/java/resourceater/model/resource/clazz/ClassResource.java @@ -1,15 +1,16 @@ package resourceater.model.resource.clazz; -import static java.lang.String.format; -import static org.objectweb.asm.Opcodes.ACC_PUBLIC; -import static org.objectweb.asm.Opcodes.V12; - import java.util.ArrayList; import java.util.List; + import org.objectweb.asm.ClassWriter; import resourceater.model.resource.Model; import resourceater.model.resource.Resource; +import static java.lang.String.format; +import static org.objectweb.asm.Opcodes.ACC_PUBLIC; +import static org.objectweb.asm.Opcodes.V12; + /** * @author Jonatan Ivanov */ @@ -20,8 +21,8 @@ public class ClassResource extends Resource { private final List> classes = new ArrayList<>(); public ClassResource(CreateClassResourceRequest request) { - super(request.getTtl()); - for (int i = 0; i < request.getSize(); i++) { + super(request.ttl()); + for (int i = 0; i < request.size(); i++) { classes.add(generateClass(format("%s$%d", getId(), i))); } } diff --git a/src/main/java/resourceater/model/resource/clazz/ClassResourceModel.java b/src/main/java/resourceater/model/resource/clazz/ClassResourceModel.java index bcc6bda..59361a9 100644 --- a/src/main/java/resourceater/model/resource/clazz/ClassResourceModel.java +++ b/src/main/java/resourceater/model/resource/clazz/ClassResourceModel.java @@ -10,7 +10,7 @@ @Value @EqualsAndHashCode(callSuper=true) public class ClassResourceModel extends Model { - private final int size; + int size; public ClassResourceModel(ClassResource resource, int size) { super(resource); diff --git a/src/main/java/resourceater/model/resource/clazz/CreateClassResourceRequest.java b/src/main/java/resourceater/model/resource/clazz/CreateClassResourceRequest.java index 3025e2a..26d7fc3 100644 --- a/src/main/java/resourceater/model/resource/clazz/CreateClassResourceRequest.java +++ b/src/main/java/resourceater/model/resource/clazz/CreateClassResourceRequest.java @@ -1,14 +1,11 @@ package resourceater.model.resource.clazz; import java.time.Duration; -import lombok.Value; + import resourceater.model.resource.CreateRequest; /** * @author Jonatan Ivanov */ -@Value -public class CreateClassResourceRequest implements CreateRequest { - private final int size; - private final Duration ttl; +public record CreateClassResourceRequest(int size, Duration ttl) implements CreateRequest { } diff --git a/src/main/java/resourceater/model/resource/cpu/CpuResource.java b/src/main/java/resourceater/model/resource/cpu/CpuResource.java index f18bf59..ff54f6d 100644 --- a/src/main/java/resourceater/model/resource/cpu/CpuResource.java +++ b/src/main/java/resourceater/model/resource/cpu/CpuResource.java @@ -1,14 +1,15 @@ package resourceater.model.resource.cpu; -import static java.util.concurrent.TimeUnit.SECONDS; - import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.ExecutorService; import java.util.concurrent.ThreadPoolExecutor; + import lombok.extern.slf4j.Slf4j; import resourceater.model.resource.Model; import resourceater.model.resource.Resource; +import static java.util.concurrent.TimeUnit.SECONDS; + /** * @author Jonatan Ivanov */ @@ -18,8 +19,8 @@ public class CpuResource extends Resource { private final int size; public CpuResource(CreateCpuResourceRequest request) { - super(request.getTtl()); - this.size = request.getSize(); + super(request.ttl()); + this.size = request.size(); this.executorService = new ThreadPoolExecutor(this.size, this.size, 0, SECONDS, new ArrayBlockingQueue<>(1)); for (int i = 0; i < size; i++) { executorService.submit(this::run); diff --git a/src/main/java/resourceater/model/resource/cpu/CpuResourceModel.java b/src/main/java/resourceater/model/resource/cpu/CpuResourceModel.java index 67188e6..3151444 100644 --- a/src/main/java/resourceater/model/resource/cpu/CpuResourceModel.java +++ b/src/main/java/resourceater/model/resource/cpu/CpuResourceModel.java @@ -10,7 +10,7 @@ @Value @EqualsAndHashCode(callSuper=true) public class CpuResourceModel extends Model { - private final int size; + int size; public CpuResourceModel(CpuResource resource, int size) { super(resource); diff --git a/src/main/java/resourceater/model/resource/cpu/CreateCpuResourceRequest.java b/src/main/java/resourceater/model/resource/cpu/CreateCpuResourceRequest.java index 6b26f16..5eee20b 100644 --- a/src/main/java/resourceater/model/resource/cpu/CreateCpuResourceRequest.java +++ b/src/main/java/resourceater/model/resource/cpu/CreateCpuResourceRequest.java @@ -1,14 +1,11 @@ package resourceater.model.resource.cpu; import java.time.Duration; -import lombok.Value; + import resourceater.model.resource.CreateRequest; /** * @author Jonatan Ivanov */ -@Value -public class CreateCpuResourceRequest implements CreateRequest { - private final int size; - private final Duration ttl; +public record CreateCpuResourceRequest(int size, Duration ttl) implements CreateRequest { } diff --git a/src/main/java/resourceater/model/resource/file/CreateFileResourceRequest.java b/src/main/java/resourceater/model/resource/file/CreateFileResourceRequest.java index ce633b8..75d6371 100644 --- a/src/main/java/resourceater/model/resource/file/CreateFileResourceRequest.java +++ b/src/main/java/resourceater/model/resource/file/CreateFileResourceRequest.java @@ -1,14 +1,11 @@ package resourceater.model.resource.file; import java.time.Duration; -import lombok.Value; + import resourceater.model.resource.CreateRequest; /** * @author Jonatan Ivanov */ -@Value -public class CreateFileResourceRequest implements CreateRequest { - private final String size; - private final Duration ttl; +public record CreateFileResourceRequest(String size, Duration ttl) implements CreateRequest { } diff --git a/src/main/java/resourceater/model/resource/file/FileResource.java b/src/main/java/resourceater/model/resource/file/FileResource.java index 73cd1be..bb611e5 100644 --- a/src/main/java/resourceater/model/resource/file/FileResource.java +++ b/src/main/java/resourceater/model/resource/file/FileResource.java @@ -1,19 +1,21 @@ package resourceater.model.resource.file; -import static java.nio.file.StandardOpenOption.CREATE_NEW; -import static java.nio.file.StandardOpenOption.WRITE; - import java.io.BufferedOutputStream; import java.io.File; import java.io.IOException; import java.io.OutputStream; import java.nio.file.Files; import java.time.Duration; + import lombok.extern.slf4j.Slf4j; -import org.springframework.util.unit.DataSize; import resourceater.model.resource.Model; import resourceater.model.resource.Resource; +import org.springframework.util.unit.DataSize; + +import static java.nio.file.StandardOpenOption.CREATE_NEW; +import static java.nio.file.StandardOpenOption.WRITE; + /** * @author Jonatan Ivanov */ @@ -24,7 +26,7 @@ public class FileResource extends Resource { private final File file; public FileResource(CreateFileResourceRequest request) { - this(DataSize.parse(request.getSize()), request.getTtl()); + this(DataSize.parse(request.size()), request.ttl()); } private FileResource(DataSize dataSize, Duration ttl) { diff --git a/src/main/java/resourceater/model/resource/file/FileResourceModel.java b/src/main/java/resourceater/model/resource/file/FileResourceModel.java index bcfc38a..5a12a10 100644 --- a/src/main/java/resourceater/model/resource/file/FileResourceModel.java +++ b/src/main/java/resourceater/model/resource/file/FileResourceModel.java @@ -10,8 +10,8 @@ @Value @EqualsAndHashCode(callSuper=true) public class FileResourceModel extends Model { - private final long size; - private final String path; + long size; + String path; public FileResourceModel(FileResource resource, long size, String path) { super(resource); diff --git a/src/main/java/resourceater/model/resource/heap/CreateHeapResourceRequest.java b/src/main/java/resourceater/model/resource/heap/CreateHeapResourceRequest.java index d74bc5f..97cf241 100644 --- a/src/main/java/resourceater/model/resource/heap/CreateHeapResourceRequest.java +++ b/src/main/java/resourceater/model/resource/heap/CreateHeapResourceRequest.java @@ -1,14 +1,11 @@ package resourceater.model.resource.heap; import java.time.Duration; -import lombok.Value; + import resourceater.model.resource.CreateRequest; /** * @author Jonatan Ivanov */ -@Value -public class CreateHeapResourceRequest implements CreateRequest { - private final String size; - private final Duration ttl; +public record CreateHeapResourceRequest(String size, Duration ttl) implements CreateRequest { } diff --git a/src/main/java/resourceater/model/resource/heap/HeapResource.java b/src/main/java/resourceater/model/resource/heap/HeapResource.java index 1122e88..9fbfc2e 100644 --- a/src/main/java/resourceater/model/resource/heap/HeapResource.java +++ b/src/main/java/resourceater/model/resource/heap/HeapResource.java @@ -1,10 +1,12 @@ package resourceater.model.resource.heap; import java.time.Duration; -import org.springframework.util.unit.DataSize; + import resourceater.model.resource.Model; import resourceater.model.resource.Resource; +import org.springframework.util.unit.DataSize; + /** * @author Jonatan Ivanov */ @@ -13,7 +15,7 @@ public class HeapResource extends Resource { private final byte[] bytes; public HeapResource(CreateHeapResourceRequest request) { - this(DataSize.parse(request.getSize()), request.getTtl()); + this(DataSize.parse(request.size()), request.ttl()); } private HeapResource(DataSize dataSize, Duration ttl) { diff --git a/src/main/java/resourceater/model/resource/heap/HeapResourceModel.java b/src/main/java/resourceater/model/resource/heap/HeapResourceModel.java index 3be2599..753e78b 100644 --- a/src/main/java/resourceater/model/resource/heap/HeapResourceModel.java +++ b/src/main/java/resourceater/model/resource/heap/HeapResourceModel.java @@ -10,7 +10,7 @@ @Value @EqualsAndHashCode(callSuper=true) public class HeapResourceModel extends Model { - private final long size; + long size; public HeapResourceModel(HeapResource resource, long size) { super(resource); diff --git a/src/main/java/resourceater/model/resource/micrometer/CreateMeterResourceRequest.java b/src/main/java/resourceater/model/resource/micrometer/CreateMeterResourceRequest.java index 8087e16..4235c1c 100644 --- a/src/main/java/resourceater/model/resource/micrometer/CreateMeterResourceRequest.java +++ b/src/main/java/resourceater/model/resource/micrometer/CreateMeterResourceRequest.java @@ -3,15 +3,10 @@ import java.time.Duration; import io.micrometer.core.instrument.Meter; -import lombok.Value; import resourceater.model.resource.CreateRequest; /** * @author Jonatan Ivanov */ -@Value -public class CreateMeterResourceRequest implements CreateRequest { - private final int size; - private final Meter.Type type; - private final Duration ttl; +public record CreateMeterResourceRequest(int size, Meter.Type type, Duration ttl) implements CreateRequest { } diff --git a/src/main/java/resourceater/model/resource/micrometer/MeterResource.java b/src/main/java/resourceater/model/resource/micrometer/MeterResource.java index f2bba8b..2d974ac 100644 --- a/src/main/java/resourceater/model/resource/micrometer/MeterResource.java +++ b/src/main/java/resourceater/model/resource/micrometer/MeterResource.java @@ -26,7 +26,7 @@ public class MeterResource extends Resource { private final List meters; public MeterResource(CreateMeterResourceRequest request) { - this(request.getSize(), request.getType(), request.getTtl()); + this(request.size(), request.type(), request.ttl()); } public MeterResource(int count, Meter.Type type, Duration ttl) { diff --git a/src/main/java/resourceater/model/resource/micrometer/MeterResourceModel.java b/src/main/java/resourceater/model/resource/micrometer/MeterResourceModel.java index 3adad9e..afb80bf 100644 --- a/src/main/java/resourceater/model/resource/micrometer/MeterResourceModel.java +++ b/src/main/java/resourceater/model/resource/micrometer/MeterResourceModel.java @@ -1,12 +1,5 @@ package resourceater.model.resource.micrometer; -import java.util.stream.Collectors; -import java.util.stream.StreamSupport; - -import io.micrometer.core.instrument.Measurement; -import io.micrometer.core.instrument.Meter; -import io.micrometer.core.instrument.Statistic; -import io.micrometer.core.instrument.Tag; import lombok.EqualsAndHashCode; import lombok.Value; import resourceater.model.resource.Model; @@ -17,48 +10,12 @@ @Value @EqualsAndHashCode(callSuper=true) public class MeterResourceModel extends Model { - private final int size; -// private final List meters; + int size; +// List meters; public MeterResourceModel(MeterResource resource) { super(resource); -// this.meters = resource.getMeters().stream() -// .sorted(Comparator.comparing(meter -> meter.getId().getName())) -// .map(this::toString) -// .collect(Collectors.toList()); +// this.meters = resource.getMetersAsString().lines().toList(); this.size = resource.getMeters().size(); } - - private String toString(Meter meter) { - Meter.Id id = meter.getId(); - String tags = id.getTags().stream() - .map(this::toString) - .collect(Collectors.joining(", ")); - String baseUnit = id.getBaseUnit(); - String meterUnitSuffix = baseUnit != null ? " " + baseUnit : ""; - String measurements = StreamSupport.stream(meter.measure().spliterator(), false) - .map((measurement) -> toString(measurement, meterUnitSuffix)) - .collect(Collectors.joining(", ")); - - return String.format("%s(%s)[%s]; %s", id.getName(), id.getType(), tags, measurements); - } - - private String toString(Tag tag) { - return String.format("%s='%s'", tag.getKey(), tag.getValue()); - } - - private String toString(Measurement measurement, String meterUnitSuffix) { - Statistic statistic = measurement.getStatistic(); - return String.format("%s=%s%s", - statistic.toString().toLowerCase(), - measurement.getValue(), - getUnitSuffix(statistic, meterUnitSuffix)); - } - - private String getUnitSuffix(Statistic statistic, String meterUnitSuffix) { - return switch (statistic) { - case DURATION, TOTAL_TIME, TOTAL, MAX, VALUE -> meterUnitSuffix; - default -> ""; - }; - } } diff --git a/src/main/java/resourceater/model/resource/network/http/CreateHttpResourceRequest.java b/src/main/java/resourceater/model/resource/network/http/CreateHttpResourceRequest.java index a00e61b..bf673aa 100644 --- a/src/main/java/resourceater/model/resource/network/http/CreateHttpResourceRequest.java +++ b/src/main/java/resourceater/model/resource/network/http/CreateHttpResourceRequest.java @@ -1,13 +1,11 @@ package resourceater.model.resource.network.http; import java.time.Duration; -import lombok.Value; + import resourceater.model.resource.CreateRequest; /** * @author Jonatan Ivanov */ -@Value -public class CreateHttpResourceRequest implements CreateRequest { - private final Duration ttl; +public record CreateHttpResourceRequest(Duration ttl) implements CreateRequest { } diff --git a/src/main/java/resourceater/model/resource/network/http/HttpResource.java b/src/main/java/resourceater/model/resource/network/http/HttpResource.java index 0bcc606..49f964e 100644 --- a/src/main/java/resourceater/model/resource/network/http/HttpResource.java +++ b/src/main/java/resourceater/model/resource/network/http/HttpResource.java @@ -1,15 +1,16 @@ package resourceater.model.resource.network.http; -import static java.util.concurrent.TimeUnit.SECONDS; - import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.ExecutorService; import java.util.concurrent.ThreadPoolExecutor; + import lombok.extern.slf4j.Slf4j; import resourceater.client.HttpBlobClient; import resourceater.model.resource.Model; import resourceater.model.resource.Resource; +import static java.util.concurrent.TimeUnit.SECONDS; + /** * @author Jonatan Ivanov */ @@ -20,7 +21,7 @@ public class HttpResource extends Resource { private final String url; public HttpResource(CreateHttpResourceRequest createHttpResourceRequest, HttpBlobClient client, String url) { - super(createHttpResourceRequest.getTtl()); + super(createHttpResourceRequest.ttl()); this.executorService = new ThreadPoolExecutor(1, 1, 0, SECONDS, new ArrayBlockingQueue<>(1)); this.client = client; this.url = url; diff --git a/src/main/java/resourceater/model/resource/network/http/HttpResourceModel.java b/src/main/java/resourceater/model/resource/network/http/HttpResourceModel.java index 25e2646..d799969 100644 --- a/src/main/java/resourceater/model/resource/network/http/HttpResourceModel.java +++ b/src/main/java/resourceater/model/resource/network/http/HttpResourceModel.java @@ -10,7 +10,7 @@ @Value @EqualsAndHashCode(callSuper=true) public class HttpResourceModel extends Model { - private final String url; + String url; public HttpResourceModel(HttpResource resource, String url) { super(resource); diff --git a/src/main/java/resourceater/model/resource/network/socket/CreateSocketResourceRequest.java b/src/main/java/resourceater/model/resource/network/socket/CreateSocketResourceRequest.java index 6b040f9..a73b558 100644 --- a/src/main/java/resourceater/model/resource/network/socket/CreateSocketResourceRequest.java +++ b/src/main/java/resourceater/model/resource/network/socket/CreateSocketResourceRequest.java @@ -1,14 +1,11 @@ package resourceater.model.resource.network.socket; import java.time.Duration; -import lombok.Value; + import resourceater.model.resource.CreateRequest; /** * @author Jonatan Ivanov */ -@Value -public class CreateSocketResourceRequest implements CreateRequest { - private final int size; - private final Duration ttl; +public record CreateSocketResourceRequest(int size, Duration ttl) implements CreateRequest { } diff --git a/src/main/java/resourceater/model/resource/network/socket/SocketResource.java b/src/main/java/resourceater/model/resource/network/socket/SocketResource.java index 51c0afa..bf971d8 100644 --- a/src/main/java/resourceater/model/resource/network/socket/SocketResource.java +++ b/src/main/java/resourceater/model/resource/network/socket/SocketResource.java @@ -6,6 +6,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Optional; + import lombok.extern.slf4j.Slf4j; import resourceater.model.resource.Model; import resourceater.model.resource.Resource; @@ -18,7 +19,7 @@ public class SocketResource extends Resource { private final List sockets = new ArrayList<>(); public SocketResource(CreateSocketResourceRequest request) { - this(request.getSize(), request.getTtl()); + this(request.size(), request.ttl()); } private SocketResource(int count, Duration ttl) { diff --git a/src/main/java/resourceater/model/resource/network/socket/SocketResourceModel.java b/src/main/java/resourceater/model/resource/network/socket/SocketResourceModel.java index 9b9f3e4..ae89e5f 100644 --- a/src/main/java/resourceater/model/resource/network/socket/SocketResourceModel.java +++ b/src/main/java/resourceater/model/resource/network/socket/SocketResourceModel.java @@ -1,6 +1,7 @@ package resourceater.model.resource.network.socket; import java.util.List; + import lombok.EqualsAndHashCode; import lombok.Value; import resourceater.model.resource.Model; @@ -11,8 +12,8 @@ @Value @EqualsAndHashCode(callSuper=true) public class SocketResourceModel extends Model { - private final int size; - private final List ports; + int size; + List ports; public SocketResourceModel(SocketResource resource, int size, List ports) { super(resource); diff --git a/src/main/java/resourceater/model/resource/offheap/CreateOffHeapResourceRequest.java b/src/main/java/resourceater/model/resource/offheap/CreateOffHeapResourceRequest.java index fbbec25..d9d7fdf 100644 --- a/src/main/java/resourceater/model/resource/offheap/CreateOffHeapResourceRequest.java +++ b/src/main/java/resourceater/model/resource/offheap/CreateOffHeapResourceRequest.java @@ -1,14 +1,11 @@ package resourceater.model.resource.offheap; import java.time.Duration; -import lombok.Value; + import resourceater.model.resource.CreateRequest; /** * @author Jonatan Ivanov */ -@Value -public class CreateOffHeapResourceRequest implements CreateRequest { - private final String size; - private final Duration ttl; +public record CreateOffHeapResourceRequest(String size, Duration ttl) implements CreateRequest { } diff --git a/src/main/java/resourceater/model/resource/offheap/OffHeapResource.java b/src/main/java/resourceater/model/resource/offheap/OffHeapResource.java index 55daba2..e95548b 100644 --- a/src/main/java/resourceater/model/resource/offheap/OffHeapResource.java +++ b/src/main/java/resourceater/model/resource/offheap/OffHeapResource.java @@ -2,10 +2,12 @@ import java.nio.ByteBuffer; import java.time.Duration; -import org.springframework.util.unit.DataSize; + import resourceater.model.resource.Model; import resourceater.model.resource.Resource; +import org.springframework.util.unit.DataSize; + /** * @author Jonatan Ivanov */ @@ -14,7 +16,7 @@ public class OffHeapResource extends Resource { private final ByteBuffer byteBuffer; public OffHeapResource(CreateOffHeapResourceRequest request) { - this(DataSize.parse(request.getSize()), request.getTtl()); + this(DataSize.parse(request.size()), request.ttl()); } private OffHeapResource(DataSize dataSize, Duration ttl) { diff --git a/src/main/java/resourceater/model/resource/offheap/OffHeapResourceModel.java b/src/main/java/resourceater/model/resource/offheap/OffHeapResourceModel.java index 1370dd8..a62e72d 100644 --- a/src/main/java/resourceater/model/resource/offheap/OffHeapResourceModel.java +++ b/src/main/java/resourceater/model/resource/offheap/OffHeapResourceModel.java @@ -10,7 +10,7 @@ @Value @EqualsAndHashCode(callSuper=true) public class OffHeapResourceModel extends Model { - private final long size; + long size; public OffHeapResourceModel(OffHeapResource resource, long size) { super(resource); diff --git a/src/main/java/resourceater/model/resource/thread/container/ContainerThreadResource.java b/src/main/java/resourceater/model/resource/thread/container/ContainerThreadResource.java index 0784689..60a827b 100644 --- a/src/main/java/resourceater/model/resource/thread/container/ContainerThreadResource.java +++ b/src/main/java/resourceater/model/resource/thread/container/ContainerThreadResource.java @@ -1,18 +1,19 @@ package resourceater.model.resource.thread.container; -import static java.lang.String.format; - -import feign.FeignException; import java.time.Duration; import java.util.ArrayList; import java.util.List; import java.util.Optional; import java.util.concurrent.CountDownLatch; + +import feign.FeignException; import lombok.extern.slf4j.Slf4j; import resourceater.client.ContainerThreadResourceClient; import resourceater.model.resource.Model; import resourceater.model.resource.Resource; +import static java.lang.String.format; + /** * @author Jonatan Ivanov */ @@ -25,7 +26,7 @@ public class ContainerThreadResource extends Resource { private final ContainerThreadResourceClient client; public ContainerThreadResource(CreateContainerThreadResourceRequest request, ContainerThreadResourceClient client) { - this(request.getSize(), client, request.getTtl()); + this(request.size(), client, request.ttl()); } private ContainerThreadResource(int size, ContainerThreadResourceClient client, Duration ttl) { diff --git a/src/main/java/resourceater/model/resource/thread/container/ContainerThreadResourceModel.java b/src/main/java/resourceater/model/resource/thread/container/ContainerThreadResourceModel.java index fc38caa..f1ba510 100644 --- a/src/main/java/resourceater/model/resource/thread/container/ContainerThreadResourceModel.java +++ b/src/main/java/resourceater/model/resource/thread/container/ContainerThreadResourceModel.java @@ -10,7 +10,7 @@ @Value @EqualsAndHashCode(callSuper=true) public class ContainerThreadResourceModel extends Model { - private final int size; + int size; public ContainerThreadResourceModel(ContainerThreadResource resource, int size) { super(resource); diff --git a/src/main/java/resourceater/model/resource/thread/container/CreateContainerThreadResourceRequest.java b/src/main/java/resourceater/model/resource/thread/container/CreateContainerThreadResourceRequest.java index 029463c..e11e539 100644 --- a/src/main/java/resourceater/model/resource/thread/container/CreateContainerThreadResourceRequest.java +++ b/src/main/java/resourceater/model/resource/thread/container/CreateContainerThreadResourceRequest.java @@ -1,14 +1,11 @@ package resourceater.model.resource.thread.container; import java.time.Duration; -import lombok.Value; + import resourceater.model.resource.CreateRequest; /** * @author Jonatan Ivanov */ -@Value -public class CreateContainerThreadResourceRequest implements CreateRequest { - private final int size; - private final Duration ttl; +public record CreateContainerThreadResourceRequest(int size, Duration ttl) implements CreateRequest { } diff --git a/src/main/java/resourceater/model/resource/thread/daemon/CreateDaemonThreadResourceRequest.java b/src/main/java/resourceater/model/resource/thread/daemon/CreateDaemonThreadResourceRequest.java index d0ba8b7..4b7e5b0 100644 --- a/src/main/java/resourceater/model/resource/thread/daemon/CreateDaemonThreadResourceRequest.java +++ b/src/main/java/resourceater/model/resource/thread/daemon/CreateDaemonThreadResourceRequest.java @@ -1,14 +1,11 @@ package resourceater.model.resource.thread.daemon; import java.time.Duration; -import lombok.Value; + import resourceater.model.resource.CreateRequest; /** * @author Jonatan Ivanov */ -@Value -public class CreateDaemonThreadResourceRequest implements CreateRequest { - private final int size; - private final Duration ttl; +public record CreateDaemonThreadResourceRequest(int size, Duration ttl) implements CreateRequest { } diff --git a/src/main/java/resourceater/model/resource/thread/daemon/DaemonThreadResource.java b/src/main/java/resourceater/model/resource/thread/daemon/DaemonThreadResource.java index 5ba7dea..85ec525 100644 --- a/src/main/java/resourceater/model/resource/thread/daemon/DaemonThreadResource.java +++ b/src/main/java/resourceater/model/resource/thread/daemon/DaemonThreadResource.java @@ -3,6 +3,7 @@ import java.util.ArrayList; import java.util.List; import java.util.concurrent.CountDownLatch; + import lombok.extern.slf4j.Slf4j; import resourceater.model.resource.Model; import resourceater.model.resource.Resource; @@ -16,8 +17,8 @@ public class DaemonThreadResource extends Resource { private final List threads = new ArrayList<>(); public DaemonThreadResource(CreateDaemonThreadResourceRequest request) { - super(request.getTtl()); - for (int i = 0; i < request.getSize(); i++) { + super(request.ttl()); + for (int i = 0; i < request.size(); i++) { Thread thread = new Thread(this::run, String.format("daemonThread-%s#%d", getId(), i)); threads.add(thread); thread.start(); diff --git a/src/main/java/resourceater/model/resource/thread/daemon/DaemonThreadResourceModel.java b/src/main/java/resourceater/model/resource/thread/daemon/DaemonThreadResourceModel.java index 30f6840..d51647d 100644 --- a/src/main/java/resourceater/model/resource/thread/daemon/DaemonThreadResourceModel.java +++ b/src/main/java/resourceater/model/resource/thread/daemon/DaemonThreadResourceModel.java @@ -10,7 +10,7 @@ @Value @EqualsAndHashCode(callSuper=true) public class DaemonThreadResourceModel extends Model { - private final int size; + int size; public DaemonThreadResourceModel(DaemonThreadResource resource, int size) { super(resource); diff --git a/src/test/java/resourceater/ResourceaterApplicationTests.java b/src/test/java/resourceater/ResourceaterApplicationTests.java index c6b1cb6..f15524a 100644 --- a/src/test/java/resourceater/ResourceaterApplicationTests.java +++ b/src/test/java/resourceater/ResourceaterApplicationTests.java @@ -1,9 +1,8 @@ package resourceater; import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; + import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.test.context.junit.jupiter.SpringExtension; import static org.springframework.boot.test.context.SpringBootTest.WebEnvironment.RANDOM_PORT; diff --git a/src/test/java/resourceater/repository/ResourceRepositoryTest.java b/src/test/java/resourceater/repository/ResourceRepositoryTest.java index 27df11f..35942ab 100644 --- a/src/test/java/resourceater/repository/ResourceRepositoryTest.java +++ b/src/test/java/resourceater/repository/ResourceRepositoryTest.java @@ -1,22 +1,23 @@ package resourceater.repository; -import static java.util.stream.Collectors.toUnmodifiableList; -import static org.assertj.core.api.Assertions.assertThat; -import static org.assertj.core.api.Assertions.assertThatThrownBy; -import static org.mockito.Mockito.spy; -import static org.mockito.Mockito.times; -import static org.mockito.Mockito.verify; -import static resourceater.utils.StreamUtils.toStream; - import java.util.List; import java.util.Optional; import java.util.stream.Stream; + import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import resourceater.model.resource.Resource; + import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Sort; -import resourceater.model.resource.Resource; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; +import static org.mockito.Mockito.spy; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static resourceater.utils.StreamUtils.toStream; /** * @author Jonatan Ivanov @@ -42,6 +43,8 @@ void shouldReturnCorrectCounts() { @Test void shouldDeleteAndDestroyEntityByReference() { Iterable resources = saveThreeResources(); + // We intentionally call delete in a loop instead of deleteAll since we want to test the delete method + // noinspection UseBulkOperation resources.forEach(repository::delete); assertThat(repository.count()).isZero(); @@ -117,7 +120,7 @@ void shouldFindAllSavedEntities() { @Test void shouldFindAndPageAllSavedEntities() { - List savedResources = toStream(saveThreeResources()).collect(toUnmodifiableList()); + List savedResources = toStream(saveThreeResources()).toList(); Page firstPage = repository.findAll(PageRequest.of(0, 2)); Page secondPage = repository.findAll(firstPage.nextPageable()); @@ -131,8 +134,7 @@ void shouldFindAndPageAllSavedEntities() { assertThat(secondPage.hasNext()).isFalse(); assertThat(secondPage.hasPrevious()).isTrue(); - List foundResources = Stream.concat(toStream(firstPage), toStream(secondPage)) - .collect(toUnmodifiableList()); + List foundResources = Stream.concat(toStream(firstPage), toStream(secondPage)).toList(); assertThat(foundResources).hasSameElementsAs(savedResources); } @@ -157,7 +159,7 @@ void shouldFindAllSavedEntitiesById() { Iterable resources = saveThreeResources(); Iterable ids = toStream(resources) .map(Resource::getId) - .collect(toUnmodifiableList()); + .toList(); assertThat(repository.findAllById(ids)).hasSameElementsAs(resources); } @@ -175,7 +177,7 @@ void shouldFindSavedEntityById() { .map(Resource::getId) .map(repository::findById) .flatMap(Optional::stream) - .collect(toUnmodifiableList()); + .toList(); assertThat(foundResources).hasSameElementsAs(resources); } diff --git a/src/test/java/resourceater/repository/TestResource.java b/src/test/java/resourceater/repository/TestResource.java index a63b5db..96292d7 100644 --- a/src/test/java/resourceater/repository/TestResource.java +++ b/src/test/java/resourceater/repository/TestResource.java @@ -1,6 +1,7 @@ package resourceater.repository; import java.time.Duration; + import resourceater.model.resource.Model; import resourceater.model.resource.Resource; @@ -8,6 +9,7 @@ * @author Jonatan Ivanov */ public class TestResource extends Resource { + @SuppressWarnings("unused") public TestResource() { this(null); }