Skip to content

Commit 251429d

Browse files
committed
Cleanup, and remove unneded checks from TCK AgentExecutor.
Move AgentExecutor to use TaskUpdater, and add TaskUpdater.cancel() method.
1 parent 6edaabf commit 251429d

File tree

3 files changed

+31
-26
lines changed

3 files changed

+31
-26
lines changed

src/main/java/io/a2a/server/tasks/TaskUpdater.java

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -70,11 +70,11 @@ public void complete(Message message) {
7070
updateStatus(TaskState.COMPLETED, message, true);
7171
}
7272

73-
public void failed() {
74-
failed(null);
73+
public void fail() {
74+
fail(null);
7575
}
7676

77-
public void failed(Message message) {
77+
public void fail(Message message) {
7878
updateStatus(TaskState.FAILED, message, true);
7979
}
8080

@@ -94,6 +94,13 @@ public void startWork(Message message) {
9494
updateStatus(TaskState.WORKING, message);
9595
}
9696

97+
public void cancel() {
98+
cancel(null);
99+
}
100+
101+
public void cancel(Message message) {
102+
updateStatus(TaskState.CANCELED, message, true);
103+
}
97104

98105
public Message newAgentMessage(List<Part<?>> parts, Map<String, Object> metadata) {
99106
return new Message.Builder()

src/test/java/io/a2a/server/tasks/TaskUpdaterTest.java

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,7 @@
2020
import io.a2a.spec.TaskStatusUpdateEvent;
2121
import io.a2a.spec.TextPart;
2222
import org.junit.jupiter.api.BeforeEach;
23-
import org.junit.jupiter.api.Disabled;
2423
import org.junit.jupiter.api.Test;
25-
import org.mockito.Mockito;
2624

2725
public class TaskUpdaterTest {
2826
public static final String TEST_TASK_ID = "test-task-id";
@@ -128,16 +126,28 @@ public void testStartWorkWithMessage() throws Exception {
128126

129127
@Test
130128
public void testFailedWithoutMessage() throws Exception {
131-
taskUpdater.failed();
129+
taskUpdater.fail();
132130
checkTaskStatusUpdateEventOnQueue(true, TaskState.FAILED, null);
133131
}
134132

135133
@Test
136134
public void testFailedWithMessage() throws Exception {
137-
taskUpdater.failed(SAMPLE_MESSAGE);
135+
taskUpdater.fail(SAMPLE_MESSAGE);
138136
checkTaskStatusUpdateEventOnQueue(true, TaskState.FAILED, SAMPLE_MESSAGE);
139137
}
140138

139+
@Test
140+
public void testCanceledWithoutMessage() throws Exception {
141+
taskUpdater.cancel();
142+
checkTaskStatusUpdateEventOnQueue(true, TaskState.CANCELED, null);
143+
}
144+
145+
@Test
146+
public void testCanceledWithMessage() throws Exception {
147+
taskUpdater.cancel(SAMPLE_MESSAGE);
148+
checkTaskStatusUpdateEventOnQueue(true, TaskState.CANCELED, SAMPLE_MESSAGE);
149+
}
150+
141151
@Test
142152
public void testNewAgentMessage() throws Exception {
143153
Message message = taskUpdater.newAgentMessage(SAMPLE_PARTS, null);

tck/src/main/java/io/a2a/tck/server/AgentExecutorProducer.java

Lines changed: 7 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import io.a2a.server.agentexecution.AgentExecutor;
88
import io.a2a.server.agentexecution.RequestContext;
99
import io.a2a.server.events.EventQueue;
10+
import io.a2a.server.tasks.TaskUpdater;
1011
import io.a2a.spec.JSONRPCError;
1112
import io.a2a.spec.Task;
1213
import io.a2a.spec.TaskNotCancelableError;
@@ -42,22 +43,12 @@ public void execute(RequestContext context, EventQueue eventQueue) throws JSONRP
4243
eventQueue.enqueueEvent(task);
4344
}
4445

46+
TaskUpdater updater = new TaskUpdater(eventQueue, context.getTaskId(), context.getTaskId());
47+
4548
// Immediately set to WORKING state
46-
eventQueue.enqueueEvent(new TaskStatusUpdateEvent.Builder()
47-
.taskId(context.getTaskId())
48-
.contextId(context.getContextId())
49-
.status(new TaskStatus(TaskState.WORKING))
50-
.build());
51-
49+
updater.startWork();
5250
System.out.println("====> task set to WORKING, starting background execution");
5351

54-
// // Fire and forget - start the task but don't wait for it
55-
// CompletableFuture<Void> taskFuture = CompletableFuture
56-
// .runAsync(() -> executeTaskInBackground(context, eventQueue), taskExecutor);
57-
58-
// // Store the future for potential cancellation
59-
// runningTasks.put(context.getTaskId(), taskFuture);
60-
6152
// Method returns immediately - task continues in background
6253
System.out.println("====> execute() method returning immediately, task running in background");
6354
}
@@ -66,12 +57,7 @@ public void execute(RequestContext context, EventQueue eventQueue) throws JSONRP
6657
public void cancel(RequestContext context, EventQueue eventQueue) throws JSONRPCError {
6758
System.out.println("====> task cancel request received");
6859
Task task = context.getTask();
69-
70-
if (task == null) {
71-
System.out.println("====> task not found");
72-
throw new TaskNotFoundError();
73-
}
74-
60+
7561
if (task.getStatus().state() == TaskState.CANCELED) {
7662
System.out.println("====> task already canceled");
7763
throw new TaskNotCancelableError();
@@ -82,6 +68,8 @@ public void cancel(RequestContext context, EventQueue eventQueue) throws JSONRPC
8268
throw new TaskNotCancelableError();
8369
}
8470

71+
TaskUpdater updater = new TaskUpdater(eventQueue, context.getTaskId(), context.getTaskId());
72+
updater.cancel();
8573
eventQueue.enqueueEvent(new TaskStatusUpdateEvent.Builder()
8674
.taskId(task.getId())
8775
.contextId(task.getContextId())

0 commit comments

Comments
 (0)