You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

test_sequential_routed_agent.py 1.6 kB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. import asyncio
  2. import random
  3. from dataclasses import dataclass
  4. from typing import List
  5. import pytest
  6. from autogen_agentchat.teams._group_chat._sequential_routed_agent import SequentialRoutedAgent
  7. from autogen_core.application import SingleThreadedAgentRuntime
  8. from autogen_core.base import AgentId, MessageContext
  9. from autogen_core.components import DefaultTopicId, default_subscription, message_handler
  10. @dataclass
  11. class Message:
  12. content: str
  13. @default_subscription
  14. class _TestAgent(SequentialRoutedAgent):
  15. def __init__(self, description: str) -> None:
  16. super().__init__(description=description)
  17. self.messages: List[Message] = []
  18. @message_handler
  19. async def handle_content_publish(self, message: Message, ctx: MessageContext) -> None:
  20. # Sleep a random amount of time to simulate processing time.
  21. await asyncio.sleep(random.random() / 100)
  22. self.messages.append(message)
  23. @pytest.mark.asyncio
  24. async def test_sequential_routed_agent() -> None:
  25. runtime = SingleThreadedAgentRuntime()
  26. runtime.start()
  27. await _TestAgent.register(runtime, type="test_agent", factory=lambda: _TestAgent(description="Test Agent"))
  28. test_agent_id = AgentId(type="test_agent", key="default")
  29. for i in range(100):
  30. await runtime.publish_message(Message(content=f"{i}"), topic_id=DefaultTopicId())
  31. await runtime.stop_when_idle()
  32. test_agent = await runtime.try_get_underlying_agent_instance(test_agent_id, _TestAgent)
  33. for i in range(100):
  34. assert test_agent.messages[i].content == f"{i}"