
­­­­­­­­­­­­­­­­­­
<!DOCTYPE html>
<html>
U
    !`                     @   s
  d 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	m
Z
mZ ddlmZ ddlmZmZmZmZ dd	lmZ ed
edd edddddddgddiddidddgigddidd dd Zdddddidddeeddddd dd!d" d#d$ddid%d&id'd(dddejegd)d*d+d,id+d-igd.d-dd/ddid0d1d2eidd3iddd4d
d5Zd6d7 Zd8d9 Ze
ee d:d;d<Z ej!d=d>d?d@ Z"edAdBdCZ#edAdDdEZ$edAdFdGZ%edAdHdIZ&dJdK Z'dLdM Z(dNdO Z)e*dPkre)  dS )Qa  
some notes regarding this test suite:
- results are only comparable using the semantically equal schema against and
  identical set of documents in the same execution environment
- the module can be executed to generate a new set of test documents
- it is intended to detect *significant* changes in validation time
- benchmarks should run with as few other processes running on the system as
  possible (e.g. an Alpine Linux on bare metal w/o a Desktop environment)
    N)Counter)Path)choice	randrange)CallableList)mark)rules_set_registryschema_registryTypeDefinition	Validator)DOCUMENTS_PATHZ
path_rulespath)coercetypeZfield_3_schemaF)containsemptyr   ZintegerstringnullableT)defaultitemsschema)field_31field_32c                 C   s   t |dkr|| d d S )N	   zRequires a smaller list.)len)Zfieldvalueerror r   _/opt/alt/python38/lib/python3.8/site-packages/cerberus/benchmarks/test_overall_performance_1.py)schema_1_field_3_allow_unknown_check_with,   s    r    dictZregexzfield_1[12345]      d   )field_12z^field_1.field_13)r   Zalloweddependenciesc                 C   s   dS N   r   )_r   r   r   <lambda>A       r*   )r(   )r   Zdefault_setterZ	forbiddenrenamefield_13)field_11r%   r-   field_14)r   Zrequiredallow_unknownZ	keysrulesZ	minlengthZ	maxlengthr   r   Y   r&   field_22field_23)r   r   minmaxZanyof)Zexcludesr   )field_21r2   r3   )r   r0   r   Z
check_withlist)r0   ZvaluesrulesZrequire_allr   )Zfield_1Zfield_2Zfield_3Zfield_4c                  C   s   G dd dt } | tddS )Nc                   @   s$   e Zd ZejdedefdiZdS )z%init_validator.<locals>.TestValidatorr   r   N)__name__
__module____qualname__r   Ztypes_mappingr   r   r   r   r   r   TestValidatorb   s    r;   T)Zpurge_unknown)r   schema_1)r;   r   r   r   init_validatora   s    r=   c               	   C   s&   t d  } t| }W 5 Q R X |S )Noverall_documents_1.json)r   openjsonload)f	documentsr   r   r   load_documentsk   s    rD   )r=   rC   c                    s   d }}t  |  } fdd |D ],}||d krJ|d7 } |j |d7 }q&t| d| dt d td d	D ]\}}t| d
|  qd S )Nr   c                    s>   | d krd S | D ](}|j r& |j q|j  d7  < qd S r'   )Zis_group_errorZchild_errorsZschema_path)errorsr   count_errorsZerror_pathsr   r   rG   v   s    z(validate_documents.<locals>.count_errorsr(   z out of z documents failed with z different error leafs.z)Top 3 errors, excluding container errors:r"   z: )r   Z	validatedZ_errorsprintr   most_common)r=   rC   Z	doc_countZfailed_countZ	validatorZdocumentr   countr   rF   r   validate_documentsq   s    	

rK   z	overall-1)groupc                 C   s   | j ttt fdd d S )Nr#   )rounds)ZpedanticrK   r=   rD   )	benchmarkr   r   r   test_overall_performance_1   s    rO   )returnc                  C   s6   i } dD ](}t drt d|   | d| < q| S )N)r(      r"      r#   r$   Zgenerate_document_1_field_Zfield_)r   globals)resultir   r   r   generate_sample_document_1   s
    rV   c                  C   sB   t ddd} t drd| d< t ds.d | d< t dr>d | d< | S )Nr$   r   )r.   r-   r%   r/   Zfield_15r   rT   r   r   r   generate_document_1_field_1   s    rY   c                  C   sT   t dsdnd} d| tt d |  i}t dr8d |d< d|krPt dsPd |d< |S )N2   * r6   r$   r2   r3   )r   str)xrT   r   r   r   generate_document_1_field_2   s    r_   c                  C   st   i } t dr(dd tt dD | d< nd | d< t drRtdtdtdg| d	< t d
spdgt d
d  | d< | S )Nr$   c                 S   s   g | ]}t d qS )rQ   rW   .0r)   r   r   r   
<listcomp>   s     z/generate_document_1_field_3.<locals>.<listcomp>   r   )
r   r   r   r   r   r   r   r    N)
rd   rd   rd   rd   rd   rd   rd   rd   r   N)	r   r   r   r   rd   rd   rd   rd   Nr   
   r   r(   Z	3_unknown)r   ranger   rX   r   r   r   generate_document_1_field_3   s    rg   c                   C   s   t drdS dS )Nr$   z/foo/barr   rW   r   r   r   r   generate_document_1_field_4   s    rh   c                   C   s   d S )Nr   r   r   r   r   generate_document_1_field_5   s    ri   c               	   C   s8   t d d } tdd tdD |  W 5 Q R X d S )Nr>   Zwtc                 S   s   g | ]
}t  qS r   )rV   r`   r   r   r   rb      s     z*write_sample_documents.<locals>.<listcomp>i'  )r   r?   r@   dumprf   )rB   r   r   r   write_sample_documents   s    rk   __main__)+__doc__r@   collectionsr   pathlibr   Zrandomr   r   typingr   r   Zpytestr   Zcerberusr	   r
   r   r   Zcerberus.benchmarksr   addr    r7   rf   r]   stripintr<   r=   rD   r!   rK   rN   rO   rV   rY   r_   rg   rh   ri   rk   r8   r   r   r   r   <module>   s   


0



