@@ -475,6 +475,63 @@ async def test_async_stream_query(self):
475475 events .append (event )
476476 assert len (events ) == 1
477477
478+ def test_set_up_runner_auto_create_session_enabled (self ):
479+ """The main runner opts into auto-creating missing sessions (b/537477760)."""
480+ app = reasoning_engines .AdkApp (
481+ agent = Agent (name = _TEST_AGENT_NAME , model = _TEST_MODEL )
482+ )
483+ app .set_up ()
484+ assert app ._tmpl_attrs .get ("runner" ).auto_create_session is True
485+
486+ @pytest .mark .asyncio
487+ async def test_runner_auto_creates_missing_session (self ):
488+ from google .adk .runners import Runner
489+ from google .adk .sessions .in_memory_session_service import (
490+ InMemorySessionService ,
491+ )
492+
493+ app = reasoning_engines .AdkApp (
494+ agent = Agent (name = _TEST_AGENT_NAME , model = _TEST_MODEL )
495+ )
496+ app .set_up ()
497+ assert app ._tmpl_attrs .get ("runner" ).auto_create_session is True
498+
499+ app_name = app ._tmpl_attrs .get ("app_name" )
500+ session_service = InMemorySessionService ()
501+ runner = Runner (
502+ agent = Agent (name = _TEST_AGENT_NAME , model = _TEST_MODEL ),
503+ app_name = app_name ,
504+ session_service = session_service ,
505+ auto_create_session = app ._tmpl_attrs .get ("runner" ).auto_create_session ,
506+ )
507+ missing_session_id = "0000000000000000000"
508+
509+ # Sanity: the session does not exist yet.
510+ assert (
511+ await session_service .get_session (
512+ app_name = app_name ,
513+ user_id = _TEST_USER_ID ,
514+ session_id = missing_session_id ,
515+ )
516+ is None
517+ )
518+
519+ session = await runner ._get_or_create_session (
520+ user_id = _TEST_USER_ID ,
521+ session_id = missing_session_id ,
522+ )
523+
524+ assert session is not None
525+ assert session .id == missing_session_id
526+ assert (
527+ await session_service .get_session (
528+ app_name = app_name ,
529+ user_id = _TEST_USER_ID ,
530+ session_id = missing_session_id ,
531+ )
532+ is not None
533+ )
534+
478535 @pytest .mark .asyncio
479536 async def test_async_stream_query_with_empty_session_events (self ):
480537 app = reasoning_engines .AdkApp (
0 commit comments