
    tf                     @   d dl Z e j                            dd          r~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  G d	 d
ej                  Z G d de          Z G d de          Z G d de          Z G d de          Z G d dej                  ZdS dS )    NUSE_TWISTEDF)sleep)wamp)unittest)defer)servicec                   $    e Zd ZdZd Zd Zd ZdS )CaseComponentz
        Application code goes here. This is an example component that calls
        a remote procedure on a WAMP peer, subscribes to a topic to receive
        events, and then stops the world after some events.
        c                     t           j                            | |           |j        d         | _        d| _        d| _        d| _        d S )NtestF   )r   ApplicationSession__init__extrar   stop_loglinefinished)selfconfigs     e/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/autobahn/wamp/test/test_wamp_component.pyr   zCaseComponent.__init__,   sB    #,,T6:::V,DIDIDM!DMMM    c                 2   t          |          dk    r d                    d |D                       }nt          |          dk    r	|d         }nd}d                    | j        | j        j        |          }| xj        dz  c_        t          |           d S )Nr   z, c              3   4   K   | ]}t          |          V  d S N)str).0ss     r   	<genexpr>z$CaseComponent.log.<locals>.<genexpr>5   s(      !7!7Q#a&&!7!7!7!7!7!7r   r   -z= : {0:>3} : {1:<20} : {2})lenjoinformatr   	__class____name__print)r   argssargsmsgs       r   logzCaseComponent.log3   s    4yy1}}		!7!7$!7!7!777TaQ.55dmT^E\^cddCMMQMM#JJJJJr   c                     | j         s(| j        j                            d            d| _         d S t	          d           d S )NTzalready finished)r   r   deferredcallbackr%   r   s    r   finishzCaseComponent.finish?   sE    = *	"++D111 $()))))r   N)r$   
__module____qualname____doc__r   r)   r.    r   r   r
   r
   %   sK        	 		" 	" 	"
	 
	 
		* 	* 	* 	* 	*r   r
   c                   .    e Zd Zej        d             ZdS )Case1_Backendc              #       K                         d            fd}                     |d          V                        d                                             d S )Njoinedc                 `                         d                    | |                     | |z   S )Nzadd2 invoked: {0}, {1}r)   r"   )xyr   s     r   add2z"Case1_Backend.onJoin.<locals>.add2M   s/    188A>>???1ur   com.mathservice.add2zadd2 registered)r)   registerr.   )r   detailsr;   s   `  r   onJoinzCase1_Backend.onJoinH   su       HHX     --&<=====HH&'''KKMMMMMr   Nr$   r/   r0   r   inlineCallbacksr?   r2   r   r   r4   r4   F   1        			 	 
		 	 	r   r4   c                   .    e Zd Zej        d             ZdS )Case1_Frontendc              #   `  K   |                      d           	 |                     ddd          V }|                      d                    |                     n?# t          $ r2}|                      d                    |                     Y d }~nd }~ww xY w|                                  d S )Nr6   r<         zcall result: {0}zcall error: {0})r)   callr"   	Exceptionr.   )r   r>   reses       r   r?   zCase1_Frontend.onJoinX   s       HHX9 II&<aCCCC +223778888  6 6 6*11!44555555556
 KKMMMMMs   A 
B%(BBNr@   r2   r   r   rD   rD   V   rB   r   rD   c                   .    e Zd Zej        d             ZdS )Case2_Backendc              #      K                         d            fd} fd}d fd	}d fd	} fd	}                     |d
          V                       |d          V                       |d          V                       |d          V                       |d          V                        d           d S )Nr6   c                  2                          d           d S )Nzping() is invokedr)   r-   s   r   pingz"Case2_Backend.onJoin.<locals>.pingm   s    ,---r   c                 <                         d| |           | |z   S )Nzadd2() is invokedrP   )abr   s     r   r;   z"Case2_Backend.onJoin.<locals>.add2q   s#    ,a3331ur   somebodyr   c                 ^                         d| |           d                    | |          S )Nzstars() is invokedz{0} starred {1}xr8   )nickstarsr   s     r   rX   z#Case2_Backend.onJoin.<locals>.starsu   s0    -tU;;;)00u===r      c                 t                         d| |           d t          d          D             d |         S )Nzorders() is invokedc                 8    g | ]}d                      |          S )zProduct {0})r"   )r   is     r   
<listcomp>z8Case2_Backend.onJoin.<locals>.orders.<locals>.<listcomp>{   s&    CCCA,,Q//CCCr   2   )r)   range)productlimitr   s     r   ordersz$Case2_Backend.onJoin.<locals>.ordersy   s=    .???CCrCCCFUFKKr   c                  n                         d| |           t          |           t          |          gS )Nzarglen() is invoked)r)   r    )r&   kwargsr   s     r   arglenz$Case2_Backend.onJoin.<locals>.arglen}   s1    .f===D		3v;;//r   com.arguments.pingcom.arguments.add2com.arguments.starscom.arguments.orderscom.arguments.arglenzprocedures registered)rU   r   )rY   )r)   r=   )r   r>   rQ   r;   rX   rb   re   s   `      r   r?   zCase2_Backend.onJoinh   sJ      HHX        > > > > > >L L L L L L0 0 0 0 0 --&:;;;;;--&:;;;;;--'<=====--(>?????--(>?????HH,-----r   Nr@   r2   r   r   rM   rM   f   s1        			. 	. 
		. 	. 	.r   rM   c                   .    e Zd Zej        d             ZdS )Case2_Frontendc           	   #     K   |                      d           t          d          V  |                     d          V  |                      d           |                     ddd          V }|                      d                    |                     |                     d	          V }|                      d
                    |                     |                     d	d          V }|                      d                    |                     |                     d	d          V }|                      d                    |                     |                     d	dd          V }|                      d                    |                     |                     dd          V }|                      d                    |                     |                     ddd          V }|                      d                    |                     |                     d          V }|                      d                    |                     |                     dddd          V }|                      d                    |                     |                     dddd          V }|                      d                    |                     |                     ddddddd          V }|                      d                    |                     |                      d           |                                  d S )Nr6   r   rf   zPinged!rg   rF   rG   z	Add2: {0}rh   zStarred 1: {0}Homer)rW   zStarred 2: {0}rY   )rX   zStarred 3: {0})rW   rX   zStarred 4: {0}ri   coffeezOrders 1: {0}
   )ra   zOrders 2: {0}rj   zArglen 1: {0})rS   rT   czArglen 2: {0}zArglen 3: {0}	finishing)r)   r   rH   r"   r.   )r   r>   rJ   starredrb   
arglengthss         r   r?   zCase2_Frontend.onJoin   s      HHX((NNN))011111HHY		"61====CHH['',,--- II&;<<<<GHH%,,W55666 II&;'IJJJJGHH%,,W55666 II&;1IEEEEGHH%,,W55666 II&;'QRISSSSGHH%,,W5566699%;XFFFFFHH_++F3344499%;XR9PPPPFHH_++F33444#yy)?@@@@JHH_++J77888#yy)?AqIIIIJHH_++J77888#yy)?1QyOOOOJHH_++J77888#yy)?AqAQRVWyXXXXJHH_++J77888HH[!!!KKMMMMMr   Nr@   r2   r   r   rl   rl      s1        		,	 ,	 
	,	 ,	 ,	r   rl   c                       e Zd Zej                            d          dZd Zej	        d             Z
ej	        d             Zej	        d             ZdS )TestRpcWAMP_ROUTER_URLNz`Please provide WAMP_ROUTER_URL environment with url to WAMP router to run WAMP integration testsc                 \    t           j                            d          | _        d| _        d S )Nrw   realm1)osenvirongeturlrealmr-   s    r   setUpzTestRpc.setUp   s#    z~~&788DH!DJJJr   c              #   V  K   t          j                    | _        t          j                    }|D ]G}t          j        | j        t          |           | j	        |          }|
                    |           H|                                 | j        V  |                                 d S )N)r   )r}   r   r~   make)r   Deferredr+   r   MultiServicer   Servicer}   dictr~   setServiceParentstartServicestopService)r   
componentsapp	componentrq   s        r   
runOneTestzTestRpc.runOneTest   s      !N,,DM&((C' ( (	LD///*"	   ""3''''-OOr   c              #   P   K   |                      t          t          g          V  d S r   )r   r4   rD   r-   s    r   
test_case1zTestRpc.test_case1   )      //=."ABBBBBBBr   c              #   P   K   |                      t          t          g          V  d S r   )r   rM   rl   r-   s    r   
test_case2zTestRpc.test_case2   r   r   )r$   r/   r0   rz   r{   r|   skipr   r   rA   r   r   r   r2   r   r   rv   rv      s        :>>+,,4@D	" 	" 	" 
		 	 
		  
		C 	C 
		C 
		C 	C 
		C 	C 	Cr   rv   )rz   r{   r|   autobahn.twisted.utilr   autobahn.twistedr   twisted.trialr   twisted.internetr   twisted.applicationr   r   r
   r4   rD   rM   rl   TestCaserv   r2   r   r   <module>r      s  6 
			:>>-'' ~C++++++%%%%%%&&&&&&&&&&&&++++++* * * * */ * * *B                !. !. !. !. !. !. !. !.F/ / / / / / / /b!C !C !C !C !C(# !C !C !C !C !C{~C ~Cr   