o
    MfX	                     @   sp   d Z ddlZddlZddlZddlmZmZmZmZ dd Z	g dZ
dd ZG d	d
 d
eZG dd deZdS )zThis file and its contents are licensed under the Apache License 2.0. Please see the included NOTICE for copyright information and LICENSE for a copy of the license.
    N)HttpUserTaskSetbetweentaskc                    s"   t j d fddt| D S )z(Generate a random string of fixed length c                 3   s    | ]}t  V  qd S N)randomchoice).0iletters q/var/www/html/analyze/labelStudio/lib/python3.10/site-packages/label_studio/tests/loadtests/locustfile_collabs.py	<genexpr>   s    zrandomString.<locals>.<genexpr>)stringascii_lowercasejoinrange)stringLengthr   r   r   randomString
   s   r   )PersonOrganizationFactMoneyDateTimeOrdinalPercentProductLanguageLocationc              
   C   sl   t dt| }tt| |t dd }g }tt ddD ]}|dddt tg||d	d
 q|S )Nr            
   labelsnertext)r&   startend)type	from_nameto_namevalue)r   randintlenminr   appendr	   
all_labels)r(   r)   r*   resultsr   r   r   r   
get_result   s   r5   c                   @   s4   e Zd Zdd Zeddd Zeddd Zd	S )
UserWorksWithProjectc                 C   s$   | j d}| }t|| _d S )Nz/api/annotator/projects)clientgetjsonr   r	   
project_id)selfrall_projectsr   r   r   on_start0   s   zUserWorksWithProject.on_startd   c                 C   sl   | j jd| j dd}| }|d }|d d }t|}td|i}dd	i}| j jd
| ||dd d S )Nz/api/projects/%i/next/z/api/projects/<id>/next)nameiddatar(   resultzcontent-typezapplication/jsonz/api/tasks/%i/annotationsz/api/tasks/<id>/annotations)headersr@   )r7   r8   r:   r9   r5   dumpspost)r;   r<   r   task_id	task_textr4   payloadrD   r   r   r   complete_task_via_api5   s   
z*UserWorksWithProject.complete_task_via_apir$   c                 C      |    d S r   )	interruptr;   r   r   r   stopB   s   zUserWorksWithProject.stopN)__name__
__module____qualname__r>   r   rJ   rN   r   r   r   r   r6   /   s    
r6   c                   @   s.   e Zd ZeddZediZdd Zdd ZdS )	WebsiteUserr"   	   r%   c                 C   rK   r   )loginrM   r   r   r   r>   L   s   zWebsiteUser.on_startc                 C   sN   | j d}|jd }d}dtd| ddd}| j jd	|d
|id d S )N/	csrftokenr?   collab_r   z@loadtests.me	123456789)emailpasswordz/annotator/loginzX-CSRFToken)rD   )r7   r8   cookiesr   r/   rF   )r;   responserV   num_collabsrI   r   r   r   rT   O   s
   
zWebsiteUser.loginN)	rO   rP   rQ   r   	wait_timer6   tasksr>   rT   r   r   r   r   rR   G   s
    
rR   )__doc__r9   r   r   locustr   r   r   r   r   r3   r5   r6   rR   r   r   r   r   <module>   s    