
    `i                    n   d Z ddlmZ ddlZddlmc mZ ddl	Z	ddl
mZ ddlmZ ddlmZmZ ddlZ ee      j'                         j(                  d   Z ee      e	j.                  vr"e	j.                  j1                  d ee             ddlmZ dd	lmZmZ ej<                  j>                  dd
       Z y)z/Tests for server-level dynamic replanning flow.    )annotationsN)Path)SimpleNamespace)	AsyncMock	MagicMock   )ExecutionReport)OrchestratorServerServerConfigc            	       K   t        dd      } t               }t               |_        t               |_        t               |_        dfd}t        |      |_        dddd	d
ddddidgd}t               }t        t        |            |_        t        | ||      }t               |_
        t               |_        t               |_        ddddd
ddddidgd}|j                  |       d {    |j                  j                  d       |j                  }|j                  }d}	||	k(  }
|
st!        j"                  d|
fd||	f      dt%        j&                         v st!        j(                  |      rt!        j*                  |      ndt!        j*                  |      t!        j*                  |      t!        j*                  |	      dz  }d d!|iz  }t-        t!        j.                  |            d x}x}x}
}	|j                  j0                  d   j2                  d   }||k(  }|st!        j"                  d|fd"||f      t!        j*                  |      dt%        j&                         v st!        j(                  |      rt!        j*                  |      ndd#z  }d$d%|iz  }t-        t!        j.                  |            d x}}d&}|j                  j0                  d   }|j4                  }
||
v }|st!        j"                  d'|fd(||
f      t!        j*                  |      t!        j*                  |      t!        j*                  |
      d)z  }d*d+|iz  }t-        t!        j.                  |            d x}x}x}}
|j                  j0                  d,   j2                  d   }||k(  }|st!        j"                  d|fd"||f      t!        j*                  |      d-t%        j&                         v st!        j(                  |      rt!        j*                  |      nd-d#z  }d$d%|iz  }t-        t!        j.                  |            d x}}|j                  j7                          |j                  j9                          |j                  j:                  j2                  d   }|d.   }d/}||k(  }|slt!        j"                  d|fd0||f      t!        j*                  |      t!        j*                  |      d1z  }d2d3|iz  }t-        t!        j.                  |            d x}x}}|d4   }d5}||k(  }|slt!        j"                  d|fd0||f      t!        j*                  |      t!        j*                  |      d1z  }d2d3|iz  }t-        t!        j.                  |            d x}x}}|d6   d.   }d}||k(  }|slt!        j"                  d|fd0||f      t!        j*                  |      t!        j*                  |      d1z  }d2d3|iz  }t-        t!        j.                  |            d x}x}}|j                  j9                          |j                  j=                          y 7 bw)7NT)enable_plannerenable_executorr   c           	       K   dz  dk(  r|j                  d      }d }||u}|st        j                  d|fd||f      dt        j                         v st        j
                  |      rt        j                  |      ndt        j                  |      dz  }dd|iz  }t        t        j                  |            d x}} |d	d
ddgddidd       t        ddi d	g      S t        ddi g       S w)N   on_replan_requested)is not)z%(py0)s is not %(py3)scallback)py0py3assert %(py5)spy5dynamic_replan_requestedscan1	SCAN_AREAz analysis_keywords:chemical,spillinterestingToriginal_plan)typestep_idactionreasonsscan_outputplan_idF)r"   successresultserrorsrefined_plan_001)
get
@pytest_ar_call_reprcompare@py_builtinslocals_should_repr_global_name	_safereprAssertionError_format_explanationr	   )	plan_argargskwargsr   @py_assert2@py_assert1@py_format4@py_format6
call_counts	           ]/home/nelsen/Projects/kognitive/orchestrator/src/tests/test_dynamic_replanning_integration.pyexecute_plan_side_effectzYtest_execute_plan_and_transition_dynamic_replan_success.<locals>.execute_plan_side_effect   s     a
?zz"78H#''84''''84''''''8'''8'''4'''''''6&) BC$14#8.	 #'23	  &	
 	
s   C2C5)side_effectzInspect hazard sourceDAGr&   s1	EXECUTIONrobotVERIFY_OBJECTexpected_class	jerry_can)r   r   
agent_roler   params)intentworkflow_topologyr"   steps)plan)return_value)configplannerexecutorzExplore the demo spacer   r   r   targetoffice_tablesr   r   )==)zU%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.execute_plan
}.await_count
} == %(py7)smock_executor)r   py2py4py7zassert %(py9)spy9)z%(py1)s == %(py3)s)py1r   r   r   r   )in)z.%(py1)s in %(py6)s
{%(py6)s = %(py4)s.kwargs
})rT   rQ   py6zassert %(py8)spy8r   refined_planr   plan_update)z%(py1)s == %(py4)s)rT   rQ   zassert %(py6)srV   phasedynamic_replantrigger)r   r   register_broadcast_callbackcancelreset_cancelr   execute_planr   refine_planr
   broadcast_to_dashboard_send_actions_complete_send_actions_failed_execute_plan_and_transitionassert_called_once_withawait_countr(   r)   r*   r+   r,   r-   r.   r/   await_args_listr1   r2   assert_called_onceassert_awaited_once
await_argsassert_not_awaited)rI   rO   r9   rX   mock_plannerserverr   r4   @py_assert3@py_assert6@py_assert5@py_format8@py_format10@py_assert0r3   r5   r6   @py_format7@py_format9dashboard_message@py_format5r7   s                        @r8   7test_execute_plan_and_transition_dynamic_replan_successry      s    tDFKM09M-$;M!*MJ
< "+7O!PM *"%  #%)+[9
	L ;L(o<6XYLv|m\F$-KF!$-KF!"++F +"" ##%%#_5
	M 
-
-m
<<<001KL%%6%116Q61Q66661Q666666=666=666%6661666Q6666666%%55a8==a@Q@MQQQQ@MQQQ@QQQQQQMQQQMQQQQQQQ XM$>$>$N$Nq$QX$Q$X$XX $XXXXX $XXXX XXX$QXXX$XXXXXXXX%%55a8==a@P@LPPPP@LPPP@PPPPPPLPPPLPPPPPPP//1
!!55755@@EEaHV$55$5555$555$5555555555W%9)99%)99999%)9999%999)99999999Y'/M3MM/3MMMMM/3MMMM/MMM3MMMMMMMM
!!557
224! =s   C1Y4Y5U"Y)returnNone)!__doc__
__future__r   builtinsr*   _pytest.assertion.rewrite	assertionrewriter(   syspathlibr   typesr   unittest.mockr   r   pytest__file__resolveparentsROOTstrpathinsertsrc.executor.action_executorr	   
src.serverr
   r   markasynciory        r8   <module>r      s    5 "   
  ! . H~''*t9CHHHHOOAs4y! 8 7 `5 `5r   