ÿØÿà 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 3g @sddlZddlmZddlmZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl Z ddl Z ddlZddlZddlZddlZddlZddlmZddlZddlZddlZddlZddlZddlZddlZddlZddlZz ddlZWne ydZYn0z ddl!Z!Wne y.dZ!Yn0ej"Z"d#dZ$dZ%e&d kZ'z ddl(Z(Wne ytdZ(Yn0d d Z)d d Z*ddZ+ddZ,ddZ-ddZ.ddZ/ddZ0ddZ1ej2ddZ3e*Z4e+Z5e,Z6e-Z7e.Z8e/Z9e0Z:e;edZZ?Gd d!d!ej@ZAGd"d#d#ej@ZBGd$d%d%eBZCGd&d'd'ZDGd(d)d)ej@ZEGd*d+d+ej@ZFGd,d-d-ZGGd.d/d/eAeGZHGd0d1d1eBeGZIeJed>ej@eGZOGd?d@d@eHZPGdAdBdBej@eGZQGdCdDdDej@ZRGdEdFdFeRZSGdGdHdHeDeReGZTGdIdJdJeSeTZUGdKdLdLeRZVGdMdNdNeVZWGdOdPdPeRZXGdQdRdReXZYGdSdTdTeXZZGdUdVdVeXZ[GdWdXdXeXZ\GdYdZdZeXZ]Gd[d\d\e]Z^Gd]d^d^e]Z_d_d`Z`dadbZadcddZbGdedfdfej@ZceJe4dgGdhdidiej@ZdeJe4dgGdjdkdkeLZeeJe5dlGdmdndnej@ZfeJe6doGdpdqdqej@ZgeJe7drGdsdtdtej@ZheJe7drGdudvdveMZieJe9dwGdxdydyej@ZjeNe!dud9eJe:d:Gdzd{d{ej@ZkeJe=d|Gd}d~d~ej@ZlGdddePZmGdddeIZneJed?d?ej@ZeJe;ed@dAGdBdCdCej@ZeJejǐdDkdEeJedFGdGdHdHeAZGdIdJdJeHZeJe;edKdLGdMdNdNeɃZeJe8dOGdPdQdQej@ZeJej̐dRdSGdTdUdUej@ZGdVdWdWej@ZGdXdYdYej@ZeaedZeaed[eaedGd\d]d]ej@ZАd^d_ZeҐd`kreӡdS(aN)support) socket_helper)proxyFuMichael Gilfix was hereሴ utf-8AIXcCstdur dSttdsdSz>tdd }t|tjd}Wdn1sL0YWntylYdS0td|dSdS)NIOCTL_VM_SOCKETS_GET_LOCAL_CIDz /dev/vsockrbz Ir) fcntlhasattrsocketopenioctlrOSErrorstructunpack)frr//opt/python39/lib/python3.9/test/test_socket.pyget_cid2s  2 rc Cs>zttjtjtj}Wnttfy0YdS0|dSNFT)r PF_CANSOCK_RAWCAN_RAWAttributeErrorrclosesrrr_have_socket_can?s r c Cs>zttjtjtj}Wnttfy0YdS0|dSr)r r SOCK_DGRAM CAN_ISOTPrrrrrrr_have_socket_can_isotpIs r#c Cs>zttjtjtj}Wnttfy0YdS0|dSr)r rr! CAN_J1939rrrrrrr_have_socket_can_j1939Ss r%c Cs<zttjtjd}Wnttfy.YdS0|dSNrFT)r PF_RDSSOCK_SEQPACKETrrrrrrr_have_socket_rds]s r)c Cs<zttjtjd}Wnttfy.YdS0|dSr&)r AF_ALGr(rrrrrrr_have_socket_alggs r+c Cs<zttjtjd}Wnttfy.YdS0|dSr&)r AF_QIPCRTRr!rrrrrrr_have_socket_qipcrtrqs r-cCstdu}|SN)r)retrrr_have_socket_vsock{s r0c Cs>zttjtjtj}Wnttfy0YdS0|dSr)r AF_BLUETOOTH SOCK_STREAMBTPROTO_RFCOMMrrrrrrr_have_socket_bluetooths r4c cs8t}zt|dVWt|n t|0dSr.)r getdefaulttimeoutsetdefaulttimeout)timeoutZ old_timeoutrrrsocket_setdefaulttimeouts  r8IPPROTO_UDPLITEic@seZdZddZddZdS) SocketTCPTestcCs.ttjtj|_t|j|_|jdSr.)r AF_INETr2servr bind_portportlistenselfrrrsetUpszSocketTCPTest.setUpcCs|jd|_dSr.r=rrArrrtearDowns zSocketTCPTest.tearDownN__name__ __module__ __qualname__rCrErrrrr;sr;c@seZdZddZddZdS) SocketUDPTestcCs$ttjtj|_t|j|_dSr.)r r<r!r=rr>r?rArrrrCszSocketUDPTest.setUpcCs|jd|_dSr.rDrArrrrEs zSocketUDPTest.tearDownNrFrrrrrJsrJc@seZdZddZdS)SocketUDPLITETestcCs(ttjtjtj|_t|j|_dSr.)r r<r!r9r=rr>r?rArrrrCszSocketUDPLITETest.setUpN)rGrHrIrCrrrrrKsrKcs4eZdZfddZfddZfddZZS)ThreadSafeCleanupTestCasecs tj|i|t|_dSr.)super__init__ threadingRLock _cleanup_lockrBargskwargs __class__rrrNsz"ThreadSafeCleanupTestCase.__init__cs<|j"tj|i|WdS1s.0YdSr.)rQrM addCleanuprRrUrrrWsz$ThreadSafeCleanupTestCase.addCleanupcs<|j"tj|i|WdS1s.0YdSr.)rQrM doCleanupsrRrUrrrXsz$ThreadSafeCleanupTestCase.doCleanups)rGrHrIrNrWrX __classcell__rrrUrrLs  rLc@sDeZdZdZdZdZeeZdZ e dee d7Z ddZ d S) SocketCANTestvcan0z=IB3x8sz@3I4l2IxcCs`ttjtjtj|_||jjz|j|jfWn"t yZ| d|jYn0dSN%network interface `%s` does not exist) r rrrrrWrbind interfacerskipTestrArrrrCs zSocketCANTest.setUpN) rGrHrIrbbufsize can_frame_fmtrcalcsizeZcan_frame_sizebcm_cmd_msg_fmtrCrrrrrZs  rZc@seZdZdZddZdS) SocketRDSTest cCsVttjtjd|_||jjzt|j|_Wnt yP| dYn0dS)Nrzunable to bind RDS socket) r r'r(r=rWrrr>r?rrcrArrrrCs  zSocketRDSTest.setUpN)rGrHrIrdrCrrrrrhsrhc@s<eZdZddZddZddZddZd d Zd d Zd S)ThreadableTestcCs|j|_|j|_dSr.)rC_ThreadableTest__setUp_setUprArrrrNDszThreadableTest.__init__cCs|jdSr.) server_readysetrArrrserverExplicitReadyIsz"ThreadableTest.serverExplicitReadycs t_jjjdddt_t_ t_ t d_ d_ fdd}|}|d}||dd}td|}tj|f_z0z Wnd_ Yn0Wjn j0j j jdS)NFcsjrjdSr.)queueqsizegetrrArrraise_queued_exception[s z5ThreadableTest._setUp..raise_queued_exception._T)rZwait_threads_exitZ wait_threads __enter__rW__exit__rOEventrm client_readydonerqQueueserver_crashedidrfindgetattrthreadstart_new_thread clientRunZ client_threadrkrnwait)rBrtZ methodnamer:Z test_methodrrArrlPs2            zThreadableTest._setUpc Cs|jzbz |WnFty^}z.|j||WYd}~W|jdSd}~00W|jn |j0|j r|dSt |dst dzHz |Wn0ty}z|j|WYd}~n d}~00W|n |0dS)N__call__z%test_func must be a callable function) rmr clientSetUp BaseExceptionrqputclientTearDownrzrnr}r TypeError)rBZ test_funcerrrrrs(       $zThreadableTest.clientRuncCs tddS)Nz clientSetUp must be implemented.)NotImplementedErrorrArrrrszThreadableTest.clientSetUpcCs|jtdSr.)r{rnrexitrArrrrs zThreadableTest.clientTearDownN) rGrHrIrNrorlrrrrrrrrjs &"rjc@s&eZdZd ddZddZddZdS) ThreadedTCPSocketTestrunTestcCstj||dt|dSN) methodNamer;rNrjrBrrrrrNszThreadedTCPSocketTest.__init__cCsttjtj|_dSr.)r r<r2clirArrrrsz!ThreadedTCPSocketTest.clientSetUpcCs|jd|_t|dSr.rrrjrrArrrrs z$ThreadedTCPSocketTest.clientTearDownN)rrGrHrIrNrrrrrrrs rc@s&eZdZd ddZddZddZdS) ThreadedUDPSocketTestrcCstj||dt|dSr)rJrNrjrrrrrNszThreadedUDPSocketTest.__init__cCsttjtj|_dSr.)r r<r!rrArrrrsz!ThreadedUDPSocketTest.clientSetUpcCs|jd|_t|dSr.rrArrrrs z$ThreadedUDPSocketTest.clientTearDownN)rrrrrrrs rz'UDPLITE sockets required for this test.c@s&eZdZd ddZddZddZdS) ThreadedUDPLITESocketTestrcCstj||dt|dSr)rKrNrjrrrrrNsz"ThreadedUDPLITESocketTest.__init__cCsttjtjtj|_dSr.)r r<r!r9rrArrrrsz%ThreadedUDPLITESocketTest.clientSetUpcCs|jd|_t|dSr.rrArrrrs z(ThreadedUDPLITESocketTest.clientTearDownN)rrrrrrrs rc@s&eZdZd ddZddZddZdS) ThreadedCANSocketTestrcCstj||dt|dSr)rZrNrjrrrrrNszThreadedCANSocketTest.__init__cCsBttjtjtj|_z|j|jfWnty<Yn0dSr.)r rrrrrarbrrArrrrs  z!ThreadedCANSocketTest.clientSetUpcCs|jd|_t|dSr.rrArrrrs z$ThreadedCANSocketTest.clientTearDownN)rrrrrrrs  rc@s&eZdZd ddZddZddZdS) ThreadedRDSSocketTestrcCstj||dt|dSr)rhrNrjrrrrrNszThreadedRDSSocketTest.__init__cCsLttjtjd|_z |jtdf|j|_WntyFYn0dSNr) r r'r(rraHOST getsocknamecli_addrrrArrrrs  z!ThreadedRDSSocketTest.clientSetUpcCs|jd|_t|dSr.rrArrrrs z$ThreadedRDSSocketTest.clientTearDownN)rrrrrrrs  r need fcntlz%VSOCK sockets required for this test.z-This test can only be run on a virtual guest.c@s6eZdZd ddZddZddZdd Zd d Zd S)ThreadedVSOCKSocketStreamTestrcCstjj||dt|dSrunittestTestCaserNrjrrrrrNsz&ThreadedVSOCKSocketStreamTest.__init__cCshttjtj|_||jj|jtjtf|j | |j \|_ |_ ||j jdSr.)r AF_VSOCKr2r=rWrraVMADDR_CID_ANY VSOCKPORTr@roacceptconnconnaddrrArrrrCs z#ThreadedVSOCKSocketStreamTest.setUpcCsDtdttjtj|_||jjt}|j |t fdS)N皙?) timesleepr rr2rrWrrconnectr)rBZcidrrrrs  z)ThreadedVSOCKSocketStreamTest.clientSetUpcCs|jd}||tdSN)rrecv assertEqualMSGrBmsgrrr testStreams z(ThreadedVSOCKSocketStreamTest.testStreamcCs|jt|jdSr.rsendrrrArrr _testStreams z)ThreadedVSOCKSocketStreamTest._testStreamN)rrGrHrIrNrCrrrrrrrrs   rc@s6eZdZd ddZddZddZdd Zd d Zd S)SocketConnectedTestrcCstj||ddSr)rrNrrrrrNszSocketConnectedTest.__init__cCs*t|||j\}}||_dSr.)rrCror=rcli_connrBraddrrrrrCs zSocketConnectedTest.setUpcCs|jd|_t|dSr.)rrrrErArrrrEs zSocketConnectedTest.tearDowncCs(t||jt|jf|j|_dSr.)rrrrrr? serv_connrArrrrs zSocketConnectedTest.clientSetUpcCs|jd|_t|dSr.)rrrrrArrrr$s z"SocketConnectedTest.clientTearDownN)rrGrHrIrNrCrErrrrrrrs  rc@s6eZdZd ddZddZddZdd Zd d Zd S)SocketPairTestrcCstjj||dt|dSrrrrrrrN+szSocketPairTest.__init__cCst\|_|_dSr.)r socketpairr=rrArrrrC/szSocketPairTest.setUpcCs|jd|_dSr.rDrArrrrE2s zSocketPairTest.tearDowncCsdSr.rrArrrr6szSocketPairTest.clientSetUpcCs|jd|_t|dSr.rrArrrr9s zSocketPairTest.clientTearDownN)rrrrrrr)s  rc@s$eZdZddZddZddZdS)SocketTestBasecCs||_|dSr.) newSocketr= bindServerrArrrrCNs zSocketTestBase.setUpcCs||j|j|_dSr.)bindSockr=r serv_addrrArrrrRs zSocketTestBase.bindServercCs|jd|_dSr.rDrArrrrEWs zSocketTestBase.tearDownN)rGrHrIrCrrErrrrrEs rcseZdZfddZZS)SocketListeningTestMixincst|jdSr.)rMrCr=r@rArUrrrC_s zSocketListeningTestMixin.setUprGrHrIrCrYrrrUrr\srcs<eZdZfddZddZddZddZd d ZZS) ThreadedSocketTestMixincs tj|i|t|dSr.)rMrNrjrRrUrrrNlsz ThreadedSocketTestMixin.__init__cCs||_|dSr.)newClientSocketr bindClientrArrrrps z#ThreadedSocketTestMixin.clientSetUpcCs|Sr.)rrArrrrtsz'ThreadedSocketTestMixin.newClientSocketcCs||j|j|_dSr.)rrrrrArrrrxs z"ThreadedSocketTestMixin.bindClientcCs|jd|_t|dSr.rrArrrr}s z&ThreadedSocketTestMixin.clientTearDown) rGrHrIrNrrrrrYrrrUrrds  rcs@eZdZfddZfddZfddZfddZZS) ConnectedStreamTestMixincs*t||j\}}||_dSr.)rMrCror=rrrrUrrrCs zConnectedStreamTestMixin.setUpcs|jd|_tdSr.)rrrMrErArUrrrEs z!ConnectedStreamTestMixin.tearDowncs$t|j|j|j|_dSr.)rMrrrrrrArUrrrs z$ConnectedStreamTestMixin.clientSetUpcs6z|jd|_Wnty&Yn0tdSr.)rrrrMrrArUrrrs    z'ConnectedStreamTestMixin.clientTearDown)rGrHrIrCrErrrYrrrUrrs   rcs$eZdZfddZddZZS)UnixSocketTestBasecs(t|_|tj|jtdSr.)tempfilemkdtempdir_pathrWosrmdirrMrCrArUrrrCs zUnixSocketTestBase.setUpcCs,tj|jd}t|||tj|dS)N)dir)rmktemprrbind_unix_socketrWrunlink)rBsockpathrrrrs zUnixSocketTestBase.bindSock)rGrHrIrCrrYrrrUrrs rc@seZdZddZdS)UnixStreamBasecCsttjtjSr.)r AF_UNIXr2rArrrrszUnixStreamBase.newSocketNrGrHrIrrrrrrsrcs(eZdZeZfddZddZZS) InetTestBasecst|jd|_dSNrp)rMrCrr?rArUrrrCs zInetTestBase.setUpcCstj||jddS)Nhost)rr>rrBrrrrrszInetTestBase.bindSock)rGrHrIrrrCrrYrrrUrrs rc@seZdZddZdS) TCPTestBasecCsttjtjSr.)r r<r2rArrrrszTCPTestBase.newSocketNrrrrrrsrc@seZdZddZdS) UDPTestBasecCsttjtjSr.)r r<r!rArrrrszUDPTestBase.newSocketNrrrrrrsrc@seZdZddZdS)UDPLITETestBasecCsttjtjtjSr.)r r<r!r9rArrrrszUDPLITETestBase.newSocketNrrrrrrsrc@seZdZddZdS)SCTPStreamBasecCsttjtjtjSr.)r r<r2 IPPROTO_SCTPrArrrrs zSCTPStreamBase.newSocketNrrrrrrsrc@seZdZejZdS) Inet6TestBaseN)rGrHrIrHOSTv6rrrrrrsrc@seZdZddZdS) UDP6TestBasecCsttjtjSr.)r AF_INET6r!rArrrrszUDP6TestBase.newSocketNrrrrrrsrc@seZdZddZdS)UDPLITE6TestBasecCsttjtjtjSr.)r rr!r9rArrrrszUDPLITE6TestBase.newSocketNrrrrrrsrcs*ddfdd}dd}|r&|S|S)Nc_sdSr.rrSrTrrr client_passsz%skipWithClientIf..client_passcs*t|}t|ts&fdd|_|S)NcsSr.rr)rrrz3skipWithClientIf..skipdec..)rskip isinstancetype client_skip)objZretvalrreasonrrskipdecs z!skipWithClientIf..skipdeccSs"t|tst|dsdd|_|S)NrcSs|Sr.rrrrrr rz5skipWithClientIf..noskipdec..)rrr rrrrr noskipdec s z#skipWithClientIf..noskipdecr)Z conditionrrrrrrskipWithClientIfs rcs0fdd|D}t|dddd|DS)Ncsg|]}t|s|qSr)r .0namerrr rz requireAttrs.. don't have , css|] }|VqdSr.rrrrr rzrequireAttrs..)rjoin)rZ attributesmissingrrr requireAttrssrc Gsd}dd|D}|r0dddd|D}nRdd|D}ztj|}Wn,tyx}zt|}WYd}~nd}~00|t|duddd d|D|S) NcSs$g|]}t|trtt|s|qSr)rstrr r rrrrrr#sz!requireSocket..rrcss|] }|VqdSr.rrrrrr&rz requireSocket..cSs$g|]}t|trtt|n|qSr)rrrr rrrrr(szcan't create socket({0}): {1}css|]}t|VqdSr.)rrorrrr4r)rr rrrrformat)rSerrrZcallargsrrrrr requireSockets$r c@speZdZddZddZeedudddZd d Z d d Z d dZ ddZ ddZ eejdkdddZeejdkdeejdddZddZddZd d!Zeeed"d#eeed$d%d&d'Zeeed(d)d*d+Zeeed,d-d.d/Zeeed0d1d2d3Zeeed4d5d6d7Zd8d9Z d:d;Z!e"j#dd?Z%d@dAZ&eeedBdCdDdEZ'eeedFdGdHdIZ(eeedFdGdJdKZ)eeedLdMdNdOZ*eeedLdMdPdQZ+dRdSZ,dTdUZ-dVdWZ.dXdYZ/dZd[Z0d\d]Z1d^d_Z2eejdkdd`daZ3eejdkdeeedbdcdddeZ4dfdgZ5dhdiZ6ee"7djdkdldmZ8dndoZ9dpdqZ:drdsZ;dtduZdzd{Z?d|d}Z@d~dZAddZBddZCe"j#ddZDeejdddZEeejdddZFeejdeGejdkdeGeHdddZIeejdeejdkdddZJeejdeGejdkdeGeHdddZKeejdeejdkdddZLddZMddZNddZOeeeddddZPddZQddZRddZSddZTddZUeGejdkdddZVddZWddZXdS)GeneralModuleTestscCs<ddl}|tj|jut}||tj|dSr)_socket assertTruer SocketTypeassertIsInstancer)rBrrrrrtest_SocketType_is_socketobject<s z2GeneralModuleTests.test_SocketType_is_socketobjectcCsttjtj}||d|t||dtjt||dtjt||dt||dt||d|dt||t| t|Wdn1s0Y|dt||dt|dS) Nzfd=%iz family=%sztype=%szproto=0raddr 127.0.0.1rladdrz[closed]) r r<r2assertInfilenorepr assertNotInrarrrBrrrr test_reprCs 6zGeneralModuleTests.test_reprNzneed _socket modulecCszttjtj}z6d||j|j|jf}|t ||W| n | 0d|j|j|jf}|t ||dS)Nz4z4) rr r<r2rfamilyrprotorrr)rBrexpectedrrrtest_csocket_reprQsz$GeneralModuleTests.test_csocket_reprcCsttjtj,}t|}|||Wdn1sB0Yd}tz |WntyvYn 0| ddS)NzSocket proxy still exists) r r<r2rrrr gc_collectReferenceErrorfail)rBrprrr test_weakref^s2  zGeneralModuleTests.test_weakrefcCsd}|jt|ddtWdn1s00Y|jt|ddtjWdn1sh0Y|jt|ddtjWdn1s0YdS)Nz$Error raising socket exception (%s).rrz socket.herrorzsocket.gaierror) assertRaisesrr herrorgaierrorrrrrtestSocketErrorks"$z"GeneralModuleTests.testSocketErrorcCsttjtj}||j|d|}|t}| d|Wdn1sZ0Y| t |j d|t}| d|Wdn1s0Y| t |j d|t}| ddWdn1s0Y| dt |j |t}| dd|Wdn1s60Y| t |j d|t}| dd|Wdn1s0Y| t |j d|t}| dddWdn1s0Y| dt |j |t}| dd |Wdn1s0Y| d t |j |t}| dddWdn1sf0Y| d t |j |t}| dWdn1s0Y| d t |j |t }| dd|d Wdn1s0Y| d t |j dS)N)ru☠z*a bytes-like object is required, not 'str'y@z.a bytes-like object is required, not 'complex'fooz not NoneTyperbarzan integer is requiredz (1 given)z (4 given))r r<r!rWrrarr'rsendtorr exceptionr)rBrZsocknamecmrrrtestSendtoErrorsusT   *  *  * .  .  . . . * 0z#GeneralModuleTests.testSendtoErrorscCs@tjtjrtjtjtjtjtjtjtj tj dSr.) r r<has_ipv6rr2r!rSOCK_RDMr( SOL_SOCKET SO_REUSEADDRrArrrtestCrucialConstantssz'GeneralModuleTests.testCrucialConstantscCstjtjtjrtjdSr.)r IPPROTO_TCP IPPROTO_UDPr3 IPPROTO_IPV6rArrrtestCrucialIpProtoConstantssz.GeneralModuleTests.testCrucialIpProtoConstantsntWindows specificcCs4tjtjtjtjtjtjtjtjdSr.) r ZIPPROTO_ICLFXBMZ IPPROTO_STZ IPPROTO_CBTZ IPPROTO_IGPZ IPPROTO_RDPZ IPPROTO_PGMZ IPPROTO_L2TPrrArrrtestWindowsSpecificConstantssz/GeneralModuleTests.testWindowsSpecificConstantsdarwinzmacOS specific testIPv6 required for this testcCs0hd}|D]}|tt|d|dq dS)N> IPV6_TCLASS IPV6_HOPLIMIT IPV6_PATHMTUIPV6_RECVPKTINFOIPV6_RTHDR_TYPE_0ZIPV6_USE_MIN_MTU IPV6_HOPOPTS IPV6_RTHDR IPV6_DONTFRAGIPV6_RECVRTHDRIPV6_RECVTCLASS IPV6_CHECKSUMIPV6_RECVPATHMTUIPV6_RECVHOPLIMITIPV6_RECVDSTOPTS IPV6_NEXTHOP IPV6_DSTOPTS IPV6_PKTINFOIPV6_RTHDRDSTOPTSIPV6_RECVHOPOPTSzMissing RFC3542 socket option '')rr r )rBZoptsoptrrrtest3542SocketOptionss z(GeneralModuleTests.test3542SocketOptionscCst}zt|}Wnty2|dYn0||ddkdzt|\}}}Wntyz|dYn0||g|}t|}||vr| d|t |fdS)Nname lookup failurerurzError resolving host to ip.z=Error testing host resolution mechanisms. (fqdn: %s, all: %s)) r gethostname gethostbynamerrcrfind gethostbyaddrgetfqdnr#r)rBhostnameZipZhnamealiasesipaddrsZall_host_namesZfqhnrrrtestHostnameRess    z"GeneralModuleTests.testHostnameRescCsLtjddfD]}|t||q tjfD]}||t|dq,dS)Nz10.0.0.1255.255.255.255r)rZHOSTv4rr rYrr[)rBrrrrrtest_host_resolutions z'GeneralModuleTests.test_host_resolutionc Csd}dD]t}|jt|dt|Wdn1s:0Y|jt|dt|Wdq1sr0YqdS)Nz[resolving an invalid IP address did not raise OSError; can be caused by a broken DNS server)z0.1.1.~1z1+.1.1.1z::1qz::1::2z1:1:1:1:1:1:1:1:1r&)r'rr rYr[)rBZ explanationrrrr test_host_resolution_bad_addresss(z3GeneralModuleTests.test_host_resolution_bad_address sethostnameztest needs socket.sethostname()rXztest needs socket.gethostname()c Cst}ztdWn>tyT}z&|jtjkr>|dnWYd}~n d}~00z8|tdtd|tdWt|n t|0dS)Nnewztest should be run as rootsbarr-)r rXrdrerrnoEPERMrcr)rBZoldhnrrrrtest_sethostname s   z#GeneralModuleTests.test_sethostname if_nameindexz$socket.if_nameindex() not available.cCst}|D]p\}}||t||t||dt|}||t|||t|}||t|||q dSr) r ririntr assertGreaterif_nametoindexrif_indextoname)rBZ interfacesindexrZ_index_namerrrtestInterfaceNameIndexs         z)GeneralModuleTests.testInterfaceNameIndexrmz&socket.if_indextoname() not available.cCs$|ttjd|ttjddSNrZ _DEADBEEF)r'rr rmrrArrrtestInvalidInterfaceIndexToName-sz2GeneralModuleTests.testInvalidInterfaceIndexToNamerlz&socket.if_nametoindex() not available.cCs$|ttjd|ttjddSrq)r'rr rlrrArrrtestInvalidInterfaceNameToIndex3sz2GeneralModuleTests.testInvalidInterfaceNameToIndex getrefcountztest needs sys.getrefcount()cCsJztt}ttdWn*tyDtt|kr@|dYn0dS)Nrz$socket.getnameinfo loses a reference)sysrtrGr getnameinforr#)rBorigrrrtestRefCountGetNameInfo9s   z*GeneralModuleTests.testRefCountGetNameInfocCs(ztddWnty"Yn0dS)N)r]rrrr)r rvrrArrrtestInterpreterCrashEs z'GeneralModuleTests.testInterpreterCrashc Cstjdtjdtjdtjdi}|D]d\}}d|>d}dD]$}|||@||||@|@q<||}|||@||t|dq$dS)N rp)rrpirigE#i2Tvl) r htonlntohlhtonsntohsitemsrr' OverflowError)rBZsizesfuncsizemaskr:ZswappedrrrtestNtoHMs   "zGeneralModuleTests.testNtoHcCs ddl}gd}|dg}ddddd>g}||jd|jdg}d |jg}|D]}t|t|qP|D]}t|t|qn|D]$}|t tj||t tj|q|D]$}|t tj||t tj|q|D]$}| t tj|| t tj|qdS) Nr)rrprr|lrp) _testcapiZINT_MININT_MAXr rrr~r}r'r assertWarnsDeprecationWarning)rBrZ s_good_valuesZ l_good_valuesZ l_bad_valuesZ s_bad_valuesZs_deprecated_valueskrrrtestNtoHErrors[s.       z!GeneralModuleTests.testNtoHErrorsc Cs |j}tjdstjdvr"d}nd}|D].}zt|d}Wq^Wq*tyVYq*0q*tttdrttdkrt|}|||zt|d}Wntyd}Yn 0|||t j s|t |||t |d||dur|t |d|| t tj d | t tj d dS) N)freebsdZnetbsdZ gnukfreebsd)linuxr?)daytimeZqotddomain)ZechorrZtcpgetandroidapilevelZudprr)rruplatform startswithr getservbynamerr rrZ is_android getservbyportr'r)rBeqZservicesZservicer?Zport2Zudpportrrr testGetServByts<           z GeneralModuleTests.testGetServByc Cs0|tdt }||dWdn1s>0Ytd|tdt }||dWdn1s0Ytd|tdt }||dWdn1s0YWdn1s0Y|ttjd|ttjddS)N rZspam) rr r5 gettimeoutr8r6r' ValueErrorr)rBrrrrrtestDefaultTimeouts .  .  Nz%GeneralModuleTests.testDefaultTimeout inet_atonztest needs socket.inet_aton()cCs(|dtd|dtddS)N0.0.0.0ra)rr rrArrrtestIPv4_inet_aton_fourbytessz/GeneralModuleTests.testIPv4_inet_aton_fourbytes inet_ptonztest needs socket.inet_pton()cs*ddlm}mmfdd}fdd}d|dd|d d |d d |d d|dts||d||d||d||d||dd|dd|d d |d d|d||d||d||d||d||ddS)Nr)rrr<cs |Sr.ra)r<rrrrrz5GeneralModuleTests.testIPv4toString..csttf||Sr.r'rrrrrArrrs rrsz 255.0.255.0sz170.170.170.1701.2.3.4rraz0.0.0.z 300.0.0.0za.0.0.0z 1.2.3.4.5::1)r rrr<rrrBrg assertInvalidr)r<rrBrtestIPv4toStrings.          z#GeneralModuleTests.testIPv4toStringc sz&ddlmmm}|s$dWntyBdYn0tjdkrzdWn8ty}z |j dkrdWYd}~n d}~00fd d fd d } d d d d  dd dd dd dd|d|d|d|d|d|d|d|dt s`|d dd  d!d" d#d$|d%|d&|d'|d(|d)|d*dS)+Nr)rrr3IPv6 not available+could not import needed symbols from socketwin32::&'IPv6 might not be supportedcs |Sr.rr)rrrrrrz5GeneralModuleTests.testIPv6toString..csttf|Sr.rrrrBrrrs z0::0sz1::sEvV $z$45ef:76cb:1a:56ef:afeb:bac:1924:aeaesB 'Tzad42:abc::127:0:254:2s z12:a::z0x20::z:::z::0::z1::abc::z 1::abc::defz 1:2:3:4:5:6z 1:2:3:4:5:6:z1:2:3:4:5:6:7:8:0z1:2:3:4:5:6:7:8:s*@z::254.42.23.64sB*@z42::a29b:254.42.23.64sB*@z"42:a8b9:0:2:ffff:a29b:254.42.23.64z255.254.253.252z 1::260.2.3.0z 1::0.be.e.0z1:2:3:4:5:6:7:1.2.3.4z ::1.2.3.4:0z0.100.200.0:3:4:5:6:7:8) r rrr3rc ImportErrorrurrwinerrorrrrBr3rrr)rrrrBrtestIPv6toStringsj    z#GeneralModuleTests.testIPv6toString inet_ntopztest needs socket.inet_ntop()csddlm}mmfdd}fdd}d|dd|d d |d d |d ||d||d||dd|td d|dd|d d |d ||d||d||dd|td dS)Nr) inet_ntoarr<cs |Sr.rr)r<rrrr&rz5GeneralModuleTests.testStringToIPv4..csttf||Sr.rrrArrr's z1.0.1.0sz 170.85.170.85sUUrarrrssr)r rrr<r bytearrayrr)r<rrBrtestStringToIPv4"s$       z#GeneralModuleTests.testStringToIPv4c sz&ddlmmm}|s$dWntyBdYn0tjdkrzdWn8ty}z |j dkrdWYd}~n d}~00fd d fd d } d d d d dd d t d|d|d|ddS)Nr)rrr3rrrrrrcs |Sr.rr)rrrrrMrz5GeneralModuleTests.testStringToIPv6..csttf|Sr.rrrrrrNs rrsz!aef:b01:506:1001:ffff:9997:55:170s Upsss) r rrr3rcrrurrrrrrr)rrrrBrtestStringToIPv6<s0    z#GeneralModuleTests.testStringToIPv6cCst}ttjtj}||j|d|f|}zt t }Wnt yh| dYn0| |dd|fd|d||d|dS)NrrWrz %s invalidrp)rfind_unused_portr r<r2rWrrarrYrXrrcrr)rBr?rrZ my_ip_addrrrr testSockName`s  zGeneralModuleTests.testSockNamecCs@ttjtj}||j|tjtj}||dkddS)Nrzinitial mode is reuse) r r<r2rWr getsockoptr5r6 assertFalserBrZreuserrrtestGetSockOptrs z!GeneralModuleTests.testGetSockOptcCsRttjtj}||j|tjtjd|tjtj}| |dkddS)Nrprzfailed to set reuse mode) r r<r2rWr setsockoptr5r6rrrrrrtestSetSockOptzs  z!GeneralModuleTests.testSetSockOptcCsNttjtj}|dWdn1s00Y|t|jddS)Nrpspam)r r<r2 settimeoutr'rrrrrrtestSendAfterCloses(z%GeneralModuleTests.testSendAfterClosec Cst}|tjdftj|dz |Wn:tyr}z"||jtjtj fWYd}~nd}~00| ddS)Nrrz#close() should raise EBADF/ENOTSOCK) r ra _LOCALHOSTrrrrrfEBADFENOTSOCKr#)rBrr rrrtestCloseExceptions ,z%GeneralModuleTests.testCloseExceptioncCsttjtjf}||jtjttdrJ||jtjtjBtjfn||jtj||j dWdn1s|0YdS)N SOCK_CLOEXECr) r r<r2rrr rrrrrrrrtestNewAttributess  z$GeneralModuleTests.testNewAttributesc Cst}||jt}|d}|d}|t|jt|f|t|jt|ft D]^}t}z|t|fWn:t y}z"|j t j ks|dkrWYd}~q\d}~00qq\dS)Nr)r rWrrrr'rrar itertoolscountrrfZ EADDRINUSE)rBrr?Zbig_portZneg_portr:rrrrtest_getsockaddrargs  z&GeneralModuleTests.test_getsockaddrargcCs|ttjd|ttd|ttd|ttd|ttdt}||j|t|jdd|tjddS)NrZ SIO_RCVALLZ RCVALL_ONZ RCVALL_OFFSIO_KEEPALIVE_VALSr)rpdr) rr r rWrr'rrrrrrrtest_sock_ioctls z"GeneralModuleTests.test_sock_ioctlSIO_LOOPBACK_FAST_PATHz1Loopback fast path support required for this testc Cs~t}||jz|tjdWn>tyd}z&d}|j|krN|dWYd}~n d}~00|t |jtjddS)NTi='zQSIO_LOOPBACK_FAST_PATH is defined but doesn't implemented in this Windows version) r rWrrrrrrcr'r)rBrexcZ WSAEOPNOTSUPPrrrtest_sio_loopback_fast_paths   z.GeneralModuleTests.test_sio_loopback_fast_pathc Cs@ztddWn>tjyN}z$|jtjkr8|dWYd}~n d}~00ttdD]}|t|dq\tddtddtddt j rtddt t drt dkrttd ttdttdttdtjtj}|D]J\}}}}}||tj|t|d ||tj|t|d qttdd tj}|D]\}}}}}||tjq\ttdd d tjttdd d d tjtdd tjtjd tjttd}tjtdd } ||| ttdtj}tjtdtjd} ||| ttdd tj}tjtdtjd} ||| ttdd d tj}tjtdtjd} ||| ttdd d d tj}tjtdtjd} ||| tdd tjtjd tj}tjdd tjtjd tjd} ||| |ttjddt tdr.ok_handlercsttjddddSNrrprrrArrraising_handler<szEGeneralModuleTests.check_sendall_interrupted..raising_handlerg?rpxr)r signalr rcrSIGALRMrr'ZeroDivisionErrorrsendallr SOCK_MAX_SIZEr7r)rBZ with_timeoutrrcr old_alarmrrArcheck_sendall_interrupted4s4       .    z,GeneralModuleTests.check_sendall_interruptedcCs|ddSNFrrArrrtest_sendall_interruptedSsz+GeneralModuleTests.test_sendall_interruptedcCs|ddS)NTr rArrr%test_sendall_interrupted_with_timeoutVsz8GeneralModuleTests.test_sendall_interrupted_with_timeoutcCsttjtj}t|}|t}d}tWdn1sD0Y||t |j j dttjtj}| d}t|}d}t|td}tWdn1s0YdS)Nrr ) r r<r2rrResourceWarningrr!rrwarningrSmakefile)rBrrr1rrrrtest_dealloc_warnYs &  z$GeneralModuleTests.test_dealloc_warncCsVttjtj2}|d}||t|dWdn1sH0YdS)Nr z<_io.BufferedReader name=-1>)r r<r2rrrrrBrfprrrtest_name_closed_socketiojs z,GeneralModuleTests.test_name_closed_socketiocCstz}|jddd}||||||||t |j|t |j|t |jWdn1s0YdS)Nr r) buffering) r rrreadablerwritableseekablerr'rrrrrtest_unusable_closed_socketiops z0GeneralModuleTests.test_unusable_closed_socketiocCs2t}z|tdft||t|dWdn1sP0YW|t|Wdq1s0Yn4|t|Wdn1s0Y0|ttdWdn1s0Y|ttdWdn1s$0YdS)Nrrpr) r rarrrr'rr@rrrrrtest_socket_close{s * ( ( ( z$GeneralModuleTests.test_socket_closec CsdD]}|j|dptH}||}||j|Wdn1sN0YWdn1sl0YWdq1s0YqdS)N)rr rwwwbmode)subTestr rrr)rBrrrrrrtest_makefile_modes   z%GeneralModuleTests.test_makefile_modec CsdD]}|j|dntF}|td||Wdn1sL0YWdn1sj0YWdq1s0YqdS)N)rtr]+rrz invalid mode)rr assertRaisesRegexrr)rBrrrrrtest_makefile_invalid_modes  z-GeneralModuleTests.test_makefile_invalid_modecCst}|6ttjdD]}|ttj||qWdn1sH0YttjdD]H}tttj|}| |tjtttj |}| |tj q`dSr) r rangepickleHIGHEST_PROTOCOLr'rdumpsloadsr<rr2)rBrprotocolrrrrr test_pickles2zGeneralModuleTests.test_picklec CsdD]L}ttjtj(}|tdf||Wdq1sF0Yqttjtj&}|tdf|Wdn1s0YdS)N)rrr)r r<r2rarr@)rBbacklogsrvrrrtest_listen_backlogs*z&GeneralModuleTests.test_listen_backlogcCs`ddl}ttjtj4}|tdf|t|j|j dWdn1sR0YdSr) rr r<r2rarr'rr@r)rBrr-rrrtest_listen_backlog_overflowsz/GeneralModuleTests.test_listen_backlog_overflowIPv6 required for this test.cCsf|ttjtjddfdttjtj(}|t|jtjddfWdn1sX0YdS)Nrri) r'rr rvrrrr2rarrrr test_flowinfos   z GeneralModuleTests.test_flowinfocCs0tddtjtjtj\^}}||ddS)Nff02::1de:c0:face:8Dr)ff02::1de:c0:face:8drrr)r rrr!r9r)rBrvsockaddrrrrtest_getaddrinfo_ipv6_basics z.GeneralModuleTests.test_getaddrinfo_ipv6_basicrzdoes not work on WindowszSymbolic scope id does not workcCsLtd\}}td|dtjtjtj\^}}||ddd|fdS)Nrff02::1de:c0:face:8D%rr3)r rirrr!r9r)rBifindextest_interfacervr4rrr&test_getaddrinfo_ipv6_scopeid_symbolics z9GeneralModuleTests.test_getaddrinfo_ipv6_scopeid_symbolicz.Numeric scope id does not work or undocumentedcCsDd}tdt|dtjtjtj\^}}||ddd|fdS)N*r6rr3r)r rrrr!r9r)rBr7rvr4rrr%test_getaddrinfo_ipv6_scopeid_numerics  z8GeneralModuleTests.test_getaddrinfo_ipv6_scopeid_numericcCsHtd\}}ddd|f}t|tjtjB}||d|dfdS)Nrr2rff02::1de:c0:face:8d%1234)r rirvNI_NUMERICHOSTNI_NUMERICSERVr)rBr7r8r4nameinforrr&test_getnameinfo_ipv6_scopeid_symbolics z9GeneralModuleTests.test_getnameinfo_ipv6_scopeid_symboliccCs@d}ddd|f}t|tjtjB}||dt|dfdS)Nr:r2rrr<r=)r rvr>r?rr)rBr7r4r@rrr%test_getnameinfo_ipv6_scopeid_numerics z8GeneralModuleTests.test_getnameinfo_ipv6_scopeid_numericcCsXttjtj4}|t|jd|t|jdWdn1sJ0YdS)Nrr)r r<r2rrrrrrrrtest_str_for_enumssz%GeneralModuleTests.test_str_for_enumscCsttdd}ttdd}tj|B|B}ttj|}||jtj|d||jtj|d||jtj|d||jtj|d||jtjWdn1s0YdS)N SOCK_NONBLOCKrrrpTF)rr r2r<rrr setblocking)rBrDrZ sock_typerrrr test_socket_consistent_sock_types      z3GeneralModuleTests.test_socket_consistent_sock_typecCsttjtj}|}ttjjd}tddtjj Dd}tj||d|d>}| |j || |j || |jddhWdn1s0YdS)Nrpcss|]\}}|dvr|VqdS)>rrDNr)rrkindrrrrszEGeneralModuleTests.test_unknown_socket_family_repr..r)rrrrr)r r<r2detachmax AddressFamily __members__values SocketKindrrrrrr)rBrfdZunknown_familyZ unknown_typerrrrtest_unknown_socket_family_reprs  z2GeneralModuleTests.test_unknown_socket_family_reprsendfileztest needs os.sendfile()c CsGddd}t}ttjtj}t||tj|||Wdn1sb0Y|t "||ddWdn1s0Y|t ||dWdn1s0YWdn1s0YdS)Nc@seZdZddZddZdS)z.FilecSs ||_dSr.rN)rBrNrrrrN/szEGeneralModuleTests.test__sendfile_use_sendfile..File.__init__cSs|jSr.rQrArrrr2szCGeneralModuleTests.test__sendfile_use_sendfile..File.filenoN)rGrHrIrNrrrrrFile.srRrr) r rrcurdirO_RDONLYrr'_GiveupOnSendfile_sendfile_use_sendfilerr)rBrRrrNrrrtest__sendfile_use_sendfile,s  , 0 z.GeneralModuleTests.test__sendfile_use_sendfilecCst||j|||j||}tj|d}||j|||j|||j||||dSNr)rrrrr rWrrH)rBrrstyperNs2rrr_test_socket_fileno>s  z&GeneralModuleTests._test_socket_filenocCsPttjtj}||j|tjdf||tjtjt tdrttjtj }||j|tjdf||tjtj tj rttj tj}||j|tj dddf||tj tjt tdrLt}|tj|ttjtj}||jz|tj|dWnty8Yn0||tjtjdS)Nrr!rr )r r<r2rWrrarrr[r r!rrrrrshutilrmtreerrrrPermissionError)rBrZtmpdirrrrtest_socket_filenoKs4       z%GeneralModuleTests.test_socket_filenocCsD|td$tjtjtjddWdn1s60YdS)Nzinteger argument expectedg@E@rr#rr r<r2rArrr test_socket_fileno_rejects_floatjsz3GeneralModuleTests.test_socket_fileno_rejects_floatcCsD|td$tjtjtjddWdn1s60YdS)Nzinteger is requiredfoorr`rArrr&test_socket_fileno_rejects_other_typesnsz9GeneralModuleTests.test_socket_fileno_rejects_other_typescCsD|td$tjtjtjddWdn1s60YdS)Nnegative file descriptorrrr#rr r<r2rArrr)test_socket_fileno_rejects_invalid_socketrszrurrrrVr`rbrcr r rhrprrrsrxryrr cpython_onlyrrrrrrrrrrrrrrrrrrrZis_resource_enabledrrr r rrrrr r$r+r.r/r1r5skipIfrr9r;rArBrCrFrOrWr[r_rarcrfrgrhrjrrrrr :s   ,               ,      >    "     N                     r z!SocketCan required for this test.c@seZdZddZeeeddddZddZ eeeddd d Z d d Z d dZ eeeddddZ eeeddddZdS) BasicCANTestcCstjtjtjdSr.)r AF_CANrrrArrrr7sz!BasicCANTest.testCrucialConstantsCAN_BCM&socket.CAN_BCM required for this test.cCstjtjtjtjtjtjtjtjtj tj tj tj tj tjtjtjtjtjtjtjtjtjtjtjdSr.)r rpCAN_BCM_TX_SETUPCAN_BCM_TX_DELETECAN_BCM_TX_READCAN_BCM_TX_SENDCAN_BCM_RX_SETUPCAN_BCM_RX_DELETECAN_BCM_RX_READCAN_BCM_TX_STATUSCAN_BCM_TX_EXPIREDCAN_BCM_RX_STATUSCAN_BCM_RX_TIMEOUTCAN_BCM_RX_CHANGEDCAN_BCM_SETTIMERCAN_BCM_STARTTIMERCAN_BCM_TX_COUNTEVTCAN_BCM_TX_ANNOUNCECAN_BCM_TX_CP_CAN_IDCAN_BCM_RX_FILTER_IDCAN_BCM_RX_CHECK_DLCCAN_BCM_RX_NO_AUTOTIMERCAN_BCM_RX_ANNOUNCE_RESUMECAN_BCM_TX_RESET_MULTI_IDXCAN_BCM_RX_RTR_FRAMErArrrtestBCMConstantss0zBasicCANTest.testBCMConstantscCs8ttjtjtj}Wdn1s*0YdSr.r rrrrrrrtestCreateSocketszBasicCANTest.testCreateSocketcCs8ttjtjtj}Wdn1s*0YdSr.)r rr!rprrrrtestCreateBCMSocketsz BasicCANTest.testCreateBCMSocketcCsVttjtjtj.}d}|||||Wdn1sH0YdS)N)r+)r rrrrarr)rBraddressrrr testBindAnys zBasicCANTest.testBindAnycCsJttjtjtj"}|td|jdWdn1s<0YdS)Ninterface name too long)xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx)r rrrr#rrarrrrtestTooLongInterfaceNamesz%BasicCANTest.testTooLongInterfaceNameCAN_RAW_LOOPBACKz/socket.CAN_RAW_LOOPBACK required for this test.c CslttjtjtjD}dD].}|tjtj||||tjtjqWdn1s^0YdS)N)rrp) r rrrr SOL_CAN_RAWrrr)rBrZloopbackrrr testLoopbacks zBasicCANTest.testLoopbackCAN_RAW_FILTERz-socket.CAN_RAW_FILTER required for this test.c Csd\}}td||}ttjtjtjR}|tjtj|| || tjtjd|tjtjt |Wdn1s0YdS)N)iz=IIr^) rpackr rrrrrrrrr)rBcan_idZcan_maskZ can_filterrrrr testFilterszBasicCANTest.testFilterN)rGrHrIr7rrkr r rrrrrrrrrrrrns(       rnc@seZdZdddZeddZeddZdd Zd d Zd d Z ddZ ddZ ddZ e eeddddZe eeddddZdS)CANTestrcCstj||ddSr)rrNrrrrrNszCANTest.__init__cCs&t|}|dd}t|j|||S)Nr^)rljustrrre)clsrdatacan_dlcrrrbuild_can_frames zCANTest.build_can_framecCs&t|j|\}}}|||d|fSr.)rrre)rframerrrrrrdissect_can_frameszCANTest.dissect_can_framecCs6|j|j\}}||j|||d|jdSr)rrecvfromrdrcfrbrBrrrrr testSendFrameszCANTest.testSendFramecCs |dd|_|j|jdS)NrsrrrrrArrr_testSendFrameszCANTest._testSendFramecCs$|j|j\}}||j|dSr.)rrrdrrrrrrtestSendMaxFrameszCANTest.testSendMaxFramecCs |dd|_|j|jdS)NrsrrArrr_testSendMaxFrame szCANTest._testSendMaxFramecCsD|j|j\}}||j||j|j\}}||j|dSr.)rrrdrcf1cf2rrrrtestSendMultiFrames szCANTest.testSendMultiFramescCs<|dd|_|j|j|dd|_|j|jdS)NsD3"s"3)rrrrrrArrr_testSendMultiFramesszCANTest._testSendMultiFramesrprqcCsP|j|j\}}||j|||\}}}||j|||j|dSr.)rrrdrrrrr)rBrrrrrrrr_testBCMs zCANTest._testBCMc Csttjtjtj}||j||jfd|_t gd|_ | |j|j |_ tj }d}d}d}}}}d} d} t|j|||||||| | } | |j } || } || t| dS)N#)ri"rp)r rr!rprWrrrbrbytesrrrrurrrgrrr)rBZbcmZopcoderrZ ival1_secondsZ ival1_usecZ ival2_secondsZ ival2_usecZ bcm_can_idZnframesheaderZheader_plus_frameZ bytes_sentrrrtestBCM$s4   zCANTest.testBCMN)r)rGrHrIrN classmethodrrrrrrrrrrkr r rrrrrrrs&      rz!CAN ISOTP required for this test.csVeZdZfddZddZddZeee ddd d Z d d Z d dZ Z S) ISOTPTestcstj|i|d|_dSNr[rMrNrbrRrUrrrNGszISOTPTest.__init__cCstjtjtjtjdSr.)r rorr"r!rArrrr7KszISOTPTest.testCrucialConstantscCs8ttjtjtj}Wdn1s*0YdSr.rrrrrrQszISOTPTest.testCreateSocketr"z(socket.CAN_ISOTP required for this test.cCs8ttjtjtj}Wdn1s*0YdSr.)r rr!r"rrrrtestCreateISOTPSocketUszISOTPTest.testCreateISOTPSocketc CsnttjtjtjF}|td|dWdn1sB0YWdn1s`0YdS)Nr)rrpr)r rr!r"r#rrarrrrr[sz"ISOTPTest.testTooLongInterfaceNamec Csz^ttjtjtj6}|jddf}|||||Wdn1sR0YWnDty}z,|j t j kr| d|jnWYd}~n d}~00dS)NriVr`) r rr!r"rbrarrrrfENODEVrcrBrrrrrrtestBindas  2 zISOTPTest.testBind)rGrHrIrNr7rrrkr r rrrrYrrrUrrDs   rz!CAN J1939 required for this test.csXeZdZfddZeeeddddZeeeddddZ d d Z Z S) J1939Testcstj|i|d|_dSrrrRrUrrrNrszJ1939Test.__init__r$z(socket.CAN_J1939 required for this test.cCstjtjtjtjtjtjtjtjtj tj tj tj tj tjtjtjtjtjtjtjtjtjtjtjdSr.)r r$J1939_MAX_UNICAST_ADDRJ1939_IDLE_ADDR J1939_NO_ADDR J1939_NO_NAMEJ1939_PGN_REQUESTJ1939_PGN_ADDRESS_CLAIMEDJ1939_PGN_ADDRESS_COMMANDEDJ1939_PGN_PDU1_MAX J1939_PGN_MAX J1939_NO_PGNSO_J1939_FILTERSO_J1939_PROMISCSO_J1939_SEND_PRIOSO_J1939_ERRQUEUESCM_J1939_DEST_ADDRSCM_J1939_DEST_NAMESCM_J1939_PRIOSCM_J1939_ERRQUEUE J1939_NLA_PADJ1939_NLA_BYTES_ACKEDJ1939_EE_INFO_NONEJ1939_EE_INFO_TX_ABORTJ1939_FILTER_MAXrArrrtestJ1939Constantsvs0zJ1939Test.testJ1939ConstantscCs8ttjtjtj}Wdn1s*0YdSr.)r rr!r$rrrrtestCreateJ1939SocketszJ1939Test.testCreateJ1939Socketc Cszfttjtjtj>}|jtjtjtjf}||| | |Wdn1sZ0YWnDt y}z,|j t j kr|d|jnWYd}~n d}~00dSr_)r rr!r$rbrrrrarrrrfrrcrrrrrs 2 zJ1939Test.testBind) rGrHrIrNrrkr r rrrrYrrrUrros   !  rz#RDS sockets required for this test.c@s$eZdZddZddZddZdS) BasicRDSTestcCstjtjdSr.)r AF_RDSr'rArrrr7sz!BasicRDSTest.testCrucialConstantscCs6ttjtjd}Wdn1s(0YdSr)r r'r(rrrrrszBasicRDSTest.testCreateSocketcCs^d}ttjtjd4}|tjtj||tjtj|Wdn1sP0YdS)Ni@r)r r'r(rr5 SO_RCVBUF SO_SNDBUF)rBrdrrrrtestSocketBufferSizesz!BasicRDSTest.testSocketBufferSizeN)rGrHrIr7rrrrrrrsrcseZdZdddZfddZddZdd Zd d Zd d Ze e j dddZ e e j dddZ ddZ ddZddZddZZS)RDSTestrcCstj||ddSr)rrNrrrrrNszRDSTest.__init__cstt|_dSr.)rMrCrOryZevtrArUrrrCs z RDSTest.setUpcCs2|j|j\}}||j|||j|dSr.)r=rrdrrrrBrrrrrtestSendAndRecvszRDSTest.testSendAndRecvcCs"d|_|j|jdt|jfdSNrrrrr/rr?rArrr_testSendAndRecvszRDSTest._testSendAndRecvcCsH|j|jtj\}}||j||j|j\}}||j|dSr.)r=rrdr MSG_PEEKrrrrrrtestPeekszRDSTest.testPeekcCs"d|_|j|jdt|jfdSrrrArrr _testPeekszRDSTest._testPeekrecvmsgcCs(|j|j\}}}}||j|dSr.)r=rrdrr)rBrancdataZ msg_flagsrrrrtestSendAndRecvMsgszRDSTest.testSendAndRecvMsgsendmsgcCs&d|_|j|jgddt|jfdS)Ns<hello hello hello hello hello hello hello hello hello hello rr)rrrrr?rArrr_testSendAndRecvMsgszRDSTest._testSendAndRecvMsgcCsD|j|j\}}||j||j|j\}}||j|dSr.)r=rrdrdata1data2rrrrtestSendAndRecvMultiszRDSTest.testSendAndRecvMulticCs@d|_|j|jdt|jfd|_|j|jdt|jfdS)Nsbaconrsegg)rrr/rr?rrArrr_testSendAndRecvMultiszRDSTest._testSendAndRecvMulticCsLt|jgggd\}}}||j||j|j\}}||j|dS)Ng@)selectr=rrrdrr)rBrrr]rrrrr testSelectszRDSTest.testSelectcCs"d|_|j|jdt|jfdS)NsselectrrrArrr _testSelectszRDSTest._testSelect)r)rGrHrIrNrCrrrrrr rrrrrrrYrrrUrrs      rz'QIPCRTR sockets required for this test.c@s<eZdZddZddZddZddZd d Zd d Zd S)BasicQIPCRTRTestcCs tjdSr.)r r,rArrrr7 sz%BasicQIPCRTRTest.testCrucialConstantscCs4ttjtj}Wdn1s&0YdSr.)r r,r!rrrrr sz!BasicQIPCRTRTest.testCreateSocketcCsHttjtj$}||ddWdn1s:0YdSNrpr)r r,r!rrrrrr testUnbound szBasicQIPCRTRTest.testUnboundcCs^ttjtj:}tj||dd||ddWdn1sP0YdS)Nrrrp)r r,r!rr>rassertNotEqualrrrr testBindSock szBasicQIPCRTRTest.testBindSockcCsHttjtj$}|jttj|ddWdn1s:0YdS)Nrr)r r,r!r'rrr>rrrrtestInvalidBindSock sz$BasicQIPCRTRTest.testInvalidBindSockcCsRttjtj.}|d||ddWdn1sD0YdS)N){rrpr)r r,r!rrrrrrrtestAutoBindSock s z!BasicQIPCRTRTest.testAutoBindSockN) rGrHrIr7rrrrrrrrrrs rc@s,eZdZddZddZddZddZd S) BasicVSOCKTestcCs tjdSr.)r rrArrrr7 sz#BasicVSOCKTest.testCrucialConstantscCs4tjtjtjtjtjtjtjtjdSr.) r SO_VM_SOCKETS_BUFFER_SIZESO_VM_SOCKETS_BUFFER_MIN_SIZESO_VM_SOCKETS_BUFFER_MAX_SIZErVMADDR_PORT_ANYVMADDR_CID_HOSTVM_SOCKETS_INVALID_VERSIONrrArrrtestVSOCKConstants# sz!BasicVSOCKTest.testVSOCKConstantscCs4ttjtj}Wdn1s&0YdSr.)r rr2rrrrr- szBasicVSOCKTest.testCreateSocketcCsttjtj}|tjtj}|tjtj}|tjtj}|tjtj|d|tjtj|d|tjtj|d||d|tjtj||d|tjtj||d|tjtjWdn1s0YdSNr) r rr2rrrrrr)rBrZorig_maxrwZorig_minrrrr1 sD      z#BasicVSOCKTest.testSocketBufferSizeN)rGrHrIr7rrrrrrrr s rz)Bluetooth sockets required for this test.c@sveZdZddZddZeejdkdddZ eejdkd d d Z eejdkpdej d d ddZ dS)BasicBluetoothTestcCsJtjtjtjtjtjdkrFtjtjtj tj dsFtj dS)Nrr) r Z BDADDR_ANYZ BDADDR_LOCALr1r3rur BTPROTO_HCIZSOL_HCI BTPROTO_L2CAPr BTPROTO_SCOrArrrtestBluetoothConstantsP s  z)BasicBluetoothTest.testBluetoothConstantscCs8ttjtjtj}Wdn1s*0YdSr.)r r1r2r3rrrrtestCreateRfcommSocket^ sz)BasicBluetoothTest.testCreateRfcommSocketrz&windows does not support L2CAP socketscCs8ttjtjtj}Wdn1s*0YdSr.)r r1r(rrrrrtestCreateL2capSocketb sz(BasicBluetoothTest.testCreateL2capSocketz$windows does not support HCI socketscCs8ttjtjtj}Wdn1s*0YdSr.)r r1rrrrrrtestCreateHciSocketg sz&BasicBluetoothTest.testCreateHciSocketrz.windows and freebsd do not support SCO socketscCs8ttjtjtj}Wdn1s*0YdSr.)r r1r(r rrrrtestCreateScoSocketl sz&BasicBluetoothTest.testCreateScoSocketN) rGrHrIr r rrmrurr r rrrrrrrL s  rc@seZdZd+ddZddZddZdd Zd d Zd d ZddZ ddZ ddZ ddZ ddZ ddZddZddZddZd d!Zd"d#ZeeZejd$d%Zd&d'Zd(d)Zd*S), BasicTCPTestrcCstj||ddSrrrNrrrrrNu szBasicTCPTest.__init__cCs|jd}||tdSr)rrrrrrrrtestRecvx s zBasicTCPTest.testRecvcCs|jtdSr.rrrrArrr _testRecv} szBasicTCPTest._testRecvcCs8|jttd}|jd}||}||tdSNr)rrrrr)rBseg1seg2rrrrtestOverFlowRecv s zBasicTCPTest.testOverFlowRecvcCs|jtdSr.rrArrr_testOverFlowRecv szBasicTCPTest._testOverFlowRecvcCs |jd\}}||tdSr)rrrrrBrrrrr testRecvFrom szBasicTCPTest.testRecvFromcCs|jtdSr.rrArrr _testRecvFrom szBasicTCPTest._testRecvFromcCs@|jttd\}}|jd\}}||}||tdSr)rrrrr)rBrrrrrrrtestOverFlowRecvFrom sz!BasicTCPTest.testOverFlowRecvFromcCs|jtdSr.rrArrr_testOverFlowRecvFrom sz"BasicTCPTest._testOverFlowRecvFromcCs0d}|jd}|sq ||7}q||ddS)Nrrffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)rrr)rBrreadrrr testSendAll s   zBasicTCPTest.testSendAllcCsd}|j|dS)Nr)rr)rBZ big_chunkrrr _testSendAll szBasicTCPTest._testSendAllcCsP|j}t|tjtj}||j||tj| d}| |t dSr) rrr fromfdr<r2rWrrrrr)rBrNrrrrr testFromFd s    zBasicTCPTest.testFromFdcCs|jtdSr.rrArrr _testFromFd szBasicTCPTest._testFromFdcCs0|j}||j|d}||tdSr)rduprWrrrr)rBrrrrrtestDup s   zBasicTCPTest.testDupcCs|jtdSr.rrArrr_testDup szBasicTCPTest._testDupcCs&|jd}||t|jdSr)rrrrr{rrrrr testShutdown s  zBasicTCPTest.testShutdowncCs|jt|jddSr)rrrshutdownrArrr _testShutdown s zBasicTCPTest._testShutdowncCsXddl}|jt|t|jj|jd|t|jjd|jd|jddS)Nrrpr) rrrrr'rr*rUINT_MAXrBrrrr_testShutdown_overflow s    z#BasicTCPTest._testShutdown_overflowcCs|j}|j}|||||jj|t|jjd|j t j t j t j |d}| |j |d}||tdS)Nrr)rrrHrr_closedr'rrrr r<r2rWr)rBrrrrrrr testDetach s      zBasicTCPTest.testDetachcCs|jtdSr.rrArrr _testDetach szBasicTCPTest._testDetachN)r)rGrHrIrNrrrrrrrrr!r"r$r%r'r(r)r+rrlZtestShutdown_overflowr.r0r1rrrrrs s,      rc@sFeZdZdddZddZddZdd Zd d Zd d ZddZ dS) BasicUDPTestrcCstj||ddSr)rrNrrrrrN szBasicUDPTest.__init__cCs |jtt}||tdSr.r=rrrrrrrrtestSendtoAndRecv szBasicUDPTest.testSendtoAndRecvcCs|jtdt|jfdSrrr/rrr?rArrr_testSendtoAndRecv szBasicUDPTest._testSendtoAndRecvcCs$|jtt\}}||tdSr.r=rrrrrrrrr szBasicUDPTest.testRecvFromcCs|jtdt|jfdSrr5rArrrr szBasicUDPTest._testRecvFromcCs|t|jjddSNrr'rr=rrArrrtestRecvFromNegative sz!BasicUDPTest.testRecvFromNegativecCs|jtdt|jfdSrr5rArrr_testRecvFromNegative sz"BasicUDPTest._testRecvFromNegativeN)r rGrHrIrNr4r6rrr:r;rrrrr2 s r2c@sFeZdZdddZddZddZdd Zd d Zd d ZddZ dS)BasicUDPLITETestrcCstj||ddSr)rrNrrrrrN szBasicUDPLITETest.__init__cCs |jtt}||tdSr.r3rrrrr4 sz"BasicUDPLITETest.testSendtoAndRecvcCs|jtdt|jfdSrr5rArrrr6 sz#BasicUDPLITETest._testSendtoAndRecvcCs$|jtt\}}||tdSr.r7rrrrr szBasicUDPLITETest.testRecvFromcCs|jtdt|jfdSrr5rArrrr szBasicUDPLITETest._testRecvFromcCs|t|jjddSr8r9rArrrr:" sz%BasicUDPLITETest.testRecvFromNegativecCs|jtdt|jfdSrr5rArrrr;& sz&BasicUDPLITETest._testRecvFromNegativeN)rr<rrrrr= s r=cseZdZejZfddZddZdZddZ dd Z d d Z d d Z dZ dD]Ze eeedOZ qNdZdZdZdddZZS)SendrecvmsgBasecst|_tdSr.)rOry misc_eventrMrCrArUrrrCK s zSendrecvmsgBase.setUpcCs |j|Sr.)cli_sockrrrrr sendToServerO szSendrecvmsgBase.sendToServerrcGs|jj||jt|dSr.)r@rsendmsg_to_server_defaultsrrBrSrrrsendmsgToServerW szSendrecvmsgBase.sendmsgToServercGs |j|g|R}|||Sr.)rregisterRecvmsgResult)rBrrdrSresultrrr doRecvmsg_ s zSendrecvmsgBase.doRecvmsgcCsdSr.rrBrFrrrrEi sz%SendrecvmsgBase.registerRecvmsgResultcCs|||dSr.rrBZaddr1Zaddr2rrrcheckRecvmsgAddresso sz#SendrecvmsgBase.checkRecvmsgAddressr) MSG_CTRUNCMSG_OOBNc Cs|j}|j}|r&||jO}||jO}n|durB||jO}||jO}||M}||M}||O}||O}||@|@}|rtd|||B|@} ||| @|| @dS)Nz6contradictory set, unset requirements for flags {0:#x})msg_flags_common_setmsg_flags_common_unsetmsg_flags_eor_indicatormsg_flags_non_eor_indicator Exceptionr r) rBreorcheckset checkunsetignoreZ defaultsetZ defaultunsetZinbothrrrr checkFlags s&      zSendrecvmsgBase.checkFlags)Nrrr)rGrHrIrLOOPBACK_TIMEOUT fail_timeoutrCrArBrDrGrErKrOrrr rNrPrQrWrYrrrUrr>D s  r>c@seZdZddZdS)RecvmsgIntoMixincGsht|}|j|gg|R}||||dd||d|t|d|df|ddSr)r recvmsg_intorEassertGreaterEqualassertLessEqualr)rBrrdrSbufrFrrrrG s  zRecvmsgIntoMixin.doRecvmsgN)rGrHrIrGrrrrrZ srZcs eZdZefddZZS)SendrecvmsgDgramFlagsBasecstjtjBSr.)rMrQr MSG_TRUNCrArUrrrQ sz5SendrecvmsgDgramFlagsBase.msg_flags_non_eor_indicator)rGrHrIpropertyrQrYrrrUrr_ sr_cs eZdZefddZZS)SendrecvmsgSCTPFlagsBasecstjtjBSr.)rMrPr MSG_EORrArUrrrP sz0SendrecvmsgSCTPFlagsBase.msg_flags_eor_indicator)rGrHrIrarPrYrrrUrrb srbc@s8eZdZeddZeddZeddZddZd S) SendrecvmsgConnectionlessBasecCs|jSr.)r=rArrr serv_sock sz'SendrecvmsgConnectionlessBase.serv_sockcCs|jSr.)rrArrrr@ sz&SendrecvmsgConnectionlessBase.cli_sockcCsggd|jfSr)rrArrrrB sz8SendrecvmsgConnectionlessBase.sendmsg_to_server_defaultscCs|j||jSr.)r@r/rrrrrrA sz*SendrecvmsgConnectionlessBase.sendToServerN)rGrHrIrarer@rBrArrrrrd s   rdc@s,eZdZeddZeddZddZdS)SendrecvmsgConnectedBasecCs|jSr.)rrArrrre sz"SendrecvmsgConnectedBase.serv_sockcCs|jSr.)rrArrrr@ sz!SendrecvmsgConnectedBase.cli_sockcCsdSr.rrJrrrrK sz,SendrecvmsgConnectedBase.checkRecvmsgAddressN)rGrHrIrarer@rKrrrrrf s   rfcseZdZfddZZS)SendrecvmsgServerTimeoutBasecst|j|jdSr.)rMrCrerrYrArUrrrC s z"SendrecvmsgServerTimeoutBase.setUprrrrUrrg srgc@seZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZeedddZejd d!Zd"d#Zd$d%Zd&d'Zd(d)Zd*S)+ SendmsgTestscCs||jtttdSr.rrerrrrArrr testSendmsg szSendmsgTests.testSendmsgcCs||tgttdSr.rrDrrrArrr _testSendmsg szSendmsgTests._testSendmsgcCs||jtttdSr.rirArrrtestSendmsgDataGenerator sz%SendmsgTests.testSendmsgDataGeneratorcCs&||ddtfDttdS)Ncss|] }|VqdSr.rrrrrr rz9SendmsgTests._testSendmsgDataGenerator..rkrArrr_testSendmsgDataGenerator sz&SendmsgTests._testSendmsgDataGeneratorcCs||jtttdSr.rirArrrtestSendmsgAncillaryGenerator sz*SendmsgTests.testSendmsgAncillaryGeneratorcCs(||tgdddDttdS)Ncss|] }|VqdSr.rrrrrr rz>SendmsgTests._testSendmsgAncillaryGenerator..rrkrArrr_testSendmsgAncillaryGenerator sz+SendmsgTests._testSendmsgAncillaryGeneratorcCs||jtttdSr.rirArrrtestSendmsgArray# szSendmsgTests.testSendmsgArraycCs$||tdtgttdS)NB)rrDarrayrrrArrr_testSendmsgArray' szSendmsgTests._testSendmsgArraycCs||jtttdSr.rirArrrtestSendmsgGather+ szSendmsgTests.testSendmsgGathercCs.||tddtddgttdSNrrkrArrr_testSendmsgGather/ szSendmsgTests._testSendmsgGathercCs||jdddSNrdonerrerrArrrtestSendmsgBadArgs2 szSendmsgTests.testSendmsgBadArgscCs|t|jj|t|jd|t|jt|t|jtg|t|jttg|t|jtgt|t|jtggt|t|jtggdt|ddS)Nsnot in an iterablerry)r'rr@rrDobjectrrArArrr_testSendmsgBadArgs6 s.         z SendmsgTests._testSendmsgBadArgscCs||jdddSrxrzrArrrtestSendmsgBadCmsgH szSendmsgTests.testSendmsgBadCmsgcCs|t|jtgtg|t|jtgtddfg|t|jtgdtdfg|t|jtgddtfg|t|jtgdg|t|jtgdg|ddS)Nrdata)rr)rrrr:ryr'rrDrr|rArArrr_testSendmsgBadCmsgL s&       z SendmsgTests._testSendmsgBadCmsg CMSG_SPACEcCs||jdddSrxrzrArrrtestSendmsgBadMultiCmsg[ sz$SendmsgTests.testSendmsgBadMultiCmsgcCs@|t|jtggd|t|jtgdtg|ddS)NrrrryrrArrr_testSendmsgBadMultiCmsga s    z%SendmsgTests._testSendmsgBadMultiCmsgcCs||jdddSrxrzrArrrtestSendmsgExcessCmsgRejecti sz(SendmsgTests.testSendmsgExcessCmsgRejectcCsbttdsT|t"}|tgddgWdn1s<0Y||jj| ddS)Nrrry) r r r'rrDr assertIsNoner0rfrArBr1rrr_testSendmsgExcessCmsgRejectn s   0z)SendmsgTests._testSendmsgExcessCmsgRejectcCsdSr.rrArrrtestSendmsgAfterClosev sz"SendmsgTests.testSendmsgAfterClosecCs |j|t|jtgdSr.)r@rr'rrDrrArrr_testSendmsgAfterClosez s z#SendmsgTests._testSendmsgAfterCloseN)rGrHrIrjrlrmrnrorprqrtrurwr{r}r~rrr rrrrrrrrrrrrh s,  rhc@sReZdZddZddZddZddZeej d vd d d Z e j d dZ dS)SendmsgStreamTestscCs||jtttdSr.rirArrrtestSendmsgExplicitNoneAddr sz.SendmsgStreamTests.testSendmsgExplicitNoneAddrcCs"||tggddttdSrrkrArrr_testSendmsgExplicitNoneAddr sz/SendmsgStreamTests._testSendmsgExplicitNoneAddrcCs.||jdd||jj|jddSNraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaar7rrerrr?rrYrArrrtestSendmsgTimeout sz%SendmsgStreamTests.testSendmsgTimeoutc Csz||jdz|dgqWnDtjy4Yn<tyd}z|jtjkrPWYd}~nd}~00|dW|j n |j 0dS)NQ?rsocket.timeout not raised) r@rrDr r7rrfENOMEMr#r?rnrBrrrr_testSendmsgTimeout s   z&SendmsgStreamTests._testSendmsgTimeout>rz.Tr) rrrrer[rrKrrWrrrrtestRecvmsgIntoGenerator s   z)RecvmsgIntoTests.testRecvmsgIntoGeneratorcCs|tdSr.rrArrr_testRecvmsgIntoGenerator sz*RecvmsgIntoTests._testRecvmsgIntoGeneratorcCsxtddgtt}|j|g\}}}}||tt||t|||j||g|j |dddS)NrrrTr) rsrrrer[rtobytesrKrrWrrrrtestRecvmsgIntoArray s z%RecvmsgIntoTests.testRecvmsgIntoArraycCs|tdSr.rrArrr_testRecvmsgIntoArray sz&RecvmsgIntoTests._testRecvmsgIntoArraycCstd}td}td}|j|t|dd|g\}}}}||td||td||td||td |||j||g|j|d d dS) Ns----s 0123456789s--------------r Mary had a little lambsMarys 01 had a 9slittle lamb---Tr) rrer[ memoryviewrrrKrrW)rBb1b2Zb3rrrrrrrtestRecvmsgIntoScatter s  z'RecvmsgIntoTests.testRecvmsgIntoScattercCs|ddS)Nr)rArArrr_testRecvmsgIntoScatter sz(RecvmsgIntoTests._testRecvmsgIntoScatterN) rGrHrIrrrrrrrrrrrrr s  rc@s`eZdZz ddlZWney*dZYn0edejZee dddZ ee ddd Z dS) CmsgMacroTestsrNiCMSG_LENcCs|jtdd}ttdtt|d|}|tdtdjd|D]2}t|}||td|| ||jqT| t tjd| t tj|| t tjt j dS)Nrrpr:rr)socklen_t_limitr rlistr%rkrsitemsizerr]r'rrumaxsize)rBtoobigrLnr/rrr testCMSG_LEN s zCmsgMacroTests.testCMSG_LENrcCs|jtdd}ttdtt|d|}td}||tdjd|D]T}t|}|||||t ||||t d| ||j|}qX| t tjd| t tj|| t tjt jdS)Nrprrr:rr)rr rrr%rkrsrr\rr]r'rrur)rBrrLZlastrr/rrrtestCMSG_SPACE s   zCmsgMacroTests.testCMSG_SPACE) rGrHrIrrrminrrr rrrrrrr s     rc@sHeZdZdZddZddZddZdd Zd d ZddddZ ddZ ddZ ddZ ddZ eedddZejddZddZdd Zeejd!kd"eed#eedd$d%Zejeejd!kd"eed#d&d'Zeejd!kd"eed#eedd(d)Zejeejd!kd"eed#d*d+Zd,d-Zeejd!kd.d/d0Zd1d2Z d3d4Z!d5d6Z"eedd7d8Z#e#jd9d:Z$ded;d<Z%d=d>Z&d?d@Z'dAdBZ(dCdDZ)dEdFZ*dGdHZ+dIdJZ,dKdLZ-dMdNZ.dOdPZ/dfdQdRZ0dSdTZ1dUdVZ2dWdXZ3dYdZZ4d[d\Z5d]d^Z6d_d`Z7dadbZ8dcS)g SCMRightsTesticCs\g}t|D]J}t\}}|tj||tj|t|t| | |q |Sr.) r%rmkstemprWrrrwriterencodeappend)rBrfdsr:rNrrrrnewFDs6 s   zSCMRightsTest.newFDscCsBt|D]4\}}t|dtj|t|dt|qdS)Nrr) enumeraterlseekSEEK_SETrr rr)rBrrrNrrrcheckFDsB szSCMRightsTest.checkFDscCs||j|dSr.)rWcloseRecvmsgFDsrHrrrrEI sz#SCMRightsTest.registerRecvmsgResultcCsn|dD]`\}}}|tjkr|tjkrtd}||dt|t||j|D]}t|qXqdS)Nrpr:) r r5 SCM_RIGHTSrs frombytesrrrr)rBZrecvmsg_result cmsg_level cmsg_type cmsg_datarrNrrrrL s  zSCMRightsTest.closeRecvmsgFDsc Cs8||tgtjtjtd||fgttdS)Nr:) rrDrr r5rrsrr)rBrrrrcreateAndSendFDsX szSCMRightsTest.createAndSendFDsrprcCs|\}}}}||t|||j|j|dtj|d||t| t ||t d} |D]`} || t | \} } } || tj || tj|| t|t | td| | qd|t | ||| dS)NTrSrUrVr:r)rrrKrrWr rLrrr]rrstupler5rr SIZEOF_INTrr)rBZnumfdsrFmaxcmsgs ignoreflagsrrrrritemrrrrrrcheckRecvmsgFDsb s&         zSCMRightsTest.checkRecvmsgFDscCs |d||jttddS)NrprrrGrerrrArrrtestFDPassSimple} szSCMRightsTest.testFDPassSimplec Cs<||tgtjtjtd|dfgt tdS)Nr:rp) rrDrr r5rrsrrrrArrr_testFDPassSimple szSCMRightsTest._testFDPassSimplecCs |d||jttddS)Nr.rrrArrrtestMultipleFDPass sz SCMRightsTest.testMultipleFDPasscCs|ddSNr.rrArrr_testMultipleFDPass sz!SCMRightsTest._testMultipleFDPassrc Cs*|d||jtttdtdSr)rrGrerrr rrrArrrtestFDPassCMSG_SPACE s  z"SCMRightsTest.testFDPassCMSG_SPACEcCs|ddSrrrArrr_testFDPassCMSG_SPACE sz#SCMRightsTest._testFDPassCMSG_SPACEc Cs0|jd||jtttdttjddS)Nrpr.r) rrGrerrr rrrLrArrrtestFDPassCMSG_LEN s  z SCMRightsTest.testFDPassCMSG_LENcCs|ddSrrrArrr_testFDPassCMSG_LEN sz!SCMRightsTest._testFDPassCMSG_LENr?zskipping, see issue #12958zskipping, see issue #22397cCs$|jd||jttddddS)Nrr)rrrArrrtestFDPassSeparate sz SCMRightsTest.testFDPassSeparatec CsX|d\}}||tgtjtjtd|gftjtjtd|gfgttdSNrr: rrrDrr r5rrsrrBZfd0fd1rrr_testFDPassSeparate s   z!SCMRightsTest._testFDPassSeparatec Cs@d}|j|||jtttttt|dtj ddS)Nr)rr) rrGrerrr rrrrL)rBZnum_fdsrrrtestFDPassSeparateMinSpace s z(SCMRightsTest.testFDPassSeparateMinSpacec CsX|d\}}||tgtjtjtd|gftjtjtd|gfgttdSr r r rrr_testFDPassSeparateMinSpace s   z)SCMRightsTest._testFDPassSeparateMinSpacec Csfz||g|}Wn>tyP}z&||jt||g}WYd}~n d}~00||t|dSr.)rDrrrfrjrr)rBrrrrrrrsendAncillaryIfPossible s "z%SCMRightsTest.sendAncillaryIfPossiblezsee issue #24725cCs&|jd||jttdtjddS)Nrrr)rrGrerrr rLrArrrtestFDPassEmpty s zSCMRightsTest.testFDPassEmptycCs|ttjtjdfgdSNr)rrr r5rrArrr_testFDPassEmpty s zSCMRightsTest._testFDPassEmptycCs||jttd\}}}}||t|||j|j|dtj d| t|d|D]6\}}}||tj ||tj | t|tq\dS)NrTrrp)rGrerrrrKrrWr rLr]r5r assertLessrrBrrrrrrrrrrtestFDPassPartialInt s  z"SCMRightsTest.testFDPassPartialIntc Cs4|ttjtjtd|jgddfgdS)Nr:r)rrr r5rrsbadfdrrArrr_testFDPassPartialIntsz#SCMRightsTest._testFDPassPartialIntc Cs||jttd\}}}}||t|||j|j|dtj d| t|dt d}|D]J\}}}||tj ||tj ||dt|t||jqf| t|d||dS)NrTrrr:)rGrerrrrKrrWr rLr]rsr5rrrr) rBrrrrrrrrrrrtestFDPassPartialIntInMiddle s     z*SCMRightsTest.testFDPassPartialIntInMiddlec CsZ|d\}}|ttjtjtd||jgddftjtjtd|gfgdS)Nrr:r) rrrr r5rrsrrr rrr_testFDPassPartialIntInMiddles z+SCMRightsTest._testFDPassPartialIntInMiddlecCsJ|\}}}}||t|||j||g|j|dtj|ddS)NTrSrTrV)rrrKrrWr rL)rBrFrrrrrrrrcheckTruncatedHeader)s    z"SCMRightsTest.checkTruncatedHeadercCs"|j||jtttjddSNrrrGrerrr rLrArrrtestCmsgTruncNoBufSize3sz$SCMRightsTest.testCmsgTruncNoBufSizecCs|ddSrrrArrr_testCmsgTruncNoBufSize<sz%SCMRightsTest._testCmsgTruncNoBufSizecCs$|j||jttdtjddS)Nrrr rArrrtestCmsgTrunc0?szSCMRightsTest.testCmsgTrunc0cCs|ddSrrrArrr_testCmsgTrunc0DszSCMRightsTest._testCmsgTrunc0cCs|||jttddSr)rrGrerrrArrrtestCmsgTrunc1JszSCMRightsTest.testCmsgTrunc1cCs|ddSrrrArrr_testCmsgTrunc1MszSCMRightsTest._testCmsgTrunc1cCs"|||jtttddSr)rrGrerrrrArrrtestCmsgTrunc2IntPszSCMRightsTest.testCmsgTrunc2IntcCs|ddSrrrArrr_testCmsgTrunc2IntWsz SCMRightsTest._testCmsgTrunc2Intc Cs(|||jtttdddSr)rrGrerrr rrArrrtestCmsgTruncLen0Minus1Zs z%SCMRightsTest.testCmsgTruncLen0Minus1cCs|ddSrrrArrr_testCmsgTruncLen0Minus1^sz&SCMRightsTest._testCmsgTruncLen0Minus1c Cs||jtt|\}}}}||t|||j|j|dtj d|dkr\|gkr\dS|t|d|d\}} } ||tj || tj | t| || t| |td} | | dt| t| | j|| dS)NTrSrTrrpr:)rGrerrrrKrrWr rLr5rr\r]rsrrr) rBancbufmaxdataZmindatarrrrrrrrrrrcheckTruncatedArrayds&   z!SCMRightsTest.checkTruncatedArraycCs|jtddddS)Nrr,r-r.r rrArrrtestCmsgTruncLen0|szSCMRightsTest.testCmsgTruncLen0cCs|ddSrrrArrr_testCmsgTruncLen0sz SCMRightsTest._testCmsgTruncLen0cCs|jtdddddS)Nrrpr/r0rArrrtestCmsgTruncLen0Plus1sz$SCMRightsTest.testCmsgTruncLen0Plus1cCs|ddSrrrArrr_testCmsgTruncLen0Plus1sz%SCMRightsTest._testCmsgTruncLen0Plus1cCs|jtttddS)Nr/r.r rrrArrrtestCmsgTruncLen1s zSCMRightsTest.testCmsgTruncLen1cCs|ddSrrrArrr_testCmsgTruncLen1sz SCMRightsTest._testCmsgTruncLen1cCs(|jtdtddtdddS)Nrrpr/r5rArrrtestCmsgTruncLen2Minus1s z%SCMRightsTest.testCmsgTruncLen2Minus1cCs|ddSrrrArrr_testCmsgTruncLen2Minus1sz&SCMRightsTest._testCmsgTruncLen2Minus1N)rpr)r)r)9rGrHrIrrrrErrrrrrrrr rrrrr rrmrurrr rrrrrrrrrrrr!r"r#r$r%r&r'r(r)r*r.r1r2r3r4r6r7r8r9rrrrr. s~                     rc@seZdZdZdZddZd^ddZeed d d d Z e j d dZ eedd d ddZ e j ddZ eejdeed d ddZej ddZd_ddZeed d ddddZej dd Zeedd d ddd!d"Zej d#d$Zeejdeedd d ddd%d&Zej d'd(Zeejdeedd d ddd)d*Zej d+d,Zd`d-d.Zeed d d/d0Zej d1d2Zeed d d3d4Zej d5d6Zeed d d7d8Zej d9d:Zeed d d;d<Z e j d=d>Z!eed d d?d@Z"e"j dAdBZ#eed d dCdDZ$e$j dEdFZ%dadGdHZ&eedd d dddIdJZ'e'j dKdLZ(eedd d dddMdNZ)e)j dOdPZ*eedd d dddQdRZ+e+j dSdTZ,eedd d dddUdVZ-e-j dWdXZ.eedd d dddYdZZ/e/j d[d\Z0d]S)bRFC3542AncillaryTestrrcCs4i}|D]&\}}}|||f|||||f<q|Sr.)r)rBrdrrrrrrancillaryMappings z%RFC3542AncillaryTest.ancillaryMappingrrc Cs|jtjtjd|j||jtt |\}}}}| |t | ||j |j |dtj|d| t|d||dt|d\}} } | |tj| | tj|| t| t| ttd} | | || dd|| d|dS)NrpTrrr:)rerr r:rMr?rnrGrrrrKrrWrLrrrBrrrsrr\r]) rB ancbufsizemaxhoprrrrrrrrrrrr checkHopLimits.        z"RFC3542AncillaryTest.checkHopLimitrMrBcCs|jdddSNrr=)r?rArrrtestRecvHopLimitsz%RFC3542AncillaryTest.testRecvHopLimitcCs$||jj|jd|tdSrrr?rrYrArrArrr_testRecvHopLimitsz&RFC3542AncillaryTest._testRecvHopLimitrcCs|jttddS)NrA)r?r rrrArrrtestRecvHopLimitCMSG_SPACEsz/RFC3542AncillaryTest.testRecvHopLimitCMSG_SPACEcCs$||jj|jd|tdSrrCrArrr_testRecvHopLimitCMSG_SPACEsz0RFC3542AncillaryTest._testRecvHopLimitCMSG_SPACErcCs|jd|jddSNr)r=r>)r? hop_limitrArrrtestSetHopLimitsz$RFC3542AncillaryTest.testSetHopLimitc CsL||jj|jd||tgtjtj t d|j gfgt tdSNrr:) rr?rrYrrDrr r:rBrsrHrrArrr_testSetHopLimitsz%RFC3542AncillaryTest._testSetHopLimitc CsB|jtjtjd|jtjtjd|j||jt t |\}}}}| |t | ||j |j|dtj|d| t |d||}|tjtjf} | t | ttd} | | || dd|| dd|tjtjf} | t | ttd} | | || dd|| d|dS)NrpTrrr:rr)rerr r:rMrJr?rnrGrrrrKrrWrLr<rArrsrr\r]rB) rBr=r>rrrrrZancmapZtcdatarZhldatarrrcheckTrafficClassAndHopLimits:           z1RFC3542AncillaryTest.checkTrafficClassAndHopLimitrJrAcCs|jdddSr@)rLrArrrtestRecvTrafficClassAndHopLimitsz4RFC3542AncillaryTest.testRecvTrafficClassAndHopLimitcCs$||jj|jd|tdSrrCrArrr _testRecvTrafficClassAndHopLimit$sz5RFC3542AncillaryTest._testRecvTrafficClassAndHopLimitcCs|jttdddSNrrA)rLr rrrArrr)testRecvTrafficClassAndHopLimitCMSG_SPACE)s z>RFC3542AncillaryTest.testRecvTrafficClassAndHopLimitCMSG_SPACEcCs$||jj|jd|tdSrrCrArrr*_testRecvTrafficClassAndHopLimitCMSG_SPACE1sz?RFC3542AncillaryTest._testRecvTrafficClassAndHopLimitCMSG_SPACEcCs|jd|jddSrGrLrHrArrrtestSetTrafficClassAndHopLimit6sz3RFC3542AncillaryTest.testSetTrafficClassAndHopLimitc Csd||jj|jd||tgtjtj t d|j gftjtj t d|j gfgttdSrJ)rr?rrYrrDrr r:rArs traffic_classrBrHrrArrr_testSetTrafficClassAndHopLimit?sz4RFC3542AncillaryTest._testSetTrafficClassAndHopLimitcCs|jd|jddSrGrRrArrrtestOddCmsgSizeJsz$RFC3542AncillaryTest.testOddCmsgSizec Cs||jj|jdzJ|tgtjtjt d|j g dftjtj t d|j gfg}Wnty}zh||jt|tgtjtjt d|j gftjtj t d|j gfg}||ttWYd}~n d}~00dS)Nrr:r)rr?rrYrDrr r:rArsrTrrBrHrrrfrjrr)rBrrrrr_testOddCmsgSizeTs2z%RFC3542AncillaryTest._testOddCmsgSizecCs|jtjtjd|j|dur*dn|f}|j|jtt g|R\}}}}| |t | ||j | |g|j |dtj|ddS)NrprTr)rerr r:rMr?rnrGrrrrKrrWrL)rBr=rrSrrrrrrrcheckHopLimitTruncatedHeaderjs      z1RFC3542AncillaryTest.checkHopLimitTruncatedHeadercCs|jdtjddS)Nr=rrXr rLrArrrr!~sz+RFC3542AncillaryTest.testCmsgTruncNoBufSizecCs$||jj|jd|tdSrrCrArrrr"sz,RFC3542AncillaryTest._testCmsgTruncNoBufSizecCs|jdtjddS)NrrYrZrArrrtestSingleCmsgTrunc0sz)RFC3542AncillaryTest.testSingleCmsgTrunc0cCs$||jj|jd|tdSrrCrArrr_testSingleCmsgTrunc0sz*RFC3542AncillaryTest._testSingleCmsgTrunc0cCs|jdddS)NrprA)rXrArrrtestSingleCmsgTrunc1sz)RFC3542AncillaryTest.testSingleCmsgTrunc1cCs$||jj|jd|tdSrrCrArrr_testSingleCmsgTrunc1sz*RFC3542AncillaryTest._testSingleCmsgTrunc1cCs|jdtddSrO)rXrrArrrtestSingleCmsgTrunc2Intsz,RFC3542AncillaryTest.testSingleCmsgTrunc2IntcCs$||jj|jd|tdSrrCrArrr_testSingleCmsgTrunc2Intsz-RFC3542AncillaryTest._testSingleCmsgTrunc2IntcCs|jtddddS)NrrprA)rXr rrArrrtestSingleCmsgTruncLen0Minus1sz2RFC3542AncillaryTest.testSingleCmsgTruncLen0Minus1cCs$||jj|jd|tdSrrCrArrr_testSingleCmsgTruncLen0Minus1sz3RFC3542AncillaryTest._testSingleCmsgTruncLen0Minus1cCs|jtjtjd|j||jtt t t d\}}}}| |t | ||j|j|dtjd|t|d|r|d\}}}| |tj| |tj|t|t dS)NrpTr+r)rerr r:rMr?rnrGrrrrrrKrrWrLr]rBrrrrrtestSingleCmsgTruncInDatas     z.RFC3542AncillaryTest.testSingleCmsgTruncInDatacCs$||jj|jd|tdSrrCrArrr_testSingleCmsgTruncInDatasz/RFC3542AncillaryTest._testSingleCmsgTruncInDatac Cs|jtjtjd|jtjtjd|j||jt t |\}}}}| |t | ||j |j|dtj|d| t |d|d\}}} | |tj||tjtjh| t | ttd} | | || dd|| dddS)NrpTrrr:r)rerr r:rMrJr?rnrGrrrrKrrWrLrrArBrrsrr\r]) rBr=rrrrrrrrrrrrcheckTruncatedSecondHeaders0        z/RFC3542AncillaryTest.checkTruncatedSecondHeadercCs|jtttjddSr)rer rrrLrArrrtestSecondCmsgTrunc0s z)RFC3542AncillaryTest.testSecondCmsgTrunc0cCs$||jj|jd|tdSrrCrArrr_testSecondCmsgTrunc0sz*RFC3542AncillaryTest._testSecondCmsgTrunc0cCs|ttddSrrer rrrArrrtestSecondCmsgTrunc1sz)RFC3542AncillaryTest.testSecondCmsgTrunc1cCs$||jj|jd|tdSrrCrArrr_testSecondCmsgTrunc1sz*RFC3542AncillaryTest._testSecondCmsgTrunc1cCs|ttdtdSrrhrArrrtestSecondCmsgTrunc2Ints z,RFC3542AncillaryTest.testSecondCmsgTrunc2IntcCs$||jj|jd|tdSrrCrArrr_testSecondCmsgTrunc2Intsz-RFC3542AncillaryTest._testSecondCmsgTrunc2IntcCs"|tttdddSr)rer rrrrArrrtestSecondCmsgTruncLen0Minus1s  z2RFC3542AncillaryTest.testSecondCmsgTruncLen0Minus1cCs$||jj|jd|tdSrrCrArrr_testSecondCmsgTruncLen0Minus1sz3RFC3542AncillaryTest._testSecondCmsgTruncLen0Minus1c CsT|jtjtjd|jtjtjd|j||jt t t t t t d\}}}}||t |||j|j|dtjdtjtjh}|d\}}}||tj|||t |t td} | ||| dd|| dd|rD|d\}}}||tj|||t |t ||gdS)NrpTr+rr:r)rerr r:rMrJr?rnrGrrrrrrrKrrWrLrArBpopremoversrr\r]r) rBrrrrZ cmsg_typesrrrrrrrtestSecomdCmsgTruncInDatas:           z.RFC3542AncillaryTest.testSecomdCmsgTruncInDatacCs$||jj|jd|tdSrrCrArrr_testSecomdCmsgTruncInDataCsz/RFC3542AncillaryTest._testSecomdCmsgTruncInDataN)rr)rr)r)r)1rGrHrIrHrTr<r?rr rBrrDrErFrIrKrLrMrNrPrQrSrUrVrWrXr!r"r[r\r]r^r_r`rarbrcrdrerfrgrirjrkrlrmrnrqrrrrrrr:s            $                                             #r:c@s eZdZdS)SendrecvmsgUDPTestBaseNrGrHrIrrrrrsKsrsrc@s eZdZdS)SendmsgUDPTestNrtrrrrruPsrurc@s eZdZdS)RecvmsgUDPTestNrtrrrrrvTsrvr[c@s eZdZdS)RecvmsgIntoUDPTestNrtrrrrrwXsrwc@seZdZddZdS)SendrecvmsgUDP6TestBasecCs ||dd|dddSr8rIrJrrrrKasz+SendrecvmsgUDP6TestBase.checkRecvmsgAddressNrGrHrIrKrrrrrx]srxr0rr!c@s eZdZdS)SendmsgUDP6TestNrtrrrrrzfsrzc@s eZdZdS)RecvmsgUDP6TestNrtrrrrr{lsr{c@s eZdZdS)RecvmsgIntoUDP6TestNrtrrrrr|rsr|r:c@s eZdZdS)RecvmsgRFC3542AncillaryUDP6TestNrtrrrrr}xsr}c@s eZdZdS)#RecvmsgIntoRFC3542AncillaryUDP6TestNrtrrrrr~sr~c@s eZdZdS)SendrecvmsgUDPLITETestBaseNrtrrrrrsrc@s eZdZdS)SendmsgUDPLITETestNrtrrrrrsrc@s eZdZdS)RecvmsgUDPLITETestNrtrrrrrsrc@s eZdZdS)RecvmsgIntoUDPLITETestNrtrrrrrsrc@seZdZddZdS)SendrecvmsgUDPLITE6TestBasecCs ||dd|dddSr8rIrJrrrrKsz/SendrecvmsgUDPLITE6TestBase.checkRecvmsgAddressNryrrrrrsrc@s eZdZdS)SendmsgUDPLITE6TestNrtrrrrrsrc@s eZdZdS)RecvmsgUDPLITE6TestNrtrrrrrsrc@s eZdZdS)RecvmsgIntoUDPLITE6TestNrtrrrrrsrc@s eZdZdS)#RecvmsgRFC3542AncillaryUDPLITE6TestNrtrrrrrsrc@s eZdZdS)'RecvmsgIntoRFC3542AncillaryUDPLITE6TestNrtrrrrrs rc@s eZdZdS)SendrecvmsgTCPTestBaseNrtrrrrrsrc@s eZdZdS)SendmsgTCPTestNrtrrrrrsrc@s eZdZdS)RecvmsgTCPTestNrtrrrrrsrc@s eZdZdS)RecvmsgIntoTCPTestNrtrrrrrsrc@s eZdZdS)SendrecvmsgSCTPStreamTestBaseNrtrrrrrsrz6IPPROTO_SCTP: [Errno 62] Protocol not supported on AIXr<r2rc@s eZdZdS)SendmsgSCTPStreamTestNrtrrrrrsrcseZdZfddZZS)RecvmsgSCTPStreamTestc sTztt|Wn<tyN}z$|jtjkr0|dWYd}~n d}~00dSNz4sporadic ENOTCONN (kernel issue?) - see issue #13876)rMrrrrfENOTCONNrcrBrrUrrrs  z$RecvmsgSCTPStreamTest.testRecvmsgEOFrGrHrIrrYrrrUrrsrcseZdZfddZZS)RecvmsgIntoSCTPStreamTestc sTztt|Wn<tyN}z$|jtjkr0|dWYd}~n d}~00dSr)rMrrrrfrrcrrUrrrs  z(RecvmsgIntoSCTPStreamTest.testRecvmsgEOFrrrrUrr src@s eZdZdS)SendrecvmsgUnixStreamTestBaseNrtrrrrrsrrc@s eZdZdS)SendmsgUnixStreamTestNrtrrrrrsrc@s eZdZdS)RecvmsgUnixStreamTestNrtrrrrr!src@s eZdZdS)RecvmsgIntoUnixStreamTestNrtrrrrr'srr5rc@s eZdZdS)RecvmsgSCMRightsStreamTestNrtrrrrr-src@s eZdZdS)RecvmsgIntoSCMRightsStreamTestNrtrrrrr2srcsFeZdZfddZejZeedr2dZ ddZ n dZ ddZ Z S) InterruptedTimeoutBasecs2tttjdd}|tjtj|dS)NcSsddSrr)signumrrrrrFrz.InterruptedTimeoutBase.setUp..)rMrCrrrW)rBZorig_alrm_handlerrUrrrCCs  zInterruptedTimeoutBase.setUp setitimerg?cCsttj|dSr.)rr ITIMER_REALrBZsecondsrrrsetAlarmRszInterruptedTimeoutBase.setAlarmrcCst|dSr.)rrrrrrrXs) rGrHrIrCrrXr7r r alarm_timerrYrrrUrr>s   r siginterruptrrz+Don't have signal.alarm or signal.setitimercsleZdZfddZddZddZddZd d Zd d Ze e j d ddZ e e j dddZ Z S)InterruptedRecvTimeoutTestcst|j|jdSr.)rMrCr=rr7rArUrrrCes z InterruptedRecvTimeoutTest.setUpc OsdzR||j|t}||i|Wdn1s<0YW|dn |d0dSr)rrr'rrBrrSrTr1rrrcheckInterruptedRecvis   .z/InterruptedRecvTimeoutTest.checkInterruptedRecvcCs||jjddSr)rr=rrArrrtestInterruptedRecvTimeoutssz5InterruptedRecvTimeoutTest.testInterruptedRecvTimeoutcCs||jjtddSr)rr= recv_intorrArrrtestInterruptedRecvIntoTimeoutvsz9InterruptedRecvTimeoutTest.testInterruptedRecvIntoTimeoutcCs||jjddSr)rr=rrArrrtestInterruptedRecvfromTimeoutysz9InterruptedRecvTimeoutTest.testInterruptedRecvfromTimeoutcCs||jjtddSr)rr= recvfrom_intorrArrr"testInterruptedRecvfromIntoTimeout|sz=InterruptedRecvTimeoutTest.testInterruptedRecvfromIntoTimeoutrcCs||jjddSr)rr=rrArrrtestInterruptedRecvmsgTimeoutsz8InterruptedRecvTimeoutTest.testInterruptedRecvmsgTimeoutr[cCs||jjtdgdSr)rr=r[rrArrr!testInterruptedRecvmsgIntoTimeoutsz0YW|dn |d0dSr)r'rrrrrrrcheckInterruptedSends   0z/InterruptedSendTimeoutTest.checkInterruptedSendrrcCs||jjddSr)rrrrArrrtestInterruptedSendTimeoutsz5InterruptedSendTimeoutTest.testInterruptedSendTimeoutcCs||jjd|jdSr)rrr/rrArrrtestInterruptedSendtoTimeouts z7InterruptedSendTimeoutTest.testInterruptedSendtoTimeoutrcCs||jjdgdSr)rrrrArrrtestInterruptedSendmsgTimeoutsz8InterruptedSendTimeoutTest.testInterruptedSendmsgTimeout)rGrHrIrCrrrZrequires_mac_verrrrr rrYrrrUrrs       rc@seZdZddZddZdS) TCPCloserTestcCsh|j\}}||j}t|gggd\}}}|||g||dd||dS)N?rpr)r=rrrrrr)rBrrsdr rr rrr testCloseszTCPCloserTest.testClosecCs |jt|jftddSNr)rrrr?rrrArrr _testCloseszTCPCloserTest._testCloseN)rGrHrIrrrrrrrs rc@sNeZdZdddZddZddZdd Zd d Zd d ZddZ ddZ dS)BasicSocketPairTestrcCstj||ddSr)rrNrrrrrNszBasicSocketPairTest.__init__cCs\||tjttdr*||jtjn||jtj||jtj||j ddS)Nrr) rr r rrrr<rr2rrrrr_check_defaultss  z#BasicSocketPairTest._check_defaultscCs||jdSr.)rrrArrr _testDefaultssz!BasicSocketPairTest._testDefaultscCs||jdSr.)rr=rArrr testDefaultssz BasicSocketPairTest.testDefaultscCs|jd}||tdSr)r=rrrrrrrrs zBasicSocketPairTest.testRecvcCs|jtdSr.)rrrrArrrrszBasicSocketPairTest._testRecvcCs|jtdSr.)r=rrrArrrtestSendszBasicSocketPairTest.testSendcCs|jd}||tdSr)rrrrrrrr _testSends zBasicSocketPairTest._testSendN)r) rGrHrIrNrrrrrrrrrrrrs  rc@seZdZd&ddZddZddZdd Zejd d Z eeZ e e ed d edddddZddZddZddZddZddZddZdd Zd!d"Zd#d$Zd%S)'NonBlockingTCPTestsrcCst|_tj||ddSr)rOryeventrrNrrrrrNs zNonBlockingTCPTests.__init__cCsh||j||dk}|||tdurd|du}t|tjtj}|t|tj@ |dS)N) rr=r getblockingr F_GETFLr O_NONBLOCKbool)rBrr7blockingZ fd_blockingflagrrrassert_sock_timeoutsz'NonBlockingTCPTests.assert_sock_timeoutcCs|jd||jd|jd||jd|jd||jd|jd||jd|jd||jd|jd||jddS)NTFrrr)r=rErrrArrrtestSetBlockings      z#NonBlockingTCPTests.testSetBlockingcCsdSr.rrArrr_testSetBlocking&sz$NonBlockingTCPTests._testSetBlockingcCsbddl}|j|jkr|d|jd||jd|j|jd||jdS)Nrzneeds UINT_MAX < ULONG_MAXFrrp) rr,Z ULONG_MAXrcr=rErrrr-rrrtestSetBlocking_overflow)s   z,NonBlockingTCPTests.testSetBlocking_overflowrDztest needs socket.SOCK_NONBLOCKrcCs4|jttjtjtjB|_||jddSr)r=rr r<r2rDrrArrrtestInitNonBlocking8s   z'NonBlockingTCPTests.testInitNonBlockingcCsdSr.rrArrr_testInitNonBlockingBsz(NonBlockingTCPTests._testInitNonBlockingcCs`tdD|jd|j\}}||j||Wdn1sR0YdS)Nr)r8r=rrrWrrrrrrrtestInheritFlagsBlockingEs    z,NonBlockingTCPTests.testInheritFlagsBlockingcCs|jt|jfdSr.rrrr?rArrr_testInheritFlagsBlockingNsz-NonBlockingTCPTests._testInheritFlagsBlockingcCsfd}t|F|jd|j\}}||j|||Wdn1sX0YdS)Ng4@r)r8r=rrrWrrr)rBZdefault_timeoutrrrrrtestInheritFlagsTimeoutQs    z+NonBlockingTCPTests.testInheritFlagsTimeoutcCs|jt|jfdSr.rrArrr_testInheritFlagsTimeout\sz,NonBlockingTCPTests._testInheritFlagsTimeoutcCs|jdt}|t|j\}}Wdn1sB0Yt|}||d|j t |jgggt j \}}}|j|vr| d|j\}}||j||dS)NFrz'Error trying to do accept after select.)r=rEr monotonicr'BlockingIOErrorrrrrnrr LONG_TIMEOUTr#rWrrr)rBZ start_timerrZdtr rr rrr testAccept_s  ,      zNonBlockingTCPTests.testAcceptcCs |j|jt|jfdSr.)rrrrrr?rArrr _testAcceptus zNonBlockingTCPTests._testAcceptcCs|j\}}||j|d|t|tt }Wdn1sR0Y|j t |gggt j\}}}||vr|d|tt }||t dS)NFz0Error during select call to non-blocking socket.)r=rrWrrEr'rrrrrrnrrrr#r)rBrrrr rr rrrr|s   ,  zNonBlockingTCPTests.testRecvcCs,|jt|jf|j|jtdSr.)rrrr?rrrrrArrrrs zNonBlockingTCPTests._testRecvN)r)rGrHrIrNrrrrrlrZ_testSetBlocking_overflowrrkr r requires_linux_versionrrrrrrrrrrrrrrrs*       rc@seZdZdZdZdZdZdZeZ dZ eZ d:dd Z d d Z d d ZddZddZddZddZddZddZddZddZddZd d!Zd"d#Zd$d%Zd&d'Zd(d)Zd*d+Zd,d-Zd.d/Zd0d1Z d2d3Z!d4d5Z"d6d7Z#d8d9Z$dS);FileObjectClassTestCaserrstrictNr rrcCstj||ddSrrrrrrrNsz FileObjectClassTestCase.__init__cCsRddtdD\|_|_|_|_t||jj|j |j |j |j |j d|_dS)NcSsg|] }tqSr)rOryrr:rrrrsz1FileObjectClassTestCase.setUp..r.encodingerrorsnewline)r%evt1evt2 serv_finished cli_finishedrrCrr read_moderdrrr read_filerArrrrCs zFileObjectClassTestCase.setUpcCs6|j|j||jjd|_t|dSr.)rrnrrrclosedrrErArrrrEs   z FileObjectClassTestCase.tearDowncCs0t||jj|j|j|j|j|jd|_ dS)Nr) rrrr write_moderdrrr write_filerArrrrs z#FileObjectClassTestCase.clientSetUpcCs6|j|j||jjd|_t|dSr.)rrnrrrrrrrArrrrs   z&FileObjectClassTestCase.clientTearDowncCsx|jd|jd|tj|jjd|t}|jdWdn1sX0Y|dt |j dS)Nrprz!cannot read from timed out object) rrrr r'r r7rrrr0)rBctxrrrtestReadAfterTimeouts    *z,FileObjectClassTestCase.testReadAfterTimeoutcCs.|j|jdd|j|jdS)Nrr)rr write_msgflushrrrArrr_testReadAfterTimeouts z-FileObjectClassTestCase._testReadAfterTimeoutcCs<|jt|jd}|jd}||}|||jdSrv)rr rread_msgr)rB first_segZ second_segrrrr testSmallReads z%FileObjectClassTestCase.testSmallReadcCs|j|j|jdSr.rrrrrArrr_testSmallReadsz&FileObjectClassTestCase._testSmallReadcCs|j}|||jdSr.)rr rrrrrr testFullReads z$FileObjectClassTestCase.testFullReadcCs|j|j|jdSr.)rrrrrArrr _testFullReadsz%FileObjectClassTestCase._testFullReadcCs:t|j}|jd}|sq(||7}q |||jdSr)rrrr r)rBr^charrrrtestUnbufferedReads    z*FileObjectClassTestCase.testUnbufferedReadcCs|j|j|jdSr.rrArrr_testUnbufferedReadsz+FileObjectClassTestCase._testUnbufferedReadcCs|j}|||jdSr.)rreadlinerrrBlinerrr testReadlines z$FileObjectClassTestCase.testReadlinecCs|j|j|jdSr.rrArrr _testReadline sz%FileObjectClassTestCase._testReadlinecCs&|j|j}|||jdSr.)rrrr rrrrrrtestCloseAfterMakefiles  z.FileObjectClassTestCase.testCloseAfterMakefilecCs|j|j|jdSr.rrArrr_testCloseAfterMakefilesz/FileObjectClassTestCase._testCloseAfterMakefilecCs@|j|jtt}t|jtr.| }| ||jdSr.) rrrrrrrrrdecoderrrrrtestMakefileAfterMakefileCloses   z6FileObjectClassTestCase.testMakefileAfterMakefileClosecCs|j|j|jdSr.rrArrr_testMakefileAfterMakefileClose"sz7FileObjectClassTestCase._testMakefileAfterMakefileClosecCs||jj dSr.)rrrrArrrtestClosedAttr&sz&FileObjectClassTestCase.testClosedAttrcCs||jj dSr.)rrrrArrr_testClosedAttr)sz'FileObjectClassTestCase._testClosedAttrcCs,||jj|j||jj|jdSr.)rrrrrrrrArrrtestAttributes,sz&FileObjectClassTestCase.testAttributescCs,||jj|j||jj|jdSr.)rrrrrrrrArrr_testAttributes0sz'FileObjectClassTestCase._testAttributescCs8|j|t|jj|j|t|jjdSr.)rrr'rrrrrrArrr testRealClose4s  z%FileObjectClassTestCase.testRealClosecCsdSr.rrArrr_testRealClose:sz&FileObjectClassTestCase._testRealClose)r)%rGrHrIrdrrrrrrrrrNrCrErrrrrrrrrrrrrrrrrr r r r r rrrrrsB     rc@s`eZdZdZddZddZddZdd Zd d Zd d Z ddZ ddZ ddZ ddZ dS)!UnbufferedFileObjectClassTestCasercCsL|j}||d|j|jdd|_|j}||d|jdS)NA. r rB. )rrrrrrrrrrtestUnbufferedReadlineJs   z8UnbufferedFileObjectClassTestCase.testUnbufferedReadlinecCs2|jd|j|jd|j|jdS)NrrrrArrr_testUnbufferedReadlineRsz9UnbufferedFileObjectClassTestCase._testUnbufferedReadlinecCsD|j|jd}|||j|j|t|jjddSr)rrrrrrr'rrrrrtestMakefileCloseWs    z3UnbufferedFileObjectClassTestCase.testMakefileClosecCs|j|j|jdSr.rrArrr_testMakefileClose`sz4UnbufferedFileObjectClassTestCase._testMakefileClosecCs6t|j}|jt|j}||d|dSr)rurtrrrr)rBZrefcount_beforeZrefcount_afterrrrtestMakefileCloseSocketDestroyds   z@UnbufferedFileObjectClassTestCase.testMakefileCloseSocketDestroycCsdSr.rrArrr_testMakefileCloseSocketDestroyjszAUnbufferedFileObjectClassTestCase._testMakefileCloseSocketDestroycCs|jd||jtdd||jt|jdd|j |j d|jt|jd}|durt d|jt|jd}td}|j|}||d||d|}|||j||jtdd||jdddS)NFrrrg?r{rp)rrErrreadintorr rrrrnrrrr)rBrr^rrrrrtestSmallReadNonBlockingqs       z:UnbufferedFileObjectClassTestCase.testSmallReadNonBlockingcCs>|jd|j|j|j|j|jddS)Nr@) rrrrrrrrnrrArrr_testSmallReadNonBlockings    z;UnbufferedFileObjectClassTestCase._testSmallReadNonBlockingcCs"|jd|jr||jdS)Nr)rr serv_skippedrcrArrrtestWriteNonBlockings z6UnbufferedFileObjectClassTestCase.testWriteNonBlockingcCstd|_|jddtj}d}|j|}||dt|D](}|j|}|dur\qp||dq@d|_dS)NFrrrz$failed to saturate the socket buffer) rrrErrrrrkr%)rBZBIGZLIMITrr:rrr_testWriteNonBlockings      z7UnbufferedFileObjectClassTestCase._testWriteNonBlockingN)rGrHrIrdrrrrrrrrrrrrrrr>s   rc@seZdZdZdS)#LineBufferedFileObjectClassTestCaserpNrGrHrIrdrrrrrsrc@seZdZdZdS)$SmallBufferedFileObjectClassTestCaserNrrrrrr sr c@s&eZdZdZedZdZeZdZ dS)"UnicodeReadFileObjectClassTestCaserrrr+N rGrHrIrrrrrrrrrrrr!s  r!c@s&eZdZdZeZdZedZdZ dS)#UnicodeWriteFileObjectClassTestCaser rrr+N) rGrHrIrrrrrrrrrrrr#s  r#c@s,eZdZdZedZdZedZdZ dS)'UnicodeReadWriteFileObjectClassTestCaserrrr+Nr"rrrrr$s   r$c@seZdZddZdS)NetworkConnectionTestcCstt|jf|_|j|_dSr.)r create_connectionrr?rrrArrrrsz!NetworkConnectionTest.clientSetUpN)rGrHrIrrrrrr%sr%c@s eZdZdS) BasicTCPTest2Nrtrrrrr'sr'c@sDeZdZGdddejZejddZddZddZ d d Z d S) NetworkConnectionNoServerc@seZdZddZdS)z$NetworkConnectionNoServer.MockSocketcGstddS)Nz timed out)r r7rCrrrrsz,NetworkConnectionNoServer.MockSocket.connectN)rGrHrIrrrrr MockSocketsr)ccs,tj}|jt_zdVW|t_n|t_0dSr.)r r))rBZ old_socketrrrmocked_socket_modules z.NetworkConnectionNoServer.mocked_socket_modulecCsrt}ttjtj}||j|t}| t |fWdn1sR0Y| |j j t jdSr.)rrr r<r2rWrr'rrrrr0rfZ ECONNREFUSED)rBr?rr1rrr test_connects   ,z&NetworkConnectionNoServer.test_connectcCs\t}|t}tt|fWdn1s60Yt}||j j |dSr.) rrr'rr r&rZget_socket_conn_refused_errsrr0rf)rBr?r1Zexpected_errnosrrrtest_create_connections  ,z0NetworkConnectionNoServer.test_create_connectionc Cs|xzttdfWnJtjy0YnBtyf}z tjsP|jtj krRWYd}~nd}~00| dWdn1s0YdS)Nrr) r*r r&rr7rrrrfZ EAFNOSUPPORTr#rrrrtest_create_connection_timeouts z8NetworkConnectionNoServer.test_create_connection_timeoutN) rGrHrIr r) contextlibcontextmanagerr*r+r,r-rrrrr(s  r(c@sveZdZdddZddZddZdd ZeZd d ZeZ d d Z eZ ddZ eZ ddZeZddZeZddZdS)NetworkConnectionAttributesTestrcCstj||dt|dSrrrrrrrN sz(NetworkConnectionAttributesTest.__init__cCst|_dSr.)rr source_portrArrrr$sz+NetworkConnectionAttributesTest.clientSetUpcCs|jd|_t|dSr.rrArrrr's z.NetworkConnectionAttributesTest.clientTearDowncCs|j\}}|dSr.)r=rrrrrr _justAccept,sz+NetworkConnectionAttributesTest._justAcceptcCs:tjt|jftjd|_||jj| |jj ddS)Nrr) r r&rr?rrXrrWrrrrArrr _testFamily1s  z+NetworkConnectionAttributesTest._testFamilycCsJtjt|jftjd|jfd|_||jj | |j d|jdS)Nr+)r7source_addressrp) r r&rr?rrXr1rrWrrrrArrr_testSourceAddress8s  z2NetworkConnectionAttributesTest._testSourceAddressc Csn|tdutdz.tt|jf|_||jj Wtdn td0| |j ddS)Nr: rr r5r6r&rr?rrWrrrrArrr_testTimeoutDefaultBs z3NetworkConnectionAttributesTest._testTimeoutDefaultc Csr|tdutdz2tjt|jfdd|_||jj Wtdn td0| |j ddSNrr6rArrr_testTimeoutNoneNs z0NetworkConnectionAttributesTest._testTimeoutNonecCs,tjt|jfdd|_||jddSr8)r r&rr?rrrrArrr_testTimeoutValueNamedZsz6NetworkConnectionAttributesTest._testTimeoutValueNamedcCs8tt|jfd|_||jj||jddS)Nr9) r r&rr?rrWrrrrArrr_testTimeoutValueNonamed_sz8NetworkConnectionAttributesTest._testTimeoutValueNonamedN)r)rGrHrIrNrrr2Z testFamilyr3ZtestSourceAddressr5ZtestTimeoutDefaultr7ZtestTimeoutNoner:ZtestTimeoutValueNamedr;ZtestTimeoutValueNonamedr<rrrrr0s     r0c@sBeZdZdddZddZddZdd ZeZd d Zd d Z dS)NetworkConnectionBehaviourTestrcCstj||dt|dSrrrrrrrNgsz'NetworkConnectionBehaviourTest.__init__cCsdSr.rrArrrrksz*NetworkConnectionBehaviourTest.clientSetUpcCs|jd|_t|dSr.rrArrrrns z-NetworkConnectionBehaviourTest.clientTearDowncCs2|j\}}||jtd|ddS)Nrdone!)r=rrWrrrrrrrrtestInsideTimeoutss  z0NetworkConnectionBehaviourTest.testInsideTimeoutcCs0tt|jf|_}|d}||ddS)Nrr>)r r&rr?rrr)rBrrrrr_testInsideTimeoutzs z1NetworkConnectionBehaviourTest._testInsideTimeoutcs4tjt|jfdd|_|tjfdddS)Nrprcs dS)Nr)rrrrrrrzDNetworkConnectionBehaviourTest._testOutsideTimeout..)r r&rr?rr'r7rArrAr_testOutsideTimeoutsz2NetworkConnectionBehaviourTest._testOutsideTimeoutN)r) rGrHrIrNrrr?ZtestOutsideTimeoutr@rBrrrrr=es r=c@s6eZdZddZddZeeeddddZ d S) TCPTimeoutTestcs fdd}tj|ddS)NcsjdjdSr)r=rrrrArr raise_timeouts z4TCPTimeoutTest.testTCPTimeout..raise_timeoutz*Error generating a timeout exception (TCP)r'r r7rBrDrrArtestTCPTimeouts  zTCPTimeoutTest.testTCPTimeoutcCsxd}z|jd|j}WnFtjy<|dYn*tyPd}Yn|dYn0|st|ddS)NFrz%caught timeout instead of error (TCP)Tz!caught unexpected exception (TCP)z3accept() returned success when we did not expect it)r=rrr r7r#rrBokrbrrrtestTimeoutZeros  zTCPTimeoutTest.testTimeoutZerorztest needs signal.alarm()c s|jdGdddtfdd}ttj|}zzzztd|j}Wn\tjyr| dYnJyYn:| dt ddt fYn 0| d Wtd n td 0Wny| d Yn0Wttj|nttj|0dS) Nrc@s eZdZdS)z4TCPTimeoutTest.testInterruptedTimeout..AlarmNrtrrrrAlarmsrKcsdSr.r)rrrKrr alarm_handlersz.alarm_handlerrzcaught timeout instead of Alarmz3caught other exception instead of Alarm: %s(%s): %sznothing caughtrzgot Alarm in wrong place)r=rrRrrrrr r7r#ruexc_info traceback format_exc)rBrMrrbrrLrtestInterruptedTimeouts*       z%TCPTimeoutTest.testInterruptedTimeoutN) rGrHrIrGrJrrkr rrQrrrrrCs  rCc@seZdZddZddZdS)UDPTimeoutTestcs fdd}tj|ddS)NcsjdjddSNrrr=rrrrArrrDs z4UDPTimeoutTest.testUDPTimeout..raise_timeoutz*Error generating a timeout exception (UDP)rErFrrArtestUDPTimeouts  zUDPTimeoutTest.testUDPTimeoutcCszd}z|jd|jd}WnFtjy>|dYn*tyRd}Yn|dYn0|sv|ddS)NFrrz%caught timeout instead of error (UDP)Tz!caught unexpected exception (UDP)1recv() returned success when we did not expect itr=rrr r7r#rrHrrrrJs  zUDPTimeoutTest.testTimeoutZeroN)rGrHrIrUrJrrrrrRsrRc@seZdZddZddZdS)UDPLITETimeoutTestcs fdd}tj|ddS)NcsjdjddSrSrTrrArrrDs z.raise_timeoutz.Error generating a timeout exception (UDPLITE)rErFrrArtestUDPLITETimeouts  z%UDPLITETimeoutTest.testUDPLITETimeoutcCszd}z|jd|jd}WnFtjy>|dYn*tyRd}Yn|dYn0|sv|ddS)NFrrz)caught timeout instead of error (UDPLITE)Tz%caught unexpected exception (UDPLITE)rVrWrHrrrrJs  z"UDPLITETimeoutTest.testTimeoutZeroN)rGrHrIrYrJrrrrrXsrXc@seZdZddZddZdS)TestExceptionscCsJ|ttt|ttjt|ttjt|ttjtdSr.)r issubclassrrRr r(r)r7rArrrtestExceptionTreesz TestExceptions.testExceptionTreecCsvttjtjd}ttjtjd|}|||j|t| dWdn1sh0YdS)NrF) r r<r2rrrWrHr'rrE)rBZsock0rrrrtest_setblocking_invalidfds  z)TestExceptions.test_setblocking_invalidfdN)rGrHrIr\r]rrrrrZsrZrLinux specific testc@s@eZdZdZddZddZddZdd Zd d Zd d Z dS)TestLinuxAbstractNamespacelc Csd}ttjtj}|||ttjtjj}|||d0}||||| |Wdn1s0YWdn1s0YWdn1s0YdS)Nspython-test-hellor) r rr2rar@rrrr getpeername)rBrs1rZZs3rrrtestLinuxAbstractNamespaces z5TestLinuxAbstractNamespace.testLinuxAbstractNamespacecCs`dd|jd}ttjtj*}|||||Wdn1sR0YdS)Nrhrp) UNIX_PATH_MAXr rr2rarrrBrrrrr testMaxNames z&TestLinuxAbstractNamespace.testMaxNamecCsRdd|j}ttjtj }|t|j|Wdn1sD0YdS)Nh)rer rr2r'rrarfrrrtestNameOverflowsz+TestLinuxAbstractNamespace.testNameOverflowcCsFttjtj}z&|d||dW|n |0dS)Nz pythontest pythontest)r rr2rarrrrrrr testStrNames  z&TestLinuxAbstractNamespace.testStrNamecCsRttjtj.}|td||dWdn1sD0YdS)Nrk)r rr2rarrrrrrrtestBytearrayName&sz,TestLinuxAbstractNamespace.testBytearrayNamec Csd}ttjtj}|d|||ttjtj>}|d||||||Wdn1s0YWdn1s0YdS)Ns ^[0-9a-f]{5}r+)r rr2raZ assertRegexrr)rBZabstract_addressrbrZrrr testAutobind,s  z'TestLinuxAbstractNamespace.testAutobindN) rGrHrIrercrgrjrlrmrnrrrrr_s  r_ztest needs socket.AF_UNIXc@sneZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ e ejdkdddZdS)TestUnixDomaincCsttjtj|_dSr.)r rr2rrArrrrC=szTestUnixDomain.setUpcCs|jdSr.)rrrArrrrE@szTestUnixDomain.tearDownc Cs:z t|WSty4|d|tYn0dS)NzBPathname {0!a} cannot be represented in file system encoding {1!r})rfsencoderrcr rugetfilesystemencodingrBrrrrencodedCs  zTestUnixDomain.encodedc CsZzt||WnDtyT}z,t|dkr>|d|nWYd}~n d}~00dS)NzAF_UNIX path too longz6Pathname {0!a} is too long to serve as an AF_UNIX path)rrrrrcr )rBrrrrrrraNs zTestUnixDomain.bindcCs||jddS)N)r+N)rrrrArrrrZszTestUnixDomain.testUnboundcCs@tjtj}||j||tj|| |j |dSr.) rrabspathrTESTFNrarrWrrrrrrrr testStrAddr^szTestUnixDomain.testStrAddrcCsFtjtj}||j|||tj || |j |dSr.) rrrtrrurarrsrWrrrrrrrr testBytesAddreszTestUnixDomain.testBytesAddrcCsRtjtj}||}||j|dd| tj || |j |dS)Nasciisurrogateescape) rrrtrZTESTFN_UNICODErsrarrrWrrr)rBrrrrrtestSurrogateescapeBindls  z&TestUnixDomain.testSurrogateescapeBindcCsTtjdur|dtjtj}||j||tj || |j |dS)Nz!No unencodable filename available) rZTESTFN_UNENCODABLErcrrrtrarrWrrrrrrrrtestUnencodableAddrus   z"TestUnixDomain.testUnencodableAddrrr^cCs|t|jjddS)Nr+)r'rrrarArrrtestEmptyAddressszTestUnixDomain.testEmptyAddressN)rGrHrIrCrErsrarrvrwrzr{rrmrurr|rrrrro:s    roc@seZdZdddZddZddZdd ZeZd d ZeZ d d Z ddZ ddZ e Z ddZe ZddZddZddZe ZdS) BufferIOTestrcCstj||ddSrrrrrrrNszBufferIOTest.__init__cCsZtddgtt}|j|}||tt|}|dtt}||tdSNrrr)rsrrrrrrrBr^rrrrrtestRecvIntoArrays  zBufferIOTest.testRecvIntoArraycCstt}|j|dSr.rrrrrBr^rrr_testRecvIntoArrayszBufferIOTest._testRecvIntoArraycCsDtd}|j|}||tt|dtt}||tdSr)rrrrrrrrrrtestRecvIntoBytearrays  z"BufferIOTest.testRecvIntoBytearraycCsHtd}|jt|}||tt|dtt}||tdSr)rrrrrrrrrrrtestRecvIntoMemoryviews z#BufferIOTest.testRecvIntoMemoryviewcCs^tddgtt}|j|\}}||tt|}|dtt}||tdSr~)rsrrrrrrrBr^rrrrrrtestRecvFromIntoArrays z"BufferIOTest.testRecvFromIntoArraycCstt}|j|dSr.rrrrr_testRecvFromIntoArraysz#BufferIOTest._testRecvFromIntoArraycCsHtd}|j|\}}||tt|dtt}||tdSr)rrrrrrrrrrtestRecvFromIntoBytearrays z&BufferIOTest.testRecvFromIntoBytearraycCsLtd}|jt|\}}||tt|dtt}||tdSr)rrrrrrrrrrrtestRecvFromIntoMemoryviews z'BufferIOTest.testRecvFromIntoMemoryviewcCs td}|t|jj|ddS)Nr^r)rr'rrrrrrrtestRecvFromIntoSmallBuffersz(BufferIOTest.testRecvFromIntoSmallBuffercCs|jtdSr.rrArrr_testRecvFromIntoSmallBuffersz)BufferIOTest._testRecvFromIntoSmallBuffercCs$t}|j||j|ddSr)rrrrrrrtestRecvFromIntoEmptyBuffers z(BufferIOTest.testRecvFromIntoEmptyBufferN)r)rGrHrIrNrrrZ_testRecvIntoBytearrayrZ_testRecvIntoMemoryviewrrrZ_testRecvFromIntoBytearrayrZ_testRecvFromIntoMemoryviewrrrZ_testRecvFromIntoEmptyBufferrrrrr}s" r}ic CsttdsdSz td}Wntttfy4YdS0|6|D] }|dr@WddSq@Wdn1sv0YdS)NAF_TIPCFz /proc/modulesztipc T)r r rFileNotFoundErrorIsADirectoryErrorr^r)rrrrrisTipcAvailables   2rz6TIPC module is not loaded, please 'sudo modprobe tipc'c@seZdZddZdS)TIPCTestcCsttjtj}ttjtj}||j||j|tjtjdtjt t t f}| |tj t t tt t ddf}|t||d\}}|||||tdS)Nrprrr)r rr4rWrrr5r6TIPC_ADDR_NAMESEQ TIPC_STYPE TIPC_LOWER TIPC_UPPERraTIPC_ADDR_NAMErjr/rrrr)rBr-rsrvaddrZsendaddrrZrecvaddrrrrtestRDMs     zTIPCTest.testRDMN)rGrHrIrrrrrrsrc@s6eZdZd ddZddZddZdd Zd d Zd S)TIPCThreadableTestrcCstjj||dt|dSrrrrrrrN szTIPCThreadableTest.__init__cCsttjtj|_||jj|jtjtjdtj t t t f}|j ||j||j\|_|_||jjdSr)r rr2r-rWrrr5r6rrrrrar@rorrr)rBrrrrrCs  zTIPCThreadableTest.setUpcCsdtdttjtj|_||jjtjt t t t t ddf}|j ||j|_dS)Nrrr)rrr rr2rrWrrrrrjrrrcliaddr)rBrrrrrs  zTIPCThreadableTest.clientSetUpcCs,|jd}||t||j|jdSr)rrrrrrrrrrr's  zTIPCThreadableTest.testStreamcCs|jt|jdSr.rrArrrr,s zTIPCThreadableTest._testStreamN)rrrrrrrs    rc@s4eZdZddZddZddZddZd d Zd S) ContextManagersTestcCst}||jWdn1s*0Y||jt}|Wdn1sf0Y||jt }|t|jdWdn1s0Y||jdSNr,)r rr/rrr'rrrrrr_testSocketClass3s *  &  .z$ContextManagersTest._testSocketClasscCs2|j\}}||j|d}||dSrr=rrWrrrrBrrrrrrtestCreateConnectionBaseAs  z,ContextManagersTest.testCreateConnectionBasecCsl|j}t|8}||j|d||ddWdn1sR0Y| |jdS)Nr,r) r=rr r&rr/rrrrrBrrrrr_testCreateConnectionBaseGs     0z-ContextManagersTest._testCreateConnectionBasecCs2|j\}}||j|d}||dSrrrrrrtestCreateConnectionCloseOs  z-ContextManagersTest.testCreateConnectionClosecCs\|j}t|}|Wdn1s20Y||j|t|j ddSr) r=rr r&rrr/r'rrrrrr_testCreateConnectionCloseUs   & z.ContextManagersTest._testCreateConnectionCloseN)rGrHrIrrrrrrrrrr1s rc@seZdZeeeddedddddZ dd Z d d Z d d Z e edudddZe edudddZddZdS)InheritanceTestrzSOCK_CLOEXEC not definedrrrcCsXttjtjtjB.}||jtj||Wdn1sJ0YdSr.)r r<r2rrrrget_inheritablerrrrtest_SOCK_CLOEXEC^s  z!InheritanceTest.test_SOCK_CLOEXECcCs@t}| ||dWdn1s20YdSr )r rrrrrrtest_default_inheritablegsz(InheritanceTest.test_default_inheritablec Cstt}|T|}|| ||dWdn1sH0YWdn1sf0YdSr )r r&rrr)rBrZnewsockrrrtest_dupls zInheritanceTest.test_dupcCsdt}|D|d||d|d||dWdn1sV0YdS)NTF)r set_inheritablerrrrrrtest_set_inheritablets   z$InheritanceTest.test_set_inheritableNrcCst}|b|}||dt|tj}|tjM}t|tj|||dWdn1st0YdSr)r rrrr F_GETFD FD_CLOEXECZF_SETFD)rBrrNrrrrtest_get_inheritable_cloexec}s z,InheritanceTest.test_get_inheritable_cloexeccCs|t}|\|}|t|tjtj@tj|d|t|tjtj@dWdn1sn0YdS)NTr)r rrr rrr)rBrrNrrrtest_set_inheritable_cloexecs z,InheritanceTest.test_set_inheritable_cloexeccCsHt\}}||j||j||d||ddSr )r rrWrrr)rBrbrZrrrtest_socketpairs    zInheritanceTest.test_socketpair)rGrHrIrrkr r rrrrrrrmr rrrrrrrr]s      rrDzSOCK_NONBLOCK not definedc@s,eZdZd ddZeddddd Zd S) NonblockConstantTestTrcCs|rj||jtj||||t|tjtj tj @|dkrZ| | q|| nL||jtj||d| t|tjtj tj @|| dSr) rrr r2rrr rrrrr)rBrnonblockr7rrr checkNonblocks z"NonblockConstantTest.checkNonblockrrrcCsttjtjtjB}|||d|j|dd|d|||d|j|dd|d|j|dd|d|j|ddWdn1s0Yt}tdt}||Wdn1s0Ytdt}||dWdn1s.0Ytdt}|j|ddWdn1sp0Ytdt}||dWdn1s0Yt|dS)NTF)rg@rr) r r<r2rDrrErr5r6)rBrtrrrtest_SOCK_NONBLOCKs:        ,  (  ,  .  ,z'NonblockConstantTest.test_SOCK_NONBLOCKN)Tr)rGrHrIrrrrrrrrrs  rr<r=zneed multiprocessingc@s@eZdZeddZddZddZddZd d Zd d Z d S)TestSocketSharingcCsD|}|}t|}|\}}||||dSr.)rsr fromsharerrr)rqZsdatamessagerrZrrrrremoteProcessServers   z%TestSocketSharing.remoteProcessServerc Cst}tj|j|fd}||j|j}|j}|j | |d}| |t |}g}| d}|szq||qj| d|}||||dS)NrrSs slapmahfrorr)multiprocessingr|Processrrr=sharepidrrrr r&rrrr) rBrr$rrrrmreceivedrrr testShares&         zTestSocketSharing.testSharecCs@|jt}|ttj|dd|ttj|ddS)Nrr,)r=rrgetpidr'rr r)rBrrrrtestShareLengthsz!TestSocketSharing.testShareLengthcCsb||d|||||j|j||j|j|jdkr^||j|jdSr)rrrrr)rBZorgotherrrrcompareSocketss  z TestSocketSharing.compareSocketscCsD|jt}t|}z||j|W|n |0dSr.)r=rrrr rrr)rBrrrrrtestShareLocal)s  z TestSocketSharing.testShareLocalc Cstjtjg}tjtjg}|D]}|D]}zt||}WntyNYq$Yn0zH|t}t |}z| ||W| n | 0W| q$| 0q$qdSr.) r r<rr2r!rrrrrrr)rBfamiliestypesrrsourcerZsharedrrr testTypes1s     zTestSocketSharing.testTypesN) rGrHrIrrrrrrrrrrrrs #rc@seZdZdZdZdZejZe ddZ e ddZ dd Z d d Z d d ZddZddZddZddZddZddZddZddZddZd d!Zd"d#Zd$d%Zd&d'Zd(d)Zd*d+Zd,d-Zd.d/Zd0d1Z d2d3Z!d4d5Z"d6d7Z#d8d9Z$d:S);SendfileUsingSendTestirircCsdd}dddt|jD}ttjd.}||j|jD]}||q>Wdn1sb0Yttjd}||_ Wdn1s0YdS)Ncss&||kr|V||8}q|r"|VdSr.r)totalsteprrrchunksQs  z0SendfileUsingSendTest.setUpClass..chunksrcSsg|]}ttjqSr)randomchoicestring ascii_lettersrrrrrrYsz4SendfileUsingSendTest.setUpClass..rr ) rr%BUFSIZErrruFILESIZErr FILEDATA)rrchunkrZcsizerrr setUpClassOs * z SendfileUsingSendTest.setUpClasscCsttjdSr.)rrru)rrrr tearDownClassbsz#SendfileUsingSendTest.tearDownClasscCs8|jtj|j\}}||j||j|Sr.)r=rrrrTIMEOUTrWrrrrr accept_connfs   z!SendfileUsingSendTest.accept_conncCs,g}||j}|sq"||qd|Sr)rrrr)rBrrrrrr recv_datams   zSendfileUsingSendTest.recv_datacCs t|dS)N_sendfile_use_sendrrrrrmeth_from_sockvsz$SendfileUsingSendTest.meth_from_sockc Cs|j}ttjd}t|f}|B}||}||}|||j || |j Wdn1sn0YWdn1s0YdS)Nr r=rrrrur r&rrrtellrBrfilermethsentrrr_testRegularFile}s   z&SendfileUsingSendTest._testRegularFilecCs6|}||}|t||j|||jdSr.rrrrrrrBrrrrrtestRegularFiles z%SendfileUsingSendTest.testRegularFilec Cs|j}t|j}t|p}|L}||}|||j || |j | tj |j |Wdn1sx0YWdn1s0YdSr.)r=rioBytesIOrr r&rPrrrr'rUrV)rBrrrrrrr_testNonRegularFiles   z)SendfileUsingSendTest._testNonRegularFilecCs6|}||}|t||j|||jdSr.rrrrrtestNonRegularFiles z(SendfileUsingSendTest.testNonRegularFilec Cs|j}tjd}t|d|tj|Wdn1sB0Yt|d}t|b}|>}| |}||}| |d| | dWdn1s0YWdn1s0YdS)N2rr r) r=rrrurrWrr r&rrr)rBrfilenamerrrrrrr_testEmptyFileSends   ,   z(SendfileUsingSendTest._testEmptyFileSendcCs"|}||}||ddSr)rrrrrrrtestEmptyFileSends z'SendfileUsingSendTest.testEmptyFileSendc Cs|j}ttjd}t|n}|J}||}||dd}|||j d|| |j Wdn1sv0YWdn1s0YdS)Nr )offsetrrrrr _testOffsets    z!SendfileUsingSendTest._testOffsetcCsB|}||}|t||jd|||jdddS)Nrrrrrr testOffsets z SendfileUsingSendTest.testOffsetc Cs|j}ttjd}tj|tjd}|j|Fd}||}|||d}| ||| | |Wdn1s|0YWdn1s0YdS)Nr rGKLr r=rrrrur r&rXrrrrBrrrrrrrrr _testCounts      z SendfileUsingSendTest._testCountcCs@d}|}||}|t|||||jd|dS)NrrrrrrrBrrrrrr testCounts  zSendfileUsingSendTest.testCountc Cs|j}ttjd}tj|tjd}|j|Fd}||}|||d}| ||| | |Wdn1s|0YWdn1s0YdS)Nr rrprrrrrr_testCountSmalls      z%SendfileUsingSendTest._testCountSmallcCs@d}|}||}|t|||||jd|dSrrrrrrtestCountSmalls  z$SendfileUsingSendTest.testCountSmallc Cs|j}ttjd}tj|ddp}|L}d}||}||d|d}||||| |dWdn1s|0YWdn1s0YdS)Nr rr駆)rr) r=rrrrur r&rrrrrrr_testCountWithOffsets    z*SendfileUsingSendTest._testCountWithOffsetcCsDd}|}||}|t|||||jd|ddS)NrrrrrrrtestCountWithOffsets  z)SendfileUsingSendTest.testCountWithOffsetc Cs|j}ttjd}t|f}|B}|d||}| t ||| t |j |Wdn1sn0YWdn1s0YdS)Nr F) r=rrrrur r&rErr'rrPrBrrrrrrr_testNonBlockings    z&SendfileUsingSendTest._testNonBlockingcCs |}|dr|ddS)Nriz$was not supposed to receive any data)rrr#rBrrrrtestNonBlocking s z%SendfileUsingSendTest.testNonBlockingc Cs|j}ttjd}tj|tjd}|T|0||}||}| ||j Wdn1sf0YWdn1s0YdS)Nr r) r=rrrrur r&rXrrrrrrr_testWithTimeouts    z&SendfileUsingSendTest._testWithTimeoutcCs6|}||}|t||j|||jdSr.rrrrrtestWithTimeouts z%SendfileUsingSendTest.testWithTimeoutc Cs|j}ttjd^}t|4}|d||}| tj ||Wdn1s\0YWdn1sz0YdS)Nr g{Gz?) r=rrrrur r&rrr'r7rrrr_testWithTimeoutTriggeredSend#s     z3SendfileUsingSendTest._testWithTimeoutTriggeredSendcCs |}|dtddS)NiXrp)rrrrr rrrtestWithTimeoutTriggeredSend+s z2SendfileUsingSendTest.testWithTimeoutTriggeredSendcCsdSr.rrArrr _test_errors2sz"SendfileUsingSendTest._test_errorsc CsttjdX}tjtjd*}||}|td||Wdn1sL0YWdn1sj0YttjdR}t*}||}|td||Wdn1s0YWdn1s0Yttjd}tj}||}|jtd||dd|jtd||d d|jtd||d d|jtd||d dWdn1sj0YWdn1s0YdS) Nr rr2r!z binary modezpositive integerrrrrr) rrrur r!rr#rr)rBrrrrrr test_errors5s6 @  @  z!SendfileUsingSendTest.test_errorsN)%rGrHrIrrrrrXrrrrrrrrrrrrrrrrrrrrrrr r r r rrrrrrrrEsB               rrPz%os.sendfile() required for this test.c@seZdZddZdS)SendfileUsingSendfileTestcCs t|dS)NrVrrrrrrSsz(SendfileUsingSendfileTest.meth_from_sockN)rGrHrIrrrrrrMsrzAF_ALG requiredc@s|eZdZddZeddddZddZedd d d Zedd d dZ edd ddZ ddZ ddZ dS)LinuxKernelCryptoAPIc Cslttjtjd}z|||fWn>tyb}z&|tt|||WYd}~nd}~00|SdSr) r r*r(rarrrZSkipTestr)rBtyprrrrrr create_algZs(zLinuxKernelCryptoAPI.create_algr.rc Cstd}|dd}|\}}|,|d||d|Wdn1sZ0Y|\}}|V|dtj |dtj |dtj |d ||d|Wdn1s0YWdn1s0YdS) NZ@ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015adhashZsha256sabcrabcr) rfromhexrrrrrrr MSG_MORErBralgooprvrrr test_sha256gs   0  z LinuxKernelCryptoAPI.test_sha256c Cstd}|ddn}|tjtjd|\}}|,|d| | d|Wdn1sl0YWdn1s0YdS)NZ(effcdf6ae5eb2fa2d27416d5f184df9c259a7c79rz hmac(sha1)sJefeswhat do ya want for nothing?r) rrrrr SOL_ALG ALG_SET_KEYrrrrrrrrtest_hmac_sha1ys   z#LinuxKernelCryptoAPI.test_hmac_sha1rc Cs&td}td}d}td}t|}|dd}|tjtj||\}}|@|j tj |tj d| || |||Wdn1s0Y|\}}|6|j |gtj|d| |||Wdn1s0Yd } |g| } |\}}|0|j | tj |d||| } Wdn1sX0Y| t| || | | d|||\}}|2|j | gtj|d||| } Wdn1s0Y| t| || | | || Wdn1s0YdS) NZ 06a9214036b8a15b512e03d534120006Z 3dafba429d9eb430b422da802c9fac41sSingle block msgZ e353779c1079aeb82708942dbe77181aZskcipherzcbc(aes))rivr)rr"r)rrrrrr rr r sendmsg_afalgALG_OP_ENCRYPTrrrrALG_OP_DECRYPT) rBkeyr"rZ ciphertextZmsglenrrrvZ multiplierZlongmsgencZdecrrr test_aes_cbcsL      0 0  . .z!LinuxKernelCryptoAPI.test_aes_cbcrc Cs td}td}td}td}td}td}t|}t|}|dd} | tjtj|| tjtjd|| \} } | | j tj ||tj d | |tj | || |t||} ||| || ||| | dWdn1s0Y| \} } | p||} | j | gtj ||d | |t||} ||| || ||| | dWdn1s0Ytd j}| \} } | ||} | | gtjtj|tj gtjtj|t||gtjtj||gf| t| |} ||| || ||| | dWdn1sx0Y| \} } | X|||} | j | gtj||d | t| |} ||| |dWdn1s0YWdn1s0YdS) NZ c939cc13397c1d37de6ae0e1cb7c423cZb3d8cc017cbb89b39e0f67e2Z c3b3c41f113a31b73d9a5cd432103069Z 24825602bd12a984e0092d3e448eda5fZ 93fe7d9e9bfd10348a5606e5cafa7354Z 0032a1dc85f1c9786925a2e71d8272ddZaeadzgcm(aes))rr"assoclenr)rr"r)r )rrrrrr rr ALG_SET_AEAD_AUTHSIZErr#r$rrrrrStructrr ALG_SET_OP ALG_SET_IVALG_SET_AEAD_ASSOCLENr%)rBr&r"ZplainZassocZ expected_ctZ expected_tagZtaglenr)rrrvresrZ pack_uint32rrrtest_aead_aes_gcmsl          6 6  6  z&LinuxKernelCryptoAPI.test_aead_aes_gcmc Cs|ddv}td}|tjtj||\}}|*|d}| t |dWdn1sj0YWdn1s0YdS)NrngZdrbg_pr_sha256rz) rrurandomrr rr rrrr)rBrZ extra_seedrrvZrnrrrtest_drbg_pr_sha256s   z(LinuxKernelCryptoAPI.test_drbg_pr_sha256c CsPttjtjd}|"|t|Wdn1sB0Y|t|jddWdn1sx0Y|t|dWdn1s0Y|t |jtjddWdn1s0Y|t |jtjddWdn1s"0YWdn1sB0YdS)Nr)rrp)rr)r)r r*r(r'rr#r$rrrrtest_sendmsg_afalg_argss & * ( . z,LinuxKernelCryptoAPI.test_sendmsg_afalg_argscCsttjtjd}||j|t|dWdn1sH0Y|t d|dWdn1s~0Y|t|dWdn1s0Y|t d|dWdn1s0YdS)Nr)Z tttttttttttttrz type too long)Zttttttttttttttr)rZ?nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnz name too long)rZ@nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn) r r*r(rWrr'rrar#rrrrrtest_length_restriction s  (( (z,LinuxKernelCryptoAPI.test_length_restrictionN) rGrHrIrrrrr!r(r0r3r4r5rrrrrWs    (  >  rwinzrequires Windowsc@seZdZhdZddZdS)TestMSWindowsTCPFlags> TCP_KEEPIDLE TCP_MAXSEG TCP_KEEPINTVL TCP_KEEPCNT TCP_FASTOPEN TCP_NODELAYcs6ddttD}fdd|D}g|ddS)NcSsg|]}|dr|qS)ZTCP)rrrrrrr+rz.csg|]}|jvr|qSr) knownTCPFlagsr>rArrr,rzANew TCP flags were discovered. See bpo-32394 for more information)rr r)rBZprovidedunknownrrArtest_new_tcp_flags*s z(TestMSWindowsTCPFlags.test_new_tcp_flagsN)rGrHrIr?rArrrrr7s r7c@seZdZddZddZddZeee d p:ee d d e e j d d d Z ee d e e j d ddZdS)CreateServerTestcCst}td|f8}||dd||d|Wdn1sT0Ytjrtjd|ftjd8}||dd||d|Wdn1s0YdS)Nrrrprr)rrr create_serverrrrrrBr?rrrr test_address4s2 zCreateServerTest.test_addresscCstd0}||jtj||jtjWdn1s@0Ytjrtjdtj d0}||jtj ||jtjWdn1s0YdS)Nrrrr) r rCrrr<rr2rrr)rBrrrrrtest_family_and_type?s .z%CreateServerTest.test_family_and_typecCsttdsD|ttjdddWdq1s80Yntd,}|tjtj}||dWdn1s0Ytjddd,}|tjtj}| |dWdn1s0YdS)N SO_REUSEPORT)rrT) reuse_portr) r r r'rrCrr5rHrr)rBrrUrrrtest_reuse_portHs  . *z CreateServerTest.test_reuse_portr: IPV6_V6ONLYz IPV6_V6ONLY option not supportedr@cCs4tjdtjd}Wdn1s&0YdS)NrFr)r rCrrrrrtest_ipv6_only_defaultTsz'CreateServerTest.test_ipv6_only_defaultdualstack_ipv6 not supportedcCsFtjdtjdd }||jtjWdn1s80YdS)NrFTrdualstack_ipv6)r rCrrrrrrrtest_dualstack_ipv6_family\s  z+CreateServerTest.test_dualstack_ipv6_familyN)rGrHrIrErGrJrrmr rrkrrrLr has_dualstack_ipv6rPrrrrrB2s        rBc@seZdZejZddZddZddZe e j ddd Z e e d e e j dd d Ze e d e e j dd dZdS)CreateServerFunctionalTestcsVfdd}t|jtj||fd}||jjdS)Nc s||\}}|Pj|d}|sNWdWddS||Wdn1sl0YWdn1s0YdSr)rrr7rr)rrrvrrrBrrrunis   z3CreateServerFunctionalTest.echo_server..runr) rOryrr7rrrWrrn)rBrrTrrrSr echo_serverhs  z&CreateServerFunctionalTest.echo_servercCsbtj|dB}||j|||d||ddWdn1sT0YdS)Nrr,r)r rr7rrrr)rBrrrrrr echo_clientzs    z&CreateServerFunctionalTest.echo_clientcCsVt}td|f,}|||d|ftjWdn1sH0YdS)Nr+r)rrr rCrUrVr<rDrrr test_tcp4s z$CreateServerFunctionalTest.test_tcp4r@cCs\t}tjd|ftjd,}|||d|ftjWdn1sN0YdS)Nr+rrrrr rCrrUrVrDrrr test_tcp6s  z$CreateServerFunctionalTest.test_tcp6rMcCs^t}tjd|ftjdd,}|||d|ftjWdn1sP0YdS)Nr+TrNr)rrr rCrrUrVr<rDrrrtest_dual_stack_client_v4s z4CreateServerFunctionalTest.test_dual_stack_client_v4cCs^t}tjd|ftjdd,}|||d|ftjWdn1sP0YdS)Nr+TrNrrXrDrrrtest_dual_stack_client_v6s z4CreateServerFunctionalTest.test_dual_stack_client_v6N)rGrHrIrrXr7rUrVrWrrkrrrYrmr rQrZr[rrrrrRes       rRsend_fdsrecv_fdsc@seZdZddZdS)SendRecvFdsTestsc Csndd}dd}ddtdD}|||dd|D}ttjtj\}}|v|Rt|tg|t|t td t |d \}}} } |||Wdn1s0YWdn1s0Y| |t| t |t || | d t |D]&\} }|\} } t | t| qt |D]*\} } t | d }| |t| q>dS) NcSs&|D]\}}t|t|qdSr.rr)pipesrfd2rrr close_pipess  z8SendRecvFdsTests.testSendAndRecvFds..close_pipescSs|D]}t|qdSr.r_)rrNrrr close_fdssz6SendRecvFdsTests.testSendAndRecvFds..close_fdscSsg|] }tqSr)rpipe)rrvrrrrrz7SendRecvFdsTests.testSendAndRecvFds..rcSsg|] \}}|qSrr)rrfdwfdrrrrrrrr)r%rWr rrr2r\rr]rrrrrrrr )rBrbrcr`rZsock1Zsock2rZfds2rrrnrerfrrrrtestSendAndRecvFdss&  &H   z#SendRecvFdsTests.testSendAndRecvFdsN)rGrHrIrgrrrrr^sr^cCs t}tjtjg|RdSr.)rZthreading_setuprZaddModuleCleanupZthreading_cleanup) thread_inforrr setUpModulesri__main__)rtestrZ test.supportrrfrrr rrrrOrqrurrrsr.weakrefrrrr&rrr\r_threadrrOrrr rrrrsystemrrrr r#r%r)r+r-r0r4r/r8ZHAVE_SOCKET_CANZHAVE_SOCKET_CAN_ISOTPZHAVE_SOCKET_CAN_J1939ZHAVE_SOCKET_RDSZHAVE_SOCKET_ALGZHAVE_SOCKET_QIPCRTRZHAVE_SOCKET_VSOCKr ZHAVE_SOCKET_UDPLITEZHAVE_SOCKET_BLUETOOTHrrrr;rJrKrLrZrhrjrrrkrrrrmrrrrrrrrrrrrrrrrrrrr r rnrrrrrrrrrr2r=r>rZr_rbrdrfrgrhrrrrrrrrr:rsrurvrwrxrrzr{r|r}r~rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr r!r#r$r|r%r'r(r0r=rCrRrXrZr_ror}rrrrrrrrrrrrrrrr7rBrRr^rirGmainrrrrsT                        3q ! $   c S Z * =  >.%{7w w=#P;k7                                                            )7#!$l    ?G97JS ',C< e  D3@  '