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 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 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	ef ee
 Z%dS )    )Path)Optional)test)ITR_SKIPPING_LEVEL)TestId)TestSuiteId)TestSourceFileInfo)
TestStatus)TestVisibilityChildItem)TestVisibilityParentItem)TestVisibilitySessionSettings)TestVisibilityCoverageData)TestVisibilityTest)ITR_CORRELATION_ID_TAG_NAME)SUITE_ID)
SUITE_TYPE)EVENT_TYPES)record_event_created)record_event_finished)
get_logger)CoverageLinesc                       s   e Zd ZeZejZ			d dede	de
ee  de
e de
eeef  ddf fdd	Zdefd
dZ			d!dede
e de
e ddf fddZd"ddZdeeef fddZdeddf fddZdd Zdd Zdeeef ddfddZ  ZS )#TestVisibilitySuiteNnamesession_settings
codeownerssource_file_infoinitial_tagsreturnc                    s,   t  |||j| || _|| _t | _d S N)super__init__suite_operation_name
_codeowner_source_file_infor   _coverage_data)selfr   r   r   r   r   	__class__ ]/home/ubuntu/.local/lib/python3.10/site-packages/ddtrace/internal/ci_visibility/api/_suite.pyr        s   zTestVisibilitySuite.__init__c                 C   s2   | j d ur	| j jnd}| jj d| j d| dS )Nnonez(name=z	, module=))parentr   r'   __name__)r%   module_namer(   r(   r)   __repr__.   s   zTestVisibilitySuite.__repr__Fforceoverride_statusoverride_finish_timec                    s   t  j|||d d S )N)r0   r1   r2   )r   finish)r%   r0   r1   r2   r&   r(   r)   r3   2   s   zTestVisibilitySuite.finishc                 C   sj   t d|  | j D ]}| r| st d| |  dS q| jjtj	kr+| 
  |   |   dS )zRSuites should only count themselves as ITR-skipped if all children are ITR skippedz/Finishing CI Visibility suite %s as ITR skippedzINot finishing CI Visibility suite %s child test %s was not skipped by ITRN)logdebug	_childrenvaluesis_finishedis_itr_skipped_session_settingsitr_test_skipping_levelr   SUITEcount_itr_skippedmark_itr_skippedr3   )r%   childr(   r(   r)   finish_itr_skipped:   s   	z&TestVisibilitySuite.finish_itr_skippedc                 C   s   t t|  tj| jiS r   )r   strget_span_idr   r<   r   r%   r(   r(   r)   _get_hierarchy_tagsL   s   z'TestVisibilitySuite._get_hierarchy_tagsitr_enabledc                    sF   t  | |r| jjr| jjtjkr!| t| jj dS dS dS dS )z3Set suite-level tags based on ITR enablement statusN)	r   _set_itr_tagsr:   itr_correlation_idr;   r   r<   set_tagr   )r%   rE   r&   r(   r)   rF   R   s   z!TestVisibilitySuite._set_itr_tagsc                 C      t | j| jjd d S N)
event_typetest_framework)r   _event_type_metric_namer:   test_framework_metric_namerC   r(   r(   r)   _telemetry_record_event_created^      
z3TestVisibilitySuite._telemetry_record_event_createdc                 C   rI   rJ   )r   rM   r:   rN   rC   r(   r(   r)    _telemetry_record_event_finishedd   rP   z4TestVisibilitySuite._telemetry_record_event_finishedcoverage_datac                 C   s   | j | d S r   )r$   add_covered_files)r%   rR   r(   r(   r)   add_coverage_dataj   s   z%TestVisibilitySuite.add_coverage_data)NNN)FNN)r   N)r-   
__module____qualname__r   _event_typer   r<   rM   rA   r   r   listr   dictr    r/   boolr	   floatr3   r@   rD   rF   rO   rQ   r   r   rT   __classcell__r(   r(   r&   r)   r      sL    

"r   N)&pathlibr   typingr   ddtrace.extr   &ddtrace.ext.test_visibility._constantsr   1ddtrace.ext.test_visibility._test_visibility_baser   r   "ddtrace.ext.test_visibility.statusr   r	   (ddtrace.internal.ci_visibility.api._baser
   r   r   1ddtrace.internal.ci_visibility.api._coverage_datar   (ddtrace.internal.ci_visibility.api._testr   (ddtrace.internal.ci_visibility.constantsr   r   r   2ddtrace.internal.ci_visibility.telemetry.constantsr   /ddtrace.internal.ci_visibility.telemetry.eventsr   r   ddtrace.internal.loggerr   /ddtrace.internal.test_visibility.coverage_linesr   r-   r4   r   r(   r(   r(   r)   <module>   s.    "