
    8'h~=                         d dl mZ d dlZd dlZd dlZd dlmZ d dlmZ d dlmZ d Z	d Z
d Zd	 Z ej                  ej                   d
       G d dej                               Z G d dej                        Zy)    )absolute_importN)message)role)
serializerc                 `    |r,| j                   j                  d      rt        j                  ryy)NjsonTF)SERIALIZER_ID
startswithsixPY2)sercontains_binarys     ^/var/www/html/trade_iq/venv/lib/python3.12/site-packages/autobahn/wamp/test/test_serializer.py	must_skipr   (   s$    3,,77@SWW    c            
       	   g t        j                  ddt        j                         i      t        j                         t        j
                  d      t        j
                  dg dddd      t        j
                  ddg	      t        j
                  dd
      t        j                  d      t        j                  dt         j                  j                        t        j                  dd      t        j                  ddg dddd      t        j                  ddd      t        j                  d      t        j                  dg dddd      t        j                  dd
      t        j                  d      t        j                  dt         j                  j                        t        j                  dd      t        j                  ddg dddd      t        j                  ddd      t        j                  d      t        j                  dd      t        j                  dd      t        j                  dd      t        j                  ddd      t        j                  ddd      t        j                   dd      t        j                   ddg dddd      t        j                   ddd      t        j"                  dd      t        j$                  dd      t        j$                  ddg dddd      t        j$                  ddddgg d      t        j&                  d      t        j(                  dd      t        j*                  dd      t        j,                  dd      t        j,                  ddt         j,                  j.                        t        j0                  t         j                  j2                  dd      t        j0                  t         j                  j2                  ddg dddd      t        j                  ddg d	      t        j                  dg dddd      } | D cg c]  }d|f c}S c c}w ) z
    List of WAMP test message used for serializers. Expand this if you add more
    options or messages.

    This list of WAMP message does not contain any binary app payloads!
    realm1
subscriber@             hellofoobarargskwargsr    T)progress)mode
 i'  )timeoutzcom.myapp.procedure1prefix)match
roundrobin)invoke,  )	publisherzcom.myapp.topic1F)d      r+   )
exclude_meexcludeeligiblezcom.myapp.error1u   com.myapp.你好世界zHello Worldu   こんにちは世界)enjp)r   Hellor   RoleSubscriberFeaturesGoodbyeYield	InterruptKILL
InvocationResultCancelCallUnregistered
Unregister
RegisteredRegisterEvent	PublishedPublishUnsubscribedUnsubscribe
Subscribed	SubscribeMATCH_PREFIXErrorMESSAGE_TYPE)msgsmsgs     r   generate_test_messagesrN   /   st   *i-1L1L1N!OP** 	f* 	f9b(5ST	*
 	fH:.* 	ft,* 	&!* 	&w'8'8'='=>* 	66** 	66	2W_B`a* 	6659* 	v* 	vIr86TU* 	v-* 	v*  	vGNN$7$78!*" 	V45#*$ 	V49VXbjMkl%*& 	V4eD'*( 	V$)** 	66*+*, 	66*-*. 	!89/*0 	!8	J1*2 	!8O3*4 	ff%5*6 	ff9bRZ=[\7*8 	ff49*: 	&&);*< 	 34=*> 	 3)UWaiLjk?*@ 	 3PSu_noA*B 	V$C*D 	FF+E*F 	66*G*H 	&"56I*J 	&"5W=N=N=[=[\K*L 	gll//9LMM*N 	gll//9LS\np  {C  fD  	EO*P 	VBSQ*R 	vIn  VC  7D  	ES*DV %))SUCL)))s   -Q;c                     g } dddt        j                  d      t        j                  d      t        j                  d      t        j                  d      t        j                  d      t        j                  d	      f	D ]U  }| j                  t        j                  d
d|g             | j                  t        j                  d
d|gd|i             W | D cg c]  }d|f c}S c c}w )a!  
    Generate WAMP test messages which contain binary app payloads.

    With the JSON serializer, this currently only works on Python 3 (both CPython3 and PyPy3),
    because even on Python 3, we need to patch the stdlib JSON, and on Python 2, the patching
    would be even hackier.
    r                      i   i   r   r%   r"   r   r   T)osurandomappendr   rB   )rL   binaryrM   s      r   generate_test_messages_binaryrZ   d   s     D::a=::b>::c?::c?::c?::d#% 
[ 	GMM&&x@AGMM&&xQWHXYZ
[ $((CT3K(((s   C*c                  l   g } | j                  t        j                                | j                  t        j                  d             | j                  t        j                                | j                  t        j                  d             | j                  t        j                                | j                  t        j                  d             | j                  t        j
                                | j                  t        j
                  d             t        j                  r	 | S )NT)batched)rX   r   JsonSerializerMsgPackSerializerCBORSerializerUBJSONSerializerr   PY3)_serializerss    r   create_serializersrc   {   s    L
1134
11$?@
4467
44TBC
1134
11$?@
3356
33DAB ww 	r   z1WAMP-FlatBuffers currently only supports Python 3c                       e Zd Zd Zy)TestFlatBuffersSerializerc           	      .   t        j                  ddg dddddd	      t        j                  dd
g ddddd      g}t        j                         }|D ]=  }|j                  |      \  }}|j                  ||      d   }| j                  ||       ? y )Nr   r%   r   r   r   r   i  T)r    r!   r,   retainedzcom.example.topic1)r    r!   retainr   )r   rB   rD   r   FlatBuffersSerializer	serializeunserializeassertEqual)selfmessagesr   rM   payloadrY   msg2s          r   
test_basicz$TestFlatBuffersSerializer.test_basic   s    MM& (*,h!?$'#') OOF0!*,.#A#'	)
 ..0  	(C "mmC0OGV ??7F3A6D S$'	(r   N)__name__
__module____qualname__rq    r   r   re   re      s    (r   re   c                   H    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zy)TestSerializerc                 V    t               t               z   | _        t               | _        y )N)rN   rZ   _test_messagesrc   _test_serializers)rm   s    r   setUpzTestSerializer.setUp   s!    469V9XX!3!5r   c                     t        j                  d      }ddd|g ddg did|g}dddg di|g ddd	|g}| j                  ||       y
)zK
        Test deep object equality assert (because I am paranoid).
        
   r   r   r   )	   r   r   moor   )r   r   bazgoo)r   r   r   r   N)rV   rW   rl   )rm   vo1o2s       r   test_deep_equal_msgz"TestSerializer.test_deep_equal_msg   s]     JJrNVQ	FT]K^_abcfi0!YX^_abcR r   c                     | j                   D ]\  }| j                  D ]K  \  }}t        ||      r|j                  |      \  }}|j	                  ||      }| j                  |g|       M ^ y)z;
        Test round-tripping over each serializer.
        Nrz   ry   r   rj   rk   rl   )rm   r   r   rM   ro   rY   rp   s          r   test_roundtrip_msgz!TestSerializer.test_roundtrip_msg   su     )) 	2C(,(;(; 
2$ o6&)mmC&8OGV ??7F;D $$cUD1
2	2r   c                 l   | j                   D ]  }| j                  D ]  \  }}t        ||      r|j                  |      \  }}|j	                  ||      }|d   }| j                   D ]H  }t        ||      r|j                  |      \  }}|j	                  ||      }| j                  |g|       J   y)zV
        Test cross-tripping over 2 serializers (as is done by WAMP routers).
        r   Nr   )	rm   ser1r   rM   ro   rY   msg1ser2rp   s	            r   test_crosstrip_msgz!TestSerializer.test_crosstrip_msg   s     ** 	:D(,(;(; :$ 7&*nnS&9OGV  ++GV<D7D $ 6 6 :(?.2nnT.BOGV $(#3#3GV#DD !,,cUD9::	:r   c                 (   | j                   D ]  \  }}| j                  |j                  i        | j                  D ]  }t	        ||      r| j                  |j                  |j                  v        |j                  |      \  }}| j                  |j                  |j                  v        | j                  |j                  |j                     |       |j                          | j                  |j                  |j                  v          y)z5
        Test message serialization caching.
        N)
ry   rl   _serializedrz   r   assertFalse_serializerrj   
assertTrueuncache)rm   r   rM   r   ro   rY   s         r   test_cache_msgzTestSerializer.test_cache_msg   s     %)$7$7 	I OS S__b1-- I o6 $$S__%GH&)mmC&8OGV OOCOOs$FG$$S__S__%EwO KKM$$S__%GHI	Ir   c                 j   | j                   D ]  }|j                  d      }| j                  |d   d   d       | j                  |d   d   d       | j                  |d   d   d       | j                  |d   d   d       | j                  |d   d   d       | j                  |d   d   d        y	)
zA
        Test initial serializer stats are indeed empty.
        Tdetails
serializedbytesr   rn   rated_messagesunserializedN)rz   statsrl   )rm   r   r   s      r   test_initial_statsz!TestSerializer.test_initial_stats  s     )) 
	ICIIdI+EU<091=U<0<a@U<01ABAFU>27;Q?U>2:>BU>23CDaH
	Ir   c                 b   | j                   D ]  }| j                  D ]8  \  }}t        ||      r|j                  |      \  }}|j	                  ||       : |j                  d      }| j                  |d   dkD         | j                  |d   dkD         | j                  |d   dkD          y)_
        Test serializer stats are non-empty after serializing/unserializing messages.
        Fr   r   r   rn   r   N)rz   ry   r   rj   rk   r   r   rm   r   r   rM   ro   rY   r   s          r   test_serialize_statsz#TestSerializer.test_serialize_stats$  s     )) 	9C(,(;(; 5$ o6&)mmC&8OGV OOGV45 IIeI,EOOE'NQ./OOE*-12OOE"23a78	9r   c                    | j                   D ]R  }| j                  D ]8  \  }}t        ||      r|j                  |      \  }}|j	                  ||       : |j                  d      }| j                  |d   d   dkD         | j                  |d   d   dkD         | j                  |d   d   dkD         | j                  |d   d   dkD         | j                  |d   d   dkD         | j                  |d   d   dkD         | j                  |d   d   |d   d          | j                  |d   d   |d   d          | j                  |d   d   |d   d          U y	)
zp
        Test serializer stats - with details - are non-empty after serializing/unserializing messages.
        Tr   r   r   r   rn   r   r   N)rz   ry   r   rj   rk   r   r   rl   r   s          r   !test_serialize_stats_with_detailsz0TestSerializer.test_serialize_stats_with_details9  s    )) 	mC(,(;(; 5$ o6&)mmC&8OGV OOGV45 IIdI+E
 OOE,/81<=OOE,/
;a?@OOE,/0@AAEFOOE.1':Q>?OOE.1*=ABOOE.12BCaGHU<095;PQX;YZU<0<eN>ST^>_`U<01ABE.DYZjDkl5	mr   c                    | j                   D ]  }| j                  D ]8  \  }}t        ||      r|j                  |      \  }}|j	                  ||       : |j                          |j                  d      }| j                  |d   d   d       | j                  |d   d   d       | j                  |d   d   d       | j                  |d   d   d       | j                  |d   d   d       | j                  |d   d   d        y	)
z]
        Test serializer stats are reset after fetching stats - depending on option.
        Tr   r   r   r   rn   r   r   N)rz   ry   r   rj   rk   r   rl   r   s          r   test_reset_statszTestSerializer.test_reset_statsY  s    )) 	IC(,(;(; 5$ o6&)mmC&8OGV OOGV45 IIKIIdI+EU<091=U<0<a@U<01ABAFU>27;Q?U>2:>BU>23CDaH)	Ir   c                       j                   D ]a  } fd}|j                  dd|        j                  D ]8  \  }}t        ||      r|j	                  |      \  }}|j                  ||       : c y)r   c                     j                  | d   dkD         j                  | d   dkD         j                  | d   dkD         y )Nr   r   rn   r   )r   )r   rm   s    r   on_statsz0TestSerializer.test_auto_stats.<locals>.on_statsy  sE    g 23j 1A 56&6 7! ;<r   r}   r   N)rz   set_stats_autoresetry   r   rj   rk   )rm   r   r   r   rM   ro   rY   s   `      r   test_auto_statszTestSerializer.test_auto_statss  sy     )) 	5C=
 ##B84(,(;(; 5$ o6&)mmC&8OGV OOGV45	5r   N)rr   rs   rt   r{   r   r   r   r   r   r   r   r   r   ru   r   r   rw   rw      s9    6
!2$::I4I 9*m@I45r   rw   )
__future__r   rV   unittestr   autobahn.wampr   r   r   r   rN   rZ   rc   skipIfra   TestCasere   rw   ru   r   r   <module>r      s|   6 ' 	  
 !  $
2*j).2 SWWQR!( 1 1 !( S!(LL5X&& L5r   