
    	]j                     v    d Z ddlZddlZddlZddlmZ ddlmZmZm	Z	m
Z
 d Z G d de      Z G d d	e      Zy)
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)uuid4)HttpUserTaskSetbetweentaskc                 j    t         j                  dj                  fdt        |       D              S )z(Generate a random string of fixed length c              3   H   K   | ]  }t        j                          y wN)randomchoice).0iletterss     Y/root/env/lib/python3.12/site-packages/label_studio/tests/loadtests/locustfile_db_load.py	<genexpr>zrandomString.<locals>.<genexpr>   s     Ga6==)Gs   ")stringascii_lowercasejoinrange)stringLengthr   s    @r   randomStringr      s(    $$G77G53FGGG    c                   d   e Zd Zd Z ed      d        Z ed      d        Z ed      d        Z ed      d        Z ed      d        Z	 ed      d	        Z
 ed      d
        Z ed      d        Z ed      d        Z ed      dd       Z ed      d        Z ed      d        Zy)UserWorksWithProjectc                 D   t        t                     }t        j                  |dddd      }| j                  j                  d|dd| j                  j                   dd      5 }|j                  d	k7  r|j                  |j                         nG|j                         d
   | _	        t        d| j                   d| j                  j                          d d d        g }t        d      D ]  }dt        t        j                  dd            idddddt        j                   ddg      gidgdgddddt        j                   ddg      gidgt        j"                  dd      dgd}|j%                  |        | j'                  |d       y # 1 sw Y   xY w)NTz<View><Text name="my_text" value="$text"/><Choices name="my_class" toName="my_text"><Choice value="pos"/><Choice value="neg"/></Choices></View>)titleis_publishedskip_onboardinglabel_configz/api/projectsapplication/jsonToken zcontent-typeAuthorization)dataheaderscatch_response   idzProject z has been created by user i'  text      Fchoicesmy_classmy_textposnegtype	from_nameto_namevalue)ground_truthresultr      )r8   score)r%   annotationspredictionszInitial tasks uploadname)strr   jsondumpsclientposttokenstatus_codefailure
project_idprintr>   r   r   r   randintr   uniformappendimport_tasks)selfr   payloadrtasksr   one_tasks          r   on_startzUserWorksWithProject.on_start   s   EG** $#' !r	
 [[%7FSWS^S^SdSdReJfg	  
 
	`
 }}#		!--("#&&(4. 11KDKKL\L\K]^_
	` u 	#AfnnQ.D!EF ). )2-7+4*3fmmUEN6S5T)U	#
 " )2-7+4*3fmmUEN6S5T)U	# "(1!5
 H: LL"=	#@ 	%&<=]
	` 
	`s   'A3FFr+   c                 :    | j                   j                  d       y )Nz
/projects/rB   getrM   s    r   project_listz!UserWorksWithProject.project_listM   s    %r   c                 X    | j                   j                  d| j                  z  d       y )Nz/projects/%iz/projects/<id>r=   rB   rU   rG   rV   s    r   project_dashboardz&UserWorksWithProject.project_dashboardQ   s     8?OPr   c                 X    | j                   j                  d| j                  z  d       y )Nz/projects/%i/dataz/projects/<id>/datar=   rY   rV   s    r   project_dataz!UserWorksWithProject.project_dataU   s!    +doo=DYZr      c                 X    | j                   j                  d| j                  z  d       y )Nz/projects/%i/label-streamz/projects/<id>/label-streamr=   rY   rV   s    r   label_streamz!UserWorksWithProject.label_streamY   s!    3dooELijr   c                 X    | j                   j                  d| j                  z  d       y )Nz/projects/%i/expertsz/projects/<id>/expertsr=   rY   rV   s    r   expert_pagez UserWorksWithProject.expert_page]   s!    .@G_`r   c                 X    | j                   j                  d| j                  z  d       y )Nz/projects/%i/mlz/projects/<id>/mlr=   rY   rV   s    r   ml_pagezUserWorksWithProject.ml_pagea   s!    )DOO;BUVr   c                 :    | j                   j                  d       y )Nz/business/statsrT   rV   s    r   statszUserWorksWithProject.statse   s    )*r   c                 X    | j                   j                  d| j                  z  d       y )Nz/projects/%i/plotsz/projects/<id>/plotsr=   rY   rV   s    r   project_statsz"UserWorksWithProject.project_statsi   s!    ,t>E[\r   c                 :    | j                   j                  d       y )Nz/business/expertsrT   rV   s    r   expertszUserWorksWithProject.expertsm   s    +,r   Nc                    |t        j                  ddiddig      }nt        j                  |      }dd| j                  j                   d}| j                  j	                  d| j
                  z  |||xs d	       y )
Nr*   zexample positive reviewzexample negative reviewr!   r"   r#   z/api/projects/%i/tasks/bulkz/api/projects/<id>/tasks/bulkr&   r>   )r@   rA   rB   rD   rC   rG   )rM   rP   r>   rN   r&   s        r   rL   z!UserWorksWithProject.import_tasksq   s    =jj6+D"EPiGj!klGjj'G#5&QUQ\Q\QbQbPcHde)DOO;88	 	 	
r   c                    | j                   j                  d| j                  z  dd| j                   j                   id      }|j	                         }t        |      rt        j                  |      }t	        j                  dddd	dt        j                  d
dg      gidgi      }dd| j                   j                   d}| j                   j                  d|d   z  ||d       y y )Nz/api/projects/%i/tasksr$   r"   z/api/projects/<id>/tasksrk   r8   r-   r.   r/   r0   r1   r2   r!   r#   z/api/tasks/%i/annotationsr)   z/api/tasks/<id>/annotations)
rB   rU   rG   rD   r@   lenr   r   rA   rC   )rM   rO   
tasks_listany_taskrN   r&   s         r   complete_task_via_apiz*UserWorksWithProject.complete_task_via_api   s    KKOO$t6$t{{/@/@.A&BC+  

 VVX
z?}}Z0Hjj$-)3'0&/&--2O1P%Q		G (:fUYU`U`UfUfTgLhiGKK+htn<2	   r   r9   c                 $    | j                          y r   )	interruptrV   s    r   stopzUserWorksWithProject.stop   s    r   )NN)__name__
__module____qualname__rR   r   rW   rZ   r\   r_   ra   rc   re   rg   ri   rL   rp   rs    r   r   r   r      s4   9>v 
!W& & 
!WQ Q 
!W[ [ 
"Xk k 
!Wa a 
!WW W 
!W+ + 
!W] ] 
!W- - 
!W
 
 
"X : 
!W r   r   c                   2    e Zd Z edd      ZediZd Zd Zy)WebsiteUser   	   
   c                 $    | j                          y r   )signuprV   s    r   rR   zWebsiteUser.on_start   s    r   c                    | j                   j                  d      }|j                  d   }t        t	                     }| dd|j                         d}| j                   j                  d|d|i       | j                   j                  d	      j                         }|d
   | j                   _        || j                   _	        t        d| d| j                   j                          y )N/	csrftokenz@loadtest.me12345678)emailpasswordr   z/user/signupzX-CSRFToken)r&   z/api/current-user/tokendetailzClient z  successfully signed up. Token: )rB   rU   cookiesr?   r   upperrC   r@   rD   r>   rH   )rM   responser   usernamerN   s        r   r~   zWebsiteUser.signup   s    ;;??3'$$[1	uw<'j5:X`XfXfXhi=):TU;;??#<=BBD$X.#z!A$++BSBSATUVr   N)	rt   ru   rv   r   	wait_timer   rP   rR   r~   rw   r   r   ry   ry      s"    1I!2&E	Wr   ry   )__doc__r@   r   r   uuidr   locustr   r   r   r   r   r   ry   rw   r   r   <module>r      s?        3 3HN7 NbW( Wr   