MCPcopy Index your code
hub / github.com/google/adk-python / test_run_async_branches

Function test_run_async_branches

tests/unittests/agents/test_parallel_agent.py:126–212  ·  view source on GitHub ↗
(
    request: pytest.FixtureRequest, is_resumable: bool
)

Source from the content-addressed store, hash-verified

124@pytest.mark.asyncio
125@pytest.mark.parametrize('is_resumable', [True, False])
126async def test_run_async_branches(
127 request: pytest.FixtureRequest, is_resumable: bool
128):
129 agent1 = _TestingAgent(
130 name=f'{request.function.__name__}_test_agent_1',
131 delay=0.5,
132 )
133 agent2 = _TestingAgent(name=f'{request.function.__name__}_test_agent_2')
134 agent3 = _TestingAgent(name=f'{request.function.__name__}_test_agent_3')
135 sequential_agent = SequentialAgent(
136 name=f'{request.function.__name__}_test_sequential_agent',
137 sub_agents=[agent2, agent3],
138 )
139 parallel_agent = ParallelAgent(
140 name=f'{request.function.__name__}_test_parallel_agent',
141 sub_agents=[
142 sequential_agent,
143 agent1,
144 ],
145 )
146 parent_ctx = await _create_parent_invocation_context(
147 request.function.__name__, parallel_agent, is_resumable=is_resumable
148 )
149 events = [e async for e in parallel_agent.run_async(parent_ctx)]
150
151 if is_resumable:
152 assert len(events) == 8
153
154 # 1. parallel agent checkpoint
155 assert events[0].author == parallel_agent.name
156 assert not events[0].actions.end_of_agent
157
158 # 2. sequential agent checkpoint
159 assert events[1].author == sequential_agent.name
160 assert not events[1].actions.end_of_agent
161 assert events[1].actions.agent_state['current_sub_agent'] == agent2.name
162 assert events[1].branch == f'{parallel_agent.name}.{sequential_agent.name}'
163
164 # 3. agent 2 event
165 assert events[2].author == agent2.name
166 assert events[2].branch == f'{parallel_agent.name}.{sequential_agent.name}'
167
168 # 4. sequential agent checkpoint
169 assert events[3].author == sequential_agent.name
170 assert not events[3].actions.end_of_agent
171 assert events[3].actions.agent_state['current_sub_agent'] == agent3.name
172 assert events[3].branch == f'{parallel_agent.name}.{sequential_agent.name}'
173
174 # 5. agent 3 event
175 assert events[4].author == agent3.name
176 assert events[4].branch == f'{parallel_agent.name}.{sequential_agent.name}'
177
178 # 6. sequential agent checkpoint (end)
179 assert events[5].author == sequential_agent.name
180 assert events[5].actions.end_of_agent
181 assert events[5].branch == f'{parallel_agent.name}.{sequential_agent.name}'
182
183 # Descendants of the same sub-agent should have the same branch.

Callers

nothing calls this directly

Calls 5

SequentialAgentClass · 0.90
ParallelAgentClass · 0.90
_TestingAgentClass · 0.70
run_asyncMethod · 0.45

Tested by

no test coverage detected