diff --git a/bridged/src/test/java/dev/ltms/bridged/msg/MessageServiceTest.java b/bridged/src/test/java/dev/ltms/bridged/msg/MessageServiceTest.java index c14001b..a72804e 100644 --- a/bridged/src/test/java/dev/ltms/bridged/msg/MessageServiceTest.java +++ b/bridged/src/test/java/dev/ltms/bridged/msg/MessageServiceTest.java @@ -701,23 +701,21 @@ class MessageServiceTest { void asyncQuestionBelongsToTheTaskThatOwnsItsForwardWaiter() throws Exception { String first = messages.sendAsync(T, "first task"); awaitWaiting(); - String second = messages.sendAsync(T, "second task"); // Model the resolveQuestion/markAsyncQuestion race: another accepted task reached the target set. - Field tasksField = MessageService.class.getDeclaredField("tasks"); - tasksField.setAccessible(true); - Map tasks = (Map) tasksField.get(messages); Field byTargetField = MessageService.class.getDeclaredField("asyncTasksByTarget"); byTargetField.setAccessible(true); Map> byTarget = (Map>) byTargetField.get(messages); Set targetTasks = byTarget.get(T); + Class taskClass = Class.forName(MessageService.class.getName() + "$Task"); + var constructor = taskClass.getDeclaredConstructor(String.class); + constructor.setAccessible(true); targetTasks.clear(); - targetTasks.add(tasks.get(second)); + targetTasks.add(constructor.newInstance(T)); CompletableFuture ask = CompletableFuture.supplyAsync(() -> messages.ask(T, "which config?", 5000)); assertEquals(MessageService.Phase.ASKING, awaitTicketPhase(first, MessageService.Phase.ASKING).phase()); - assertEquals(MessageService.Phase.PENDING, messages.poll(second).phase()); MessageService.TaskView asking = messages.poll(first); CompletableFuture answer = CompletableFuture.supplyAsync(