@@ -83,6 +83,16 @@ async fn read_file_tools_run_in_parallel() -> anyhow::Result<()> {
83
83
let server = start_mock_server ( ) . await ;
84
84
let test = build_codex_with_test_tool ( & server) . await ?;
85
85
86
+ let warmup_args = json ! ( {
87
+ "sleep_after_ms" : 10 ,
88
+ "barrier" : {
89
+ "id" : "parallel-test-sync-warmup" ,
90
+ "participants" : 2 ,
91
+ "timeout_ms" : 1_000 ,
92
+ }
93
+ } )
94
+ . to_string ( ) ;
95
+
86
96
let parallel_args = json ! ( {
87
97
"sleep_after_ms" : 300 ,
88
98
"barrier" : {
@@ -93,6 +103,17 @@ async fn read_file_tools_run_in_parallel() -> anyhow::Result<()> {
93
103
} )
94
104
. to_string ( ) ;
95
105
106
+ let warmup_first = sse ( vec ! [
107
+ json!( { "type" : "response.created" , "response" : { "id" : "resp-warm-1" } } ) ,
108
+ ev_function_call( "warm-call-1" , "test_sync_tool" , & warmup_args) ,
109
+ ev_function_call( "warm-call-2" , "test_sync_tool" , & warmup_args) ,
110
+ ev_completed( "resp-warm-1" ) ,
111
+ ] ) ;
112
+ let warmup_second = sse ( vec ! [
113
+ ev_assistant_message( "warm-msg-1" , "warmup complete" ) ,
114
+ ev_completed( "resp-warm-2" ) ,
115
+ ] ) ;
116
+
96
117
let first_response = sse ( vec ! [
97
118
json!( { "type" : "response.created" , "response" : { "id" : "resp-1" } } ) ,
98
119
ev_function_call( "call-1" , "test_sync_tool" , & parallel_args) ,
@@ -103,7 +124,13 @@ async fn read_file_tools_run_in_parallel() -> anyhow::Result<()> {
103
124
ev_assistant_message( "msg-1" , "done" ) ,
104
125
ev_completed( "resp-2" ) ,
105
126
] ) ;
106
- mount_sse_sequence ( & server, vec ! [ first_response, second_response] ) . await ;
127
+ mount_sse_sequence (
128
+ & server,
129
+ vec ! [ warmup_first, warmup_second, first_response, second_response] ,
130
+ )
131
+ . await ;
132
+
133
+ run_turn ( & test, "warm up parallel tool" ) . await ?;
107
134
108
135
let duration = run_turn_and_measure ( & test, "exercise sync tool" ) . await ?;
109
136
assert_parallel_duration ( duration) ;
0 commit comments