a 5êdg@æã@s ddlZddlZddlZddlZddlZddlZddlmZddlmZ ddl Z ddl Z ddl Z ddlZ ddlZddlZddlZddlZddlZddlmZddlmZddlmZmZmZz ddlZWneyÞdZYn0dddd d ge  d ¡d ed ƒd d de  d¡e  d¡e  e dd dddd¡¡dœgZ Gdd„dej!ƒZ"Gdd„dej!ƒZ#Gdd„dej!ƒZ$Gdd„dej!ƒZ%Gdd „d ej!ƒZ&Gd!d"„d"ej!ƒZ'da(a)a*dPd#d$„Z+dQd%d&„Z,d'd(„Z-d)d*„Z.Gd+d,„d,ej!ƒZ/Gd-d.„d.e/ƒZ0Gd/d0„d0e/ƒZ1Gd1d2„d2e/ƒZ2Gd3d4„d4e/ƒZ3Gd5d6„d6e3ƒZ4Gd7d8„d8e3ƒZ5e 6edud9¡Gd:d;„d;e/ƒƒZ7e 6edud9¡Gdd?„d?e/ƒZ9Gd@dA„dAej!ƒZ:GdBdC„dCe jj;ƒZdRdGdH„ƒZ?GdIdJ„dJej!ƒZ@GdKdL„dLej!ƒZAejBdMdN„ƒZCeDdOkreCƒdS)SéN)Úmock)Úsupport)Ú socket_helper)Ú ALWAYS_EQÚLARGESTÚSMALLESTzfoo@bar.baz.spamgHázns¼@iéz.zyx.41ómy dog has fleasFu 䀀怀耀z regular valueú20050210T11:41:23) éÕré é é)érééÿÿÿÿr r r rr)ZastringZafloatZanintZ ashortlongZ anotherlistZabase64Zb64bytesZ b64bytearrayZbooleanÚunicodeuukey䀀Z datetime1Z datetime2Z datetime3c@s´eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„Zdd „Zd!d"„Zd#d$„Zd%d&„Zd'd(„Zd)d*„Zd+S),ÚXMLRPCTestCasecCs.t tf¡}t |¡}| t|dd¡dS)Nr)Ú xmlrpclibÚdumpsÚalistÚloadsÚ assertEqual)ÚselfÚdumpÚload©rú,/usr/local/lib/python3.9/test/test_xmlrpc.pyÚtest_dump_load.s  zXMLRPCTestCase.test_dump_loadcCs6t dddddd¡}| |t d¡¡t |f¡}tj|dd \}}|\}| ||¡| t|ƒtj¡| |¡tj|d d \}}|\}| ||¡| t|ƒtj¡| |¡tj|dd \}}|\}| ||¡| t|ƒtj¡| |¡tj|d d \}}|\}| ||¡| t|ƒtj¡| |¡dS) Nr rr r rrr T©Úuse_builtin_typesF)Z use_datetime© ÚdatetimerrÚDateTimerrÚassertIsÚtypeÚ assertIsNone©rZdtÚsÚresultÚmZnewdtrrrÚtest_dump_bare_datetime3s.        z&XMLRPCTestCase.test_dump_bare_datetimecCs¶t dddddd¡}| |t d¡¡t |f¡}tj|dd \}}|\}| ||¡| t|ƒtj¡| |¡tj|d d \}}|\}| ||¡| t|ƒtj¡| |¡dS) Nrrr r rrz00010210T11:41:23TrFr!r'rrrÚtest_datetime_before_1900Us    z(XMLRPCTestCase.test_datetime_before_1900cCsRt ¡}t tj|fdd¡\\}}| |jt¡tj|fdd}| |t¡dS)NT©Úmethodresponse)rr#rrZassertIsInstanceÚvalueÚstr)rÚdZnew_dÚdummyr(rrrÚtest_bug_1164912gs ÿzXMLRPCTestCase.test_bug_1164912cCsLGdd„dtƒ}|ƒ}d|_d|_t t |f¡¡\\}}| ||j¡dS)Nc@s eZdZdS)z-XMLRPCTestCase.test_newstyle_class..TN©Ú__name__Ú __module__Ú __qualname__rrrrÚTrsr8édZHello)ÚobjectÚxÚyrrrrÚ__dict__)rr8ÚtÚt2r2rrrÚtest_newstyle_classqs z"XMLRPCTestCase.test_newstyle_classcCs| ttjddf¡dS)Nréc)Ú assertRaisesÚ OverflowErrorrr©rrrrÚtest_dump_big_longzsz!XMLRPCTestCase.test_dump_big_longcCs| ttjddif¡dS)N©rrér©rBÚ TypeErrorrrrDrrrÚtest_dump_bad_dict}sz!XMLRPCTestCase.test_dump_bad_dictcCs4gd¢}ddd|g}| |¡| ttj|f¡dS)NrFrGéé)ÚappendrBrIrr)rÚlr>rrrÚtest_dump_recursive_seq€s  z&XMLRPCTestCase.test_dump_recursive_seqcCs2dddœ}d|dœ}||d<| ttj|f¡dS)Nr)Ú1Ú2rG)Ú3r1r>rH©rr1r>rrrÚtest_dump_recursive_dict†s  z'XMLRPCTestCase.test_dump_recursive_dictcCsÂtjdkr | ttjtdƒf¡t tjtjf¡| ttjtjdf¡| ttjtjdf¡dd„}t  ¡}|  tj|¡|  tj|¡| t|j tjd|¡| t|j tjd|¡dS)NiÿÿÿìrcSsdS©Nr©r(rrrÚ dummy_write—sz5XMLRPCTestCase.test_dump_big_int..dummy_write) ÚsysÚmaxsizerBrCrrÚintÚMAXINTÚMININTÚ MarshallerZdump_int©rrXr*rrrÚtest_dump_big_intŒs*  ÿ  ÿ  ÿ  ÿ  ÿz XMLRPCTestCase.test_dump_big_intcCs t tdƒf¡t ttjƒttjƒf¡t ttjdƒttjdƒf¡dd„}t ¡}| tj|¡| tj|¡| tjd|¡| tjd|¡dS)NrUé*cSsdSrVrrWrrrrX©sz4XMLRPCTestCase.test_dump_double..dummy_write)rrÚfloatr\r]r^Z dump_doubler_rrrÚtest_dump_double¢s ÿ ÿzXMLRPCTestCase.test_dump_doublecCsTtdg}tdgf}tj|dd}| |t |¡dd¡| ttj|f¡dS)NT)Ú allow_noner)rrrrrrBrI)rr/Zarg1ÚstrgrrrÚtest_dump_none²s  ÿzXMLRPCTestCase.test_dump_nonecCsüddi}tj|fdd}d|}| t |¡dd|¡| dd¡}| t |¡dd|¡tj|fddd }| t |¡dd|¡| dd¡}| t |¡dd|¡d }tj|fd|d }| t |¡dd|¡| t |¡d |¡dS) Nukey€¤u value€¤ú iso-8859-15©Úencodingz,rÚxmlcharrefreplaceT)rir.u method€¤)riÚ methodnamer)rrrrÚencode)rr/rerkrrrÚtest_dump_encodingºs(ÿ  ÿ  ÿz!XMLRPCTestCase.test_dump_encodingcCs¾d}| |t |¡¡tttjfD]–}||ƒ}t |f¡}tj|dd\}}|\}| ||¡| t|ƒt¡|  |¡tj|dd\}}|\}| ||¡| t|ƒtj¡|  |¡q"dS)Nr TrF) rrÚBinaryÚbytesÚ bytearrayrrr$r%r&)rÚsampleÚtype_r/r(r)r*ÚnewvaluerrrÚtest_dump_bytesÏs    zXMLRPCTestCase.test_dump_bytescCsFtj}d}| |tj|¡d}| |tj|¡d}| |tj|¡dS)Nz6zTab)rÚ ResponseErrorrBr)rruÚdatarrrÚtest_loads_unsupportedâsz%XMLRPCTestCase.test_loads_unsupportedcKsRd|}tj|fi|¤Ž\}}|\}| ||¡| t|ƒt|ƒ¡| |¡dS)Nz1%s)rrrr$r%r&)rr(r/Úkwargsrr)r*rsrrrÚ check_loadsðs  zXMLRPCTestCase.check_loadsc CsÄ|j}|ddƒ|ddƒ|ddƒ|ddƒ|ddƒ|d dƒ|d d ƒ|d d ƒ|dt d¡ƒ|dddd|dt d¡ƒ|dt dddddd¡dd|dddgƒ|ddddœƒdS)NÚstringzstringu4ð”˜ð”«ð”¦ð” ð”¬ð”¡ð”¢ stringu#ð”˜ð”«ð”¦ð” ð”¬ð”¡ð”¢ stringz2056183947i‹àŽzz-2056183947iuq…z2056183947z46093.78125g¹æ@z0Fz%AGJ5dGUgc3RyaW5n/w==s byte stringÿTrz620050210T11:41:23r r rr r rrzR12rz…b2a1)ÚaÚb)ryrrnr#r"©rÚcheckrrrÚtest_load_standard_typesøs8        ÿÿÿþþýz'XMLRPCTestCase.test_load_standard_typescCs`|j}|ddƒ|ddƒ|ddƒ|ddƒ|ddƒ|d d ƒ|d d ƒ|d t d¡ƒdS)Nzz z 205éÍz20561iQPz9876543210lê` z-98765432100123456789l5¤?Ú4*UUz93.78125grW@z.9876543210.0123456789z9876543210.0123456789)ryÚdecimalZDecimalr}rrrÚtest_load_extension_typess     ÿ ÿz(XMLRPCTestCase.test_load_extension_typescCs(tj ¡}| | d¡ddgif¡dS)Nz user@host.tldzhost.tld)Z AuthorizationzBasic dXNlcg==)ÚxmlrpcÚclientÚ TransportrZ get_host_info)rZtransprrrÚtest_get_host_info s   ÿÿz!XMLRPCTestCase.test_get_host_infocCszz ddl}Wnty"d}Yn0d}ztj d¡ ¡Wn8tyZ| |d¡Yntyt|  |¡Yn0dS)NrFTzhttps://localhost:9999z&xmlrpc client's error with SSL support) ÚsslÚ ImportErrorrƒr„Ú ServerProxyZ bad_functionÚNotImplementedErrorÚ assertFalseÚOSErrorÚ assertTrue)rr‡Zhas_sslrrrÚtest_ssl_presence's     z XMLRPCTestCase.test_ssl_presencecsºGdd„dtjjƒ}‡fdd„}tj tjdf|¡‰| ˆj¡tj |d}|  ¡| |j ¡dj ˆj Ž}t |¡0}| | ¡d¡| | ¡d¡Wdƒn1s¬0YdS) Nc@s$eZdZdZdZdd„Zdd„ZdS)z@XMLRPCTestCase.test_keepalive_disconnect..RequestHandlerúHTTP/1.1FcSs„t|j d¡ƒ}|j |¡|jr,d|_dStjddd}|  ¡}|  t j j ¡| dt|ƒ¡| ¡|j |¡d|_d|_dS)NúContent-LengthT)rLr-F)r[ÚheadersÚgetZrfileÚreadÚhandledZclose_connectionrrrlZ send_responseÚhttpZ HTTPStatusZOKZ send_headerÚlenZ end_headersZwfileÚwrite)rÚlengthÚresponserrrÚdo_POST:s  zHXMLRPCTestCase.test_keepalive_disconnect..RequestHandler.do_POSTcWsdSrVr)rÚformatÚargsrrrÚ log_messageIszLXMLRPCTestCase.test_keepalive_disconnect..RequestHandler.log_messageN)r5r6r7Úprotocol_versionr”ršrrrrrÚRequestHandler6srŸcs$ˆj tdƒ¡ˆ ¡ˆ ¡dS©Nr)ÚsocketÚ settimeoutrbÚhandle_requestr©ÚserverrrÚ run_serverMsz.run_serverr)Útargetz http://{}:{}/rL)r•r¥ZBaseHTTPRequestHandlerZ HTTPServerrZHOSTÚ addCleanupÚ server_closeÚ threadingÚThreadÚstartÚjoinr›Zserver_addressrr‰rÚmethod)rrŸr¦ÚthreadÚurlÚprr¤rÚtest_keepalive_disconnect5s      z(XMLRPCTestCase.test_keepalive_disconnectN)r5r6r7rr+r,r3r@rErJrOrTr`rcrfrmrtrwryrr‚r†rŽr²rrrrr,s*"   rc@sLeZdZGdd„deƒZdd„Zdd„Zdd„Zd d „Zd d „Z d d„Z dS)ÚSimpleXMLRPCDispatcherTestCasec@s eZdZdS)z*SimpleXMLRPCDispatcherTestCase.DispatchExcNr4rrrrÚ DispatchExc^sr´csŽd}‡fdd„}tj ¡}| |¡ˆ ˆj¡}| d|¡Wdƒn1sR0Yˆ |jj |f¡ˆ  |jj ¡ˆ  |jj ¡dS)NrFcsˆ |¡‚dSrV)r´)ÚparamsrDrrÚdispatched_funciszQSimpleXMLRPCDispatcherTestCase.test_call_registered_func..dispatched_funcr¶) rƒr¥ÚSimpleXMLRPCDispatcherÚregister_functionrBr´Ú _dispatchrÚ exceptionrœr&Ú __cause__Ú __context__)rÚ exp_paramsr¶Ú dispatcherÚexc_ctxrrDrÚtest_call_registered_funcbs   *z8SimpleXMLRPCDispatcherTestCase.test_call_registered_funccCs’d}Gdd„dƒ}tj ¡}| |ƒ¡| |j¡}| d|¡Wdƒn1sV0Y| |jj |f¡|  |jj ¡|  |jj ¡dS)NrFc@seZdZdd„ZdS)zOSimpleXMLRPCDispatcherTestCase.test_call_instance_func..DispatchedClasscWst |¡‚dSrV©r³r´)rrµrrrr¶|sz_SimpleXMLRPCDispatcherTestCase.test_call_instance_func..DispatchedClass.dispatched_funcN)r5r6r7r¶rrrrÚDispatchedClass{srÂr¶© rƒr¥r·Úregister_instancerBr´r¹rrºrœr&r»r¼)rr½rÂr¾r¿rrrÚtest_call_instance_functs  *z6SimpleXMLRPCDispatcherTestCase.test_call_instance_funccCs˜d}d}Gdd„dƒ}tj ¡}| |ƒ¡| |j¡}| ||¡Wdƒn1sZ0Y| |jj ||f¡|  |jj ¡|  |jj ¡dS)Nr®rFc@seZdZdd„ZdS)zLSimpleXMLRPCDispatcherTestCase.test_call_dispatch_func..TestInstancecSst ||¡‚dSrVrÁ)rr®rµrrrr¹sÿzVSimpleXMLRPCDispatcherTestCase.test_call_dispatch_func..TestInstance._dispatchN)r5r6r7r¹rrrrÚ TestInstancesrÆrÃ)rZ exp_methodr½rÆr¾r¿rrrÚtest_call_dispatch_func‡s  *z6SimpleXMLRPCDispatcherTestCase.test_call_dispatch_funccCsTtj ¡}|jddd| td¡| dd¡Wdƒn1sF0YdS)Nr®©Úname©Zparam)rƒr¥r·r¸ÚassertRaisesRegexÚ Exceptionr¹©rr¾rrrÚtest_registered_func_is_noneœs z;SimpleXMLRPCDispatcherTestCase.test_registered_func_is_nonecCsRtj ¡}| tƒ¡| td¡| dd¡Wdƒn1sD0YdS©Nr®rÊ)rƒr¥r·rÄr:rËrÌr¹rÍrrrÚtest_instance_has_no_func¤s  z8SimpleXMLRPCDispatcherTestCase.test_instance_has_no_funccCsFtj ¡}| td¡| dd¡Wdƒn1s80YdSrÏ)rƒr¥r·rËrÌr¹rÍrrrÚtest_cannot_locate_func¬s z6SimpleXMLRPCDispatcherTestCase.test_cannot_locate_funcN) r5r6r7rÌr´rÀrÅrÇrÎrÐrÑrrrrr³]sr³c@seZdZdd„ZdS)ÚHelperTestCasecCs:| t d¡d¡| t d¡d¡| t d¡d¡dS)Nza&bza&bzabza>b)rrÚescaperDrrrÚ test_escapeµszHelperTestCase.test_escapeN)r5r6r7rÔrrrrrÒ´srÒc@s$eZdZdd„Zdd„Zdd„ZdS)Ú FaultTestCasecCs4t dd¡}| t|ƒd¡| t|ƒt|ƒ¡dS)Nraú Test Faultz)rÚFaultrÚreprr0)rÚfrrrÚ test_repr»s zFaultTestCase.test_reprcCsjt dd¡}t |f¡}t |¡\\}}| |dddœ¡| |d¡t ¡ |¡}| tjtj|¡dS)NrarÖ)Ú faultCodeÚ faultString)rr×rrrr^rB)rrÙr(Znewfr*rrrÚtest_dump_faultÀs   zFaultTestCase.test_dump_faultcCs,| ttjjtd¡| tj td¡¡dS©NZ__addÚtitle)rBÚAttributeErrorrƒr¥Úresolve_dotted_attributer0rrDrrrÚtest_dotted_attributeÊs ÿz#FaultTestCase.test_dotted_attributeN)r5r6r7rÚrÝrârrrrrÕºs rÕc@sLeZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dS)ÚDateTimeTestCasecCsjt d¡L}t gd¢¡}||_t ¡}t ¡}| t |ƒt  d|¡¡Wdƒn1s\0YdS)Nztime.localtime) iÝééréé1réÄrú%Y%m%dT%H:%M:%S) rZpatchÚtimeÚ struct_timeZ return_valueÚ localtimerr#rr0Ústrftime)rZlocaltime_mockZ time_structrìr>rrrÚ test_defaultÒs ÿ  ÿzDateTimeTestCase.test_defaultc Cs0d}t |¡}| t|ƒt dt |¡¡¡dS©Ngl]‚Þ®šÑAré)rr#rr0rêrírìrSrrrÚ test_timeÜs   ÿzDateTimeTestCase.test_timecCs"d}t |¡}| t|ƒd¡dS)N) é×éé r é&é2rLé rz20070609T10:38:50)rr#rr0rSrrrÚtest_time_tupleâs z DateTimeTestCase.test_time_tuplecCs0t d¡}t |¡}| t|ƒt d|¡¡dSrï)rêrìrr#rr0rírSrrrÚtest_time_structçs  z!DateTimeTestCase.test_time_structcCs2t dddddd¡}t |¡}| t|ƒd¡dS)NrñrrrGrKrLz20070102T03:04:05)r"rr#rr0rSrrrÚtest_datetime_datetimeìs z'DateTimeTestCase.test_datetime_datetimecCs>t dddddd¡}t |¡}dt|ƒ}| t|ƒ|¡dS)NrñrrrGrKrLz%)r"rr#ÚidrrØ)rr1r>ÚvalrrrrÚñs  zDateTimeTestCase.test_reprc CsVd}t ¡}| |¡t t dddddd¡¡}| ||¡t |¡}| ||¡dS)Nz 20070908T07:11:13 rñróérär é )rr#Údecoder"rZ _datetime)rr1Út1Ztrefr?rrrÚ test_decode÷s   zDateTimeTestCase.test_decodecCsftj ¡}t | ¡¡}| ||k¡| ||k¡|tjdd}| ||k¡| ||k¡| d¡}| ||k¡| ||k¡t | ¡¡}| ||k¡| ||k¡| d¡}| ¡}|  |dk¡| ||k¡|  |t |ƒk¡| ||k¡|  t ¡|t dƒkWdƒn1s,0Y|  t ¡||kWdƒn1s`0Y|  t ¡|t |ƒkWdƒn1s˜0Y|  t ¡||kWdƒn1sÌ0Y| |tk¡|  |tk¡| |tk¡|  |tk¡| |tk¡|  |tk¡|  |tk¡| |tk¡|  |tk¡| |tk¡dS)NrK)ZsecondsréÚasciii²)r"Únowrr#Z timetuplerZ timedeltarírlr‹rprBrIrbrrr)rrZdtimeZthenZdstrZ dtime_thenZdbytesZdtuplerrrÚtest_comparisonsJ    , ( , (z DateTimeTestCase.test_comparisonN) r5r6r7rîrðr÷rørùrÚrrrrrrrãÑs  rãc@s$eZdZdd„Zdd„Zdd„ZdS)ÚBinaryTestCasecCst ¡}| t|ƒd¡dS)NÚ©rrnrr0)rr>rrrrî7szBinaryTestCase.test_defaultcCs(d}t |¡}| t|ƒt|dƒ¡dS©Ns abc123ÿþzlatin-1rrSrrrÚ test_string;s zBinaryTestCase.test_stringcCsZd}t |¡}t ¡}| |¡| t|ƒt|dƒ¡t |¡}| t|ƒt|dƒ¡dSr)Úbase64Z encodebytesrrnrþrr0Z_binary)rr1Úderÿr?rrrr@s   zBinaryTestCase.test_decodeN)r5r6r7rîrrrrrrr0src Cs@Gdd„dƒ}Gdd„dtjjƒ}|s.tjj}|d||ddd}zâz°| ¡|j ¡\aadttfa |  ¡|  ¡|  ¡|  t¡|  d d „d ¡|j d d „ƒ}|j dddd„ƒ}|ƒ} |j| dd| ¡|dkrð| ¡|d8}qÖWntjyYn0W|j ¡da| ¡n|j ¡da| ¡0dS)Nc@s*eZdZdd„Zdd„ZGdd„dƒZdS)z&http_server..TestInstanceClasscSs||SrVr©rr;r<rrrÚdivRsz*http_server..TestInstanceClass.divcSs|dkr dSdS©Nr úThis is the div functionr©rrÉrrrÚ _methodHelpUsz2http_server..TestInstanceClass._methodHelpc@seZdZedd„ƒZdS)z.http_server..TestInstanceClass.FixturecSsdS)NÚ42rrrrrÚgetDataZsz6http_server..TestInstanceClass.Fixture.getDataN)r5r6r7Ú staticmethodrrrrrÚFixtureYsrN)r5r6r7r rrrrrrÚTestInstanceClassQsrc@seZdZdd„ZdS)z#http_server..MyXMLRPCServercSs |j ¡\}}| d¡||fS©NT©r¡ÚacceptÚ setblocking©rr(ÚportrrrÚ get_request_s z/http_server..MyXMLRPCServer.get_requestN©r5r6r7rrrrrÚMyXMLRPCServer^sr©Ú localhostrF)riÚ logRequestsÚbind_and_activateú http://%s:%dcSs|SrVr)r;rrrÚxózhttp_server..õtêštcSsdSrrrrrrÚ my_functionysz http_server..my_functionÚaddrÈcSs||SrVr©r;r<rrrÚ_}szhttp_server.._T)Zallow_dotted_namesrr)rƒr¥ÚSimpleXMLRPCServerÚSimpleXMLRPCRequestHandlerÚ server_bindr¡Ú getsocknameÚADDRÚPORTÚURLÚserver_activateÚ register_introspection_functionsÚregister_multicall_functionsr¸ÚpowrÄÚsetr£ÚtimeoutÚclose) ÚevtÚ numrequestsÚrequestHandlerrirrÚservr'r*Z testInstancerrrÚ http_serverPsF þ       þ r=c CsšGdd„dƒ}dd„}Gdd„dtjjƒ}|s6tjj}Gdd„d|ƒ}Gd d „d ƒ}|d |d d d }|j d¡| ¡zzÐ|j ¡\aa dtt fa |  ¡gd¢} | D]:} |  | tj  ¡¡} |  ¡|  ¡|  | fdd„d¡q¬| | d¡ t¡| | d¡ dd„d¡|  d|ƒ¡| ¡|dkrJ| ¡|d8}q,WntjybYn0W|j ¡da | ¡n|j ¡da | ¡0dS)Nc@seZdZdd„Zdd„ZdS)z,http_multi_server..TestInstanceClasscSs||SrVrr rrrr ’sz0http_multi_server..TestInstanceClass.divcSs|dkr dSdSr rrrrrr•sz8http_multi_server..TestInstanceClass._methodHelpN)r5r6r7r rrrrrr‘srcSsdSrrrrrrr'™sz&http_multi_server..my_functionc@seZdZdd„ZdS)z)http_multi_server..MyXMLRPCServercSs |j ¡\}}| d¡||fSrrrrrrržs z5http_multi_server..MyXMLRPCServer.get_requestNrrrrrrsrc@seZdZgZdS)z+http_multi_server..MyRequestHandlerN)r5r6r7Z rpc_pathsrrrrÚMyRequestHandler§sr>c@seZdZddd„ZdS)z+http_multi_server..BrokenDispatcherNcSs tdƒ‚dS)Nzbroken dispatcher)Ú RuntimeError)rrvZdispatch_methodÚpathrrrÚ_marshaled_dispatch«sz?http_multi_server..BrokenDispatcher._marshaled_dispatch)NN)r5r6r7rArrrrÚBrokenDispatcherªsrBrF)r!r"rGr#) ú/fooú/foo/barú/foo?k=vú /foo#fragú /foo?k=v#fragrú/ú/RPC2ú?k=vú#fragcSs|SrVr)r±rrrr$Är%z#http_multi_server..ÚtestrrcSs||SrVrr)rrrr$Ær%r(ú /is/broken)rƒr¥ZMultiPathXMLRPCServerr,r¡r¢r-r.r/r0r1r2Zadd_dispatcherr·r3r4r¸Zget_dispatcherr5r6r£r7r8) r9r:r;rr'rr>rBr<Úpathsr@r1rrrÚhttp_multi_serversJÿ     þ rOcCs^z*|jdks|jdurWdS|j d¡}WntyDt|ƒ}Yn0|rZd| ¡vrZdSdS)NrTú X-exceptionztemporarily unavailable)Zerrcoder‘r’ràr0Úlower)ÚeZexc_messrrrÚis_unavailable_exceptionØs rScs|s dd„S‡fdd„}|S)NcSs|SrVr)Úfuncrrrr$ír%z)make_request_and_skipIf..cs‡fdd„}|S)Nc sVzt t¡ ¡Wn4tjtfyF}zt|ƒs2‚WYd}~n d}~00t ˆ¡‚dSrV) rr‰r1r'Ú ProtocolErrorrŒrSÚunittestZSkipTest)rrR©ÚreasonrrÚmake_request_and_skipïs zImake_request_and_skipIf..decorator..make_request_and_skipr)rTrYrWrrÚ decoratorîs z*make_request_and_skipIf..decoratorr)Z conditionrXrZrrWrÚmake_request_and_skipIfés r[c@s,eZdZdZdZeeƒZdd„Zdd„Z dS)ÚBaseServerTestCaseNrcCs`dtjj_t ¡|_|j|j|jf}tj |j |d}|  ¡|  |j ¡|j ¡|j ¡dS)NT©r§rœ)rƒr¥r+Ú_send_traceback_headerrªÚEventr9Ú request_countr;r«Ú threadFuncr¬r¨r­ÚwaitÚclear©rZ serv_argsr¯rrrÚsetUpþs    zBaseServerTestCase.setUpcCs|j ¡dtjj_dS©NF)r9rbrƒr¥r+r^rDrrrÚtearDown s zBaseServerTestCase.tearDown) r5r6r7r;r`rr=rarergrrrrr\ùs r\c@s¦eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z e e j j dkdƒdd„ƒZdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd „Zd!d"„Zd#d$„Zd%S)&ÚSimpleServerTestCasec Cstz"t t¡}| | dd¡d¡WnLtjtfyn}z.t|ƒsZ| d|t |ddƒf¡WYd}~n d}~00dS)Nròrüé¡ú%s %sr‘r) rr‰r1rr5rUrŒrSÚfailÚgetattr©rr±rRrrrÚ test_simple1s  z!SimpleServerTestCase.test_simple1c Cs€d}d}z&t t¡}| | ||¡||¡WnLtjtfyz}z.t|ƒsf| d|t |ddƒf¡WYd}~n d}~00dS)NuPÅ·tuhÆ¡nrjr‘r) rr‰r1rr(rUrŒrSrkrl©rZ start_stringZ end_stringr±rRrrrÚ test_nonasciis ÿz"SimpleServerTestCase.test_nonasciic Cs†d}d}z*tjtdd}| | ||¡||¡WnNtjtjfy€}z.t|ƒsl|  d|t |ddƒf¡WYd}~n d}~00dS)Nõ€õ¤rgrhrjr‘r© rr‰r1rr(rUr¡ÚerrorrSrkrlrorrrÚtest_client_encoding,sÿz)SimpleServerTestCase.test_client_encodingc Csxz$tjtdd}| | d¡d¡WnNtjtjfyr}z.t|ƒs^|  d|t |ddƒf¡WYd}~n d}~00dS)Nrrhrarjr‘r) rr‰r1rttêštrUr¡rtrSrkrlrmrrrÚtest_nonascii_methodname:s z-SimpleServerTestCase.test_nonascii_methodnamecCsht tj tt¡¡$}| dd¡| ¡}Wdƒn1s>0Y|  |j d¡|  |j d¡dS)NZPOSTz/this-is-not-validi”z Not Found) Ú contextlibÚclosingr•r„ZHTTPConnectionr/r0ZrequestZ getresponserÚstatusrX)rÚconnr™rrrÚtest_404Ds  &zSimpleServerTestCase.test_404c Cs†tgd¢ƒ}z(t t¡}|j ¡}| t|ƒ|¡WnLtjtfy€}z.t |ƒsl|  d|t |ddƒf¡WYd}~n d}~00dS)N) r5r r'r(r&zsystem.listMethodszsystem.methodHelpzsystem.methodSignaturezsystem.multicallrrjr‘r) r6rr‰r1ÚsystemZ listMethodsrrUrŒrSrkrl)rZexpected_methodsr±ÚmethrRrrrÚtest_introspection1Ns   z(SimpleServerTestCase.test_introspection1c Csxz&t t¡}|j d¡}| |d¡WnLtjtfyr}z.t|ƒs^|  d|t |ddƒf¡WYd}~n d}~00dS)Nr rrjr‘r© rr‰r1r|Z methodHelprrUrŒrSrkrl)rr±ZdivhelprRrrrÚtest_introspection2^s  z(SimpleServerTestCase.test_introspection2rz)Docstrings are omitted with -O2 and abovec Csxz&t t¡}|j d¡}| |d¡WnLtjtfyr}z.t|ƒs^|  d|t |ddƒf¡WYd}~n d}~00dS)Nr'zThis is my functionrjr‘rr)rr±Z myfunctionrRrrrÚtest_introspection3js  z(SimpleServerTestCase.test_introspection3c Csxz&t t¡}|j d¡}| |d¡WnLtjtfyr}z.t|ƒs^|  d|t |ddƒf¡WYd}~n d}~00dS)Nr zsignatures not supportedrjr‘r) rr‰r1r|ZmethodSignaturerrUrŒrSrkrl)rr±ZdivsigrRrrrÚtest_introspection4xs  z(SimpleServerTestCase.test_introspection4c Cs¾zlt t¡}t |¡}| dd¡| dd¡| dd¡|ƒ\}}}| |d¡| |d¡| |d¡WnLtjt fy¸}z.t |ƒs¤|  d |t |d d ƒf¡WYd}~n d}~00dS) NrrGròrüérarLrirjr‘r) rr‰r1Ú MultiCallr(r5r rrUrŒrSrkrl)rr±Ú multicallÚ add_resultZ pow_resultZ div_resultrRrrrÚtest_multicall…s        z#SimpleServerTestCase.test_multicallc Cs¤zRt t¡}t |¡}| ¡|ƒ}| |jddd¡| |jddd¡WnLtjtfyž}z.t |ƒsŠ|  d|t |ddƒf¡WYd}~n d}~00dS) NrrÛrrÜz@:method "this_is_not_exists" is not supportedrjr‘r) rr‰r1r„Zthis_is_not_existsrÚresultsrUrŒrSrkrl)rr±r…r)rRrrrÚtest_non_existing_multicall–s  ÿz0SimpleServerTestCase.test_non_existing_multicallcCs4| ttjjtd¡| tj td¡¡| ¡dSrÞ)rBràrƒr¥rár0rrnrDrrrrâ«s  ÿz*SimpleServerTestCase.test_dotted_attributecCs,t dttf¡}|j ¡}| |d¡dS)Núhttp://%s:%d/RPC2r)rr‰r/r0rrr)rr¥rvrrrÚtest_allow_dotted_names_trueµs z1SimpleServerTestCase.test_allow_dotted_names_truecCs*t dttf¡}| | dd¡d¡dS)NrŠr{õéuaé)rr‰r/r0rr(©rr¥rrrÚtest_unicode_host»sz&SimpleServerTestCase.test_unicode_hostcCsVt t ttf¡¡.}| dt›dt›d d¡¡Wdƒn1sH0YdS)Nz@POST /RPC2 HTTP/1.0 Content-Length: 100 bye HTTP/1.1 Host: ú:z2 Accept-Encoding: identity Content-Length: 0 r)rwrxr¡Úcreate_connectionr/r0Úsendrl)rrzrrrÚtest_partial_post¿sýýûz&SimpleServerTestCase.test_partial_postcCs^t t¡.}| dd¡| |dƒjd¡Wdƒn1s>0Y| |dƒjd¡dS)NrrGÚ transport©NN)rr‰r1r(ZassertNotEqualÚ _connectionrrrrrÚtest_context_managerÉs   ÿ" ÿz)SimpleServerTestCase.test_context_managercCsfz:t t¡}| dd¡Wdƒn1s.0YWntjyNYn0| |dƒjd¡dS)Nrr{r“r”)rr‰r1r(r×rr•rrrrÚ!test_context_manager_method_errorÑs . ÿz6SimpleServerTestCase.test_context_manager_method_errorN)r5r6r7rnrprurvr{r~r€r[rYÚflagsÚoptimizerr‚r‡r‰râr‹rŽr’r–r—rrrrrhs(     ÿ    rhc@s"eZdZeddd„ƒZdd„ZdS)ÚSimpleServerEncodingTestCaseNcCst|||dƒdS)Nrg)r=)r9r:r;rirrrraÜsz'SimpleServerEncodingTestCase.threadFuncc Cs‚d}d}z&t t¡}| | ||¡||¡WnNtjtjfy|}z.t|ƒsh|  d|t |ddƒf¡WYd}~n d}~00dS)Nrqrrrjr‘rrsrorrrÚtest_server_encodingàs ÿz1SimpleServerEncodingTestCase.test_server_encoding)NN)r5r6r7rrar›rrrrršÛs ršc@speZdZeeƒZdZdd„Zdd„Zdd„Z dd „Z d d „Z d d „Z dd„Z dd„Zdd„Zdd„Zdd„ZdS)ÚMultiPathServerTestCasercCs:t td¡}| | dd¡d¡| tj|jdd¡dS)NrCròrüri)rr‰r1rr5rBr×r(©rr±rrrÚ test_path1òsz"MultiPathServerTestCase.test_path1cCs:t td¡}| | dd¡d¡| tj|jdd¡dS)NrDròrüé)rr‰r1rr(rBr×r5rrrrÚ test_path2÷sz"MultiPathServerTestCase.test_path2cCs&t td¡}| tj|jdd¡dS)NrMròrü©rr‰r1rBr×r(rrrrÚ test_path3üsz"MultiPathServerTestCase.test_path3cCs&t td¡}| tj|jdd¡dS)Nz/invalidròrür¡rrrrÚtest_invalid_pathsz)MultiPathServerTestCase.test_invalid_pathcCs"t td¡}| | ¡d¡dS)NrG©rr‰r1rrLrrrrÚtest_path_query_fragmentsz0MultiPathServerTestCase.test_path_query_fragmentcCs"t td¡}| | ¡d¡dS)NrFr¤rrrrÚtest_path_fragmentsz*MultiPathServerTestCase.test_path_fragmentcCs"t td¡}| | ¡d¡dS)NrEr¤rrrrÚtest_path_query sz'MultiPathServerTestCase.test_path_querycCst t¡}| | ¡d¡dS)NrIr¤rrrrÚtest_empty_paths z'MultiPathServerTestCase.test_empty_pathcCs"t td¡}| | ¡d¡dS)NrHr¤rrrrÚtest_root_pathsz&MultiPathServerTestCase.test_root_pathcCs"t td¡}| | ¡d¡dS)NrJr¤rrrrÚtest_empty_path_querysz-MultiPathServerTestCase.test_empty_path_querycCs"t td¡}| | ¡d¡dS)NrKr¤rrrrÚtest_empty_path_fragmentsz0MultiPathServerTestCase.test_empty_path_fragmentN)r5r6r7rrOrar`ržr r¢r£r¥r¦r§r¨r©rªr«rrrrrœïsrœc@s,eZdZGdd„dejjƒZeZdd„ZdS)ÚBaseKeepaliveServerTestCasec@s,eZdZejjZdZgZdd„Z dd„Z dS)z*BaseKeepaliveServerTestCase.RequestHandlerrcCs(|j g¡t|jƒd|_|j |¡Sr )Ú myRequestsrMr–ÚreqidxÚ parentClassÚhandlerDrrrr°*s z1BaseKeepaliveServerTestCase.RequestHandler.handlecCs$|j |¡}|j|j |j¡|SrV)r¯Úhandle_one_requestr­r®rMZraw_requestline)rr)rrrr±.s z=BaseKeepaliveServerTestCase.RequestHandler.handle_one_requestN) r5r6r7rƒr¥r,r¯ržr­r°r±rrrrrŸ&s rŸcCsg|j_t |¡SrV)rŸr­r\rerDrrrre4sz!BaseKeepaliveServerTestCase.setUpN) r5r6r7rƒr¥r,rŸr;rerrrrr¬#s r¬c@seZdZdd„ZdS)ÚKeepaliveServerTestCase1cCs€t t¡}| | dd¡d¡| | dd¡d¡| | dd¡d¡|dƒƒ| t|jjƒd¡| t|jjdƒd¡dS)Nròrürir8rrr© rr‰r1rr5r–rŸr­ZassertGreaterEqualrrrrÚtest_two<s  z!KeepaliveServerTestCase1.test_twoN)r5r6r7r´rrrrr²;sr²c@s eZdZdZdd„Zdd„ZdS)ÚKeepaliveServerTestCase2rcCsÞt t¡}| | dd¡d¡| | dd¡d¡| | dd¡d¡|dƒƒ| | dd¡d¡| | dd¡d¡| | dd¡d¡|dƒƒ| t|jjƒd¡| t|jjdƒd¡| t|jjdƒd¡dS)Nròrürir8rréþÿÿÿr³rrrrÚ test_closeRs   z#KeepaliveServerTestCase2.test_closecCs`t t¡}| | dd¡d¡|dƒ ¡| | dd¡d¡|dƒƒ| t|jjƒd¡dS)Nròrürir“r8r) rr‰r1rr5r8r–rŸr­rrrrÚtest_transportes    z'KeepaliveServerTestCase2.test_transportN)r5r6r7r`r·r¸rrrrrµNsrµz requires gzipc@sVeZdZGdd„dejjƒZeZGdd„dej ƒZ dd„Z dd„Z d d „Z d d „Z d S)ÚGzipServerTestCasec@s eZdZejjZdZdd„ZdS)z!GzipServerTestCase.RequestHandlerrcCst|jdƒ|j_|j |¡S)Núcontent-length)r[r‘Ú __class__Úcontent_lengthr¯ršrDrrrršxsz)GzipServerTestCase.RequestHandler.do_POSTN) r5r6r7rƒr¥r,r¯ržršrrrrrŸtsrŸc@s eZdZdZdd„Zdd„ZdS)zGzipServerTestCase.TransportFcCs t| dd¡ƒ|_tj ||¡S)Nrºr)r[Z getheaderÚresponse_lengthrr…Úparse_response)rr™rrrr¾sz+GzipServerTestCase.Transport.parse_responsecCs"|jr| dd¡tj |||¡S)NzContent-EncodingÚgzip)Ú fake_gzipZ putheaderrr…Ú send_content)rÚ connectionÚbodyrrrrÁ…s z)GzipServerTestCase.Transport.send_contentN)r5r6r7rÀr¾rÁrrrrr…~sr…cCst |¡dSrV)r\rerDrrrre‹szGzipServerTestCase.setUpcCsv| ¡}d|_tjt|d}| | dd¡d¡|jj}d|_| | dd¡d¡|jj}|  ||k¡|dƒƒdS©N©r“ròrürirr8) r…Úencode_thresholdrr‰r1rr5rŸr¼r)rr>r±r{r|rrrÚtest_gzip_requestŽsz$GzipServerTestCase.test_gzip_requestcCst| ¡}d|_d|_tjt|d}| tjt  d¡¡}||  dd¡Wdƒn1s\0Y|dƒƒdS)NTrÅz\b400\bròrür8) r…rÆrÀrr‰r1rËrUÚreÚcompiler5)rr>r±ÚcmrrrÚtest_bad_gzip_requestšsÿ*z(GzipServerTestCase.test_bad_gzip_requestcCs†| ¡}tjt|d}|jj}d|j_| | dd¡d¡|j}d|j_| | dd¡d¡|dƒƒ|j}||j_|  ||k¡dSrÄ) r…rr‰r1r;rÆrr5r½r)rr>r±Úoldr{r|rrrÚtest_gzip_response¥s z%GzipServerTestCase.test_gzip_responseN)r5r6r7rƒr¥r,rŸr;rr…rerÇrËrÍrrrrr¹ps   r¹c@seZdZdd„ZdS)ÚGzipUtilTestCasecCsŽd}d|}t |¡}t |¡}| t|ƒ|¡d|d}t |¡}| td¡t |¡Wdƒn1sr0Ytj|dddS)Ni@órz#max gzipped payload length exceededr)Z max_decode)rZ gzip_encodeZ gzip_decoderr–rËÚ ValueError)rZmax_gzip_decodervÚencodedZdecodedrrrÚtest_gzip_decode_limit·s    ÿ(z'GzipUtilTestCase.test_gzip_decode_limitN)r5r6r7rÒrrrrrδsrÎcsleZdZGdd„dejjƒZeZgd¢Z‡fdd„Z dd„Z dd „Z d d „Z d d „Z dd„Zdd„Z‡ZS)ÚHeadersServerTestCasecs eZdZdZ‡fdd„Z‡ZS)z$HeadersServerTestCase.RequestHandlerNcs|j|j_tƒ ¡SrV)r‘r»Ú test_headersÚsuperršrD©r»rrršÌs z,HeadersServerTestCase.RequestHandler.do_POST)r5r6r7rÔršÚ __classcell__rrrÖrrŸÉsrŸ)ZHostzAccept-Encodingz Content-Typez User-Agentrcsd|j_tƒ ¡SrV)rŸrÔrÕrerDrÖrrreÔszHeadersServerTestCase.setUpcCsRt|jt| ¡ƒƒ}| t| ¡ƒ|¡| ¡D]\}}| | |¡|¡q2dSrV)ÚsortedÚstandard_headersÚlistÚkeysZassertListEqualÚitemsrr’)rr‘Ú additionalZ expected_keysÚkeyr/rrrÚassertContainsAdditionalHeadersØsz5HeadersServerTestCase.assertContainsAdditionalHeaderscCs@tjtdgd}| | dd¡d¡|jj}| |ddi¡dS)N©úX-TestÚfoo©r‘ròrürirárâ©rr‰r1rr5rŸrÔrß©rr±r‘rrrÚ test_headerßsz!HeadersServerTestCase.test_headercCsDtjtddgd}| | dd¡d¡|jj}| |ddd œ¡dS) Nrà)ú X-Test-SecondÚbarrãròrürirârè)rárçrärårrrÚtest_header_manyæsÿ ÿz&HeadersServerTestCase.test_header_manycCs:tjtgd}| | dd¡d¡|jj}| |i¡dS)NrãròrürirärårrrÚtest_header_emptyïsz'HeadersServerTestCase.test_header_emptycCs>tjtdd}| | dd¡d¡|jj}| |ddi¡dS)N)ràrãròrürirárârärårrrÚtest_header_tupleösz'HeadersServerTestCase.test_header_tuplecCsFtjtddi ¡d}| | dd¡d¡|jj}| |ddi¡dS)Nrárârãròrüri) rr‰r1rÜrr5rŸrÔrßrårrrÚtest_header_itemsýsz'HeadersServerTestCase.test_header_items)r5r6r7rƒr¥r,rŸr;rÙrerßrærérêrërìr×rrrÖrrÓÈs  rÓc@s$eZdZdd„Zdd„Zdd„ZdS)ÚServerProxyTestCasecCstj |¡d|_dS)Nzhttp://fake.localhost)rVÚTestCaserer°rDrrrres zServerProxyTestCase.setUpcCs"t |j¡}| |dƒƒd¡dS)Nr8)rr‰r°rrrrrr· s zServerProxyTestCase.test_closecCs,t ¡}tj|j|d}| |dƒ|¡dS)NrÅr“)rr…r‰r°r)rr>r±rrrr¸sz"ServerProxyTestCase.test_transportN)r5r6r7rer·r¸rrrrrísrícseZdZd‡fdd„ Z‡ZS)ÚFailingMessageClassNcs"| ¡}|dkrdStƒ ||¡S)Nrºz I am broken)rQrÕr’)rrÞZfailobjrÖrrr’szFailingMessageClass.get)N)r5r6r7r’r×rrrÖrrïsrïc@s4eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd S) ÚFailingServerTestCasecCsNt ¡|_|jdf}tjt|d}| ¡| |j¡|j ¡|j  ¡dS)Nrr]) rªr_r9r«r=r¬r¨r­rbrcrdrrrre"s    zFailingServerTestCase.setUpcCs*|j ¡dtjj_tjj}|tjj _ dSrf) r9rbrƒr¥r+r^r•r„Ú HTTPMessager,Ú MessageClass)rZ default_classrrrrg.s  zFailingServerTestCase.tearDownc Cs”tjjj}| |d¡dtjj_z"t t¡}| | dd¡d¡WnLtj t fyŽ}z.t |ƒsz|  d|t |ddƒf¡WYd}~n d}~00dS) NFTròrürirjr‘r)rƒr¥r+r^rrr‰r1r5rUrŒrSrkrl)rZflagvalr±rRrrrÚ test_basic7s    z FailingServerTestCase.test_basicc Csœttjj_zt t¡}| dd¡Wnhtj t fyŒ}zJt |ƒsxt |dƒrx|  |j d¡du¡|  |j d¡du¡WYd}~nd}~00| d¡dS)Nròrür‘rPú X-tracebackúProtocolError not raised)rïrƒr¥r,ròrr‰r1r5rUrŒrSÚhasattrrr‘r’rkrmrrrÚtest_fail_no_infoIs  ,z'FailingServerTestCase.test_fail_no_infoc Cs¨ttjj_dtjj_zt t ¡}|  dd¡Wnjtj t fy˜}zLt |ƒs„t|dƒr„d}| |j d¡|¡| |j d¡du¡WYd}~nd}~00| d¡dS) NTròrür‘z5invalid literal for int() with base 10: 'I am broken'rPrôrõ)rïrƒr¥r,ròr+r^rr‰r1r5rUrŒrSrörr‘r’rrk)rr±rRZ expected_errrrrÚtest_fail_with_infoYs   ,z)FailingServerTestCase.test_fail_with_infoN)r5r6r7rergrór÷rørrrrrð!s   rðúutf-8ccs:tj}tjt ¡|dt_ztjVW|t_n|t_0dS)Nrh)rYÚstdoutÚioÚ TextIOWrapperÚBytesIO)riZ orig_stdoutrrrÚcaptured_stdoutos  rþc@s,eZdZdd„Zdd„Zdd„Zdd„Zd S) ÚCGIHandlerTestCasecCstj ¡|_dSrV)rƒr¥ÚCGIXMLRPCRequestHandlerÚcgirDrrrre}szCGIHandlerTestCase.setUpcCs d|_dSrV)rrDrrrrg€szCGIHandlerTestCase.tearDownc Cs¸t ¡œ}d|d<t|jjd}|j ¡Wdƒn1s@0Y| d¡| ¡}| ¡d}d  | ¡dd…¡}|  |d ¡|  |d ¡Wdƒn1sª0YdS) NÚGETZREQUEST_METHODrhrrú rrKZ400z Bad Request) rÚEnvironmentVarGuardrþrrir£Úseekr“Úsplitr­r)rÚenvÚdata_outr°ryÚmessagerrrÚ test_cgi_getƒs (   zCGIHandlerTestCase.test_cgi_getc Csd}t ¡”}t|jjdf}t ¡>}| |¡| d¡tt |ƒƒ|d<|j  ¡Wdƒn1sj0YWdƒn1sˆ0YWdƒn1s¦0Y| d¡|  ¡}|  t jt j|dd…¡|| d¡d…}| tt d|¡ d¡ƒt |ƒ¡dS) Naw test_method foo bar rhrZCONTENT_LENGTHé,zUseBuiltinTypesTestCase.test_use_builtin_types..foobarT)rdrir r)rr"rrrƒr¥r·r¸rArr–r$r%ro)rZexpected_bytesZ expected_dateZ marshaledrÚhandlerZmybytesZmydaterrDrÚtest_use_builtin_typesÂs ÿ   z.UseBuiltinTypesTestCase.test_use_builtin_typescCstjjdd}| |j¡dS)NTr)rƒr¥rrr )rrrrrÚ*test_cgihandler_has_use_builtin_types_flagÖszBUseBuiltinTypesTestCase.test_cgihandler_has_use_builtin_types_flagcCs(tjjddd}| ¡| |j¡dS)NrTr)rƒr¥r+r©rr rrrrÚ,test_xmlrpcserver_has_use_builtin_types_flagÚs ÿzDUseBuiltinTypesTestCase.test_xmlrpcserver_has_use_builtin_types_flagN)r5r6r7rrrrrrrrÀsrcCs0t tttttttt t t t t tttttt¡dSrV)rZ run_unittestrrÒrãrrÕrrhršr²rµr¹rÎrÓrœrírðrÿr³rrrrÚ test_mainás úrÚ__main__)NN)N)rù)Er r"rrYrêrVrÚ xmlrpc.clientr„rZ xmlrpc.serverrƒZ http.clientr•Z http.serverr¡rªrÈrûrwrLrZ test.supportrrrrr¿rˆrnrpr#rrîrr³rÒrÕrãrr/r0r1r=rOrSr[r\rhršrœr¬r²rµZskipIfr¹rÎrÓrírñrïrðÚcontextmanagerrþrÿrZ reap_threadsrr5rrrrÚsœ       ÿÿò3W_  @ HH4"C>N D!