
    Mi                       d dl mZ d dlZd dlmc mZ d dlm	Z	 d dl
Z
d dlmZmZ d dlmZmZ d dlmZmZ e
j(                  j*                  d        Ze
j(                  j*                  d        Ze
j(                  j*                  d	        Zy)
    )annotationsN)	AsyncMock)EventLogMessageNavStatusMessage)NavStateNavigationContext)OrchestratorServerServerConfigc                 
  K   t        t        d            } | j                  }d }||u}|st        j                  d|fd||f      dt        j                         v st        j                  |       rt        j                  |       ndt        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            d x}x}}t        d	d
dt        j                  d      | j                  _        t               | _        t        d      | _        t%        ddd	ddd
dddd      }| j'                  |       d {    | j                  }|j                  }|j(                  }t        j*                  }||k(  }	|	st        j                  d|	fd||f      dt        j                         v st        j                  |       rt        j                  |       ndt        j                  |      t        j                  |      t        j                  |      dt        j                         v st        j                  t              rt        j                  t              ndt        j                  |      dz  }
dd|
iz  }t        t        j                  |            d x}x}x}x}	}| j                  }|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                  |      t        j                  |      dz  }d d!|iz  }t        t        j                  |            d x}x}x}x}	}| j                   j.                  D cg c]  }|j0                  d"   d#    }}d$}||v }|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+}||v }|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}}y 7 c c}w w),NTenable_executor)is not)z4%(py2)s
{%(py2)s = %(py0)s.executor
} is not %(py5)sserver)py0py2py5zassert %(py7)spy7	nav_step1office_scenenormalg?)
request_iddestinationspeedstatusprogresszMLocalization confidence dropped; check rosbridge pose updates and relocalize.return_valuez
edge-evt-1
nav_statusfailedg?localization_unavailableNAV_LOCALIZATION_LOST)r   r   reason
error_codeevent_id
event_typer   r   replaypayload==)z%(py6)s
{%(py6)s = %(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.executor
}._nav_context
}.status
} == %(py10)s
{%(py10)s = %(py8)s.FAILED
}r   )r   r   py4py6py8py10zassert %(py12)spy12)zm%(py6)s
{%(py6)s = %(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.executor
}._nav_context
}.error
} == %(py9)sr   r   r+   r,   py9assert %(py11)spy11r   type
edge_event)in)z%(py1)s in %(py3)smessage_types)py1py3zassert %(py5)sr   	reasoning)r	   r
   executor
@pytest_ar_call_reprcompare@py_builtinslocals_should_repr_global_name	_safereprAssertionError_format_explanationr   r   
NAVIGATING_nav_contextr   broadcast_to_dashboard&_generate_navigation_failure_reasoningr   _on_edge_event_logr   FAILEDerrorawait_args_listargs)r   @py_assert1@py_assert4@py_assert3@py_format6@py_format8msg@py_assert5@py_assert9@py_assert7@py_format11@py_format13@py_assert8@py_format10@py_format12callr7   @py_assert0@py_assert2@py_format4s                       P/home/nelsen/Projects/kognitive/orchestrator/src/tests/test_edge_event_replay.pyCtest_replayed_nav_failure_updates_executor_and_broadcasts_reasoningr`      s\    T BCF??&$&?$&&&&?$&&&&&&6&&&6&&&?&&&$&&&&&&&#4"""$FOO  %.KF!4=d5F1 )01	
C 
#
#C
(((??A?''A'..A(//A./AAAA./AAAAAA6AAA6AAA?AAA'AAA.AAAAAA(AAA(AAA/AAAAAAA??K?''K'--K1KK-1KKKKK-1KKKKKKK6KKK6KKK?KKK'KKK-KKK1KKKKKKKK *0)F)F)V)V!%		!VM  (<=((((<=(((<((((((=(((=(((((((';-'''';-''';''''''-'''-''''''' )
s&   EUU	JU#U<EUUc            
       K   t        t        d            } t               | _        t	        dddddddd	
      }| j                  |       d {    | j                  j                  D cg c]  }|j                  d   d    }}|j                  }d} ||      }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                  |      t        j                  |      dz  }	dd|	iz  }
t        t        j                   |
            d x}x}x}x}}|j                  }d} ||      }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                  |      t        j                  |      dz  }	dd|	iz  }
t        t        j                   |
            d x}x}x}x}}y 7 5c c}w w)NTr   z
edge-evt-2scan_area_capture	nav_step2savedz"/tmp/edge_proxy_artifacts/demo.jpgi90  )path
size_bytesr$   r   r4   r5      r)   )zK%(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.count
}(%(py4)s)
} == %(py9)sr7   r0   r2   r3   edge_artifact)r	   r
   r   rF   r   rH   rK   rL   countr<   r=   r>   r?   r@   rA   rB   rC   )r   rR   r[   r7   rM   rO   rS   rX   rU   rY   rZ   s              r_   0test_scan_area_capture_event_broadcasts_artifactrj   7   s    T BCF$-KF!
&=USC 
#
#C
((( *0)F)F)V)V!%		!VM  1|1|,11,1111,111111=111=111111|111,111111111144/414/14444/1444444=444=444444444/444144444444 )s%   AJJJ,JH JJc                   K   t        t        d            } t               | _        t        d      | _        t        ddddd	d
      }| j                  |       d {    | 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                  j                   D cg c]1  }|j"                  r#|j"                  d   j%                  d      dk(  r|3 }	}t'        |	      }
d}|
|k(  }|st        j                  d|fd|
|f      dt        j                         v st        j                  t&              rt        j                  t&              nddt        j                         v st        j                  |	      rt        j                  |	      ndt        j                  |
      t        j                  |      dz  }dd|iz  }t        t        j                  |            d x}
x}}y 7 i7 Sc c}w w)NTr   z5Localization failed because map/pose stream is stale.r   nav_001r   spill_sceneg?r    r!   )r   r   r   r   r"   r#   rg   r)   )zo%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s._generate_navigation_failure_reasoning
}.await_count
} == %(py7)sr   )r   r   r+   r   zassert %(py9)sr1   r   r4   r:   )z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)slenreasoning_calls)r   r8   r9   r,   zassert %(py8)sr-   )r	   r
   r   rF   rG   r   _on_nav_statusawait_countr<   r=   r>   r?   r@   rA   rB   rC   rK   rL   getrn   )r   rR   rM   rO   @py_assert6rS   rQ   rY   r[   ro   r]   rN   @py_format7@py_format9s                 r_   8test_live_localization_failure_reasoning_is_deduplicatedrv   M   s    T BCF$-KF!4=L5F1 !)*C 


$$$



$$$88I8DDIIDIIIIDIIIIII6III6III8IIIDIIIIIIIIII66FF991))&1[@ 	O  $1$1$$$$1$$$$$$3$$$3$$$$$$$$$$$$$$$1$$$$$$$ %$s8   AKKK6K	7DK=6K3DK	KK)
__future__r   builtinsr>   _pytest.assertion.rewrite	assertionrewriter<   unittest.mockr   pytestsrc.edge_proxy.messagesr   r   src.executor.action_executorr   r   
src.serverr	   r
   markasyncior`   rj   rv        r_   <module>r      sw    "    #  E D 7 '( '(T 5 5* % %r   