refactor: manual bus -> task bus, merge test classes into one

This commit is contained in:
2025-02-25 21:39:49 +07:00
parent 9d9ee96ad7
commit ea0ba596e8
6 changed files with 26 additions and 41 deletions
@@ -3,5 +3,6 @@ package com.miti99.taskbus.bus;
import com.miti99.taskbus.task.Task;
public interface Bus {
void submit(Task task);
}
@@ -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());
}
@@ -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();
}
@@ -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);
}
}
@@ -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();
}
}
@@ -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();
}
}