
    <e                        d dl Z d dlZd dl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
Zd dlZd dlZd dlZd dlZd dl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 dlmZ d dlmZmZmZ 	 d dlZn# e$ r dZY nw xY w ej        d	           d
ddddg e	j         d          d e!d          ddd e	j"        d           e	j"        d           e	j"         ej        dddddd                    dgZ# G d dej$                  Z% G d dej$                  Z& G d d ej$                  Z' G d! d"ej$                  Z( G d# d$ej$                  Z) G d% d&ej$                  Z*dxa+xa,a-dNd'Z.dOd(Z/d) Z0d* Z1 G d+ d,ej$                  Z2 G d- d.e2          Z3 G d/ d0e2          Z4 G d1 d2e2          Z5 G d3 d4e2          Z6 G d5 d6e6          Z7 G d7 d8e6          Z8 ej9        edu d9           G d: d;e2                      Z: ej9        edu d9           G d< d=ej$                              Z; G d> d?e2          Z< G d@ dAej$                  Z= G dB dCej        j>                  Z? G dD dEej$                  Z@ejA        dPdG            ZB G dH dIej$                  ZC G dJ dKej$                  ZDdL ZEeFdMk    r ejG                     dS dS )Q    N)mock)support)	os_helper)socket_helper)threading_helper)	ALWAYS_EQLARGESTSMALLESTT)modulezfoo@bar.baz.spamgHzns@i      z.zyx.41   my dog has fleasFu	   䀀怀耀zregular value20050210T11:41:23)	  r   
      )      r      r   r   r   r   r   )astringafloatanint
ashortlonganotherlistabase64b64bytesb64bytearraybooleanunicodeu   ukey䀀	datetime1	datetime2	datetime3c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd ZdS )XMLRPCTestCasec                     t          j        t          f          }t          j        |          }|                     t          |d         d                    d S )Nr   )	xmlrpclibdumpsalistloadsassertEqual)selfdumploads      '/usr/lib/python3.11/test/test_xmlrpc.pytest_dump_loadzXMLRPCTestCase.test_dump_load2   sF    x((t$$Q
+++++    c                 Z   t          j         dddddd          }|                     |t          j        d                     t          j        |f          }t          j        |d	          \  }}|\  }|                     ||           |                     t          |          t           j                    |                     |           t          j        |d
	          \  }}|\  }|                     ||           |                     t          |          t          j                   |                     |           t          j        |d          \  }}|\  }|                     ||           |                     t          |          t           j                    |                     |           t          j        |d
          \  }}|\  }|                     ||           |                     t          |          t          j                   |                     |           d S )Nr   r   r   r   r   r   r   Tuse_builtin_typesF)use_datetime	datetimer*   r&   DateTimer'   r)   assertIstypeassertIsNoner+   dtsresultmnewdts         r.   test_dump_bare_datetimez&XMLRPCTestCase.test_dump_bare_datetime7   s   
 tQBB77Y/0CDDEEEORE""OA>>>	###d5kk8#4555!OA???	###d5kk9#5666!OAD999	###d5kk8#4555!OAE:::	###d5kk9#5666!r0   c                    t          j         dddddd          }|                     |t          j        d                     t          j        |f          }t          j        |d	          \  }}|\  }|                     ||           |                     t          |          t           j                    |                     |           t          j        |d
	          \  }}|\  }|                     ||           |                     t          |          t          j                   |                     |           d S )Nr   r   r   r   r   r   z00010210T11:41:23Tr2   Fr5   r;   s         r.   test_datetime_before_1900z(XMLRPCTestCase.test_datetime_before_1900Y   s!   q1b"b"55Y/0CDDEEEORE""OA>>>	###d5kk8#4555!OA???	###d5kk9#5666!r0   c                 ,   t          j                    }t          j        t          j        |fd                    \  \  }}|                     |j        t                     t          j        |fd          }|                     |t                     d S )NTmethodresponse)r&   r7   r)   r'   assertIsInstancevaluestr)r+   dnew_ddummyr=   s        r.   test_bug_1164912zXMLRPCTestCase.test_bug_1164912k   s      %OIOQD;?-A -A -A B B%5ek3/// OUHT:::a%%%%%r0   c                      G d dt                     } |            }d|_        d|_        t          j        t          j        |f                    \  \  }}|                     ||j                   d S )Nc                       e Zd ZdS )-XMLRPCTestCase.test_newstyle_class.<locals>.TN)__name__
__module____qualname__ r0   r.   TrP   v   s        Dr0   rU   d   Hello)objectxyr&   r)   r'   r*   __dict__)r+   rU   tt2rL   s        r.   test_newstyle_classz"XMLRPCTestCase.test_newstyle_classu   s    	 	 	 	 	 	 	 	ACC"!)>)>??"QZ(((((r0   c                 Z    |                      t          t          j        ddz  f           d S )Nr   c   )assertRaisesOverflowErrorr&   r'   r+   s    r.   test_dump_big_longz!XMLRPCTestCase.test_dump_big_long~   s(    -1b5(CCCCCr0   c                 X    |                      t          t          j        ddif           d S )Nr   r      r   ra   	TypeErrorr&   r'   rc   s    r.   test_dump_bad_dictz!XMLRPCTestCase.test_dump_bad_dict   s(    )Y_|oFFFFFr0   c                     g d}ddd|g}|                     |           |                     t          t          j        |f           d S )Nrf   rg         )appendra   ri   r&   r'   )r+   lr\   s      r.   test_dump_recursive_seqz&XMLRPCTestCase.test_dump_recursive_seq   sI    GGq1I	)Y_qd;;;;;r0   c                 r    ddd}d|d}||d<   |                      t          t          j        |f           d S )Nr   )12rg   )3rJ   r\   rh   r+   rJ   r\   s      r.   test_dump_recursive_dictz'XMLRPCTestCase.test_dump_recursive_dict   sC    NNNN#)Y_qd;;;;;r0   c                    t           j        dk    r4|                     t          t          j        t          d          f           t	          j        t          j        t          j        f           |                     t          t          j        t          j        dz   f           |                     t          t          j        t          j        dz
  f           d }t	          j	                    }|
                    t          j        |           |
                    t          j        |           |                     t          |j
        t          j        dz   |           |                     t          |j
        t          j        dz
  |           d S )Ni        r   c                     d S NrT   r=   s    r.   dummy_writez5XMLRPCTestCase.test_dump_big_int.<locals>.dummy_write       Dr0   )sysmaxsizera   rb   r&   r'   intMAXINTMININT
Marshallerdump_intr+   r|   r?   s      r.   test_dump_big_intz XMLRPCTestCase.test_dump_big_int   sZ   ;  mY_"5zzm- - - 	)9+;<===-$+A-/	1 	1 	1-$+A-/	1 	1 	1	 	 	  ""	

9#[111	

9#[111-#*1,k	; 	; 	;-#*1,k	; 	; 	; 	; 	;r0   c                    t          j        t          d          f           t          j        t          t           j                  t          t           j                  f           t          j        t          t           j        dz             t          t           j        dz
            f           d }t          j                    }|                    t           j        |           |                    t           j        |           |                    t           j        dz   |           |                    t           j        dz
  |           d S )Nrx   *   c                     d S rz   rT   r{   s    r.   r|   z4XMLRPCTestCase.test_dump_double.<locals>.dummy_write   r}   r0   )r&   r'   floatr   r   r   dump_doubler   s      r.   test_dump_doublezXMLRPCTestCase.test_dump_double   s   w)***y/00y/002 	3 	3 	3y/"455y/"4557 	8 	8 	8	 	 	  ""	i&444	i&444	i&+[999	i&+[99999r0   c                    t           d gz   }t           d gz   f}t          j        |d          }|                     |t          j        |          d         d                    |                     t          t          j        |f           d S )NT)
allow_noner   )r(   r&   r'   r*   r)   ra   ri   )r+   rH   arg1strgs       r.   test_dump_nonezXMLRPCTestCase.test_dump_none   s     t555#/$//215	7 	7 	7)Y_tg>>>>>r0   c                 f   ddi}t          j        |fd          }d|z   }|                     t          j        |          d         d         |           |                    dd          }|                     t          j        |          d         d         |           t          j        |fdd	          }|                     t          j        |          d         d         |           |                    dd          }|                     t          j        |          d         d         |           d
}t          j        |fd|          }|                     t          j        |          d         d         |           |                     t          j        |          d         |           d S )Nu   key€¤u
   value€¤iso-8859-15encodingz,<?xml version='1.0' encoding='iso-8859-15'?>r   xmlcharrefreplaceT)r   rF   u   method€¤)r   
methodnamer   )r&   r'   r*   r)   encode)r+   rH   r   r   s       r.   test_dump_encodingz!XMLRPCTestCase.test_dump_encoding   s    "$x-@@@=D..q1!4e<<<{{=*=>>..q1!4e<<<x-.24 4 4..q1!4e<<<{{=*=>>..q1!4e<<<'
x-*46 6 6..q1!4e<<<..q1:>>>>>r0   c                    d}|                      |t          j        |                     t          t          t          j        fD ]} ||          }t          j        |f          }t          j        |d          \  }}|\  }|                      ||           |                     t          |          t                     | 	                    |           t          j        |d          \  }}|\  }|                      ||           |                     t          |          t          j                   | 	                    |           
d S )Nr   Tr2   F)
r*   r&   Binarybytes	bytearrayr'   r)   r8   r9   r:   )r+   sampletype_rH   r=   r>   r?   newvalues           r.   test_dump_byteszXMLRPCTestCase.test_dump_bytes   s5   $!1&!9!9:::Iy'77 	! 	!EE&MME))A!TBBBIFA KXXv...MM$x..%000a   !UCCCIFA KXXv...MM$x..)*:;;;a    	! 	!r0   c                     t           j        }d}|                     |t           j        |           d}|                     |t           j        |           d}|                     |t           j        |           d S )Nz6<params><param><value><spam/></value></param></params>zT<params><param><value><array><value><spam/></value></array></value></param></params>z<params><param><value><struct><member><name>a</name><value><spam/></value></member><member><name>b</name><value><spam/></value></member></struct></value></param></params>)r&   ResponseErrorra   r)   )r+   r   datas      r.   test_loads_unsupportedz%XMLRPCTestCase.test_loads_unsupported   su    !/G-$???4 	-$???5 	-$?????r0   c                     d|z  }t          j        |fi |\  }}|\  }|                     ||           |                     t	          |          t	          |                     |                     |           d S )Nz1<params><param><value>%s</value></param></params>)r&   r)   r*   r8   r9   r:   )r+   r=   rH   kwargsr,   r>   r?   r   s           r.   check_loadszXMLRPCTestCase.check_loads   s~    BQFOD33F33	5)))d8nnd5kk222!r0   c                    | j         } |dd            |dd            |dd            |dd            |dd            |d	d            |d
d            |dd            |dt          j        d                      |ddd            |dt          j        d                      |dt	          j        dddddd          d            |dddg            |dddd           d S )Nstringz<string>string</string>u4   <string>𝔘𝔫𝔦𝔠𝔬𝔡𝔢 string</string>u#   𝔘𝔫𝔦𝔠𝔬𝔡𝔢 stringz<int>2056183947</int>izz<int>-2056183947</int>iuqz<i4>2056183947</i4>z<double>46093.78125</double>g    @z<boolean>0</boolean>Fz%<base64>AGJ5dGUgc3RyaW5n/w==</base64>s    byte stringTr2   z6<dateTime.iso8601>20050210T11:41:23</dateTime.iso8601>r   r   r   r   r   r   r   zR<array><data><value><int>1</int></value><value><int>2</int></value></data></array>r   z<struct><member><name>b</name><value><int>2</int></value></member><member><name>a</name><value><int>1</int></value></member></struct>)ab)r   r&   r   r7   r6   r+   checks     r.   test_load_standard_typesz'XMLRPCTestCase.test_load_standard_types   s    h!!!'222DFklll%z222&444#Z000,k:::$e,,,5566	8 	8 	85$	> 	> 	> 	>F !455	7 	7 	7FaRR88 $	& 	& 	& 	& 	  "#Q	) 	) 	) 	  "#++	- 	- 	- 	- 	-r0   c                     | j         } |dd             |dd             |dd            |dd            |dd            |d	d
            |dd            |dt          j        d                     d S )Nz<nil/>z	<ex:nil/>z<i1>205</i1>   z<i2>20561</i2>iQP  z<i8>9876543210</i8>l   `	 z-<biginteger>98765432100123456789</biginteger>l   5?4*UU z<float>93.78125</float>g     rW@z.<bigdecimal>9876543210.0123456789</bigdecimal>z9876543210.0123456789)r   decimalDecimalr   s     r.   test_load_extension_typesz(XMLRPCTestCase.test_load_extension_types  s     hk4   nc"""&&&#Z000="	$ 	$ 	$'222>o566	8 	8 	8 	8 	8r0   c                    | j         }d}t          j        |          5  d|dz   z  }|                     t                    5   |d| dd            d d d            n# 1 swxY w Y   |                     t                    5   |d| dd            d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Ni  rr   r   z<int>z</int>z<biginteger>z</biginteger>)r   r   adjust_int_max_str_digitsra   
ValueError)r+   r   	maxdigitsr=   s       r.   test_limit_intzXMLRPCTestCase.test_limit_int$  s    	.y99 	= 	=y1}%A"":.. / /'a'''.../ / / / / / / / / / / / / / /"":.. = =5Q555t<<<= = = = = = = = = = = = = = =		= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	=sY   #B8AB8A"	"B8%A"	&B8B B8 B$	$B8'B$	(B88B<?B<c                     t           j                                        }|                     |                    d          ddgi f           d S )Nzuser@host.tldzhost.tld)AuthorizationzBasic dXNlcg==)xmlrpcclient	Transportr*   get_host_info)r+   transps     r.   test_get_host_infoz!XMLRPCTestCase.test_get_host_info.  s]    ((**--o>>%?@"F	G 	G 	G 	G 	Gr0   c                 .   	 dd l }d}n# t          $ r d}Y nw xY w	 t          j                            d                                           d S # t          $ r |                     |d           Y d S t          $ r | 	                    |           Y d S w xY w)Nr   TFzhttps://localhost:9999z&xmlrpc client's error with SSL support)
sslImportErrorr   r   ServerProxybad_functionNotImplementedErrorassertFalseOSError
assertTrue)r+   r   has_ssls      r.   test_ssl_presencez XMLRPCTestCase.test_ssl_presence5  s    	JJJ GG  	 	 	GGG		%M%%&>??LLNNNNN" 	P 	P 	PW&NOOOOOO 	% 	% 	%OOG$$$$$$	%s#   	 1A  B2BBc                 v    G d dt           j        j                  }fd}t           j                            t          j        df|          |                     j                   t          j	        |          }|
                                 |                     |j                    dj        j         }t          j        |          5 }|                     |                                d           |                     |                                d           d d d            d S # 1 swxY w Y   d S )Nc                   "    e Zd ZdZdZd Zd ZdS )@XMLRPCTestCase.test_keepalive_disconnect.<locals>.RequestHandlerHTTP/1.1Fc                    t          | j                            d                    }| j                            |           | j        r	d| _        d S t          j        dd          }|	                                }| 
                    t          j        j                   |                     dt          |                     |                                  | j                            |           d| _        d| _        d S )NContent-LengthT)rm   rE   F)r   headersgetrfilereadhandledclose_connectionr&   r'   r   send_responsehttp
HTTPStatusOKsend_headerlenend_headerswfilewrite)r+   lengthresponses      r.   do_POSTzHXMLRPCTestCase.test_keepalive_disconnect.<locals>.RequestHandler.do_POSTH  s    T\--.>??@@
'''< ,0D)F$?4EEE#??,,""4?#5666  !13x==AAA  """
  ***#(-%%%r0   c                     d S rz   rT   )r+   formatargss      r.   log_messagezLXMLRPCTestCase.test_keepalive_disconnect.<locals>.RequestHandler.log_messageW  s    r0   N)rQ   rR   rS   protocol_versionr   r   r   rT   r0   r.   RequestHandlerr   D  s=        )G. . .    r0   r   c                       j                             t          d                                                                                         d S Nr   )socket
settimeoutr   handle_request)servers   r.   
run_serverz<XMLRPCTestCase.test_keepalive_disconnect.<locals>.run_server[  sI    M$$U1XX...!!###!!#####r0   r   )targetzhttp://{}:{}/rm   )r   r   BaseHTTPRequestHandler
HTTPServerr   HOST
addCleanupserver_close	threadingThreadstartjoinr   server_addressr&   r   r*   method)r+   r   r   threadurlpr   s         @r.   test_keepalive_disconnectz(XMLRPCTestCase.test_keepalive_disconnectC  su   	 	 	 	 	T[? 	 	 	.	$ 	$ 	$ 	$ 	$
 '');Q(?PP+,,,!444$$$$o$f&;<"3'' 	,1QXXZZ+++QXXZZ+++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,s   AD..D25D2N)rQ   rR   rS   r/   rA   rC   rM   r^   rd   rj   rp   rv   r   r   r   r   r   r   r   r   r   r   r   r   r  rT   r0   r.   r$   r$   0   sk       , , ,
  D  $& & &) ) )D D DG G G< < << < <; ; ;,: : : ? ? ?? ? ?*! ! !&@ @ @  - - -68 8 8= = =G G G% % %%, %, %, %, %,r0   r$   c                   N    e Zd Z G d de          Zd Zd Zd Zd Zd Z	d Z
d	S )
SimpleXMLRPCDispatcherTestCasec                       e Zd ZdZdS )*SimpleXMLRPCDispatcherTestCase.DispatchExczSRaised inside the dispatched functions when checking for
        chained exceptionsN)rQ   rR   rS   __doc__rT   r0   r.   DispatchExcr  l  s        	 	 	 	r0   r  c                     d} fd}t           j                                        }|                    |                                 j                  5 }|                    d|           ddd           n# 1 swxY w Y                        |j        j	        |f            
                    |j        j                    
                    |j        j                   dS )z$Calls explicitly registered functionrf   c                  .                         |           rz   )r  )paramsr+   s    r.   dispatched_funczQSimpleXMLRPCDispatcherTestCase.test_call_registered_func.<locals>.dispatched_funcw  s    ""6***r0   r  N)r   r   SimpleXMLRPCDispatcherregister_functionra   r  	_dispatchr*   	exceptionr   r:   	__cause____context__)r+   
exp_paramsr  
dispatcherexc_ctxs   `    r.   test_call_registered_funcz8SimpleXMLRPCDispatcherTestCase.test_call_registered_funcp  s4   
 
	+ 	+ 	+ 	+ 	+ ]99;;
$$_555t/00 	@G  !2J???	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@*/*???'+5666'+788888s   A99A= A=c                    d} G d d          }t           j                                        }|                     |                       |                     | j                  5 }|                    d|           ddd           n# 1 swxY w Y   |                     |j        j	        |f           | 
                    |j        j                   | 
                    |j        j                   dS )z3Calls a registered instance attribute as a functionrf   c                       e Zd Zd ZdS )OSimpleXMLRPCDispatcherTestCase.test_call_instance_func.<locals>.DispatchedClassc                 6    t                               |          rz   r  r  )r+   r
  s     r.   r  z_SimpleXMLRPCDispatcherTestCase.test_call_instance_func.<locals>.DispatchedClass.dispatched_func  s    4@@HHHr0   N)rQ   rR   rS   r  rT   r0   r.   DispatchedClassr    s(        I I I I Ir0   r  r  Nr   r   r  register_instancera   r  r  r*   r  r   r:   r  r  )r+   r  r  r  r  s        r.   test_call_instance_funcz6SimpleXMLRPCDispatcherTestCase.test_call_instance_func  sR   
 
	I 	I 	I 	I 	I 	I 	I 	I ]99;;
$$__%6%6777t/00 	@G  !2J???	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@ 	@*/*???'+5666'+788888s   %BBBc                    d}d} G d d          }t           j                                        }|                     |                       |                     | j                  5 }|                    ||           ddd           n# 1 swxY w Y   |                     |j        j	        ||f           | 
                    |j        j                   | 
                    |j        j                   dS )z4Calls the registered instance's `_dispatch` functionr   rf   c                       e Zd Zd ZdS )LSimpleXMLRPCDispatcherTestCase.test_call_dispatch_func.<locals>.TestInstancec                 8    t                               ||          rz   r  )r+   r   r
  s      r.   r  zVSimpleXMLRPCDispatcherTestCase.test_call_dispatch_func.<locals>.TestInstance._dispatch  s    4@@F$ $ $r0   N)rQ   rR   rS   r  rT   r0   r.   TestInstancer!    s#        $ $ $ $ $r0   r#  Nr  )r+   
exp_methodr  r#  r  r  s         r.   test_call_dispatch_funcz6SimpleXMLRPCDispatcherTestCase.test_call_dispatch_func  s?   
 

	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$
 ]99;;
$$\\^^444t/00 	9G  Z888	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9*/*j1IJJJ'+5666'+788888s   'B

BBc                    t           j                                        }|                    dd           |                     t
          d          5  |                    dd           ddd           dS # 1 swxY w Y   dS )z2Calls explicitly registered function which is NoneNr   nameparam)r   r   r  r  assertRaisesRegex	Exceptionr  r+   r  s     r.   test_registered_func_is_nonez;SimpleXMLRPCDispatcherTestCase.test_registered_func_is_none  s     ]99;;
$$T$999##Ix88 	7 	7  :666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7s   A55A9<A9c                    t           j                                        }|                    t	                                 |                     t          d          5  |                    dd           ddd           dS # 1 swxY w Y   dS )z>Attempts to call nonexistent function on a registered instancer   r)  N)r   r   r  r  rX   r+  r,  r  r-  s     r.   test_instance_has_no_funcz8SimpleXMLRPCDispatcherTestCase.test_instance_has_no_func  s     ]99;;
$$VXX...##Ix88 	7 	7  :666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7s   A??BBc                     t           j                                        }|                     t          d          5  |                    dd           ddd           dS # 1 swxY w Y   dS )z2Calls a function that the dispatcher cannot locater   r)  N)r   r   r  r+  r,  r  r-  s     r.   test_cannot_locate_funcz6SimpleXMLRPCDispatcherTestCase.test_cannot_locate_func  s     ]99;;
##Ix88 	7 	7  :666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7s   AA"%A"N)rQ   rR   rS   r,  r  r  r  r%  r.  r0  r2  rT   r0   r.   r  r  k  s            i   9 9 9$9 9 9&9 9 9*7 7 77 7 77 7 7 7 7r0   r  c                       e Zd Zd ZdS )HelperTestCasec                     |                      t          j        d          d           |                      t          j        d          d           |                      t          j        d          d           d S )Nza&bza&amp;bza<bza&lt;bza>bza&gt;b)r*   r&   escaperc   s    r.   test_escapezHelperTestCase.test_escape  sk    )%00)<<<)%00(;;;)%00(;;;;;r0   N)rQ   rR   rS   r7  rT   r0   r.   r4  r4    s#        < < < < <r0   r4  c                        e Zd Zd Zd Zd ZdS )FaultTestCasec                     t          j        dd          }|                     t          |          d           |                     t          |          t	          |                     d S )Nr   
Test Faultz<Fault 42: 'Test Fault'>)r&   Faultr*   reprrI   )r+   fs     r.   	test_reprzFaultTestCase.test_repr  sX    OB--a"<===a#a&&)))))r0   c                    t          j        dd          }t          j        |f          }t          j        |          \  \  }}|                     |ddd           |                     |d            t          j                                        |          }|                     t           j        t           j        |           d S )Nr   r;  )	faultCodefaultString)r&   r<  r'   r)   r*   r   ra   )r+   r>  r=   newfr?   s        r.   test_dump_faultzFaultTestCase.test_dump_fault  s    OB--OQD!!_Q''
RMMNNND!!! ""((++)/9?A>>>>>r0   c                     |                      t          t          j        j        t
          d           |                     t          j                            t
          d                     d S N__addtitle)ra   AttributeErrorr   r   resolve_dotted_attributerI   r   rc   s    r.   test_dotted_attributez#FaultTestCase.test_dotted_attribute  sW     	. -@#w	P 	P 	P>>sGLLMMMMMr0   N)rQ   rR   rS   r?  rD  rK  rT   r0   r.   r9  r9    sF        * * *
? ? ?N N N N Nr0   r9  c                   >    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	S )
DateTimeTestCasec                 R   t          j        d          5 }t          j        g d          }||_        t          j                    }t          j                    }|                     t          |          t          j
        d|                     d d d            d S # 1 swxY w Y   d S )Nztime.localtime)	i        r      1   r      r   %Y%m%dT%H:%M:%S)r   patchtimestruct_timereturn_value	localtimer&   r7   r*   rI   strftime)r+   localtime_mocktime_structrY  r\   s        r.   test_defaultzDateTimeTestCase.test_default  s    Z()) 	J^*3335 5K*5N'((I"$$ASVV!]+<iHHJ J J	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	J 	Js   A:BB #B c           	          d}t          j        |          }|                     t          |          t	          j        dt	          j        |                               d S Ngl]ޮArT  )r&   r7   r*   rI   rV  rZ  rY  ru   s      r.   	test_timezDateTimeTestCase.test_time  s`    q!!Q'8$.:K:KLL	N 	N 	N 	N 	Nr0   c                 x    d}t          j        |          }|                     t          |          d           d S )N)	     	   r   &   2   rm      r   z20070609T10:38:50)r&   r7   r*   rI   ru   s      r.   test_time_tuplez DateTimeTestCase.test_time_tuple  s:    'q!!Q!455555r0   c                     t          j        d          }t          j        |          }|                     t          |          t          j        d|                     d S r_  )rV  rY  r&   r7   r*   rI   rZ  ru   s      r.   test_time_structz!DateTimeTestCase.test_time_struct  sQ    N,--q!!Q/@!!D!DEEEEEr0   c                     t          j         dddddd          }t          j        |          }|                     t	          |          d           d S )Nrb  r   r   rg   rl   rm   z20070102T03:04:05)r6   r&   r7   r*   rI   ru   s      r.   test_datetime_datetimez'DateTimeTestCase.test_datetime_datetime  sO    d1Qq1--q!!Q!455555r0   c                     t          j         dddddd          }t          j        |          }dt          |          z  }|                     t          |          |           d S )Nrb  r   r   rg   rl   rm   z%<DateTime '20070102T03:04:05' at %#x>)r6   r&   r7   idr*   r=  )r+   rJ   r\   vals       r.   r?  zDateTimeTestCase.test_repr  s^    d1Qq1--q!!4r!uu<a#&&&&&r0   c           
      0   d}t          j                    }|                    |           t          j        t          j        dddddd                    }|                     ||           t          j        |          }|                     ||           d S )Nz 20070908T07:11:13  rb  rd     rO  r      )r&   r7   decoder6   r*   	_datetime)r+   rJ   t1trefr]   s        r.   test_decodezDateTimeTestCase.test_decode  s    "!!
		!!("3D1Qr""E"EFFT""" ##T"""""r0   c                 D   t           j                                         }t          j        |                                          }|                     ||k               |                     ||k               |t          j        d          z   }|                     ||k               |                     ||k                |                    d          }|                     ||k               |                     ||k               t          j        |                                          }|                     ||k               |                     ||k                |                    d          }|                                }| 	                    |dk               |                     ||k               | 	                    |t          |          k               |                     ||k               |                     t                    5  |t          d          k      d d d            n# 1 swxY w Y   |                     t                    5  ||k     d d d            n# 1 swxY w Y   |                     t                    5  |t          |          k     d d d            n# 1 swxY w Y   |                     t                    5  ||k     d d d            n# 1 swxY w Y   |                     |t          k               | 	                    |t          k               |                     |t          k                | 	                    |t          k               |                     |t          k               | 	                    |t          k               | 	                    |t           k                |                     |t           k               | 	                    |t           k               |                     |t           k               d S )Nrl   )secondsrT  asciii  )r6   nowr&   r7   	timetupler   	timedeltarZ  r   r   r   ra   ri   r   r   r	   r
   )r+   r{  dtimethendstr
dtime_thendbytesdtuples           r.   test_comparisonz DateTimeTestCase.test_comparison  s}   ##%%"3==??33 	%%%u%%%X'2222&&&%%% ||-..&&&&&&'(8(899

d*+++z)*** W%%$'''((()F"3"33444(((y)) 	  	 E$KK	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 y)) 	 	FNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	y)) 	' 	'Yv&&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	'y)) 	 	VOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	*+++)+,,,((()))()))')***)***()))(*+++)*****sH   H44H8;H8I,,I03I0J11J58J5K))K-0K-N)rQ   rR   rS   r]  r`  rh  rj  rl  r?  rw  r  rT   r0   r.   rM  rM    s        J J JN N N6 6 6
F F F
6 6 6
' ' '# # #,+ ,+ ,+ ,+ ,+r0   rM  c                        e Zd Zd Zd Zd ZdS )BinaryTestCasec                 r    t          j                    }|                     t          |          d           d S )N r&   r   r*   rI   )r+   r\   s     r.   r]  zBinaryTestCase.test_defaultE  s2    Q$$$$$r0   c                     d}t          j        |          }|                     t          |          t          |d                     d S Ns   abc123zlatin-1r  ru   s      r.   test_stringzBinaryTestCase.test_stringI  sC    )QQQ	!2!233333r0   c                 n   d}t          j        |          }t          j                    }|                    |           |                     t          |          t          |d                     t          j        |          }|                     t          |          t          |d                     d S r  )base64encodebytesr&   r   rs  r*   rI   _binary)r+   rJ   deru  r]   s        r.   rw  zBinaryTestCase.test_decodeN  s    )""
		"R#a"3"3444r""R#a"3"344444r0   N)rQ   rR   rS   r]  r  rw  rT   r0   r.   r  r  >  sA        % % %4 4 4
5 5 5 5 5r0   r  c                     G d d          } G d dt           j        j                  }|st           j        j        } |d||dd          }	 |                                 |j                                        \  aadt          t          fz  a	|
                                 |                                 |                                 |                    t                     |                    d	 d
           |j        d             }|                    d          d             } |            }	|                    |	d           |                                  |dk    r|                                 |dz  }|dk    n# t$          $ r Y nw xY w|j                                         d a|                                  d S # |j                                         d a|                                  w xY w)Nc                   4    e Zd Zd Zd Z G d d          ZdS )&http_server.<locals>.TestInstanceClassc                     ||z  S rz   rT   r+   rY   rZ   s      r.   divz*http_server.<locals>.TestInstanceClass.div`      6Mr0   c                     |dk    rdS d S Nr  This is the div functionrT   r+   r(  s     r.   _methodHelpz2http_server.<locals>.TestInstanceClass._methodHelpc      u}}11 }r0   c                   $    e Zd Zed             ZdS ).http_server.<locals>.TestInstanceClass.Fixturec                      dS )N42rT   rT   r0   r.   getDataz6http_server.<locals>.TestInstanceClass.Fixture.getDatah  s    tr0   N)rQ   rR   rS   staticmethodr  rT   r0   r.   Fixturer  g  s-          \  r0   r  N)rQ   rR   rS   r  r  r  rT   r0   r.   TestInstanceClassr  _  sZ        	 	 		2 	2 	2	 	 	 	 	 	 	 	 	 	r0   r  c                       e Zd Zd ZdS )#http_server.<locals>.MyXMLRPCServerc                 l    | j                                         \  }}|                    d           ||fS NTr   acceptsetblockingr+   r=   ports      r.   get_requestz/http_server.<locals>.MyXMLRPCServer.get_requestm  6     k((**GAtMM$d7Nr0   NrQ   rR   rS   r  rT   r0   r.   MyXMLRPCServerr  l  #        	 	 	 	 	r0   r  	localhostr   F)r   logRequestsbind_and_activatehttp://%s:%dc                     | S rz   rT   )rY   s    r.   <lambda>zhttp_server.<locals>.<lambda>  s     r0      têštc                      dS This is my functionTrT   rT   r0   r.   my_functionz http_server.<locals>.my_function  s	     4r0   addr'  c                     | |z   S rz   rT   rY   rZ   s     r.   _zhttp_server.<locals>._  s    q5Lr0   T)allow_dotted_namesr   r   )r   r   SimpleXMLRPCServerSimpleXMLRPCRequestHandlerserver_bindr   getsocknameADDRPORTURLserver_activate register_introspection_functionsregister_multicall_functionsr  powr  setr   TimeoutErrorclose)
evtnumrequestsrequestHandlerr   r  r  servr  r  testInstances
             r.   http_serverr  ^  sa              9     BA>*N#+&+uF F FD#[,,..
d
 dD\)--///))+++s###{{H555			 	 
 		 
		U		+	+	 	 
,	+	((**|EEE			 Aoo!!!1K Aoo     						 					s+   D7F G 
FG FG 1G9c                     G d d          }d } G d dt           j        j                  }|st           j        j        } G d d|          } G d d	          } |d
|dd          }|j                            d           |                                 	 |j                                        \  aa	dt          t          fz  a
|                                 g d}	|	D ]u}
|                    |
t           j                                                  }|                                 |                                 |                    |
fdd           v|                    |	d                                       t$                     |                    |	d                                       d d           |                    d |                       |                                  |dk    r|                                 |dz  }|dk    n# t*          $ r Y nw xY w|j                                         d a	|                                  d S # |j                                         d a	|                                  w xY w)Nc                       e Zd Zd Zd ZdS ),http_multi_server.<locals>.TestInstanceClassc                     ||z  S rz   rT   r  s      r.   r  z0http_multi_server.<locals>.TestInstanceClass.div  r  r0   c                     |dk    rdS d S r  rT   r  s     r.   r  z8http_multi_server.<locals>.TestInstanceClass._methodHelp  r  r0   N)rQ   rR   rS   r  r  rT   r0   r.   r  r    s2        	 	 		2 	2 	2 	2 	2r0   r  c                      dS r  rT   rT   r0   r.   r  z&http_multi_server.<locals>.my_function  s    tr0   c                       e Zd Zd ZdS ))http_multi_server.<locals>.MyXMLRPCServerc                 l    | j                                         \  }}|                    d           ||fS r  r  r  s      r.   r  z5http_multi_server.<locals>.MyXMLRPCServer.get_request  r  r0   Nr  rT   r0   r.   r  r    r  r0   r  c                       e Zd Zg ZdS )+http_multi_server.<locals>.MyRequestHandlerN)rQ   rR   rS   	rpc_pathsrT   r0   r.   MyRequestHandlerr    s        			r0   r  c                       e Zd ZddZdS )+http_multi_server.<locals>.BrokenDispatcherNc                      t          d          )Nzbroken dispatcher)RuntimeError)r+   r   dispatch_methodpaths       r.   _marshaled_dispatchz?http_multi_server.<locals>.BrokenDispatcher._marshaled_dispatch  s    2333r0   NN)rQ   rR   rS   r  rT   r0   r.   BrokenDispatcherr    s(        	4 	4 	4 	4 	4 	4r0   r  r  F)r  r  rg   r  )
/foo/foo/bar/foo?k=v	/foo#frag/foo?k=v#fragr  //RPC2?k=v#fragc                     | S rz   rT   )r   s    r.   r  z#http_multi_server.<locals>.<lambda>  s    q r0   testr   r   c                     | |z   S rz   rT   r  s     r.   r  z#http_multi_server.<locals>.<lambda>  s
    AaC r0   r  
/is/broken)r   r   MultiPathXMLRPCServerr  r   r   r  r  r  r  r  r  add_dispatcherr  r  r  r  get_dispatcherr  r  r   r  r  )r  r  r  r  r  r  r  r  r  pathsr  rJ   s               r.   http_multi_serverr    s   2 2 2 2 2 2 2 2      <     BA    >   4 4 4 4 4 4 4 4 >*,<&+uF F FDK1"[,,..
d
 dD\)
 
 

  	: 	:D##D&-*N*N*P*PQQA..000**,,, 0 0 0&9999E!H%%77<<<E!H%%77OOOL*:*:*<*<===			 Aoo!!!1K Aoo     						 					s+   E7H I 
HI HI 1Jc                     	 | j         dk    s| j        dS | j                            d          }n# t          $ r t	          |           }Y nw xY w|rd|                                v rdS dS dS )zReturns True if the given ProtocolError is the product of a server-side
       exception caused by the 'temporarily unavailable' response sometimes
       given by operations on non-blocking sockets.r   NTX-exceptionztemporarily unavailable)errcoder   r   rI  rI   lower)eexc_messs     r.   is_unavailable_exceptionr    s    9??ai/49==//   q66  -1A1AAAt AAs   1 1 AAc                     | sd S fd}|S )Nc                     | S rz   rT   )funcs    r.   r  z)make_request_and_skipIf.<locals>.<lambda>  s    D r0   c                     fd}|S )Nc                     	 t          j        t                                                     n3# t           j        t
          f$ r}t          |          s Y d }~nd }~ww xY wt          j                  rz   )	r&   r   r  r  ProtocolErrorr   r  unittestSkipTest)r+   r  reasons     r.   make_request_and_skipzImake_request_and_skipIf.<locals>.decorator.<locals>.make_request_and_skip  s    %c**668888+W5   /22      #F+++s   +/ AAArT   )r  r  r  s     r.   	decoratorz*make_request_and_skipIf.<locals>.decorator  s$    	, 	, 	, 	, 	, %$r0   rT   )	conditionr  r  s    ` r.   make_request_and_skipIfr    s7      !   % % % % % r0   c                   8    e Zd ZdZdZ ee          Zd Zd Z	dS )BaseServerTestCaseNr   c                    dt           j        j        _        t	          j                    | _        | j        | j        | j        f}t	          j	        | j
        |          }|                                 |                     |j                   | j                                         | j                                         d S )NTr   r   )r   r   r  _send_traceback_headerr   Eventr  request_countr  r   
threadFuncr   r   r   waitclearr+   	serv_argsr   s      r.   setUpzBaseServerTestCase.setUp  s    BF(??$$Xt143FG	!yIII$$$ 	r0   c                 d    | j                                          dt          j        j        _        d S NF)r  r  r   r   r  r  rc   s    r.   tearDownzBaseServerTestCase.tearDown  s(     CH(???r0   )
rQ   rR   rS   r  r  r  r  r  r"  r%  rT   r0   r.   r  r    sP        NMk**J  H H H H Hr0   r  c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	 e
ej        j        dk    d	          d
             Zd Zd Zd Zd Zd Zd Zd Zd Zd ZdS )SimpleServerTestCasec           
      R   	 t          j        t                    }|                     |                    dd          d           d S # t           j        t          f$ rI}t          |          s/|                     |dt          |dd                     Y d }~d S Y d }~d S d }~ww xY w)Nrc  rq    
r   r  )
r&   r   r  r*   r  r  r   r  failgetattrr+   r   r  s      r.   test_simple1z!SimpleServerTestCase.test_simple1#  s    	E%c**AQUU1QZZ.....'1 	E 	E 	E+A.. E		aaaIr)B)B)BCDDDDDDDDDE E E E E E	Es   AA B&8B!!B&c           
      `   d}d}	 t          j        t                    }|                     |                    ||          ||z              d S # t           j        t          f$ rI}t          |          s/|                     |dt          |dd                     Y d }~d S Y d }~d S d }~ww xY w)Nu   Pŷtu   hơnr*  r   r  )
r&   r   r  r*   r  r  r   r  r+  r,  r+   start_string
end_stringr   r  s        r.   test_nonasciiz"SimpleServerTestCase.test_nonascii-  s    C;
	E%c**AQUU<<<)J68 8 8 8 8'1 	E 	E 	E+A.. E		aaaIr)B)B)BCDDDDDDDDDE E E E E E	Es   AA B-$8B((B-c           
      n   d}d}	 t          j        t          d          }|                     |                    ||          ||z              d S # t           j        t          j        f$ rI}t          |          s/| 	                    |dt          |dd                     Y d }~d S Y d }~d S d }~ww xY w)N   €   ¤r   r   r*  r   r  r&   r   r  r*   r  r  r   errorr  r+  r,  r0  s        r.   test_client_encodingz)SimpleServerTestCase.test_client_encoding:  s    
	E%cMBBBAQUU<<<)J68 8 8 8 8'6 	E 	E 	E+A.. E		aaaIr)B)B)BCDDDDDDDDDE E E E E E	Es   AA B4+8B//B4c           
      ^   	 t          j        t          d          }|                     |                    d          d           d S # t           j        t          j        f$ rI}t          |          s/| 	                    |dt          |dd                     Y d }~d S Y d }~d S d }~ww xY w)Nrz  r   r   r*  r   r  )r&   r   r  r*      têštr  r   r8  r  r+  r,  r-  s      r.   test_nonascii_methodnamez-SimpleServerTestCase.test_nonascii_methodnameH  s    	E%cG<<<AQXXb\\2.....'6 	E 	E 	E+A.. E		aaaIr)B)B)BCDDDDDDDDDE E E E E E	Es   AA B,#8B''B,c                 n   t          j        t          j                            t
          t                              5 }|                    dd           |                                }d d d            n# 1 swxY w Y   | 	                    |j
        d           | 	                    |j        d           d S )NPOSTz/this-is-not-validi  z	Not Found)
contextlibclosingr   r   HTTPConnectionr  r  requestgetresponser*   statusr  )r+   connr   s      r.   test_404zSimpleServerTestCase.test_404R  s      : :4 F FGG 	*4LL!5666''))H	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	#...+66666s   +A44A8;A8c           
         t          g d          }	 t          j        t                    }|j                                        }|                     t          |          |           d S # t          j        t          f$ rI}t          |          s/| 
                    |dt          |dd                     Y d }~d S Y d }~d S d }~ww xY w)N)
r  r  r  r  r  zsystem.listMethodszsystem.methodHelpzsystem.methodSignaturezsystem.multicallr  r*  r   r  )r  r&   r   r  systemlistMethodsr*   r  r   r  r+  r,  )r+   expected_methodsr   methr  s        r.   test_introspection1z(SimpleServerTestCase.test_introspection1\  s	     +  +  + , ,	E%c**A8''))DSYY(899999'1 	E 	E 	E+A.. E		aaaIr)B)B)BCDDDDDDDDDE E E E E E	Es   AA* *C	 8CC	c           
      ^   	 t          j        t                    }|j                            d          }|                     |d           d S # t           j        t          f$ rI}t          |          s/| 	                    |dt          |dd                     Y d }~d S Y d }~d S d }~ww xY w)Nr  r  r*  r   r  r&   r   r  rH  
methodHelpr*   r  r   r  r+  r,  )r+   r   divhelpr  s       r.   test_introspection2z(SimpleServerTestCase.test_introspection2l  s    		E%c**Ah))%00GW&@AAAAA'1 	E 	E 	E+A.. E		aaaIr)B)B)BCDDDDDDDDDE E E E E E	E   A	A B,#8B''B,r   z)Docstrings are omitted with -O2 and abovec           
      ^   	 t          j        t                    }|j                            d          }|                     |d           d S # t           j        t          f$ rI}t          |          s/| 	                    |dt          |dd                     Y d }~d S Y d }~d S d }~ww xY w)Nr  r  r*  r   r  rN  )r+   r   
myfunctionr  s       r.   test_introspection3z(SimpleServerTestCase.test_introspection3x  s    		E%c**A,,];;JZ)>?????'1 	E 	E 	E+A.. E		aaaIr)B)B)BCDDDDDDDDDE E E E E E	ErR  c           
      ^   	 t          j        t                    }|j                            d          }|                     |d           d S # t           j        t          f$ rI}t          |          s/| 	                    |dt          |dd                     Y d }~d S Y d }~d S d }~ww xY w)Nr  zsignatures not supportedr*  r   r  )r&   r   r  rH  methodSignaturer*   r  r   r  r+  r,  )r+   r   divsigr  s       r.   test_introspection4z(SimpleServerTestCase.test_introspection4  s    	E%c**AX--e44FV%?@@@@@'1 	E 	E 	E+A.. E		aaaIr)B)B)BCDDDDDDDDDE E E E E E	ErR  c           
      J   	 t          j        t                    }t          j        |          }|                    dd           |                    dd           |                    dd            |            \  }}}|                     |d           |                     |d           |                     |d           d S # t           j        t          f$ rI}t          |          s/|                     |d	t          |d
d                     Y d }~d S Y d }~d S d }~ww xY w)Nr   rg   rc  rq     r   rm   r)  r*  r   r  )r&   r   r  	MultiCallr  r  r  r*   r  r   r  r+  r,  )r+   r   	multicall
add_result
pow_result
div_resultr  s          r.   test_multicallz#SimpleServerTestCase.test_multicall  sZ   	E%c**A!+A..IMM!AMM!AMM#b!!!1:.J
JZ---Z...Z11111'1 	E 	E 	E+A.. E		aaaIr)B)B)BCDDDDDDDDDE E E E E E	Es   B?C D"8DD"c           
         	 t          j        t                    }t          j        |          }|                                  |            }|                     |j        d         d         d           |                     |j        d         d         d           d S # t           j        t          f$ rI}t          |          s/| 
                    |dt          |dd                     Y d }~d S Y d }~d S d }~ww xY w)	Nr   rA  r   rB  z@<class 'Exception'>:method "this_is_not_exists" is not supportedr*  r   r  )r&   r   r  r\  this_is_not_existsr*   resultsr  r   r  r+  r,  )r+   r   r]  r>   r  s        r.   test_non_existing_multicallz0SimpleServerTestCase.test_non_existing_multicall  s<   	E%c**A!+A..I((***Y[[F V^A.{;Q???V^A.}=#$ $ $ $ $ '1 	E 	E 	E+A.. E		aaaIr)B)B)BCDDDDDDDDDE E E E E E	Es   BB C<38C77C<c                     |                      t          t          j        j        t
          d           |                     t          j                            t
          d                     |                                  d S rF  )ra   rI  r   r   rJ  rI   r   r.  rc   s    r.   rK  z*SimpleServerTestCase.test_dotted_attribute  sk    . -@#w	P 	P 	P 	>>sGLLMMM 	r0   c                     t          j        dt          t          fz            }|j                                        }|                     |d           d S )Nhttp://%s:%d/RPC2r  )r&   r   r  r  r  r  r*   )r+   r   r   s      r.   test_allow_dotted_names_truez1SimpleServerTestCase.test_allow_dotted_names_true  sK    &':dD\'IJJ~%%''t$$$$$r0   c                     t          j        dt          t          fz            }|                     |                    dd          d           d S )Nrh  r      éu   aé)r&   r   r  r  r*   r  r+   r   s     r.   test_unicode_hostz&SimpleServerTestCase.test_unicode_host  sF    &':dD\'IJJC00':::::r0   c                    t          j        t          j        t          t
          f                    5 }|                    dt           dt
           d                    d                     d d d            d S # 1 swxY w Y   d S )Nz@POST /RPC2 HTTP/1.0
Content-Length: 100

bye HTTP/1.1
Host: :z2
Accept-Encoding: identity
Content-Length: 0

rz  )r?  r@  r   create_connectionr  r  sendr   )r+   rE  s     r.   test_partial_postz&SimpleServerTestCase.test_partial_post  s     8$ F FGG 	C4II 2  $2 2 '+2 2 2
 39&//C C C	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	C 	Cs   :A::A>A>c                 $   t          j        t                    5 }|                    dd           |                      |d          j        d           d d d            n# 1 swxY w Y   |                      |d          j        d           d S )Nr   rg   	transportr  )r&   r   r  r  assertNotEqual_connectionr*   rl  s     r.   test_context_managerz)SimpleServerTestCase.test_context_manager  s    "3'' 	.6JJq!{ 3 3 ? ,. . .	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	. 	,,8%	' 	' 	' 	' 	's   ;A!!A%(A%c                 
   	 t          j        t                    5 }|                    dd           d d d            n# 1 swxY w Y   n# t           j        $ r Y nw xY w|                      |d          j        d           d S )Nr   r   rt  r  )r&   r   r  r  r<  r*   rv  rl  s     r.   !test_context_manager_method_errorz6SimpleServerTestCase.test_context_manager_method_error  s    	&s++ #v

1c"""# # # # # # # # # # # # # # # 	 	 	D	,,8%	' 	' 	' 	' 	's1   A
 >A
 AA
 AA
 
AAN)rQ   rR   rS   r.  r3  r9  r<  rF  rL  rQ  r  r~   flagsoptimizerU  rY  ra  re  rK  ri  rm  rr  rw  ry  rT   r0   r.   r'  r'  "  sc       E E EE E EE E EE E E7 7 7E E E 
E 
E 
E SY/14@B B
E 
EB B
EE E EE E E"E E E*  % % %; ; ;C C C' ' '' ' ' ' 'r0   r'  c                   ,    e Zd Zedd            Zd ZdS )SimpleServerEncodingTestCaseNc                 *    t          | ||d           d S )Nr   )r  )r  r  r  r   s       r.   r  z'SimpleServerEncodingTestCase.threadFunc  s    CnmDDDDDr0   c           
      j   d}d}	 t          j        t                    }|                     |                    ||          ||z              d S # t           j        t          j        f$ rI}t          |          s/| 	                    |dt          |dd                     Y d }~d S Y d }~d S d }~ww xY w)Nr5  r6  r*  r   r  r7  r0  s        r.   test_server_encodingz1SimpleServerEncodingTestCase.test_server_encoding  s    
	E%c**AQUU<<<)J68 8 8 8 8'6 	E 	E 	E+A.. E		aaaIr)B)B)BCDDDDDDDDDE E E E E E	Es   AA B2)8B--B2r  )rQ   rR   rS   r  r  r  rT   r0   r.   r}  r}    sJ        E E E \EE E E E Er0   r}  c                   j    e Zd Z ee          ZdZd Zd Zd Z	d Z
d Zd Zd Zd	 Zd
 Zd Zd ZdS )MultiPathServerTestCaser   c                     t          j        t          dz             }|                     |                    dd          d           |                     t           j        |j        dd           d S )Nr  rc  rq  r)  )r&   r   r  r*   r  ra   r<  r  r+   r   s     r.   
test_path1z"MultiPathServerTestCase.test_path1   s\    !#f*--qT***)/15!Q77777r0   c                     t          j        t          dz             }|                     |                    dd          d           |                     t           j        |j        dd           d S )Nr  rc  rq     )r&   r   r  r*   r  ra   r<  r  r  s     r.   
test_path2z"MultiPathServerTestCase.test_path2  s\    !#j.11qS))))/15!Q77777r0   c                     t          j        t          dz             }|                     t           j        |j        dd           d S )Nr  rc  rq  r&   r   r  ra   r<  r  r  s     r.   
test_path3z"MultiPathServerTestCase.test_path3
  s;    !#l"233)/15!Q77777r0   c                     t          j        t          dz             }|                     t           j        |j        dd           d S )Nz/invalidrc  rq  r  r  s     r.   test_invalid_pathz)MultiPathServerTestCase.test_invalid_path  s:    !#j.11)/15!Q77777r0   c                     t          j        t          dz             }|                     |                                d           d S )Nr  r&   r   r  r*   r  r  s     r.   test_path_query_fragmentz0MultiPathServerTestCase.test_path_query_fragment  s;    !#o"566?33333r0   c                     t          j        t          dz             }|                     |                                d           d S )Nr  r  r  s     r.   test_path_fragmentz*MultiPathServerTestCase.test_path_fragment  s:    !#k/22;/////r0   c                     t          j        t          dz             }|                     |                                d           d S )Nr  r  r  s     r.   test_path_queryz'MultiPathServerTestCase.test_path_query  s:    !#j.11:.....r0   c                     t          j        t                    }|                     |                                d           d S )Nr  r  r  s     r.   test_empty_pathz'MultiPathServerTestCase.test_empty_path  s6    !#&&7+++++r0   c                     t          j        t          dz             }|                     |                                d           d S )Nr  r  r  s     r.   test_root_pathz&MultiPathServerTestCase.test_root_path"  s:    !#),,3'''''r0   c                     t          j        t          dz             }|                     |                                d           d S )Nr  r  r  s     r.   test_empty_path_queryz-MultiPathServerTestCase.test_empty_path_query&  s:    !#,//6*****r0   c                     t          j        t          dz             }|                     |                                d           d S )Nr  r  r  s     r.   test_empty_path_fragmentz0MultiPathServerTestCase.test_empty_path_fragment*  s:    !#-007+++++r0   N)rQ   rR   rS   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rT   r0   r.   r  r    s        /00JM8 8 8
8 8 8
8 8 88 8 84 4 40 0 0/ / /, , ,( ( (+ + +, , , , ,r0   r  c                   H    e Zd Z G d dej        j                  ZeZd ZdS )BaseKeepaliveServerTestCasec                   :    e Zd Zej        j        ZdZg Zd Z	d Z
dS )*BaseKeepaliveServerTestCase.RequestHandlerr   c                     | j                             g            t          | j                   dz
  | _        | j                            |           S r   )
myRequestsrn   r   reqidxparentClasshandlerc   s    r.   r  z1BaseKeepaliveServerTestCase.RequestHandler.handle8  sE    O""2&&&do..q0DK#**4000r0   c                     | j                             |           }| j        | j                                     | j                   |S rz   )r  handle_one_requestr  r  rn   raw_requestline)r+   r>   s     r.   r  z=BaseKeepaliveServerTestCase.RequestHandler.handle_one_request<  s=    %88>>FODK(//0DEEEMr0   N)rQ   rR   rS   r   r   r  r  r   r  r  r  rT   r0   r.   r   r  4  sG        m>%
	1 	1 	1	 	 	 	 	r0   r   c                 N    g | j         _        t                              |           S rz   )r   r  r  r"  rc   s    r.   r"  z!BaseKeepaliveServerTestCase.setUpB  s!    )+&!''---r0   N)	rQ   rR   rS   r   r   r  r   r  r"  rT   r0   r.   r  r  1  sY            A    $N. . . . .r0   r  c                       e Zd Zd ZdS )KeepaliveServerTestCase1c                    t          j        t                    }|                     |                    dd          d           |                     |                    dd          d           |                     |                    dd          d             |d                       |                     t          | j        j                  d           |                     t          | j        j        d                   d           d S )Nrc  rq  r)  r  r   r   r   	r&   r   r  r*   r  r   r   r  assertGreaterEqualr  s     r.   test_twoz!KeepaliveServerTestCase1.test_twoJ  s    !#&&qT***qT***qT***'

 	T0;<<a@@@ 	D$7$B2$F G GKKKKKr0   N)rQ   rR   rS   r  rT   r0   r.   r  r  I  s(        L L L L Lr0   r  c                       e Zd ZdZd Zd ZdS )KeepaliveServerTestCase2r   c                    t          j        t                    }|                     |                    dd          d           |                     |                    dd          d           |                     |                    dd          d             |d                       |                     |                    dd          d           |                     |                    dd          d           |                     |                    dd          d             |d                       |                     t          | j        j                  d           |                     t          | j        j        d                   d           |                     t          | j        j        d                   d           d S )Nrc  rq  r)  r  r   r   r  r  s     r.   
test_closez#KeepaliveServerTestCase2.test_close`  s   !#&&qT***qT***qT***'

qT***qT***qT***'

 	T0;<<a@@@D$7$B2$F G GKKKD$7$B2$F G GKKKKKr0   c                    t          j        t                    }|                     |                    dd          d            |d                                           |                     |                    dd          d             |d                       |                     t          | j        j                  d           d S )Nrc  rq  r)  rt  r  r   )	r&   r   r  r*   r  r  r   r   r  r  s     r.   test_transportz'KeepaliveServerTestCase2.test_transports  s    !#&&qT***	+qT***'

T0;<<a@@@@@r0   N)rQ   rR   rS   r  r  r  rT   r0   r.   r  r  \  s?        ML L L&A A A A Ar0   r  zrequires gzipc                       e Zd Z G d dej        j                  ZeZ G d dej	                  Z	d Z
d Zd Zd Zd	S )
GzipServerTestCasec                   0    e Zd Zej        j        ZdZd ZdS )!GzipServerTestCase.RequestHandlerr   c                 ~    t          | j        d                   | j        _        | j                            |           S )Ncontent-length)r   r   	__class__content_lengthr  r   rc   s    r.   r   z)GzipServerTestCase.RequestHandler.do_POST  s3    ,/=M0N,O,ODN)#++D111r0   N)	rQ   rR   rS   r   r   r  r  r   r   rT   r0   r.   r   r    s3        m>%	2 	2 	2 	2 	2r0   r   c                       e Zd ZdZd Zd ZdS )GzipServerTestCase.TransportFc                     t          |                    dd                    | _        t          j                            | |          S )Nr  r   )r   	getheaderresponse_lengthr&   r   parse_response)r+   r   s     r.   r  z+GzipServerTestCase.Transport.parse_response  s<    !$X%7%78H!%L%L!M!MD &55dHEEEr0   c                 ~    | j         r|                    dd           t          j                            | ||          S )NzContent-Encodinggzip)	fake_gzip	putheaderr&   r   send_content)r+   
connectionbodys      r.   r  z)GzipServerTestCase.Transport.send_content  s?    ~ A$$%7@@@&33D*dKKKr0   N)rQ   rR   rS   r  r  r  rT   r0   r.   r   r    s?        		F 	F 	F	L 	L 	L 	L 	Lr0   r   c                 :    t                               |            d S rz   )r  r"  rc   s    r.   r"  zGzipServerTestCase.setUp  s      &&&&&r0   c                    |                                  }d |_        t          j        t          |          }|                     |                    dd          d           | j        j        }d|_        |                     |                    dd          d           | j        j        }| 	                    ||k                 |d                       d S Nrt  rc  rq  r)  r   r  )
r   encode_thresholdr&   r   r  r*   r  r   r  r   )r+   r\   r   r   r   s        r.   test_gzip_requestz$GzipServerTestCase.test_gzip_request  s    NN!!#333qT***.qT***.!'

r0   c                 j   |                                  }d |_        d|_        t          j        t
          |          }|                     t          j        t          j	        d                    }|5  |
                    dd           d d d            n# 1 swxY w Y     |d                       d S )NTr  z\b400\brc  rq  r  )r   r  r  r&   r   r  r+  r  recompiler  )r+   r\   r   cms       r.   test_bad_gzip_requestz(GzipServerTestCase.test_bad_gzip_request  s    NN!!#333##I$;$&Jz$:$:< < 	 	EE!QKKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	'

s   2BBBc                    |                                  }t          j        t          |          }| j        j        }d | j        _        |                     |                    dd          d           |j        }d| j        _        |                     |                    dd          d             |d                       |j        }|| j        _        | 	                    ||k               d S r  )
r   r&   r   r  r  r  r*   r  r  r   )r+   r\   r   oldr   r   s         r.   test_gzip_responsez%GzipServerTestCase.test_gzip_response  s    NN!#333!2/3,qT***/0,qT***'

/2,!r0   N)rQ   rR   rS   r   r   r  r   r  r&   r   r"  r  r  r  rT   r0   r.   r  r  ~  s        2 2 2 2 2A 2 2 2 $NL L L L LI' L L L' ' '
 
 
	 	 	    r0   r  c                       e Zd Zd ZdS )GzipUtilTestCasec                    d}d|z  }t          j        |          }t          j        |          }|                     t	          |          |           d|dz   z  }t          j        |          }|                     t          d          5  t          j        |           d d d            n# 1 swxY w Y   t          j        |d           d S )Ni  @    r   z#max gzipped payload length exceededr   )
max_decode)r&   gzip_encodegzip_decoder*   r   r+  r   )r+   max_gzip_decoder   encodeddecodeds        r.   test_gzip_decode_limitz'GzipUtilTestCase.test_gzip_decode_limit  s   *&'--'00W777!+,'--##J$IK K 	+ 	+!'***	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	g"555555s   
B++B/2B/N)rQ   rR   rS   r  rT   r0   r.   r  r    s#        6 6 6 6 6r0   r  c                   ~     e Zd Z G d dej        j                  ZeZg dZ fdZ	d Z
d Zd Zd Zd	 Zd
 Z xZS )HeadersServerTestCasec                   "     e Zd ZdZ fdZ xZS )$HeadersServerTestCase.RequestHandlerNc                 f    | j         | j        _        t                                                      S rz   )r   r  test_headerssuperr   r+   r  s    r.   r   z,HeadersServerTestCase.RequestHandler.do_POST  s#    *.,DN'77??$$$r0   )rQ   rR   rS   r  r   __classcell__r  s   @r.   r   r    s=        	% 	% 	% 	% 	% 	% 	% 	% 	%r0   r   )HostzAccept-EncodingzContent-Typez
User-Agentr   c                 \    d | j         _        t                                                      S rz   )r   r  r  r"  r  s    r.   r"  zHeadersServerTestCase.setUp  s     +/(ww}}r0   c                 b   t          | j        t          |                                          z             }|                     t          |                                          |           |                                D ].\  }}|                     |                    |          |           /d S rz   )sortedstandard_headerslistkeysassertListEqualitemsr*   r   )r+   r   
additionalexpected_keyskeyrH   s         r.   assertContainsAdditionalHeadersz5HeadersServerTestCase.assertContainsAdditionalHeaders  s    t4tJOO<M<M7N7NNOOVGLLNN33]CCC$**,, 	6 	6JCW[[--u5555	6 	6r0   c                     t          j        t          dg          }|                     |                    dd          d           | j        j        }|                     |ddi           d S )NX-Testfoor   rc  rq  r)  r  r  r&   r   r  r*   r  r   r  r  r+   r   r   s      r.   test_headerz!HeadersServerTestCase.test_header  si    !#0A/BCCCq!d+++%2,,Wx6GHHHHHr0   c                     t          j        t          ddg          }|                     |                    dd          d           | j        j        }|                     |ddd	           d S )
Nr  )X-Test-Secondbarr   rc  rq  r)  r  r  )r  r  r  r  s      r.   test_header_manyz&HeadersServerTestCase.test_header_many  s    !+-EFH H Hq!d+++%2,,>>	@ 	@ 	@ 	@ 	@r0   c                     t          j        t          g           }|                     |                    dd          d           | j        j        }|                     |i            d S )Nr   rc  rq  r)  r  r  s      r.   test_header_emptyz'HeadersServerTestCase.test_header_empty  s`    !#r222q!d+++%2,,Wb99999r0   c                     t          j        t          d          }|                     |                    dd          d           | j        j        }|                     |ddi           d S )N)r  r   rc  rq  r)  r  r  r  r  s      r.   test_header_tuplez'HeadersServerTestCase.test_header_tuple  sf    !#/CDDDq!d+++%2,,Wx6GHHHHHr0   c                     t          j        t          ddi                                          }|                     |                    dd          d           | j        j        }|                     |ddi           d S )Nr  r  r   rc  rq  r)  )	r&   r   r  r  r*   r  r   r  r  r  s      r.   test_header_itemsz'HeadersServerTestCase.test_header_items  sv    !#%/@/F/F/H/HIIIq!d+++%2,,Wx6GHHHHHr0   )rQ   rR   rS   r   r   r  r   r  r  r"  r  r  r  r	  r  r  r  r  s   @r.   r  r    s        % % % % %A % % % $N      6 6 6I I I@ @ @: : :I I II I I I I I Ir0   r  c                        e Zd Zd Zd Zd ZdS )ServerProxyTestCasec                 R    t           j                            |            d| _        d S )Nzhttp://fake.localhost)r  TestCaser"  r   rc   s    r.   r"  zServerProxyTestCase.setUp  s&    %%% +r0   c                     t          j        | j                  }|                       |d                      d            d S )Nr  )r&   r   r   r*   r  s     r.   r  zServerProxyTestCase.test_close  s>    !$(++7t,,,,,r0   c                     t          j                    }t          j        | j        |          }|                      |d          |           d S )Nr  rt  )r&   r   r   r   r*   )r+   r\   r   s      r.   r  z"ServerProxyTestCase.test_transport  sK    !!!$(a888;+++++r0   N)rQ   rR   rS   r"  r  r  rT   r0   r.   r  r    sA        + + +- - -, , , , ,r0   r  c                         e Zd Zd fd	Z xZS )FailingMessageClassNc                     |                                 }|dk    rdS t                                          ||          S )Nr  zI am broken)r  r  r   )r+   r  failobjr  s      r.   r   zFailingMessageClass.get(  s9    iikk""" =ww{{3(((r0   rz   )rQ   rR   rS   r   r  r  s   @r.   r  r  '  s=        ) ) ) ) ) ) ) ) ) )r0   r  c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )FailingServerTestCasec                 >   t          j                    | _        | j        df}t          j        t          |          }|                                 |                     |j                   | j                                         | j        	                                 d S )Nr   r  )
r   r  r  r   r  r   r   r   r  r  r   s      r.   r"  zFailingServerTestCase.setUp0  s{    ?$$XqM	!9EEE$$$ 	r0   c                     | j                                          dt          j        j        _        t          j        j        }|t          j        j	        _
        d S r$  )r  r  r   r   r  r  r   r   HTTPMessager  MessageClass)r+   default_classs     r.   r%  zFailingServerTestCase.tearDown<  s;    BG(?/@M0===r0   c           
         t           j        j        j        }|                     |d           dt           j        j        _        	 t          j        t                    }|                     |                    dd          d           d S # t
          j	        t          f$ rI}t          |          s/|                     |dt          |dd                     Y d }~d S Y d }~d S d }~ww xY w)	NFTrc  rq  r)  r*  r   r  )r   r   r  r  r*   r&   r   r  r  r  r   r  r+  r,  )r+   flagvalr   r  s       r.   
test_basicz FailingServerTestCase.test_basicE  s   -2I%((( CG(?	E%c**AQUU1QZZ.....'1 	E 	E 	E+A.. E		aaaIr)B)B)BCDDDDDDDDDE E E E E E	Es   AB	 	C(8C##C(c                     t           t          j        j        _        	 t          j        t                    }|                    dd           | 	                    d           d S # t
          j
        t          f$ r}t          |          stt          |d          rj|                     |j                            d          d u            |                     |j                            d          d u            Y d }~d S Y d }~d S Y d }~d S d }~ww xY w)Nrc  rq  ProtocolError not raisedr   r  X-traceback)r  r   r   r  r  r&   r   r  r  r+  r  r   r  hasattrr   r   r   r-  s      r.   test_fail_no_infoz'FailingServerTestCase.test_fail_no_infoW  sD   @S0=
	2%c**AEE!AJJJ II011111 '1 	F 	F 	F+A.. F71i3H3H F	m < < DEEE	m < < DEEEEEEEEEF F F F F F F F F F F F	Fs   /A# #D9A=DDc                 N   t           t          j        j        _        dt          j        j        _        	 t          j        t                    }|
                    dd           |                     d           d S # t          j        t          f$ r}t          |          sut          |d          rkd}|                     |j                            d          |           |                     |j                            d          d u           Y d }~d S Y d }~d S Y d }~d S d }~ww xY w)	NTrc  rq  r#  r   z5invalid literal for int() with base 10: 'I am broken'r  r$  )r  r   r   r  r  r  r  r&   r   r  r  r+  r  r   r  r%  r*   r   r   r   )r+   r   r  expected_errs       r.   test_fail_with_infoz)FailingServerTestCase.test_fail_with_infog  sY   @S0= CG(?	2%c**AEE!AJJJ II011111 '1 	J 	J 	J+A.. J71i3H3H JV  }!=!=|LLL	m < <D HIIIIIIIII	J J J J J J J J J J J J	Js   /A9 9D$A>DD$N)rQ   rR   rS   r"  r%  r!  r&  r)  rT   r0   r.   r  r  /  se        
 
 
N N NE E E$2 2 2 2 2 2 2 2r0   r  utf-8c              #      K   t           j        }t          j        t          j                    |           t           _        	 t           j        V  |t           _        dS # |t           _        w xY w)zhA variation on support.captured_stdout() which gives a text stream
    having a `buffer` attribute.
    r   N)r~   stdoutioTextIOWrapperBytesIO)r   orig_stdouts     r.   captured_stdoutr1  }  s]      
 *K!"*,,BBBCJ!j 


[
    s   A A+c                   &    e Zd Zd Zd Zd Zd ZdS )CGIHandlerTestCasec                 L    t           j                                        | _        d S rz   )r   r   CGIXMLRPCRequestHandlercgirc   s    r.   r"  zCGIHandlerTestCase.setUp  s    =88::r0   c                     d | _         d S rz   )r6  rc   s    r.   r%  zCGIHandlerTestCase.tearDown  s    r0   c                 :   t          j                    5 }d|d<   t          | j        j                  5 }| j                                         d d d            n# 1 swxY w Y   |                    d           |                                }|                                d         }d	                    |                                dd                   }| 
                    |d	           | 
                    |d
           d d d            d S # 1 swxY w Y   d S )NGETREQUEST_METHODr   r   r    r   rl   400zBad Request)r   EnvironmentVarGuardr1  r6  r   r   seekr   splitr   r*   )r+   envdata_outr  rD  messages         r.   test_cgi_getzCGIHandlerTestCase.test_cgi_get  s|   *,, 	5$)C ! !$(*;<<< *'')))* * * * * * * * * * * * * * * MM!]]__F\\^^A&Fhhv||~~ac233GVU+++Wm444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5s5    DADA	D!A	"B!DDDc                 |   d}t          j                    5 }t          | j        j                  5 }t          j                    5 }|                    |           |                    d           t          t          |                    |d<   | j                                         d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |                    d           |                                }|                     t          j        t          j        |dd                     ||                    d          d          }|                     t'          t)          j        d|                              d                    t          |                     d S )	Naw  <?xml version='1.0'?>
        <methodCall>
            <methodName>test_method</methodName>
            <params>
                <param>
                    <value><string>foo</string></value>
                </param>
                <param>
                    <value><string>bar</string></value>
                </param>
            </params>
        </methodCall>
        r   r   CONTENT_LENGTH,   z<?xmlzContent-Length: (\d+)r   )r   r=  r1  r6  r   r   captured_stdinr   r>  rI   r   r   r   ra   r&   r<  r)   findr*   r   r  searchgroup)r+   r   r@  rA  data_inr  contents          r.   test_cgi_xmlrpc_responsez+CGIHandlerTestCase.test_cgi_xmlrpc_response  s;    *,, 	&dh&7888	&<D#%%	&)0MM$LLOOO$'D		NNC !H##%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	a  	)/9?F233KHHH W--../	2F;;AA!DDEELL	 	 	 	 	sY   C"CA#B4(C4B88C;B8<C?C"C	C"C	C""C&)C&N)rQ   rR   rS   r"  r%  rC  rM  rT   r0   r.   r3  r3    sP        ; ; ;  5 5 5$( ( ( ( (r0   r3  c                        e Zd Zd Zd Zd ZdS )UseBuiltinTypesTestCasec                 d    g  _         d}t          j        dddddd          }t          j        ||fd          } fd	}t          j                            d
d d
          }|                    |           |                    |            	                    t           j                   d            j         \  }} 	                     j         ||g                                t          |          t          j                                        t          |          t                     d S )Nr   i  rm               foobarc                  <    j                             |            d S rz   )logextend)r   r+   s    r.   rU  z>UseBuiltinTypesTestCase.test_use_builtin_types.<locals>.foobar  s    HOOD!!!!!r0   T)r   r   r3   r   )rW  r6   r&   r'   r   r   r  r  r  r*   r   r8   r9   r   )r+   expected_bytesexpected_date	marshaledrU  handlermybytesmydates   `       r.   test_use_builtin_typesz.UseBuiltinTypesTestCase.test_use_builtin_types  s*    , )$2r2rBBO^]$CXNN		" 	" 	" 	" 	"-66dd 7 D D!!&)))##I...TX***(NM#BCCCd6llH$5666d7mmU+++++r0   c                 z    t           j                            d          }|                     |j                   d S )NTr2   )r   r   r5  r   r3   )r+   r\  s     r.   *test_cgihandler_has_use_builtin_types_flagzBUseBuiltinTypesTestCase.test_cgihandler_has_use_builtin_types_flag  s5    -77$7OO122222r0   c                     t           j                            dd          }|                                 |                     |j                   d S )Nr  Tr2   )r   r   r  r   r   r3   rl  s     r.   ,test_xmlrpcserver_has_use_builtin_types_flagzDUseBuiltinTypesTestCase.test_xmlrpcserver_has_use_builtin_types_flag  sQ    112B" 2 $ $011111r0   N)rQ   rR   rS   r_  ra  rc  rT   r0   r.   rO  rO    sA        , , ,(3 3 32 2 2 2 2r0   rO  c                  d    t          j                    } t          j        t           j        g| R   d S rz   )r   threading_setupr  addModuleCleanupthreading_cleanup)thread_infos    r.   setUpModuleri    s3    "244K.@O;OOOOOOr0   __main__r  rz   )r*  )Hr  r6   r   r~   rV  r  r   xmlrpc.clientr   r&   xmlrpc.serverr   http.clientr   http.serverr   r   r  r-  r?  r  r   test.supportr   r   r   r   r	   r
   r  r   requires_working_socketr   r   r7   r(   r  r$   r  r4  r9  rM  r  r  r  r  r  r  r  r  r  r'  r}  r  r  r  r  skipIfr  r  r  r  r  r  r  contextmanagerr1  r3  rO  ri  rQ   mainrT   r0   r.   <module>rt     s"      



         ! ! ! ! ! !                      				 				           " " " " " " & & & & & & ) ) ) ) ) ) 5 5 5 5 5 5 5 5 5 5KKKK   DDD   t , , , ,'#%Y%&9::)#)$788)')y)*=>>)y);= =)y)))$2r2rBBD D
 
 	$x, x, x, x, x,X& x, x, x,v	T7 T7 T7 T7 T7X%6 T7 T7 T7n< < < < <X& < < <N N N N NH% N N N.\+ \+ \+ \+ \+x( \+ \+ \+~5 5 5 5 5X& 5 5 56   tc
> > > >@D D D DP  "   H H H H H* H H H6D' D' D' D' D'- D' D' D'NE E E E E#5 E E E(/, /, /, /, /,0 /, /, /,h. . . . ."4 . . .0L L L L L: L L L&A A A A A: A A AD //@ @ @ @ @+ @ @ 0/@F //6 6 6 6 6x( 6 6 0/6&:I :I :I :I :I. :I :I :I|, , , , ,(+ , , ,&) ) ) ) )$+1 ) ) )K2 K2 K2 K2 K2H- K2 K2 K2\ 	! 	! 	! 	!A A A A A* A A AH2 2 2 2 2h/ 2 2 2BP P P
 zHMOOOOO s   ,A1 1A;:A;