o
    i                     @   s  d dl mZ d dlmZ d dlmZ d dlmZ d dlmZ d dl	m
Z
 d dlmZ d dlmZ e
eZG d	d
 d
eeZ			d-dededee dee dee dee fddZ		d.dededee dee fddZ			d-dedee dededee f
ddZdefddZdefddZ	d/dee defdd Zddddddddddedfdee d!ed"edee d#ed$ee ded%ed&ed'ed(ed)ed*efd+d,ZdS )0    )Enum)Optional)UNSUPPORTED_PROVIDER)EVENT_TYPES)TEST_FRAMEWORKS)
get_logger)telemetry_writer)TELEMETRY_NAMESPACEc                   @   s   e Zd ZdZdZdZdZdS )EVENTS_TELEMETRYevent_createdevent_finishedmanual_api_events!events_enqueued_for_serializationN)__name__
__module____qualname__CREATEDFINISHEDMANUAL_API_EVENTENQUEUED_FOR_SERIALIZATION r   r   c/home/ubuntu/.local/lib/python3.10/site-packages/ddtrace/internal/ci_visibility/telemetry/events.pyr
      s
    r
   FNevent
event_typetest_frameworkhas_codeownersis_unsupported_ci"early_flake_detection_abort_reasonc              	   C   s,  t d| ||||| |tjkrt d d S |r$|tjkr$t d| |r1|tjkr1t d| |rC|tjfvs>| tjkrCt d d|jfg}|rZ|t	j
krZ|dt|jf |tjkru|d|rfd	nd
f |d|rqd	nd
f |r| tjkr|tjkr|d|f ttj| jdt| d S )NzRecording event telemetry: event=%s, event_type=%s, test_framework=%s, has_codeowners=%s, is_unsuported_ci=%s, early_flake_detection_abort_reason=%sz[Test events should be recorded with record_event_test_created or record_event_test_finishedzEhas_codeowners tag can only be set for sessions, but event type is %szEunsupported_ci tag can only be set for sessions, but event type is %szZearly_flake_detection_abort_reason tag can only be set for tests and session finish eventsr   r   r   10r   r      )logdebugr   TESTwarningSESSIONr
   r   valuer   MANUALappendstrr   add_count_metricr	   CIVISIBILITYtuple)r   r   r   r   r   r   _tagsr   r   r   _record_event   s<   


r.   c                 C   sB   | t jkrtd d S |tjkrt|  ttj	| |||d d S )Nz=Test events should be recorded with record_event_test_created)r   r   r   r   r   )
r   r#   r!   r$   r   r'   record_manual_api_event_createdr.   r
   r   )r   r   r   r   r   r   r   record_event_createdH   s   



r0   c                 C   s2   | t jkrtd d S ttj| ||||d d S )Nz>Test events should be recorded with record_event_test_finished)r   r   r   r   r   r   )r   r#   r!   r$   r.   r
   r   )r   r   r   r   r   r   r   r   record_event_finished_   s   


r1   c                 C   s   t tjtjdd| ff d S )Nr    r   )r   r*   r	   r+   r
   r   )r   r   r   r   r/   t   s   r/   events_countc                 C   s   t tjtj|  d S )N)r   r*   r	   r+   r
   r   )r2   r   r   r   (record_events_enqueued_for_serialization|   s   
r3   is_benchmarkc                 C   s|   t d| | dtjfg}| r| tjkr|dt| jf n
| tjkr)t	tj |r0|d t
tjtjdt| d S )Nz@Recording test event created: test_framework=%s, is_benchmark=%sr   r   r4   truer    )r!   r"   r   r#   r   r'   r(   r)   r&   r/   r   r*   r	   r+   r
   r   r,   )r   r4   tagsr   r   r   record_event_created_test   s   


r8   is_newis_retryis_rumbrowser_driveris_quarantinedis_disabledis_attempt_to_fixhas_failed_all_retriesci_provider_nameis_auto_injectedc                 C   s  t d| |||||||||	|
|| dtjfg}| d ur#|d| f |r*|d |r1|d |r8|d |r?|d |d urJ|d|f |d urU|d	|f |r\|d
 |rc|d |	rj|d |
rq|d |rz|d|f |r|d ttjt	j
dt| d S )Na  Recording test event finished: test_framework=%s, is_new=%s, is_retry=%s, early_flake_detection_abort_reason=%s, is_rum=%s, browser_driver=%s, is_benchmark=%s, is_quarantined=%s, is_disabled=%s, is_attempt_to_fix=%s, has_failed_all_retries=%s, provider_name=%s, is_auto_injected=%sr   r   r5   )r9   r6   )r:   r6   )r;   r6   r<   r   )r=   r6   )r>   r6   )r?   r6   )r@   r6   provider_name)auto_injectedr6   r    )r!   r"   r   r#   r(   r   r*   r	   r+   r
   r   r,   )r   r9   r:   r   r;   r<   r4   r=   r>   r?   r@   rA   rB   r7   r   r   r   record_event_finished_test   sX   








rE   )FFN)NN)F)enumr   typingr   (ddtrace.internal.ci_visibility.constantsr   2ddtrace.internal.ci_visibility.telemetry.constantsr   r   ddtrace.internal.loggerr   ddtrace.internal.telemetryr   $ddtrace.internal.telemetry.constantsr	   r   r!   r)   r
   boolr.   r0   r1   r/   intr3   r8   rE   r   r   r   r   <module>   s    
5


	
