ÿØÿà JFIF    ÿÛ „ !.%+&8&+/1555$;@;4?.451 4,$,44444444444414444444444444444444444444444444444444ÿÀ  á á" ÿÄ     ÿÄ ?    !1AQaq"2‘¡±ÁðBRbrÑá#‚’¢²3S CñÿÄ   ÿÄ !    !1QAa‘2ÿÚ   ? 5˜Z¯V¦cø)›t/? z¨±>Õ5€¶‹Á¤·¼z¼Ü¬+ñ®v¤¨_ˆR­BFn©—˜ý®ç̝P8gýt·ÉSTŦˆìät?þé¼íìN/Þa)ì–í6ô… Ï¿øÃj´¿KÇü]ÿ ªô¹-eKànëÕHTx}ýSÜ›ÿ ”7Ø×&µ<¦  ¥ÑO¶[Ù¯ä¨ÞÃÿ PZ-¬;#õ|•oaÿ ©CìÞz3˜öː/¤­ñTûIØ}š^ mÓ%ªxˆ¥ÉŸu=Z+ISe¿45™¼u;ú&WØ÷€æßQ™®{|íx*TC“#ZŠìZ§²‹ 6pv…³¿¡äª*áZÐ%ÒOáˆo"x«OHk w±æ+¬V(kMúŸ5Vö«$ ÁrÏbàb57/luR ¸ÑÛj Òµì`Мq­û žICÀÊ•©4€Âcà¨Ï€O´<èÐ:›ù(Ë^L8þ‘ÍÌ#¸Ð_Ì©ÙK(Öz 4¬û+¸;ü’V’84‘¬ÃŽ:[â‡ÔÌáõp¢~§ªlæ£ö{®G>J¼"°‡7¯ÆÉèßû ‹É‹§ÁòÃýâßî ^ƾÙõ‹×óH#«LP½ïX=xÑÍ$|W?•~• îëÔ©ª‹ {ÝT…Kÿ ”hûâá)J*ö˜–ÔU;iÇ€/ ÆþjóZ\ýwØ=Ìm ºèËL9 ýèÆð/¨’¥öo=nË.%Îì ŽÕ¯È|{Oj²ƒE6e/ßdÄõ²Ìâ1O®ò×TsəԸhOMýíMˆ¿¼H˜l²,7Â¥#MF/Úf°Ö½± ¸–dr‹NýÊ íjqx{œÉ ä-È ¦ øÄër¨q°ð †nцýÑÄÆ’mä…n<0È™;ÁÝá¯ÁZƒ7FÀmì­ É&9ˆîéi¶ùN§Y• ÃZãAâ?•‡©‰ , ó¾IŸŠc1 4â&y­&pŠ­6;M À 0¹qç»p.á …ŸÅáK@%6·y6ƒ‰3?”úºŽ‰éX5ªPT §µ!=Mž«Ú½‹ÅgÂSâÉaþÓoö–¯ÁÔìR>5éÿ üs¶ÆUcÌ kÇR ]ÿ ù¬¼«VŽ;Â|‡~¢¦”ÏŰæ {L™Õ°Óv¹ò¸írޡעCÃ!íVÕ {¶»sŒNPg/ "uÕbkm²“$ďå¿é¹§°½æz¯6 †s¿!s–wÚÝ“™Œ °.ûj>·+™Òa…©Œ&rÝÎtÛë긪Ît’LAVp%c Úý[ÄzJ¾ÇàXXç@˜ó<êL]·T˜¾¥1Ó©V‡g´æ½¦Ý@¹óø!_@´ÞâSÁ —S3™•& ]@JHÚý©ZŽ €×æÔr»Áf!‡yÞ4Mv*èÓã_{‘åóUuљØ«Oïé*®EvÑ Œ÷‡U \"㪒ÍK+À 4“M¡ï:0¥5í!'<@î´”>Ç»&Z–ïCCV˜Ì5Šo&îhè.žû |ÓK©h$s6KìŒëã)¹hI¦GïOåóI;ììü#É$Š0…Ææ¥TØ.5­¾gn´ “ÂÖ\:hœ89G)J@„}œ:’Ò{/Š"¦_Æ×7Æ3VÇŠÊa]ÚŒÙ€Ä–=®uÁßâACZƒ§§£ Qnâ:«,×{tyø¬iÛcœÜÄ€H½ÄÍCk´÷šß .W'b¤Íåh]÷€=,Žv×cÚEÚHXJX¶îo¨FÒtèöŸ>ªª6[J®Fµ£sGÁeqõfe\íjÒÐïÄÐGˆe1Ø‹.Ø”‘Ëuø Y­ˆÜ ŽG|zùªüMpDnQWÄ”%JŠ™)â*p@Örš«ÕT2Ð%ˆG#ª„ ·¤!°ŸOTÂT¸aÚ%4&h™LµšØüÐ.F¿²ÐÞ_Ç‚¾ÅÃaÜ÷09Æ q€öy˜v‡85õN÷]¬äѼóS{°_MެúÔ#°Ç¸0åÞè2ëôPcvÆw9®ií1Ä8F™˜à‰´+‰Ik1òÝ7“Ñ×ÒsÝ\x‚h`ÞÑ`ó"|µEcý£n˜h`}GÞ !±ù²Ápü²ß6 0ïi󜵩SÈÇ7˜-ÕURO˜¦´f$ªž-Í6(œ}<„ éc øs]ŽŽ„*—¾ ìdŽ„)méª\¿êÎIg¾ØÞ~I#C/¼¼´EÁÈŽi8“©õådô·>euä ƒ'Ê×लR1ÉJE1ÐAát`t;ÇР%Ý<‡¥„ÍÆ`×Oyó)õiI€ñQaŸ4Ûù\áàaÃÔ¹HÃu¹*k€¦<„e S‡&õÏ B!ŽhüÞ`yj}mªf×\¿ Ç~æ­9‡û\՞Ǖg²1Žû5V7 !àöšm° c`ܬøÇìµÒ'P"?…´Ö,"§^•õލsÔ)6˜sæéÍR¼ ò|Sl”‹7 nPW Gòú÷½§O¯‡„l¡kSÞŒr½PÊ@æ¢pŽ-mÿ #Ÿ˜Àº¶Áä¦;ïÔæ$1££`“Õ>„—·ž)ßð³ñ#Ï Ô$¶œ‰ÊE‹À;÷º ¯«P:Ñ”8–IÊtpÞ3ª“>ê“þës4ò2OÏÕ­±zô†Õ§‰.÷ä¸;¿˜“'œ›žª}«Œ{ª±Ì 9ÔóÞÕ‡0 $íWV3Üì¬ —@kÝ4@¿r¼±½¬™›?øØæ´'Áé®CË3-g$˜ö‡×auÚi´Žp/êÛ æF›Ú2v‹ã¿¿,nB1̨ƃqÞa5͝@&Æû“él÷ \C²½UÍc ¯k×¢U ÖéQå™—-r wô ÞÏ<Ò=&=ÿ Ôê Òêˈt,i—;LîÜ á¸*ÚÃ1$êL•LÍ <É)ýÐà’ ;F™{ƒ™˜€&'}‚ãÄK`¡ÞT@I;®žZóè‚s’7®°›+§O­Åq©é»²9<Ô J ¼9O’HL»Ùïì¸rk¼Ž_ý‘TŸu[²ßÚŒ·ü÷B%¯E ŸÔX5êO´ Ç•€’I0 ÉJX` ñ¹õ%;µŸD‘«´€àwÒ™U ûئžÖö\×®×´8 ½‡ºÐÆÓ§?Àkmœ=;d5*@-ì0F Rªýš[Ü6âö̃ڸr*KA9· u*µæ£?U¸Âêí†8@¦X4 e-ò„0s{ HâUpU?¼mñRa°®a%Ð'tÉ×’\¾ÊÉ]t›h>·(Ë@R¼¡Ãt h}’O÷au<+nT…Ö…MӐ??Óe95 q>í/;&JSû °¯ÊéÞ øƒ*Ã2½Ài&:nôUl=¾¿5eˆ3”ñc|Ú2V”>„»&eE;«ÚäC p¢Û úy 9š[ŒÌx¼擼A&DåÒ¯ˆ¤ÀÌ;"˜ ÏQä¸åhÊ}Ûq«Û0WžÒ|»€ø®öCm5•\ÇÀ§Pe3£]0ÃàLDÉ‰1øªxjgwT‚÷¿LΨK‹›ùs—xˆÜ±µ kæ¸f‰‰ÜGk/LÛØ6d9ò¶ùA{ƒA3š/¬D¬khÓk‰`˜"㯒r¿±Óã jx‡°e}<Ñø\3y:'À•/h½Í€Ç4~g ?Û(¼]v‘ªlKÎâ~?O‚W%{Ì:“'©úNq¾›úo(X’¥¯ˆ nFê{Ç€ü?º'ë ø‹ì Þ09ŒÌç9Æ —ËC`j@ÓÄ(+a‹un¸#ÂꟋ{K`‘ÑÍÍ'à´»/Û,KW;Þ4²þð ï Nm|~fGÏ(…³Ã)«1ö­Õ ¥‡¨©ƒÃ™ü-s=à=U66Ï«Ýc蓦W¹íž®›nÔ%êÇìŒ<#Ü×84ån®Ð ÒåOC` ñânÑs‡¢ç 1õ%Îhì½Ã½® e:ݼUZo™`  ÅZŸŒÊ«ê1ÏÄo$q¹Þ€©ˆhÐÉä¯ñ[!…Ú˜àJ:x2$Íß&PåT£6ç— ‡Í*4Ýšçjÿ ‰É nófÐ ó(L5C•åÆ\rMÒ@ò }y-W}™üýVù—ú¢=Ù”c®‘< M ž ´Phr ¦©TD ‘ù.$´÷O‡‘V2Æò.=IUŒ=ž‡â¬i™aþÓåÙ?òUø'ØÖ•.~* šTŒ!•-×áºTâ®ä#õü'´ eýlYÅÓeÕKÂrT"CÚ@u!Óxƒ{š3€}1¿(r}%«nËamjÑ%ÑNEò v ˜à  σöK³,*º.àzù¨™Ó ÚçâU¦*¿ 9{%Ö¹ njûdaXöb) kÛÆ±ûÓ\°M7ˆÂ=û›ç¿Ã‚­V»Cg–8ÙêE- j)k$º`Ã-ùEýeBÆÇ]c¡°ñty&Òd0nõ'¡W+ƒ*|–øµFa\GQªEAÔp5\Ǽ·¼Ç8·õ -â§Ú[ ‡ uZeÖ 3}×d'+¹:ð+K†Û®s!Ï$úe€<Û”x)1»a­¡LC]¸µík…ÚàA»AYº{†ªS[¦5HÒ7ù --,ísòDØ€èk ÞÀîÜ ò@â( ËNˆë›4ô½•/¦o‡€Û7 ê•ÆêòðÜy'Án½µ á˜ݦ ndeo…[ì¶Ê,¥R³Ä=À±—–ß;£™´ñSâ*g§”ïaið‘Jå~™ÓÞ ß³Õ¢»8x埒²52>AÊb&-÷\7´éÄù€T˜,w;3{ï˜k…à¹ÄqÀ«œ{€\ ˆ¾[´¨јr &Úé„Ívˆ±8†¿]|¬ņ4I×pÞS1ÈÖz‰#Ìv‡G!YNògñ:màTz¢Ý1ô©^O=~ë|5Bã™ç•¼µõ•bÆ@úÕS¬ÈŒ#¬zünrŸ û” Z²•èðV"ÁHÚý©wÝ €7¼Ìu1hÑa3Éä û f$o¿É ™Ú›ÝçnpÒ3äÌ3†Í§,Äï]$‰/pê †«À¼¸e9­Æê_C]žƒ·ý·frÁN«, E=›Çq -‰öŒ:aÏ¿±í&£Í:-} 84‘ÿ eƒQÑeëSsuiA ³g㟥ú£?ÿ ʼn*”“÷aühe:ÊWa@ÒÞk±eØ] F Ô—r.åä˜ @ö¥ªZoÐýYL·¥S²G/‡ñ <~*ZÆ´è>JlòàÛÆ½ÿ 窘ìGN¢:I®KšJp/`íIÁÀõ#Ä-€ö­šµŒoF4|ÆQØÆ@Ì|£Ô…¢À{9˜è½Üó›€ôYÒÎYsið;ís¤€à²ˆ‚4qÉVŒI$ ‰"° æµ8cXGjœˏ¡Aâý•ËÜ¢ûï e·çLx']á"oÅÎê3¯Ç—¹”ó0nå‚âg{Œñ> S´˜îè°g238‚ãköÝfÚd´6Ò€;ò÷±¢™¼›º ¢Æ'¥Ðx'e¬ç ]bÈÆV¢ó‹kýBO ðÊâ$Ÿ!×T 3Mýמ žìٍàÌü‘8÷€àæØ8æ©6‰©L´«…oãpð„~Çk‰!ñ;‹”ÛžÍ àž±z Ÿôû øŸÝužÏ;ÿ #|u6™Þ¬ÚˆÐõA4¶â|ôl|Ê2ŽÇ¤ÝÅÇY.<#Aí.k§hóF‚”Y; M½Ö4hŸ4&›­¿tès´%FìL¥£Ãk‰ÇT¤haÁ¤ÚxfÉ`ÑìË›>i 3t‚:,–+^÷´–{Û–Nxi"x‘Ûg î¨>¥Õ܁ùZH,2Û“:8xÊ¢Çí9.É-Ìâã-=çjwµS˜dütžçwýGòú®®ûº_ˆýx$–¡ãøO EÚÛÏ÷R„×w+3£Á£öUMyR²¹âŒ°š›¸Ñãò9§Ó_Dl+Ùßc›úšGÅÌc†Ž!Ko=¶.‘Îÿ c²(2®V mª.ÿ ¹B›¹å ù„öŸSV>™ü¯$y:G¢Z×àøúdî¹û­·ýÇ´:•c LÍõi_‹ö+ÎæGÊè>OŠ•äž´§Þ{X}¨1ÚTc›»Qþ•êô°t¿OP?eæ~É{5]•ÙR£r5†nZ\ã@ &îJõ ¾àC°þV>fé¥/ü5ñÊIº_é5 ;e­h<@ Ä&æÃëE%;X,ÒãÆÞ`Oò¦kŸm#˜!ÀyÄ¢| óLšò¥Ä` ¶R=|ÈCâh5ò3DˆïF†ðÒ#ÅìÛœ?¸yhBãœí ZxßÎÄhºRK„`Þödvײ™ÀÈÑÒgŒuY w³%†ƒÓzõ ÖÏp‚dH®¦A´ù§»ÓÇMæ~)ˆð‡û:ù&Ä •vGD´À n ݇¼Ö8Fö óáà£~Ë¥x`oK|Ä?fxiØü%pìR>éò+Û±éÎ>núlFŤ'tq8LZÏvÃ?„¡ß±È⽆¯³íü@x|PöUäèØã¡ð‚ŒAìÏ"vÍwóŸÍ{ ý0.z È•Ö{,N¡£¡ŸKÕÙž>Ýœþ ÍÀ°<×EA!Å‚D™IúOÍ¡>ôG}Â` ÍßkÜL™Ž Þð™ {IøF²¹òQ3&!ÃÂÞz.d&Ï-sH¸,Ôõ˜ŽP€ 77ˆÝ¼ÊëÜw =cÕ Ú,ØÐ5ÎYÐ)ì´öœgŒ[¤ßv㙑8心>h]§µháYš£²ºÑ.{Ï7Sð•?´~×SÃKýJÛ˜ ™Íäiúu<µX¶1õ^kâçIÑ£sZ4h>j*ÔšD:4­¿_ ÷¸ Õxæÿ ¸?Mù _•­ÊÐ ä ÷ý ÑwL œ­ïnTkÛUÍN©ë:¦fV ¶ÜÔÜMªÅâA½–¿R×TXš-%iTÊT•‡Ù‚JôϐZxWÑè‰f‰òG º ×Õû2aZ7OU3[“×AT–ÞŒ…-‘¤”Ì ì&(ˆ¿­•ƒkï’:ðY¦W‘ Å)“†‘˜³Åtcø˜ñTÂwÚÇ4|üLÇªí–v- qˆèU qPE.†â‘˜µ Æ,ÐÅs]8¾„oúÑ i>ÜxxÈó)ƒ ´æÁâØ$À‰vžŸf$Ž |ãw;ÀÁIJ»b` {¦Ó¤Ú$©YÀ‘n@Óïž«9J¼êG m¤ ܯ¹ÌW4€ÐÒÅÛ‡#褕Ÿn-?í|с¥÷Ú¹¬'´ÞÜ9ÓK `hê£SÄSà?7—Wí_´…óB›»:=Ãïq`<8ñÓŒÑlú2d¬ê³£hÖ[l|$vÝro~'R®‰§°ñmY ͧäP |PUª¹·:3Œ[Û{Xÿ ºâ@‚W–Äé u‚ ¯´*=íή.pûÒdt @G‰¬ s¸ ëÉücr ÞæÑ¨Ê@>¤¢Ö±. Þ'¯°ÌME[YéïĵÂCå½ Ué©Áû'Ê9%eÔðNU”ë‘ÌsD3/®+UI˜9h.WC”빓$#:pz:YÓ ¿xž* ³$Í +$kñAŠ‹†¢ Uê>¸)_š¬÷©ßAÂÔb9ÇU ¯¾á•9¯ÏÏ÷O÷¼¼Fähal1‰3Ì[Ïr•´UCksNÐ] R‘¸¥H+§Šé†c©vÖÞ0iÓ76s†î!§=ß ¼~Ô'°Ãmäoäš³ªøi1úÉ)³yV8 CLÄØÁ‘WYïi€H6ÖÑiámø^ÈY´°Ñ7¥Û*—Ñ©L«Qƒï—Ùrÿ ›£Ð*š¸ˆL©ˆ$ˆ ÷¾D§9È®«qbqC)–ˆïv´çñsÑVT­Ø, <àïºÀO«Jý·õ àfPìð .wFšir´þ’2_Y *Æ€x\« ì€9š@ Ž|F⇥ˆkZ@hÖÄ0t¿-<“‹qµ¾*ZL¤Ú)&BJpÓF5=$„at*Zš$’ÑtdûÝRI1 2މ$€$I$#‰SÞ’Hë¬ï;Á$¡t$’`<(ñÇt)$‡Ð.Êf¢X’Kt=Éé$‚ˆªè¢oÝëòI%Rgcª÷ŠyI%¡‰ÿ !ñ)´õ $¤ Ô’IIGÿÙa 3gA@sddlZddlZddlZddlZddlZddlZddlmZddlmZ ddl Z ddl Z ddl Z ddlZ ddlZddlZddlZddlZddlZddlmZddlmZddlmZmZmZz ddlZWneydZYn0dddd d ge d d ed d d de de de edd dddddgZ Gdddej!Z"Gdddej!Z#Gdddej!Z$Gdddej!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/d0d0e/Z1Gd1d2d2e/Z2Gd3d4d4e/Z3Gd5d6d6e3Z4Gd7d8d8e3Z5e6edud9Gd:d;d;e/Z7e6edud9Gdd?d?e/Z9Gd@dAdAej!Z:GdBdCdCe jj;ZdRdGdHZ?GdIdJdJej!Z@GdKdLdLej!ZAdMdNZBeCdOkreDdS)SN)mock)support) socket_helper) ALWAYS_EQLARGESTSMALLESTzfoo@bar.baz.spamgHzns@iz.zyx.41my dog has fleasFu 䀀怀耀z regular value20050210T11:41:23) r )rr r r rr)ZastringZafloatZanintZ ashortlongZ anotherlistZabase64Zb64bytesZ b64bytearrayZbooleanunicodeuukey䀀Z datetime1Z datetime2Z datetime3c@seZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*Zd+d,Zd-S).XMLRPCTestCasecCs.ttf}t|}|t|dddS)Nr) xmlrpclibdumpsalistloads assertEqual)selfdumploadr//opt/python39/lib/python3.9/test/test_xmlrpc.pytest_dump_load.s  zXMLRPCTestCase.test_dump_loadcCs6tdddddd}||tdt|f}tj|dd \}}|\}||||t|tj||tj|d d \}}|\}||||t|tj||tj|dd \}}|\}||||t|tj||tj|d d \}}|\}||||t|tj||dS) Nr rr r rrr Tuse_builtin_typesF)Z use_datetime datetimerrDateTimerrassertIstype assertIsNonerZdtsresultmZnewdtrrrtest_dump_bare_datetime3s.        z&XMLRPCTestCase.test_dump_bare_datetimecCstdddddd}||tdt|f}tj|dd \}}|\}||||t|tj||tj|d d \}}|\}||||t|tj||dS) Nrrr r rrz00010210T11:41:23TrFr!r'rrrtest_datetime_before_1900Us    z(XMLRPCTestCase.test_datetime_before_1900cCsRt}ttj|fdd\\}}||jttj|fdd}||tdS)NTmethodresponse)rr#rrZassertIsInstancevaluestr)rdZnew_ddummyr(rrrtest_bug_1164912gs zXMLRPCTestCase.test_bug_1164912cCsLGdddt}|}d|_d|_tt|f\\}}|||jdS)Nc@s eZdZdS)z-XMLRPCTestCase.test_newstyle_class..TN__name__ __module__ __qualname__rrrrTrsr8dZHello)objectxyrrrr__dict__)rr8tt2r2rrrtest_newstyle_classqs z"XMLRPCTestCase.test_newstyle_classcCs|ttjddfdS)Nrc) assertRaises OverflowErrorrrrrrrtest_dump_big_longzsz!XMLRPCTestCase.test_dump_big_longcCs|ttjddifdS)NrrrrB TypeErrorrrrDrrrtest_dump_bad_dict}sz!XMLRPCTestCase.test_dump_bad_dictcCs4gd}ddd|g}|||ttj|fdS)NrFrG)appendrBrIrr)rlr>rrrtest_dump_recursive_seqs  z&XMLRPCTestCase.test_dump_recursive_seqcCs2ddd}d|d}||d<|ttj|fdS)Nr)12rG)3r1r>rHrr1r>rrrtest_dump_recursive_dicts  z'XMLRPCTestCase.test_dump_recursive_dictcCstjdkr |ttjtdfttjtjf|ttjtjdf|ttjtjdfdd}t }| tj|| tj||t|j tjd||t|j tjd|dS)NircSsdSNrr(rrr dummy_writesz5XMLRPCTestCase.test_dump_big_int..dummy_write) sysmaxsizerBrCrrintMAXINTMININT MarshallerZdump_intrrXr*rrrtest_dump_big_ints*          z XMLRPCTestCase.test_dump_big_intcCsttdftttjttjftttjdttjdfdd}t}|tj||tj||tjd||tjd|dS)NrU*cSsdSrVrrWrrrrXsz4XMLRPCTestCase.test_dump_double..dummy_write)rrfloatr\r]r^Z dump_doubler_rrrtest_dump_doubles  zXMLRPCTestCase.test_dump_doublecCsTtdg}tdgf}tj|dd}||t|dd|ttj|fdS)NT) allow_noner)rrrrrrBrI)rr/Zarg1strgrrrtest_dump_nones  zXMLRPCTestCase.test_dump_nonecCsddi}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-15encodingz,rxmlcharrefreplaceT)rir.u method€¤)ri methodnamer)rrrrencode)rr/rerkrrrtest_dump_encodings(    z!XMLRPCTestCase.test_dump_encodingcCsd}||t|tttjfD]}||}t|f}tj|dd\}}|\}||||t|t| |tj|dd\}}|\}||||t|tj| |q"dS)Nr TrF) rrBinarybytes bytearrayrrr$r%r&)rsampletype_r/r(r)r*newvaluerrrtest_dump_bytess    zXMLRPCTestCase.test_dump_bytescCsFtj}d}||tj|d}||tj|d}||tj|dS)Nz6zTzab)r ResponseErrorrBr)rrudatarrrtest_loads_unsupportedsz%XMLRPCTestCase.test_loads_unsupportedcKsRd|}tj|fi|\}}|\}||||t|t|||dS)Nz1%s)rrrr$r%r&)rr(r/kwargsrr)r*rsrrr check_loadss  zXMLRPCTestCase.check_loadsc Cs|j}|dd|dd|dd|dd|dd|d d|d d |d d |dtd|dddd|dtd|dtdddddddd|dddg|dddddS)Nstringzstringu4𝔘𝔫𝔦𝔠𝔬𝔡𝔢 stringu#𝔘𝔫𝔦𝔠𝔬𝔡𝔢 stringz2056183947izz-2056183947iuqz2056183947z46093.78125g@z0Fz%AGJ5dGUgc3RyaW5n/w==s byte stringTrz620050210T11:41:23r r rr r rrzR12rzb2a1)ab)ryrrnr#r"rcheckrrrtest_load_standard_typess8        z'XMLRPCTestCase.test_load_standard_typescCs`|j}|dd|dd|dd|dd|dd|d d |d d |d tddS)Nzz z 205z20561iQPz9876543210l` z-98765432100123456789l5?4*UUz93.78125grW@z.9876543210.0123456789z9876543210.0123456789)rydecimalZDecimalr}rrrtest_load_extension_typess      z(XMLRPCTestCase.test_load_extension_typesc Cs|j}d}t|d|d}|t"|d|ddWdn1sT0Y|t"|d|ddWdn1s0YWdn1s0YdS)NirPrzzz z )ryrZadjust_int_max_str_digitsrB ValueError)rr~Z maxdigitsr(rrrtest_limit_int s   0 zXMLRPCTestCase.test_limit_intcCs(tj}||dddgifdS)Nz user@host.tldzhost.tld)Z AuthorizationzBasic dXNlcg==)xmlrpcclient TransportrZ get_host_info)rZtransprrrtest_get_host_info*s   z!XMLRPCTestCase.test_get_host_infocCszz ddl}Wnty"d}Yn0d}ztjdWn8tyZ||dYntyt| |Yn0dS)NrFTzhttps://localhost:9999z&xmlrpc client's error with SSL support) ssl ImportErrorrr ServerProxyZ bad_functionNotImplementedError assertFalseOSError assertTrue)rrZhas_sslrrrtest_ssl_presence1s     z XMLRPCTestCase.test_ssl_presencecsGdddtjj}fdd}tjtjdf||jtj |d}| ||j dj j }t|0}||d||dWdn1s0YdS) Nc@s$eZdZdZdZddZddZdS)z@XMLRPCTestCase.test_keepalive_disconnect..RequestHandlerHTTP/1.1FcSst|jd}|j||jr,d|_dStjddd}| }| t j j |dt|||j|d|_d|_dS)NContent-LengthT)rLr-F)r[headersgetZrfilereadhandledZclose_connectionrrrlZ send_responsehttpZ HTTPStatusZOKZ send_headerlenZ end_headersZwfilewrite)rlengthresponserrrdo_POSTDs  zHXMLRPCTestCase.test_keepalive_disconnect..RequestHandler.do_POSTcWsdSrVr)rformatargsrrr log_messageSszLXMLRPCTestCase.test_keepalive_disconnect..RequestHandler.log_messageN)r5r6r7protocol_versionrrrrrrrRequestHandler@srcs$jtddSNr)socket settimeoutrbhandle_requestrserverrr run_serverWsz.run_serverr)targetz http://{}:{}/rL)rrZBaseHTTPRequestHandlerZ HTTPServerrZHOST addCleanup server_close threadingThreadstartjoinrZserver_addressrrrmethod)rrrthreadurlprrrtest_keepalive_disconnect?s      z(XMLRPCTestCase.test_keepalive_disconnectN)r5r6r7rr+r,r3r@rErJrOrTr`rcrfrmrtrwryrrrrrrrrrrr,s,"    rc@sLeZdZGdddeZddZddZddZd d Zd d Z d dZ dS)SimpleXMLRPCDispatcherTestCasec@s eZdZdS)z*SimpleXMLRPCDispatcherTestCase.DispatchExcNr4rrrr DispatchExchsrcsd}fdd}tj}||j}|d|Wdn1sR0Y|jj |f |jj  |jj dS)NrFcs|dSrV)r)paramsrDrrdispatched_funcsszQSimpleXMLRPCDispatcherTestCase.test_call_registered_func..dispatched_funcr) rrSimpleXMLRPCDispatcherregister_functionrBr _dispatchr exceptionrr& __cause__ __context__)r exp_paramsr dispatcherexc_ctxrrDrtest_call_registered_funcls   *z8SimpleXMLRPCDispatcherTestCase.test_call_registered_funccCsd}Gddd}tj}||||j}|d|Wdn1sV0Y||jj |f| |jj | |jj dS)NrFc@seZdZddZdS)zOSimpleXMLRPCDispatcherTestCase.test_call_instance_func..DispatchedClasscWst|dSrVrr)rrrrrrsz_SimpleXMLRPCDispatcherTestCase.test_call_instance_func..DispatchedClass.dispatched_funcN)r5r6r7rrrrrDispatchedClasssrr rrrregister_instancerBrrrrrr&rr)rrrrrrrrtest_call_instance_func~s  *z6SimpleXMLRPCDispatcherTestCase.test_call_instance_funccCsd}d}Gddd}tj}||||j}|||Wdn1sZ0Y||jj ||f| |jj | |jj dS)NrrFc@seZdZddZdS)zLSimpleXMLRPCDispatcherTestCase.test_call_dispatch_func..TestInstancecSst||dSrVr)rrrrrrrszVSimpleXMLRPCDispatcherTestCase.test_call_dispatch_func..TestInstance._dispatchN)r5r6r7rrrrr TestInstancesrr)rZ exp_methodrrrrrrrtest_call_dispatch_funcs  *z6SimpleXMLRPCDispatcherTestCase.test_call_dispatch_funccCsTtj}|jddd|td|ddWdn1sF0YdS)NrnameZparam)rrrrassertRaisesRegex Exceptionrrrrrrtest_registered_func_is_nones z;SimpleXMLRPCDispatcherTestCase.test_registered_func_is_nonecCsRtj}|t|td|ddWdn1sD0YdSNrr)rrrrr:rrrrrrrtest_instance_has_no_funcs  z8SimpleXMLRPCDispatcherTestCase.test_instance_has_no_funccCsFtj}|td|ddWdn1s80YdSr)rrrrrrrrrrtest_cannot_locate_funcs z6SimpleXMLRPCDispatcherTestCase.test_cannot_locate_funcN) r5r6r7rrrrrrrrrrrrrgsrc@seZdZddZdS)HelperTestCasecCs:|tdd|tdd|tdddS)Nza&bza&bzabza>b)rrescaperDrrr test_escapeszHelperTestCase.test_escapeN)r5r6r7rrrrrrsrc@s$eZdZddZddZddZdS) FaultTestCasecCs4tdd}|t|d|t|t|dS)Nra Test Faultz)rFaultrreprr0)rfrrr test_reprs zFaultTestCase.test_reprcCsjtdd}t|f}t|\\}}||ddd||dt|}|tjtj|dS)Nrar) faultCode faultString)rrrrrr^rB)rrr(Znewfr*rrrtest_dump_faults   zFaultTestCase.test_dump_faultcCs,|ttjjtd|tjtddSNZ__addtitle)rBAttributeErrorrrresolve_dotted_attributer0rrDrrrtest_dotted_attributes z#FaultTestCase.test_dotted_attributeN)r5r6r7rrrrrrrrs rc@sLeZdZddZddZddZddZd d Zd d Zd dZ ddZ dS)DateTimeTestCasecCsjtdL}tgd}||_t}t}|t |t d|Wdn1s\0YdS)Nztime.localtime) ir1rr%Y%m%dT%H:%M:%S) rZpatchtime struct_timeZ return_value localtimerr#rr0strftime)rZlocaltime_mockZ time_structrr>rrr test_defaults   zDateTimeTestCase.test_defaultc Cs0d}t|}|t|tdt|dSNgl]ޮAr)rr#rr0rrrrSrrr test_times   zDateTimeTestCase.test_timecCs"d}t|}|t|ddS)N)  r &2rLrz20070609T10:38:50)rr#rr0rSrrrtest_time_tuples z DateTimeTestCase.test_time_tuplecCs0td}t|}|t|td|dSr)rrrr#rr0rrSrrrtest_time_structs  z!DateTimeTestCase.test_time_structcCs2tdddddd}t|}|t|ddS)NrrrrGrKrLz20070102T03:04:05)r"rr#rr0rSrrrtest_datetime_datetimes z'DateTimeTestCase.test_datetime_datetimecCs>tdddddd}t|}dt|}|t||dS)NrrrrGrKrLz%)r"rr#idrr)rr1r>valrrrrs  zDateTimeTestCase.test_reprc CsVd}t}||ttdddddd}|||t|}|||dS)Nz 20070908T07:11:13 rrrr )rr#decoder"rZ _datetime)rr1t1Ztrefr?rrr test_decodes   zDateTimeTestCase.test_decodecCsftj}t|}|||k|||k|tjdd}|||k|||k|d}|||k|||kt|}|||k|||k|d}|}| |dk|||k| |t |k|||k| t |t dkWdn1s,0Y| t ||kWdn1s`0Y| t |t |kWdn1s0Y| t ||kWdn1s0Y||tk| |tk||tk| |tk||tk| |tk| |tk||tk| |tk||tkdS)NrK)Zsecondsrasciii)r"nowrr#Z timetuplerZ timedeltarrlrrprBrIrbrrr)rrZdtimeZthenZdstrZ dtime_thenZdbytesZdtuplerrrtest_comparison sJ    , ( , (z DateTimeTestCase.test_comparisonN) r5r6r7rrrrrrrrrrrrrs  rc@s$eZdZddZddZddZdS)BinaryTestCasecCst}|t|ddS)Nrrnrr0)rr>rrrrAszBinaryTestCase.test_defaultcCs(d}t|}|t|t|ddSNs abc123zlatin-1rrSrrr test_stringEs zBinaryTestCase.test_stringcCsZd}t|}t}|||t|t|dt|}|t|t|ddSr )base64Z encodebytesrrnrrr0Z_binary)rr1derr?rrrrJs   zBinaryTestCase.test_decodeN)r5r6r7rr rrrrrr:src Cs@Gddd}Gdddtjj}|s.tjj}|d||ddd}zz||j\aadttfa | | | | t| d d d |j d d }|j dddd}|} |j| dd||dkr||d8}qWntjyYn0W|jda|n|jda|0dS)Nc@s*eZdZddZddZGdddZdS)z&http_server..TestInstanceClasscSs||SrVrrr;r<rrrdiv\sz*http_server..TestInstanceClass.divcSs|dkr dSdSNrThis is the div functionrrrrrr _methodHelp_sz2http_server..TestInstanceClass._methodHelpc@seZdZeddZdS)z.http_server..TestInstanceClass.FixturecSsdS)N42rrrrrgetDatadsz6http_server..TestInstanceClass.Fixture.getDataN)r5r6r7 staticmethodrrrrrFixturecsrN)r5r6r7rrrrrrrTestInstanceClass[src@seZdZddZdS)z#http_server..MyXMLRPCServercSs |j\}}|d||fSNTraccept setblockingrr(portrrr get_requestis z/http_server..MyXMLRPCServer.get_requestNr5r6r7rrrrrMyXMLRPCServerhsr  localhostrF)ri logRequestsbind_and_activate http://%s:%dcSs|SrVr)r;rrrzhttp_server..têštcSsdSrrrrrr my_functionsz http_server..my_functionaddrcSs||SrVrr;r<rrr_szhttp_server.._T)Zallow_dotted_namesrr)rrSimpleXMLRPCServerSimpleXMLRPCRequestHandler server_bindr getsocknameADDRPORTURLserver_activate register_introspection_functionsregister_multicall_functionsrpowrsetrtimeoutclose) evt numrequestsrequestHandlerrirr servr)r,Z testInstancerrr http_serverZsF        r?c CsGddd}dd}Gdddtjj}|s6tjj}Gddd|}Gd d d }|d |d d d }|jd|zz|j\aa dtt fa | gd} | D]:} | | tj } | | | | fdddq|| dt|| dddd| d|||dkrJ||d8}q,WntjybYn0W|jda |n|jda |0dS)Nc@seZdZddZddZdS)z,http_multi_server..TestInstanceClasscSs||SrVrr rrrrsz0http_multi_server..TestInstanceClass.divcSs|dkr dSdSrrrrrrrsz8http_multi_server..TestInstanceClass._methodHelpN)r5r6r7rrrrrrrsrcSsdSrrrrrrr)sz&http_multi_server..my_functionc@seZdZddZdS)z)http_multi_server..MyXMLRPCServercSs |j\}}|d||fSrrrrrrrs z5http_multi_server..MyXMLRPCServer.get_requestNrrrrrr sr c@seZdZgZdS)z+http_multi_server..MyRequestHandlerN)r5r6r7Z rpc_pathsrrrrMyRequestHandlersr@c@seZdZdddZdS)z+http_multi_server..BrokenDispatcherNcSs tddS)Nzbroken dispatcher) RuntimeError)rrvZdispatch_methodpathrrr_marshaled_dispatchsz?http_multi_server..BrokenDispatcher._marshaled_dispatch)NN)r5r6r7rCrrrrBrokenDispatchersrDr!F)r#r$rGr%) /foo/foo/bar/foo?k=v /foo#frag /foo?k=v#fragr//RPC2?k=v#fragcSs|SrVr)rrrrr&r'z#http_multi_server..testrrcSs||SrVrr+rrrr&r'r* /is/broken)rrZMultiPathXMLRPCServerr.rrr/r0r1r2r3r4Zadd_dispatcherrr5r6rZget_dispatcherr7r8rr9r:) r;r<r=rr)r r@rDr>pathsrBr1rrrhttp_multi_serversJ     rQcCs^z*|jdks|jdurWdS|jd}WntyDt|}Yn0|rZd|vrZdSdS)NrT X-exceptionztemporarily unavailable)Zerrcoderrrr0lower)eZexc_messrrris_unavailable_exceptions rUcs|s ddSfdd}|S)NcSs|SrVr)funcrrrr&r'z)make_request_and_skipIf..csfdd}|S)Nc sVzttWn4tjtfyF}zt|s2WYd}~n d}~00tdSrV) rrr3r) ProtocolErrorrrUunittestZSkipTest)rrTreasonrrmake_request_and_skips zImake_request_and_skipIf..decorator..make_request_and_skipr)rVr[rYrr decorators z*make_request_and_skipIf..decoratorr)Z conditionrZr\rrYrmake_request_and_skipIfs r]c@s,eZdZdZdZeeZddZddZ dS)BaseServerTestCaseNrcCs`dtjj_t|_|j|j|jf}tj |j |d}| | |j |j|jdS)NTrr)rrr-_send_traceback_headerrEventr; request_countr=r threadFuncrrrwaitclearrZ serv_argsrrrrsetUps    zBaseServerTestCase.setUpcCs|jdtjj_dSNF)r;rdrrr-r`rDrrrtearDowns zBaseServerTestCase.tearDown) r5r6r7r=rbrr?rcrgrirrrrr^s r^c@seZdZddZddZddZddZd d Zd d Zd dZ e e j j dkdddZddZddZddZddZddZddZdd Zd!d"Zd#d$Zd%S)&SimpleServerTestCasec Cstz"tt}||dddWnLtjtfyn}z.t|sZ|d|t |ddfWYd}~n d}~00dS)Nrr%s %srr) rrr3rr7rWrrUfailgetattrrrrTrrr test_simple1s  z!SimpleServerTestCase.test_simple1c Csd}d}z&tt}||||||WnLtjtfyz}z.t|sf|d|t |ddfWYd}~n d}~00dS)NuPŷtuhơnrlrr) rrr3rr*rWrrUrmrnrZ start_stringZ end_stringrrTrrr test_nonascii)s z"SimpleServerTestCase.test_nonasciic Csd}d}z*tjtdd}||||||WnNtjtjfy}z.t|sl| d|t |ddfWYd}~n d}~00dS)N€¤rgrhrlrr rrr3rr*rWrerrorrUrmrnrqrrrtest_client_encoding6sz)SimpleServerTestCase.test_client_encodingc Csxz$tjtdd}||ddWnNtjtjfyr}z.t|s^| d|t |ddfWYd}~n d}~00dS)Nrrhrarlrr) rrr3rttêštrWrrvrUrmrnrorrrtest_nonascii_methodnameDs z-SimpleServerTestCase.test_nonascii_methodnamecCshttjtt$}|dd|}Wdn1s>0Y| |j d| |j ddS)NZPOSTz/this-is-not-validiz Not Found) contextlibclosingrrZHTTPConnectionr1r2ZrequestZ getresponserstatusrZ)rconnrrrrtest_404Ns  &zSimpleServerTestCase.test_404c Cstgd}z(tt}|j}|t||WnLtjtfy}z.t |sl| d|t |ddfWYd}~n d}~00dS)N) r7rr)r*r(zsystem.listMethodszsystem.methodHelpzsystem.methodSignaturezsystem.multicallrrlrr) r8rrr3systemZ listMethodsrrWrrUrmrn)rZexpected_methodsrmethrTrrrtest_introspection1Xs   z(SimpleServerTestCase.test_introspection1c Csxz&tt}|jd}||dWnLtjtfyr}z.t|s^| d|t |ddfWYd}~n d}~00dS)Nrrrlrr rrr3r~Z methodHelprrWrrUrmrn)rrZdivhelprTrrrtest_introspection2hs  z(SimpleServerTestCase.test_introspection2rz)Docstrings are omitted with -O2 and abovec Csxz&tt}|jd}||dWnLtjtfyr}z.t|s^| d|t |ddfWYd}~n d}~00dS)Nr)zThis is my functionrlrrr)rrZ myfunctionrTrrrtest_introspection3ts  z(SimpleServerTestCase.test_introspection3c Csxz&tt}|jd}||dWnLtjtfyr}z.t|s^| d|t |ddfWYd}~n d}~00dS)Nrzsignatures not supportedrlrr) rrr3r~ZmethodSignaturerrWrrUrmrn)rrZdivsigrTrrrtest_introspection4s  z(SimpleServerTestCase.test_introspection4c Cszltt}t|}|dd|dd|dd|\}}}||d||d||dWnLtjt fy}z.t |s| d |t |d d fWYd}~n d}~00dS) NrrGrrrarLrkrlrr) rrr3 MultiCallr*r7rrrWrrUrmrn)rr multicall add_resultZ pow_resultZ div_resultrTrrrtest_multicalls        z#SimpleServerTestCase.test_multicallc CszRtt}t|}||}||jddd||jdddWnLtjtfy}z.t |s| d|t |ddfWYd}~n d}~00dS) Nrrrrz@:method "this_is_not_exists" is not supportedrlrr) rrr3rZthis_is_not_existsrresultsrWrrUrmrn)rrrr)rTrrrtest_non_existing_multicalls  z0SimpleServerTestCase.test_non_existing_multicallcCs4|ttjjtd|tjtd|dSr)rBrrrrr0rrprDrrrrs  z*SimpleServerTestCase.test_dotted_attributecCs,tdttf}|j}||ddS)Nhttp://%s:%d/RPC2r)rrr1r2rrr)rrrvrrrtest_allow_dotted_names_trues z1SimpleServerTestCase.test_allow_dotted_names_truecCs*tdttf}||ddddS)Nrr{éuaé)rrr1r2rr*rrrrrtest_unicode_hostsz&SimpleServerTestCase.test_unicode_hostcCsVttttf.}|dtdtddWdn1sH0YdS)Nz@POST /RPC2 HTTP/1.0 Content-Length: 100 bye HTTP/1.1 Host: :z2 Accept-Encoding: identity Content-Length: 0 r)ryrzrcreate_connectionr1r2sendrl)rr|rrrtest_partial_postsz&SimpleServerTestCase.test_partial_postcCs^tt.}|dd||djdWdn1s>0Y||djddS)NrrG transportNN)rrr3r*ZassertNotEqual _connectionrrrrrtest_context_managers   " z)SimpleServerTestCase.test_context_managercCsfz:tt}|ddWdn1s.0YWntjyNYn0||djddS)Nrr{rr)rrr3r*rrrrrrr!test_context_manager_method_errors . z6SimpleServerTestCase.test_context_manager_method_errorN)r5r6r7rprrrwrxr}rrr]rYflagsoptimizerrrrrrrrrrrrrrrjs(         rjc@s"eZdZedddZddZdS)SimpleServerEncodingTestCaseNcCst|||ddS)Nrg)r?)r;r<r=rirrrrcsz'SimpleServerEncodingTestCase.threadFuncc Csd}d}z&tt}||||||WnNtjtjfy|}z.t|sh| d|t |ddfWYd}~n d}~00dS)Nrsrtrlrrrurqrrrtest_server_encodings z1SimpleServerEncodingTestCase.test_server_encoding)NN)r5r6r7rrcrrrrrrs rc@speZdZeeZdZddZddZddZ dd Z d d Z d d Z ddZ ddZddZddZddZdS)MultiPathServerTestCasercCs:ttd}||ddd|tj|jdddS)NrErrrk)rrr3rr7rBrr*rrrrr test_path1sz"MultiPathServerTestCase.test_path1cCs:ttd}||ddd|tj|jdddS)NrFrr)rrr3rr*rBrr7rrrr test_path2sz"MultiPathServerTestCase.test_path2cCs&ttd}|tj|jdddS)NrOrrrrr3rBrr*rrrr test_path3sz"MultiPathServerTestCase.test_path3cCs&ttd}|tj|jdddS)Nz/invalidrrrrrrrtest_invalid_path sz)MultiPathServerTestCase.test_invalid_pathcCs"ttd}||ddS)NrIrrr3rrNrrrrtest_path_query_fragmentsz0MultiPathServerTestCase.test_path_query_fragmentcCs"ttd}||ddS)NrHrrrrrtest_path_fragmentsz*MultiPathServerTestCase.test_path_fragmentcCs"ttd}||ddS)NrGrrrrrtest_path_querysz'MultiPathServerTestCase.test_path_querycCstt}||ddS)NrKrrrrrtest_empty_paths z'MultiPathServerTestCase.test_empty_pathcCs"ttd}||ddS)NrJrrrrrtest_root_pathsz&MultiPathServerTestCase.test_root_pathcCs"ttd}||ddS)NrLrrrrrtest_empty_path_query"sz-MultiPathServerTestCase.test_empty_path_querycCs"ttd}||ddS)NrMrrrrrtest_empty_path_fragment&sz0MultiPathServerTestCase.test_empty_path_fragmentN)r5r6r7rrQrcrbrrrrrrrrrrrrrrrrsrc@s,eZdZGdddejjZeZddZdS)BaseKeepaliveServerTestCasec@s,eZdZejjZdZgZddZ ddZ dS)z*BaseKeepaliveServerTestCase.RequestHandlerrcCs(|jgt|jd|_|j|Sr) myRequestsrMrreqidx parentClasshandlerDrrrr4s z1BaseKeepaliveServerTestCase.RequestHandler.handlecCs$|j|}|j|j|j|SrV)rhandle_one_requestrrrMZraw_requestline)rr)rrrr8s z=BaseKeepaliveServerTestCase.RequestHandler.handle_one_requestN) r5r6r7rrr.rrrrrrrrrr0s rcCsg|j_t|SrV)rrr^rgrDrrrrg>sz!BaseKeepaliveServerTestCase.setUpN) r5r6r7rrr.rr=rgrrrrr-s rc@seZdZddZdS)KeepaliveServerTestCase1cCstt}||ddd||ddd||ddd|d|t|jjd|t|jjdddS)Nrrrkr:rrr rrr3rr7rrrZassertGreaterEqualrrrrtest_twoFs  z!KeepaliveServerTestCase1.test_twoN)r5r6r7rrrrrrEsrc@s eZdZdZddZddZdS)KeepaliveServerTestCase2rcCstt}||ddd||ddd||ddd|d||ddd||ddd||ddd|d|t|jjd|t|jjdd|t|jjdddS)Nrrrkr:rrrrrrr test_close\s   z#KeepaliveServerTestCase2.test_closecCs`tt}||ddd|d||ddd|d|t|jjddS)Nrrrkrr:r) rrr3rr7r:rrrrrrrtest_transportos    z'KeepaliveServerTestCase2.test_transportN)r5r6r7rbrrrrrrrXsrz requires gzipc@sVeZdZGdddejjZeZGdddej Z ddZ ddZ d d Z d d Z d S)GzipServerTestCasec@s eZdZejjZdZddZdS)z!GzipServerTestCase.RequestHandlerrcCst|jd|j_|j|S)Ncontent-length)r[r __class__content_lengthrrrDrrrrsz)GzipServerTestCase.RequestHandler.do_POSTN) r5r6r7rrr.rrrrrrrr~src@s eZdZdZddZddZdS)zGzipServerTestCase.TransportFcCs t|dd|_tj||S)Nrr)r[Z getheaderresponse_lengthrrparse_response)rrrrrrsz+GzipServerTestCase.Transport.parse_responsecCs"|jr|ddtj|||S)NzContent-Encodinggzip) fake_gzipZ putheaderrr send_content)r connectionbodyrrrrs z)GzipServerTestCase.Transport.send_contentN)r5r6r7rrrrrrrrsrcCst|dSrV)r^rgrDrrrrgszGzipServerTestCase.setUpcCsv|}d|_tjt|d}||ddd|jj}d|_||ddd|jj}| ||k|ddSNrrrrkrr:) rencode_thresholdrrr3rr7rrr)rr>rr{r|rrrtest_gzip_requestsz$GzipServerTestCase.test_gzip_requestcCst|}d|_d|_tjt|d}|tjt d}|| ddWdn1s\0Y|ddS)NTrz\b400\brrr:) rrrrrr3rrWrecompiler7)rr>rcmrrrtest_bad_gzip_requests*z(GzipServerTestCase.test_bad_gzip_requestcCs|}tjt|d}|jj}d|j_||ddd|j}d|j_||ddd|d|j}||j_| ||kdSr) rrrr3r=rrr7rr)rr>roldr{r|rrrtest_gzip_responses z%GzipServerTestCase.test_gzip_responseN)r5r6r7rrr.rr=rrrgrrrrrrrrzs   rc@seZdZddZdS)GzipUtilTestCasecCsd}d|}t|}t|}|t||d|d}t|}|tdt|Wdn1sr0Ytj|dddS)Ni@rz#max gzipped payload length exceededr)Z max_decode)rZ gzip_encodeZ gzip_decoderrrr)rZmax_gzip_decodervencodedZdecodedrrrtest_gzip_decode_limits    (z'GzipUtilTestCase.test_gzip_decode_limitN)r5r6r7rrrrrrsrcsleZdZGdddejjZeZgdZfddZ ddZ dd Z d d Z d d Z ddZddZZS)HeadersServerTestCasecs eZdZdZfddZZS)z$HeadersServerTestCase.RequestHandlerNcs|j|j_tSrV)rr test_headerssuperrrDrrrrs z,HeadersServerTestCase.RequestHandler.do_POST)r5r6r7rr __classcell__rrrrrsr)ZHostzAccept-Encodingz Content-Typez User-Agentrcsd|j_tSrV)rrrrgrDrrrrgszHeadersServerTestCase.setUpcCsRt|jt|}|t|||D]\}}||||q2dSrV)sortedstandard_headerslistkeysZassertListEqualitemsrr)rr additionalZ expected_keyskeyr/rrrassertContainsAdditionalHeaderssz5HeadersServerTestCase.assertContainsAdditionalHeaderscCs@tjtdgd}||ddd|jj}||ddidS)NX-Testfoorrrrkrrrrr3rr7rrrrrrrrr test_headersz!HeadersServerTestCase.test_headercCsDtjtddgd}||ddd|jj}||ddd dS) Nr) X-Test-Secondbarrrrrkrr)rrrrrrrtest_header_manys z&HeadersServerTestCase.test_header_manycCs:tjtgd}||ddd|jj}||idS)Nrrrrkrrrrrtest_header_emptysz'HeadersServerTestCase.test_header_emptycCs>tjtdd}||ddd|jj}||ddidS)N)rrrrrkrrrrrrrtest_header_tuplesz'HeadersServerTestCase.test_header_tuplecCsFtjtddid}||ddd|jj}||ddidS)Nrrrrrrk) rrr3rrr7rrrrrrrtest_header_itemssz'HeadersServerTestCase.test_header_items)r5r6r7rrr.rr=rrgrrrrrrrrrrrrs  rc@s$eZdZddZddZddZdS)ServerProxyTestCasecCstj|d|_dS)Nzhttp://fake.localhost)rXTestCasergrrDrrrrgs zServerProxyTestCase.setUpcCs"t|j}||dddS)Nr:)rrrrrrrrrs zServerProxyTestCase.test_closecCs,t}tj|j|d}||d|dS)Nrr)rrrrr)rr>rrrrrsz"ServerProxyTestCase.test_transportN)r5r6r7rgrrrrrrrsrcseZdZdfdd ZZS)FailingMessageClassNcs"|}|dkrdSt||S)Nrz I am broken)rSrr)rrZfailobjrrrr$szFailingMessageClass.get)N)r5r6r7rrrrrrr#src@s4eZdZddZddZddZddZd d Zd S) FailingServerTestCasecCsNt|_|jdf}tjt|d}|||j|j|j dS)Nrr_) rrar;rr?rrrrdrerfrrrrg,s    zFailingServerTestCase.setUpcCs*|jdtjj_tjj}|tjj _ dSrh) r;rdrrr-r`rr HTTPMessager. MessageClass)rZ default_classrrrri8s  zFailingServerTestCase.tearDownc Cstjjj}||ddtjj_z"tt}||dddWnLtj t fy}z.t |sz| d|t |ddfWYd}~n d}~00dS) NFTrrrkrlrr)rrr-r`rrrr3r7rWrrUrmrn)rZflagvalrrTrrr test_basicAs    z FailingServerTestCase.test_basicc Csttjj_ztt}|ddWnhtj t fy}zJt |sxt |drx| |jddu| |jdduWYd}~nd}~00|ddS)NrrrrR X-tracebackProtocolError not raised)rrrr.rrrr3r7rWrrUhasattrrrrrmrorrrtest_fail_no_infoSs  ,z'FailingServerTestCase.test_fail_no_infoc Csttjj_dtjj_ztt }| ddWnjtj t fy}zLt |st|drd}||jd|||jdduWYd}~nd}~00|ddS) NTrrrz5invalid literal for int() with base 10: 'I am broken'rRrr)rrrr.rr-r`rrr3r7rWrrUrrrrrrm)rrrTZ expected_errrrrtest_fail_with_infocs   ,z)FailingServerTestCase.test_fail_with_infoN)r5r6r7rgrirrrrrrrr+s   rutf-8ccs:tj}tjt|dt_ztjVW|t_n|t_0dS)Nrh)rYstdoutio TextIOWrapperBytesIO)riZ orig_stdoutrrrcaptured_stdoutys  rc@s,eZdZddZddZddZddZd S) CGIHandlerTestCasecCstj|_dSrV)rrCGIXMLRPCRequestHandlercgirDrrrrgszCGIHandlerTestCase.setUpcCs d|_dSrV)rrDrrrriszCGIHandlerTestCase.tearDownc Cst}d|d<t|jjd}|jWdn1s@0Y|d|}|d}d |dd}| |d | |d Wdn1s0YdS) NGETZREQUEST_METHODrhrr rrKZ400z Bad Request) rEnvironmentVarGuardrrrirseekrsplitrr)renvdata_outrr{messagerrr test_cgi_gets (   zCGIHandlerTestCase.test_cgi_getc Csd}t}t|jjdf}t>}|||dtt ||d<|j Wdn1sj0YWdn1s0YWdn1s0Y|d| }| t jt j|dd||dd}|ttd|dt |dS) Naw test_method foo bar rhrZCONTENT_LENGTH,zUseBuiltinTypesTestCase.test_use_builtin_types..foobarT)rdrir r)rr"rrrrrrrCrrr$r%ro)rZexpected_bytesZ expected_dateZ marshaledrhandlerZmybytesZmydaterrDrtest_use_builtin_typess    z.UseBuiltinTypesTestCase.test_use_builtin_typescCstjjdd}||jdS)NTr)rrrrr )rrrrr*test_cgihandler_has_use_builtin_types_flagszBUseBuiltinTypesTestCase.test_cgihandler_has_use_builtin_types_flagcCs(tjjddd}|||jdS)Nr!Tr)rrr-rrr rrrr,test_xmlrpcserver_has_use_builtin_types_flags zDUseBuiltinTypesTestCase.test_xmlrpcserver_has_use_builtin_types_flagN)r5r6r7rrrrrrrrsrcCs t}tjtjg|RdSrV)rZthreading_setuprXZaddModuleCleanupZthreading_cleanup) thread_inforrr setUpModulesr__main__)NN)N)r)Er r"rrYrrXr xmlrpc.clientrrZ xmlrpc.serverrZ http.clientrZ http.serverrrrrryrNrZ test.supportrrrrrrrnrpr#rrrrrrrrr1r2r3r?rQrUr]r^rjrrrrrZskipIfrrrrrrrcontextmanagerrrrrr5mainrrrrs       =W_  @ HH4"C>N D!