Skip to content

Commit be3b3f8

Browse files
tilgalascopybara-github
authored andcommitted
feat: remove executionId method that takes Optional param from CodeExecutionUtils
PiperOrigin-RevId: 882588456
1 parent 32759f9 commit be3b3f8

3 files changed

Lines changed: 48 additions & 5 deletions

File tree

core/src/main/java/com/google/adk/codeexecutors/CodeExecutionUtils.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
import java.util.Optional;
3535
import java.util.regex.Matcher;
3636
import java.util.regex.Pattern;
37+
import org.jspecify.annotations.Nullable;
3738

3839
/** Utility functions for code execution. */
3940
public final class CodeExecutionUtils {
@@ -237,8 +238,7 @@ public abstract static class CodeExecutionInput extends JsonBaseModel {
237238

238239
public static Builder builder() {
239240
return new AutoValue_CodeExecutionUtils_CodeExecutionInput.Builder()
240-
.inputFiles(ImmutableList.of())
241-
.executionId(Optional.empty());
241+
.inputFiles(ImmutableList.of());
242242
}
243243

244244
/** Builder for {@link CodeExecutionInput}. */
@@ -248,7 +248,7 @@ public abstract static class Builder {
248248

249249
public abstract Builder inputFiles(List<File> inputFiles);
250250

251-
public abstract Builder executionId(Optional<String> executionId);
251+
public abstract Builder executionId(@Nullable String executionId);
252252

253253
public abstract CodeExecutionInput build();
254254
}

core/src/main/java/com/google/adk/flows/llmflows/CodeExecution.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -240,7 +240,8 @@ private static Flowable<Event> runPreProcessor(
240240
.code(codeStr)
241241
.inputFiles(ImmutableList.of(file))
242242
.executionId(
243-
getOrSetExecutionId(invocationContext, codeExecutorContext))
243+
getOrSetExecutionId(invocationContext, codeExecutorContext)
244+
.orElse(null))
244245
.build());
245246

246247
codeExecutorContext.updateCodeExecutionResult(
@@ -320,7 +321,9 @@ private static Flowable<Event> runPostProcessor(
320321
CodeExecutionInput.builder()
321322
.code(codeStr)
322323
.inputFiles(codeExecutorContext.getInputFiles())
323-
.executionId(getOrSetExecutionId(invocationContext, codeExecutorContext))
324+
.executionId(
325+
getOrSetExecutionId(invocationContext, codeExecutorContext)
326+
.orElse(null))
324327
.build());
325328
codeExecutorContext.updateCodeExecutionResult(
326329
invocationContext.invocationId(),

core/src/test/java/com/google/adk/flows/llmflows/CodeExecutionTest.java

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import static com.google.adk.testing.TestUtils.createTestAgentBuilder;
2121
import static com.google.adk.testing.TestUtils.createTestLlm;
2222
import static com.google.common.truth.Truth.assertThat;
23+
import static java.nio.charset.StandardCharsets.UTF_8;
2324
import static org.mockito.ArgumentMatchers.any;
2425
import static org.mockito.ArgumentMatchers.anyString;
2526
import static org.mockito.Mockito.verify;
@@ -32,14 +33,19 @@
3233
import com.google.adk.codeexecutors.CodeExecutionUtils.CodeExecutionInput;
3334
import com.google.adk.codeexecutors.CodeExecutionUtils.CodeExecutionResult;
3435
import com.google.adk.events.Event;
36+
import com.google.adk.flows.llmflows.RequestProcessor.RequestProcessingResult;
37+
import com.google.adk.models.LlmRequest;
3538
import com.google.adk.models.LlmResponse;
3639
import com.google.adk.sessions.InMemorySessionService;
3740
import com.google.adk.sessions.Session;
3841
import com.google.adk.testing.TestLlm;
3942
import com.google.common.collect.ImmutableList;
43+
import com.google.genai.types.Blob;
4044
import com.google.genai.types.Content;
4145
import com.google.genai.types.Part;
4246
import io.reactivex.rxjava3.core.Single;
47+
import io.reactivex.rxjava3.observers.TestObserver;
48+
import java.util.ArrayList;
4349
import org.junit.Before;
4450
import org.junit.Rule;
4551
import org.junit.Test;
@@ -115,4 +121,38 @@ public void testResponseProcessor_withCode_executesCode() {
115121
assertThat(executionResultPart.codeExecutionResult().get().output())
116122
.hasValue("Code execution result:\nhello\n\n");
117123
}
124+
125+
@Test
126+
public void testRequestProcessor_withCode_hasNoErrors() throws Exception {
127+
// arrange
128+
LlmRequest.Builder llmReqBuilder = LlmRequest.builder();
129+
when(mockCodeExecutor.codeBlockDelimiters())
130+
.thenReturn(ImmutableList.of(ImmutableList.of("```tool_code", "\n```")));
131+
when(mockCodeExecutor.optimizeDataFile()).thenReturn(true);
132+
when(mockCodeExecutor.errorRetryAttempts()).thenReturn(2);
133+
CodeExecutionResult executionResult = CodeExecutionResult.builder().stdout("hello\n").build();
134+
when(mockCodeExecutor.executeCode(any(), any())).thenReturn(executionResult);
135+
llmReqBuilder.contents(
136+
new ArrayList<>(
137+
ImmutableList.of(
138+
Content.builder()
139+
.role("user")
140+
.parts(
141+
ImmutableList.of(
142+
Part.builder()
143+
.inlineData(
144+
Blob.builder()
145+
.mimeType("text/csv")
146+
.data("1,2,3\n".getBytes(UTF_8)))
147+
.build()))
148+
.build())));
149+
150+
// act
151+
Single<RequestProcessingResult> result =
152+
CodeExecution.requestProcessor.processRequest(invocationContext, llmReqBuilder.build());
153+
TestObserver<RequestProcessingResult> testObserver = result.test();
154+
155+
// assert
156+
testObserver.assertNoErrors();
157+
}
118158
}

0 commit comments

Comments
 (0)