From ea0ba596e84732fef5c23bffb68db1d8e898cf1e Mon Sep 17 00:00:00 2001 From: tiennm99 Date: Tue, 25 Feb 2025 21:39:49 +0700 Subject: [PATCH] refactor: manual bus -> task bus, merge test classes into one --- src/main/java/com/miti99/taskbus/bus/Bus.java | 1 + .../bus/impl/{ManualBus.java => TaskBus.java} | 6 +++--- .../java/com/miti99/taskbus/task/Task.java | 7 +++++++ .../com/miti99/taskbus/bus/impl/BusTest.java | 21 +++++++++++++------ .../taskbus/bus/impl/ManualBusTest.java | 15 ------------- .../taskbus/bus/impl/NormalBusTest.java | 17 --------------- 6 files changed, 26 insertions(+), 41 deletions(-) rename src/main/java/com/miti99/taskbus/bus/impl/{ManualBus.java => TaskBus.java} (87%) delete mode 100644 src/test/java/com/miti99/taskbus/bus/impl/ManualBusTest.java delete mode 100644 src/test/java/com/miti99/taskbus/bus/impl/NormalBusTest.java diff --git a/src/main/java/com/miti99/taskbus/bus/Bus.java b/src/main/java/com/miti99/taskbus/bus/Bus.java index 9eb9b8d..91e0399 100644 --- a/src/main/java/com/miti99/taskbus/bus/Bus.java +++ b/src/main/java/com/miti99/taskbus/bus/Bus.java @@ -3,5 +3,6 @@ package com.miti99.taskbus.bus; import com.miti99.taskbus.task.Task; public interface Bus { + void submit(Task task); } diff --git a/src/main/java/com/miti99/taskbus/bus/impl/ManualBus.java b/src/main/java/com/miti99/taskbus/bus/impl/TaskBus.java similarity index 87% rename from src/main/java/com/miti99/taskbus/bus/impl/ManualBus.java rename to src/main/java/com/miti99/taskbus/bus/impl/TaskBus.java index 13f3682..9a9dcbf 100644 --- a/src/main/java/com/miti99/taskbus/bus/impl/ManualBus.java +++ b/src/main/java/com/miti99/taskbus/bus/impl/TaskBus.java @@ -5,11 +5,11 @@ import com.miti99.taskbus.task.Task; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; -public class ManualBus implements Bus { +public class TaskBus implements Bus { private final ExecutorService[] executors; private final int poolSize; - public ManualBus(int poolSize) { + public TaskBus(int poolSize) { this.poolSize = poolSize; executors = new ExecutorService[poolSize]; for (int i = 0; i < poolSize; i++) { @@ -17,7 +17,7 @@ public class ManualBus implements Bus { } } - public ManualBus() { + public TaskBus() { this(Runtime.getRuntime().availableProcessors()); } diff --git a/src/main/java/com/miti99/taskbus/task/Task.java b/src/main/java/com/miti99/taskbus/task/Task.java index d808f95..1b71fa7 100644 --- a/src/main/java/com/miti99/taskbus/task/Task.java +++ b/src/main/java/com/miti99/taskbus/task/Task.java @@ -1,7 +1,14 @@ package com.miti99.taskbus.task; public interface Task { + + /** + * Dùng để xác định task này sẽ được thực thi trên thread nào. VD dùng công thức hash % poolSize + * + * @return hash + */ int hash(); + /** Thực thi task */ void execute(); } diff --git a/src/test/java/com/miti99/taskbus/bus/impl/BusTest.java b/src/test/java/com/miti99/taskbus/bus/impl/BusTest.java index 6a6846c..8f7dcca 100644 --- a/src/test/java/com/miti99/taskbus/bus/impl/BusTest.java +++ b/src/test/java/com/miti99/taskbus/bus/impl/BusTest.java @@ -3,13 +3,10 @@ package com.miti99.taskbus.bus.impl; import com.miti99.taskbus.bus.Bus; import com.miti99.taskbus.task.event.UserLoginEvent; import com.miti99.taskbus.task.request.SendMessageRequest; -import lombok.RequiredArgsConstructor; +import org.junit.jupiter.api.Test; -@RequiredArgsConstructor -public abstract class BusTest { - private final Bus bus; - - void submitTasks() { +class BusTest { + void submitTasks(Bus bus) { bus.submit(new UserLoginEvent(1)); bus.submit(new SendMessageRequest(1, "msg1")); bus.submit(new SendMessageRequest(1, "msg2")); @@ -21,4 +18,16 @@ public abstract class BusTest { bus.submit(new SendMessageRequest(2, "msg3")); bus.submit(new SendMessageRequest(2, "msg4")); } + + @Test + void testNormalBus() { + Bus bus = new NormalBus(); + submitTasks(bus); + } + + @Test + void testTaskBus() { + Bus bus = new TaskBus(); + submitTasks(bus); + } } diff --git a/src/test/java/com/miti99/taskbus/bus/impl/ManualBusTest.java b/src/test/java/com/miti99/taskbus/bus/impl/ManualBusTest.java deleted file mode 100644 index 2f8fd2a..0000000 --- a/src/test/java/com/miti99/taskbus/bus/impl/ManualBusTest.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.miti99.taskbus.bus.impl; - -import org.junit.jupiter.api.Test; - -class ManualBusTest extends BusTest { - - public ManualBusTest() { - super(new ManualBus()); - } - - @Test - void runTest() { - submitTasks(); - } -} diff --git a/src/test/java/com/miti99/taskbus/bus/impl/NormalBusTest.java b/src/test/java/com/miti99/taskbus/bus/impl/NormalBusTest.java deleted file mode 100644 index 0bb0d42..0000000 --- a/src/test/java/com/miti99/taskbus/bus/impl/NormalBusTest.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.miti99.taskbus.bus.impl; - -import static org.junit.jupiter.api.Assertions.*; - -import org.junit.jupiter.api.Test; - -class NormalBusTest extends BusTest { - - public NormalBusTest() { - super(new NormalBus()); - } - - @Test - void runTest() { - submitTasks(); - } -}