K ij ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl m Z  ddl ZddlZddlZddlmZmZddlmZddlmZ ddlmZddlmZmZmZmZm Z m!Z!m"Z"m#Z#ejJj4Z&dZ'd Z(d Z)d Z*d Z+d Z,dZ-GddeZ.GddeZ/GddeZ0Gdde0Z1GddeZ2GddeZ3GddeZ4GddeZ5Gdd eZ6Gd!d"eZ7Gd#d$eZ8Gd%d&eZ9Gd'd(eZ:Gd)d*eZ;Gd+d,eZ<Gd-d.eZ=Gd/d0eZ>Gd1d2eZ?d3Z@Gd4d5e#ZAGd6d7e"ZBGd8d9e!ZCGd:d;e ZDGd<d=eZEGd>d?e!ZFGd@dAe ZGGdBdCeZHGdDdEe ZIGdFdGe!ZJGdHdIeZKGdJdKeZLGdLdMe!ZMGdNdOe#ZNGdPdQe"ZOGdRdSe!ZPGdTdUe#ZQGdVdWe#ZRGdXdYe"ZSGdZd[e!ZTGd\d]e ZUGd^d_eZVd`ZWdaZXdbZYdcZZddZ[ejJjejJjdeZ]dfZ^dgZ_dhZ`ejJjdiZbdjZcdkZddlZedmZfdnZgGdodpeZhdqZidrZjdsZkejJjejdtk(duvdwZnejJjdxZodyZpdzZqd{Zrd|Zsd}Zte;d~diZue=d~diZvejJjdZwejJjejdtk(dvdZxdZydZzdZ{eCZ|e?Z}dZ~dZdZdZdZdZdZejJjejJj dZejJj dZejJj dZejJj dZdZdZdZdZejJjdZejJjdZejJjejJjdZdZdZdZdZdZdZdZdZejJj dZdZdZdZdZdZdZejJj dZGddeZejJjdZdZejJjHejJjdZejJjHejJjdZGdde0ZdZejJjdZdZGddeZdZdZdZy#e$rdZYwxYw#e$rdZe$e$cZZe$e$cZZe$e$cZ Z!e$e$cZ"Z#YwxYw)N)datetime)IpcReadOptionstobytes)find_free_port)util)flight) FlightClientFlightServerBaseServerAuthHandlerClientAuthHandlerServerMiddlewareServerMiddlewareFactoryClientMiddlewareClientMiddlewareFactoryc ddl}y)Nr)pyarrow.flight)pyarrows _/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/pyarrow/tests/test_flight.py test_importr?sctjjds tdt j tjddz S)z-Get the path to the test resources directory.ARROW_TEST_DATAzITest resources not found; set ARROW_TEST_DATA to /testing/datar)osenvironget RuntimeErrorpathlibPathrr resource_rootr DsF ::>>+ ,IJ J << #45 6 AArct}|sy ||z jd5}|jcdddS#1swYyxYw#t$r't d||z dt j wxYw)z)Get the contents of a test resource file.NrbzTest resource z< not found; did you initialize the test resource submodule? )r openreadFileNotFoundErrorr traceback format_exc)pathrootfs rread_flight_resourcer+Ls ?D  Tk   % 668     TD[M*))2)=)=)?(@ B   s%A = A AA A 0A9ctdtjtdtdtjtdtdgdS)z'Get the paths to test TLS certificates.z root-ca.pemz cert0.pemz cert0.key)certkeyz cert1.pemz cert1.key) root_cert certificates)r+r CertKeyPairrrrexample_tls_certsr2[sY*-8   )+6(5    )+6(5     rcvtjgdg}tjj|dgS)Nir some_intsnames)paarrayTable from_arrays)datas rsimple_ints_tabler@ls4 $% D 88  [M  ::rcLtjgdtj}tjtjj gd|tjj ddg|gg}tj j |dgS)N)foobazquuxtype)rNrG some_dictsr9)r;r<utf8 chunked_arrayDictionaryArrayr>r=) dict_valuesr?s rsimple_dicts_tablerNss((1 BK     * *< E    * *Aq6; ?   D 88  \N  ;;rctjjtjgdtjgdgddgS)N)rBbarrCquxrGrHabr9)r;r=r>r<rrrmultiple_column_tablerW~sB 88  *F!G!#,!7!9'*Cj  22rc4eZdZdZdZdfd ZdZdZxZS)ConstantFlightServerzA Flight server that always returns the same data. See ARROW-4796: this server implementation will segfault if Flight does not properly hold a reference to the Table object. sthe expected criteriac bt||fi|tttd|_||_y)N)intsdictsmulti)super__init__r@rNrWtable_factoriesoptions)selflocationrakwargs __class__s rr_zConstantFlightServer.__init__s3 ,V,'(+   rc#K||jk(rJtjtjgtj j dgyyw)N/foo)CRITERIAr FlightInfor;schemaFlightDescriptorfor_pathrbcontextcriterias r list_flightsz!ConstantFlightServer.list_flightssL t}} $## " ''008  %sAAc|j|j}tj||jS)Nra)r`ticketrRecordBatchStreamra)rbrnrstables rdo_getzConstantFlightServer.do_gets44$$V]]35''t||DDrNN) __name__ __module__ __qualname____doc__rhr_rprv __classcell__res@rrYrYs (HErrYc@eZdZdZdfd ZdZdZedZxZ S)MetadataFlightServerz4A Flight server that numbers incoming/outgoing data.c 2t|di|||_yNrr^r_rarbrardres rr_zMetadataFlightServer.__init__ "6" rctjgdg}tjj|dg}t j |j |j||jS)Nr4rUr9rr) r;r<r=r>rGeneratorStreamrjnumber_batchesra)rbrnrsr?rus rrvzMetadataFlightServer.do_getsb HH( ) $$T#$7%% LL    &LL" "rc nd}gd}|D]\}}|jtjjtj||ggdgsJ|Jt j d|j\} || k(sJ|jt jd||dz }y)Nrr4rUr<structunpack to_pybyteswritepack) rbrn descriptorreaderwritercounter expected_databatchbufclient_counters rdo_putzMetadataFlightServer.do_puts+  JE3<< : :=1234! ? "?$mmD#..2BCONn, ,, LLT73 4 qLG rc#Kt|jD]!\}}tjd|}||f#yw)Nr) enumerate to_batchesrr)ruidxrrs rrz#MetadataFlightServer.number_batchessA#E$4$4$67 JC++dC(C*  s?AN) rxryrzr{r_rvr staticmethodrr|r}s@rrrs)>" rrc6eZdZdZdfd ZdZdZdZxZS)EchoFlightServerz4A Flight server that returns the last data uploaded.c Bt||fi|d|_||_yr)r^r_ last_messageexpected_schema)rbrcrrdres rr_zEchoFlightServer.__init__s% ,V, .rc@tj|jSr)rrtrrbrnrss rrvzEchoFlightServer.do_gets''(9(9::rc||jr|j|jk(sJ|j|_yr)rrjread_allrrbrnrrrs rrzEchoFlightServer.do_puts2   ''6==8 88"OO-rc|D]}yrr)rbrnrrrchunks r do_exchangezEchoFlightServer.do_exchanges E  rrw) rxryrzr{r_rvrrr|r}s@rrrs>/ ;. rrc"eZdZdZdZdZdZy)EchoStreamFlightServerz6An echo server that streams individual record batches.ctj|jj|jj dS)N max_chunksize)rrrrjrrs rrvzEchoStreamFlightServer.do_gets;%%    $ $    ( (t ( <> >rcgSrrrbrns r list_actionsz#EchoStreamFlightServer.list_actionss rc|jdk(r/|j|jjdgSt)Nwho-am-iutf-8)rF peer_identitypeerencodeNotImplementedErrorrbrnactions r do_actionz EchoStreamFlightServer.do_actions9 ;;* $))+W\\^-B-B7-KL L!!rN)rxryrzr{rvrrrrrrrs@> "rrceZdZdZdZdZy)GetInfoFlightServerz)A Flight server that tests GetFlightInfo.ctjtjdtjfg|tj ddgtj dtj jddgtjdjtjddgd d d d S) NrUr grpc://test localhost2023-04-05T12:34:56.789012345nszendpoint app metadatarG*Tzinfo app metadata) rrir;rjint32FlightEndpointLocation for_grpc_tcpscalarcast timestamprbrnrs rget_flight_infoz#GetInfoFlightServer.get_flight_infos  IIRXXZ() * %%cM?;%%__11+tDEII=>CCBLLQUDVW+        rcd|j||}tj|jSr)rr SchemaResultrj)rbrnrinfos r get_schemazGetInfoFlightServer.get_schemas)##GZ8""4;;//rN)rxryrzr{rrrrrrrs3 &0rrc&eZdZdZedZdZy)ListActionsFlightServer'A Flight server that tests ListActions.c4ddtjddgS)N)action-1 description)zaction-2zaction-3z more detailr ActionType)clss rexpected_actionsz(ListActionsFlightServer.expected_actionss$ (    j- 8  rc#@K|jEd{y7wr)rrs rrz$ListActionsFlightServer.list_actionss((***s N)rxryrzr{ classmethodrrrrrrr s1  +rrceZdZdZdZy)ListActionsErrorFlightServerrc#Kddyw)N)rrrBrrs rrz)ListActionsErrorFlightServer.list_actionss s N)rxryrzr{rrrrrrs 1rrc0eZdZdZdfd ZdZdZxZS)CheckTicketFlightServerzDA Flight server that compares the given ticket to an expected value.c 4t||fi|||_yr)r^r_expected_ticket)rbrrcrdres rr_z CheckTicketFlightServer.__init__'s ,V,.rc|j|jk(sJtjgdtjg}tj j |dg}tj|S)Nr4rErUr9) rrsr;r<rr=r>rrt)rbrnrsdata1rus rrvzCheckTicketFlightServer.do_get+s`##v}}444-BHHJ?@$$U3%$8''..rc.|j|_yr)rr)rbrnrrs rrzCheckTicketFlightServer.do_put1s"OO-rr)rxryrzr{r_rvrr|r}s@rrr$sN// .rrc^eZdZdZej dej fgZdZy)InvalidStreamFlightServerzEA Flight server that tries to return messages with differing schemas.rUctjgdtjg}tjgdtjg}|j|jk7sJtj j |dg}tj j |dg}|j|jk(sJtj|j||gS)Nr4rE)g$gg@g$@rUr9) r;r<rfloat64rFr=r>rjrr)rbrnrsrdata2table1table2s rrvz InvalidStreamFlightServer.do_get:s-BHHJ?@7bjjlKLzzUZZ'''%%eC5%9%%eC5%9}} +++%%dkkFF3CDDrNrxryrzr{r;rjrrvrrrrr5s+O RYYhbhhj)* +FErrc^eZdZdZej dej fgZdZy)NeverSendsDataFlightServerz0A Flight server that never actually yields data.rUc|jdk(r|jj|jjtjj t dg|jg}tj|j|Stj|jtj|jjS)N yield_datar6rj) rsrj empty_tabler;rr>rangerr itertoolsrepeat)rbrnrsr?s rrvz!NeverSendsDataFlightServer.do_getJs ==M ) '') '')**E!H:dkk*JD ))$++t< <%% KK))$++*A*A*CDF FrNrrrrrrEs+: RYYhbhhj)* +F Frrc,eZdZdZdZdZedZy)SlowFlightServerz;A Flight server that delays its responses to test timeouts.ctjtjdtjfg|j S)NrU)rrr;rjr slow_streamrs rrvzSlowFlightServer.do_get[s:%%bii#rxxz1B0C&D&*&6&6&8: :rc0tjdgSN?)timesleeprs rrzSlowFlightServer.do_action_s 3 rc#Ktjgdtjg}tjj |dgt j dtjj |dgyw)Nr4rErUr9r7)r;r<rr=r>rr)rs rrzSlowFlightServer.slow_streamcse-BHHJ?@hh""5"66 2hh""5"66sB B N)rxryrzr{rvrrrrrrrrXs#E:77rrc2eZdZdZedZdZdZdZy)ErrorFlightServerz9A Flight server that uses all the Flight-specific errors.c tjtjtjtjtj t tjtdS)N)internaltimedoutcancelunauthenticated unauthorizednotimplementedinvalidr.) rFlightInternalErrorFlightTimedOutErrorFlightCancelledErrorFlightUnauthenticatedErrorFlightUnauthorizedErrorrr; ArrowInvalidKeyErrorrrr error_caseszErrorFlightServer.error_casespsH222211%@@"::1  rctj}|j|vr||jd|jdk(rd}tjd|t )NrBprotobufthis is an error message)r rrFrrr)rbrnrrerr_msgs rrzErrorFlightServer.do_action}s\'335 ;;+ %*+fkk*51 1 [[J &1G00@ @!!rc#Ktjtjgtjj dgtj dw)NrgrB)rrir;rjrkrlrrms rrpzErrorFlightServer.list_flightssN IIbM  # # , ,V 4   ((//sAA!c|jdk(rtjd|jdk(rtjd|jdk(rtjd|jdk(rtj d|jdk(rtj d|jdk(rd}tj d|y) NsinternalrBstimedoutscancelsunauthenticateds unauthorizedsprotobufr)commandrrrrrr)rbrnrrrrs rrzErrorFlightServer.do_puts    ,,,U3 3   ; .,,U3 3   9 ,--e4 4   #5 533E: :   ? 2007 7   ; .1G00@ @/rN) rxryrzr{rrrrprrrrr r ms'C    "0 Arr cBeZdZdZdfd ZdZdZdZdZdZ xZ S) ExchangeFlightServerz A server for testing DoExchange.c 2t|di|||_yrrrs rr_zExchangeFlightServer.__init__rrc|jtjjk7rt j d|j dk(r|j|||S|j dk(r|j|||S|j dk(r|j|||S|j dk(r|j|||St j d|j )Nz!Must provide a command descriptorechogetput transformzUnknown command: ) descriptor_typerDescriptorTypeCMDr;rr! exchange_echoexchange_do_getexchange_do_putexchange_transformrs rrz ExchangeFlightServer.do_exchanges  % %)>)>)B)B B//"EF F   7 *%%gvv> >   6 )''@ @   6 )''@ @   < /**7FFC C//#J$6$6#78: :rctjjtjt ddgdg}|j |j |j|y)Emulate DoGet with DoExchange.r(rUr9N)r;r=r>r<rbeginrj write_table)rbrnrrr?s rr.z$ExchangeFlightServer.exchange_do_getsXxx## HHU1i( )% $  T[[!4 rcd}|D](}|jstjd|dz }*|jt |j dy)Emulate DoPut with DoExchange.rzAll chunks must have data.rGrN)r?r;rwrite_metadatastrr)rbrnrr num_batchesrs rr/z$ExchangeFlightServer.exchange_do_putsW  E::oo&BCC 1 K  c+.55g>?rcd}|D]}|s?|jr3|j|jj|jd}|jr3|jr'|j |j|j|jr|j |j|jr|j|jJdy)zRun a simple echo server.FrrTzShould not happenN)r?r4rjra app_metadatawrite_with_metadatar8 write_batch)rbrnrrstartedrs rr-z"ExchangeFlightServer.exchange_echos 2Euzz UZZ.. E!!ejj**5::u7I7IJ##%%e&8&89""5::.111u 2rc(|jD]L}tjj|jr-tj dt |z|j}dg|jz}|D]0}t|D] \}} ||xx| jz cc<"2tjjtj|gdg} |j| j|j| y)zSum rows in an uploaded table.zInvalid field: rsumr9N)rjr;types is_integerrFrreprrnum_rowsras_pyr=r>r<r4r5) rbrnrrfieldrusumscolumnrowvalueresults rr0z'ExchangeFlightServer.exchange_transforms]] GE88&&uzz2oo&7$u+&EFF G!sU^^# +F'/ + US U[[]*  + +%%rxx~&6ug%F V]]#6"rr) rxryrzr{r_rr.r/r-r0r|r}s@rr#r#s%* :!@2 #rr#c.eZdZdZfdZdZdZxZS)HttpBasicServerAuthHandler7An example implementation of HTTP basic authentication.c0t|||_yrr^r_credsrbrRres rr_z#HttpBasicServerAuthHandler.__init__  rcz|j}tjj|}|j|j vrtj d|j |j|jk7rtj d|jt|jy)N unknown userzwrong password) r$r BasicAuth deserializeusernamerRrpasswordrr)rboutgoingincomingrauths r authenticatez'HttpBasicServerAuthHandler.authenticatesmmo++C0 == *33NC C ::dmm $ 5334DE Ewt}}-.rcz|stjd||jvrtjd|S)Nztoken not providedrV)rrrRrbtokens ris_validz#HttpBasicServerAuthHandler.is_valids9334HI I  "33NC C rrxryrzr{r_r^rbr|r}s@rrNrNsA/rrNc.eZdZdZfdZdZdZxZS)HttpBasicClientAuthHandlerrOcft|tj|||_d|_yr)r^r_rrW basic_authrarbrYrZres rr_z#HttpBasicClientAuthHandler.__init__s)  **8X> rc|jj}|j||j|_yr)rg serializerr$ra)rbr[r\r]s rr^z'HttpBasicClientAuthHandler.authenticates-((*t]]_ rc|jSrrarbs r get_tokenz$HttpBasicClientAuthHandler.get_token  zzrrxryrzr{r_r^rnr|r}s@rreresA % rrec.eZdZdZfdZdZdZxZS)TokenServerAuthHandler:An example implementation of authentication via handshake.c0t|||_yrrQrSs rr_zTokenServerAuthHandler.__init__rTrc|j}|j}||jvr:|j||k(r(|jtjd|zyt j d)Nsecret:zinvalid username/password)r$rRrbase64 b64encoderr)rbr[r\rYrZs rr^z#TokenServerAuthHandler.authenticatesf==?==? tzz !djj&:h&F NN6++J,AB C33+- -rctj|}|jdstjd|ddS)Nrvz invalid token)rw b64decode startswithrrr`s rrbzTokenServerAuthHandler.is_valids=  ' +33OD DQRyrrcr}s@rrrrr sD-rrrc.eZdZdZfdZdZdZxZS)TokenClientAuthHandlerrscLt|||_||_d|_y)Nr)r^r_rYrZrarhs rr_zTokenClientAuthHandler.__init__'s#      rc|j|j|j|j|j|_yr)rrYrZr$rarbr[r\s rr^z#TokenClientAuthHandler.authenticate-s/t}}%t}}%]]_ rc|jSrrlrms rrnz TokenClientAuthHandler.get_token2rorrpr}s@rr~r~$sD % rr~ceZdZdZdZdZy)NoopAuthHandlerzA no-op auth handler.cy)z Do nothing.Nrrs rr^zNoopAuthHandler.authenticate9srcy)zV Returning an empty string. Returning None causes Type error. rrr`s rrbzNoopAuthHandler.is_valid<s rN)rxryrzr{r^rbrrrrr6srrcz|D]6}|j|jk(s%|j|cSy)zcLookup the value of given key in the given headers. The key lookup is case-insensitive. N)lowerr)headers lookup_keyr.s rcase_insensitive_header_lookuprDs9$ 99;***, ,;;s# #$rc"eZdZdZdZdZdZy)!ClientHeaderAuthMiddlewareFactoryz@ClientMiddlewareFactory that creates ClientAuthHeaderMiddleware.cg|_yrcall_credentialrms rr_z*ClientHeaderAuthMiddlewareFactory.__init__Ps !rct|Sr)ClientHeaderAuthMiddlewarerbrs r start_callz,ClientHeaderAuthMiddlewareFactory.start_callSs )$//rc||_yrr)rbrs rset_call_credentialz5ClientHeaderAuthMiddlewareFactory.set_call_credentialVs .rN)rxryrzr{r_rrrrrrrMsJ"0/rrceZdZdZdZdZy)ra ClientMiddleware that extracts the authorization header from the server. This is an example of a ClientMiddleware that can extract the bearer token authorization header from a HTTP header authentication enabled server. Parameters ---------- factory : ClientHeaderAuthMiddlewareFactory This factory is used to set call credentials if an authorization header is found in the headers from the server. c||_yrfactoryrbrs rr_z#ClientHeaderAuthMiddleware.__init__j  rct|d}|r0|jjd|djdgyy)N Authorization authorizationrr)rrrr)rbr auth_headers rreceived_headersz+ClientHeaderAuthMiddleware.received_headersmsB4WoN  LL , , A%%g..0 1 rN)rxryrzr{r_rrrrrrZs 1rrceZdZdZdZy)!HeaderAuthServerMiddlewareFactoryz)Validates incoming username and password.ct|d}|djd}d}d}|ddk(rjtj|d}|j djd }|dd k(r|dd k(st j |d }t|S|dd k(r|d}|d k(s*t j |t j |t|S)Nrr rzInvalid credentialsBasicrGr:testrZ token1234Bearer)rsplitrwr{decoderrHeaderAuthServerMiddleware) rbrrrvaluesra error_messagedecodedpairs rrz,HeaderAuthServerMiddlewareFactory.start_callxs4   Q%%c*- !9 &&vay1G>>'*005DGv%$q'Z*?77 FFE*%00AY( "1IEK'77 FF33MB B)%00rNrxryrzr{rrrrrrus 31rrceZdZdZdZdZy)rzBA ServerMiddleware that transports incoming username and password.c||_yrrlr`s rr_z#HeaderAuthServerMiddleware.__init__s  rc$dd|jziS)N authorizationzBearer rlrms rsending_headersz*HeaderAuthServerMiddleware.sending_headerssTZZ!788rNrxryrzr{r_rrrrrrsL9rrceZdZdZdZy)HeaderAuthFlightServerzrrc|jSr)EXPECTEDrms rrz+MultiHeaderClientMiddleware.sending_headersArrcN|jjj|yr)rrupdate)rbrs rrz,MultiHeaderClientMiddleware.received_headersDs !!((1rN)rxryrzr{r r_rrrrrrr3s6B%. '* %w H2rrceZdZdZdZy)"MultiHeaderServerMiddlewareFactoryrct|Sr)MultiHeaderServerMiddlewarers rrz-MultiHeaderServerMiddlewareFactory.start_callMs *733rNrrrrrrJs B4rrceZdZdZdZdZy)rrc||_yr)r)rbrs rr_z$MultiHeaderServerMiddleware.__init__Ts ,rc"tjSr)rr rms rrz+MultiHeaderServerMiddleware.sending_headersWs*333rNrrrrrrQsB-4rrc.eZdZdZfdZdZdZxZS)LargeMetadataFlightServerz Regression test for ARROW-13253.c8t||i|ddz|_y)N )r^r_ _metadata)rbargsrdres rr_z"LargeMetadataFlightServer.__init__^s! $)&)-rctjdtjfg}tj|tj dgg||j fgS)NrUrGr)r;rjint64rr record_batchr)rbrnrsrjs rrvz LargeMetadataFlightServer.do_getbsSS"((*-./%%f __qcU6 2DNN C/   rc:|j|jyr)r8rrs rrz%LargeMetadataFlightServer.do_exchangehsdnn-r)rxryrzr{r_rvrr|r}s@rrr[s*. .rrc  d}d}d}d}d}d}d}d}d }d } ttjd d |k(sJttjd d |k(sJttjdd|k(sJttj j d |k(sJtjdgtjdjtjdd} t| |k(sJtjtjgtj jgdddd} t| |k(sJttjd|k(sJttj d|k(sJttj"tjg|k(sJttj"tjdgdk(sJttj$d| k(sJ| jtjgk(sJtjdtj jgdddd} d}t| |k(sJ| jJt'j(t*5tjd ddddt'j(t*5tjt-gdddt'j(t*5tjd ddt-gdddt'j(t*5tjd gddddt'j(t*5tjd gt/d d!d"dd#d$dddt'j(t*5tjd gt-%dddy#1swYRxYw#1swYxYw#1swYxYw#1swYxYw#1swY~xYw#1swYyxYw)&Nz1z)ActionType(type='foo', description='bar')z?z,z locations=[] expiration_time=2023-04-05 12:34:56+00:00 app_metadata=b'endpoint app metadata'>z endpoints=[] total_records=1 total_bytes=42 ordered=True app_metadata=b'test app metadata'>z6z&z'z%rBrrPuserpassfoo2023-04-05T12:34:56sendpoint app metadatarGrTtest app metadatagrpc+tcp://localhost:1234)intrz1z endpoints=[] total_records=1 total_bytes=42 ordered=True app_metadata=b'test app metadata'>rs grpc://testz2023-04-05T01:02:03)expiration_timeirTr6rHrSr<)rDrActionrrWrk for_commandrr;rrrrirjrlrResultrTicketpytestraises TypeErrorobjectr) action_repraction_type_reprbasic_auth_reprdescriptor_repr endpoint_repr info_repr location_repr result_reprschema_result_repr ticket_reprendpointrs r test_reprr?lsEKBWODO>M  -MM:KB9K  eS) *k 99 9 !!%/ 04D DD D   0 1_ DD D ''33E: ; NN N$$BII3499",,s:KL H >] ** *    " v..7792 2t) D : "" "  ;< = NN N  f% &+ 55 5 ##BIIbM2 37I II I ##BII/?.@$AB C; << <  f% &+ 55 5 ;;"))B- '' '    f%%..0" 2t) D  - : "" " ;;   y !# eT"# y !,fh+, y !Pem^VX%NOP y !PeR9NOP y !XeR$1aQRTU9VWX y !@eRfh?@@##,,PPPPXX@@sHP6Q"Q Q'Q( !Q46QQ QQ%(Q14Q=cddddddddd d d d d ddddddddg}|D]G}|\}}|\}}||k(sJ||k(sJ||k(sJ||k(sJ||k(sJ||k(sJ||k7rGJy)NcZtjddtjddfS)NrBrrPrr,rrrztest_eq..s!uc*FMM%,EFrcZtjddtjddfS)NrBrbarrBrrrrCztest_eq..s!uc*FMM%,HIrcZtjddtjddfS)NrBrPrCrrrrrCztest_eq..s(""5%0""5%02rcZtjddtjddfS)Nr!r"user2rrWrrrrCztest_eq..s(!!&&1!!'624rcZtjddtjddfS)Nr!r"pass2rIrrrrCztest_eq..s(!!&&1!!&'24rc~tjjdtjjdfS)NrB)rrkr-rlrrrrCztest_eq..s0((44U;((11%8:rcZtjdgtjdgfSNr#rErrrrrrCztest_eq..s(&&vr2&&vr24rctjdtjdgtjdtjdgfS)Nr#r(grpc+tls://localhost:1234)rrrrrrrCztest_eq..sK  ! !)DEF H  ! !)DEF H rc 2tjdgtjdj tj dtjdgtjdj tj dfS)Nr#r$r%z2023-04-05T12:34:56.789ms)rrr;rrrrrrrCztest_eq..ss  ! !BII&;<AA",,sBST V  ! ! 3499",,t:LM OPrcbtjdgdtjdgdfS)Nr#rr+metarOrrrrCztest_eq..s-&&vrD&&vrHJrcDtjtjgtjj gtjtjdtj fgtjj gfSNints)rrir;rjrkrlrrrrrCztest_eq..st    " ''002B 8    FBHHJ/01''002B 8 9rctjtjgtjj gtjtjgtjj dgfSNr#)rrir;rjrkrlr-rrrrCztest_eq..si    " ''002B 8    " ''33F;R A Brc ntjtjgtjj tj dggtjtjgtjj tj dggfSrN)rrir;rjrkrlrrrrrCztest_eq..s    " ''002&&vr23 5    " ''002&&vr23 5 6rc"tjtjgtjj gdtjtjgtjj gdfS)N) total_recordsrGrrir;rjrkrlrrrrCztest_eq..sl    " ''002Bb J    " ''002Ba I Jrc"tjtjgtjj gdtjtjgtjj gdfS)Nr]) total_bytesrr_rrrrCztest_eq..sl    " ''002BB H    " ''002BB H Irc"tjtjgtjj gdtjtjgtjj gdfS)NF)orderedTr_rrrrCztest_eq..sl    " ''002B G    " ''002B F Grc"tjtjgtjj gdtjtjgtjj gdfS)Nrr+rUr_rrrrCztest_eq..sl    " ''002BS J    " ''002BW N OrcVtjdtjdfS)Nr(rQ)rrrrrrCztest_eq..s"!<=!<=?rcVtjdtjdfSrN)rr.rrrrCztest_eq.. sv& f(=>rctjtjgtjtjdtjfgfSrW)rrr;rjrrrrrCztest_eq.. sD$$RYYr]3$$RYY0D/E%FGIrcVtjdtjdfS)Nrr#)rr/rrrrCztest_eq.. ss#V]]6%:;rr)itemsgenlhs1rhs1lhs2rhs2s rtest_eqrosFI 2 4 4 : 4  P  J 9 B 6 J I G O ?> I;gT El U dU dt||t||t||t||t||t||t|| rctjtjgtjj g}tjtjgtjj gdd}tjtjgtjj gdd}|j dk(sJ|j dk(sJ|j dk(sJ|jdk(sJ|jdk(sJ|jdk(sJy)Nr])r^ra)rrir;rjrkrlr^ra)fi1fi2fi3s rtest_flight_info_defaultsrts    BIIbM6+B+B+K+K+Mr RC    " ((*Bbb RC    " ((*BdPT VC    "" "    "" "    "" " ??b  ??b  ??b  rcdddtfg}|D])}t|5}t|tsJ ddd+y#1swY6xYw)Ngrpc://localhost:0r)rr isinstance) locationsrcservers r$test_flight_server_location_argumentrz.s`  n&'I 8 h ' 86f&67 77 8 88 8 8s ?A ctjt5t5t#1swYnxYw dddy#1swYyxYwr)r0r1 ValueErrorr rrr#test_server_exit_reraises_exceptionr}9sF z "   ,    s A 09 AAcDdtfd}fd}t5}tj|d}|j t j }|j dt j |z }|dk\sJ dddy#1swYyxYw)Nrcntjdtatj yr)rrr ryservercsrrz-test_client_wait_for_available..serveEs! 3!(+ rTtargetdaemonr6timeoutr)rr threadingThreadstartrwait_for_available)ryrclientthreadr?elapsedrcs @rtest_client_wait_for_availabler?s^-.H F h 6!!t< ))+!!!!,))+'#~~s A,BBc\t5}tjd|jf5}t |j gk(sJ|j tj }tt |dk(sJ ddddddy#1swYxYw#1swYyxYw)zTry a simple list_flights call.rrGN)rYrconnectportlistrprhlen)ryrflightss rtest_flight_list_flightsrUs  '6 NNK5 6':@F'')*b000%%&:&C&CD4=!Q&&& ''''''s#"B"ABB"B B""B+ct5}tjd|jf5}t |j gk(sJ|j |j tjtj5t |j dddddddddy#1swYxYw#1swYxYw#1swYyxYw)Nr) rYrrrrrpcloser0r1r;rryrs rtest_flight_client_closer^s  (6 NNK5 6(:@F'')*b000   ]]2?? + ( $$& ' ( (((  ( ( ((((s;"CA"CC)C1CC CC CC#c<t}t5}tjd|jf5}|j tj dj}|j|sJ ddddddtjjtjjj}t|5}tjd|jf5}|j tj dj}|j|sJ|j tj djj}|j|sJ ddddddtj tj"d5td5}tjd|jf5}|j tj dj}dddddddddy#1swYxYw#1swYxYw#1swYxYw#1swYxYw#1swYLxYw#1swYPxYw#1swYyxYw) Try a simple do_get call.rr[Nmetadata_versionrrz+expected IpcWriteOptions, got matchr)r@rYrrrrvr/rrr;ipcIpcWriteOptionsMetadataVersionV4 to_readerr0r1r)ruryrr?ras rtest_flight_do_get_intsrhs  E  "6 NNK5 6":@}}V]]734==?{{5!!!"" ff$$//22%4G g ."& NNK5 6":@}}V]]734==?{{5!!!}}V]]734>>@IIK{{5!!!"" v//J LD !" - D V[[9: D>D==w!78AACD D DDD!"""""""" D D D DDDs"IAI>I"I.>BI"I. J"J<3I:/J7JI II"I+ 'I..I7:J ?JJ JJct}t5}tjd|jf5}|j tj dj}t|d|jdjk(sJ ddddddy#1swYxYw#1swYyxYw)rrr[r8rN) r@rYrrrrvr/ read_pandasrrI to_pylistruryrr?s rtest_do_get_ints_pandasrs  E  F6 NNK5 6F:@}}V]]734@@BD%&%,,q/*C*C*EEEEFFFFFFs#"B8A#B,B8,B5 1B88CcNt}t5}tjd|jf5}|j tj dj}|j|sJ ddddddy#1swYxYw#1swYyxYw)Nrr\) rNrYrrrrvr/rrrs rtest_flight_do_get_dictsrs  E  "6 NNK5 6":@}}V]]845>>@{{5!!!""""""s#"BAB>BB BB$ctjgdtjg}tjj |dg}t d5}t jd|jf5}|jt jdj}|j|sJ ddddddy#1swYxYw#1swYyxYw) z+Make sure Tickets get passed to the server.r4rErUr9s the-ticket)rrN) r;r<rr=r>rrrrrvr/rr)rruryrr?s rtest_flight_do_get_ticketrs XX) ; >"a'''4>>!$../1444~~a 00888~~a --444~~a **1-1OOOO~~a 00 II; <tBLLu-./ //~~a --1IIII~~a **1- OO ( (d ;< <<#<<  !8!8!D!DS!IJ{{bii#rxxz):(;<<<<======s#B)A(B B)B& "B))B2c8t5}td|jf5}tjt j d5t|jdddddddddt5}td|jf5}t|jtjk(sJ ddddddy#1swY~xYw#1swYxYw#1swYxYw#1swY6xYw#1swYyxYw)z6Make sure the return type of ListActions is validated.rz3Results of list_actions must be ActionType or tuplerN) rr rr0r1rrrrrrrs rtest_list_actionsrs & '(6 +v{{3 4(8> ]]((-  ( $$& '  ((( ! "7f +v{{3 478>F'')* # 4 4 67 77777 ( (((((7777s^C8&C, C #C,+C8D1DD C) %C,,C5 1C88DD DDc&eZdZdZedZdZy)ConvenienceServerzT Server for testing various implementation conveniences (auto-boxing, etc.) c gdS)N)r#rEsbazrrms rsimple_action_resultsz'ConvenienceServer.simple_action_resultss''rc|jdk(r |jS|jdk(r |jgS|jdk(rdgS|jdk(rtj|jdk(r fd}|Sy)N simple-actionecho bad-actionrBarrow-exceptionforeverc3ZKjsdjsyywrZ) is_cancelled)rnsrrjz(ConvenienceServer.do_action..gens&!..0 L"..0s%++)rFrbodyr;ArrowMemoryError)rbrnrrjs ` rrzConvenienceServer.do_actions ;;/ )-- - [[F "KK= [[L (7N [[- -%%' ' [[I % !5L &rN)rxryrzr{propertyrrrrrrrs (( rrct5}td|jf5}|jdDcgc]}|j}}||j k(sJd}|jd|fDcgc]}|j}}||gk(sJ ddddddycc}wcc}w#1swYxYw#1swYyxYw)Nrrsthe-bodyr)rr rrrr)ryrxresultsrs r!test_do_action_result_conveniencers   ! +v{{3 4 !8>$*#3#3O#DEa166EE&66666#)#3#3VTN#CDa166DD4&    ! ! !F E ! ! ! !s?B9B-B# *B-4B( B-B9# B--B6 2B99Cct5}td|jf5}tjt j d5t|jddddtjt j d5t|jddddddddddy#1swYbxYw#1swY&xYw#1swY*xYw#1swYyxYw)Nrza bytes-like object is requiredrrrr) rr rr0r1rrrrrs rtest_nicer_server_exceptionsrs   6 +v{{3 4 68> ]]633!BD 1 !!,/ 0 1]]633!35 6 !!"34 5 6 6 6 6 1 1 6 6 6 6 6 6sRC)&C C$-CC,C4C)C CC CC& "C))C2ctd} |jdkDsJ |jy#|jwxYw)zMake sure port() works.rvrN)rrshutdown)rys r test_get_portrs7 !5 6F{{Qs 0Antz'Unix sockets can't be tested on Windows)reasonc,tj5}|jtjj |j }t|5t|5}|jtjd}t}|jj|jsJ|j}|j|sJ|jtjd}t}|jj|jsJ|j}|j|sJ dddddddddy#1swYxYw#1swYxYw#1swYyxYw)z3Try a simple do_get call over a Unix domain socket.rr[r\N)tempfileNamedTemporaryFilerrr for_grpc_unixnamerYr rvr/r@rjrrrN)sockrcrrrur?s rtest_flight_domain_socketrs<  $ $ &&$ ??00; !8 4 &X& &*0]]6==#9:F%'E=='' 5 55??$D;;u% %%]]6==#:;F&(E=='' 5 55??$D;;u% %% & &&& & & & &&&s=AF  E>'C1E2E>!F 2E; 7E>>F F  Fcztjjtjt ddgdg}t |j 5}td|jf5}|jtjjd|j \}}|j|d|j|jtj dj#}|j%|sJ d d d d d d y #1swYxYw#1swYy xYw) zTry sending/receiving a large message via Flight. See ARROW-4421: by default, gRPC won't allow us to send messages > 4MiB in size. rirUr9)rrrrN)r;r=r>r<rrrjr rrrrkrlr5rrvr/rrr?ryrr_rLs rtest_flight_large_messager(s 88   q*+,!U  D $++ 6#& +v{{3 4#8>MM&"9"9"B"B6"J"&++/  4!12 v}}S12;;=}}T"""######s%D1/B$D%D1%D. *D11D:c`tjjtjt ddgdg}t 5}t d|jf5}|jtjjd|j\}}|j||j|jtj dj#}|j%|sJ ddddddy#1swYxYw#1swYyxYw) z?Try downloading a flight of RecordBatches in a GeneratorStream.rr3rUr9rrrN)r;r=r>r<rrr rrrrkrlrjr5rrvr/rrrs rtest_flight_generator_streamr>s 88   q)$%!U  D !#V +v{{3 4#8>MM&"9"9"B"B6"J"&++/ 4  v}}S12;;=}}T"""######s% D$#B#DD$D! D$$D-cnt5}td|jf5}tjt j 5|jtjdjdddddddddy#1swYxYw#1swYxYw#1swYyxYw)z+Try streaming data with mismatched schemas.rrN) rr rr0r1r;ArrowExceptionrvrr/rrs r$test_flight_invalid_generator_streamrNs " $9 +v{{3 498> ]]2,, - 9 MM&--, - 6 6 8 9999 9 99999s:B+$B3B:BB+B BB( $B++B4c t5}td|jf5}tjdd}tj d}t jtj5t|j||dddddddddy#1swYxYw#1swYxYw#1swYyxYw)z)Make sure timeouts fire on slow requests.rrrg?rrrN) rr rrr,FlightCallOptionsr0r1rrr)ryrrras rtest_timeout_firesrVs  r3'**37]]655 6 < !!&'!: ; < <<<  < < <<< :CC c.t5}td|jf5}tjd}|j tj d|jddddddy#1swYxYw#1swYyxYw)z0Make sure timeouts do not fire on fast requests.rrrr[rrN)rYr rrrrvr/r)ryrras rtest_timeout_passesrds  J6 +v{{3 4J8>**37 fmmG,g >GGIJJJJJJs#B A A?.B ?B B  Bctjjtjgdgdg}t 5}t d|j f5}tjtdg}|jtjd| j}|jtjdj}|jd k(sJ|jdk(sJ||k(sJ|tk(sJ d d d d d d y #1swYxYw#1swYy xYw) z"Make sure ReadOptions can be used.rRrVr9rrG)included_fields) read_optionsr]rrrHN)r;r=r>r<rYr rrrrrvr/r num_columnsrW)expectedryrra response1 response2s rtest_read_optionsrlsxx##RXXl%;$**'<>MM&-- #&"((0  MM&--"9:CCE $$)))$$)))H$$$13333 4 4 4 4 4 4s%D9CD-D9-D6 2D99Etestsp4ssw0rd)rRcztt5}td|jf5}t j dd}t jtjd5t|j|dddddddddy#1swYxYw#1swYxYw#1swYyxYw)z,Test that auth fails when not authenticated. auth_handlerrrrz.*unauthenticated.*rN) rbasic_auth_handlerr rrr,r0r1rrrryrrs rtest_http_basic_unauthrs -? @+F +v{{3 4+8>z3/ ]]6<z3/6vzJK""6*=}}'')W444G}   ++-444555555s#CBCCC CC'c tt5}td|jf5}t j dd}t jtjd5|jtddt|j|d d d d d d d d d y #1swYxYw#1swYxYw#1swYy xYw) z-Test that auth fails with the wrong password.rrrrz.*wrong password.*rrwrongN) rrr rrr,r0r1rr^rerrrs r%test_http_basic_auth_invalid_passwordrs -? @+F +v{{3 4+8>z3/ ]]6<z3/26:FG((01}}'')W444 555555s#B2A+B&B2&B/ +B22B;c Ltt5}td|jf5}t j t j5|jtdddddddddddy#1swYxYw#1swYxYw#1swYyxYw)rrrrrN) rrr rr0r1rrr^r~rs rtest_token_auth_invalidrs -? @IF +v{{3 4I8> ]]6<< = I    6vw G H IIII I IIIIIs:B$B B)B1BB BB BB#c ttdti5}td|jf5}|j dd}|ddk(sJ|dd k(sJ d d d d d d y #1swYxYw#1swYy xYw) zATest authenticate_basic_token with bearer token and auth headers.r]rrrrpasswordrrrGBearer token1234N)rno_op_auth_handlerrr rauthenticate_basic_token)ryr token_pairs rtest_authenticate_basic_tokenr s -?13M 4  +v{{3 449?44WkJ !} 0000!} 3333 444444s"A9'A-A9-A6 2A99BcPttdti5}td|jf5}t j tj5|jdddddddddddy#1swYxYw#1swYxYw#1swYyxYw)z7Test authenticate_basic_token with an invalid password.r]rrrs badpasswordN) rr rr rr0r1rrr rs r.test_authenticate_basic_token_invalid_passwordrs -?13M E  +v{{3 4E9? ]]6<< = E  + +G^ D E EEE E E EEEEs:B$BB+B3BB BB BB%c ttdti5}td|jf5}|j dd}|ddk(sJ|dd k(sJt j|g }t|jt jd d | }|djjdk(sJ ddddddy#1swYxYw#1swYyxYw)z@Test authenticate_basic_token and doAction after authentication.r]rrrrrrrGrr test-actionrrra token1234N) rr rr rr rrrrr,rrryrr rarLs r(test_authenticate_basic_token_and_actionrs -?13M  ;  +v{{3 4 ;9?44WkJ !} 0000!} 3333**J<@f&&==4g'GHay~~((*l::: ; ; ; ; ; ;s#C"BCC"C C""C+c ttdti5}t}t d|j f|g}t jd}tjdd|zfg}t|jtjd d | }|d jjd k(sJ|jd dk(sJ|jddk(sJt|jtjd d | }|d jjd k(sJ|jd dk(sJ|jddk(sJ|j!dddy#1swYyxYw)zTest authenticate_basic_token with client middleware to intercept authorization header returned by the HTTP header auth enabled server. r]rrrs test:passwordrsBasic rrrrrrrGrN)rr rrr rrwrxrrrrr,rrrr)ryclient_auth_middlewarerencoded_credentialsrarLresult2s r4test_authenticate_basic_token_with_client_middlewarers -?13M  !B!D &++ &./ %../?@** y+>> ?4  f&&==4g'GHay~~((*l:::%55a8) B >B Bctjdjdk(sJtjdjdk(sJy)z,Test creating locations for unknown schemes.zs3://fooss3://foozhttps://example.com/bar.parquetshttps://example.com/bar.parquetN)rrurirrrtest_location_unknown_schemer%%sD ??: & * *k 99 9 ??< = A A* ++ +rct}t|d5}tdt|jz5}t j tj5|jtjdjdddddddddy#1swYxYw#1swYxYw#1swYyxYw)z>Make sure clients cannot connect when cert verification fails.r0tls_certificateszgrpc+tls://localhost:r[N) r2rYr r9rr0r1rFlightUnavailableErrorrvr/rcertsr%rs rtest_tls_failsr,,s  E u^/D E= 03qvv;> ?=CI]]688 9 = MM&--0 1 : : < = === = = ====s:"C$B8 3B,B8C,B5 1B88C =CC cbt}t}t|d5}td|jf|d5}|j t jdj}|j|sJ ddddddy#1swYxYw#1swYyxYw)z"Try a simple do_get call over TLS.r0r'rr/)tls_root_certsr[N) r@r2rYr rrvrr/rrrur+r%rr?s rtest_tls_do_getr0<s  E  E u^/D E"k166*$)+$6 8";A}}V]]734==?{{5!!! """"""s$B%ABB%B" B%%B.ct}t}t|d5} td|jfd}jtjdj}|j|sJ|jdddy#t $rt jdY~wxYw#1swYyxYw) zDTry a simple do_get call over TLS with server verification disabled.r0r'rTdisable_server_verificationz4disable_server_verification feature is not availabler[N)r@r2rYr rrr0skiprvrr/rrrr/s r$test_tls_disable_server_verificationr5Is  E  E u^/D E P!;"7>BDF}}V]]734==?{{5!!! # P KKN O P s.CBACB>;C=B>>CC ct}t|d5}tjd|jf|dd5}t j tj5|jtjddddddddddy#1swYxYw#1swYxYw#1swYyxYw) z5Check that incorrectly overriding the hostname fails.r0r'rr/ fakehostname)r.override_hostnamer[N) r2rYrrrr0r1r)rvr/r*s rtest_tls_override_hostnamer9Zs  E u^/D E2 QVV,&+K&8)7 92=C ]]688 9 2 MM&--0 1 2 222 2 2 2222s;(B<$B0&%B$ B0B<$B- )B00B9 5B<<Cc^tjgdg}tjj|dg}g}t 5}t d|j f5}|jtjd}d}|D]H\}}|j|tjd|j\} || k(sJ|dz }Jtjj|}|j|sJ d d d d d d y #1swYxYw#1swYy xYw) z'Try a simple do_get call with metadata.r4rUr9rrrrrGN)r;r<r=r>rr rrvrr/rrrr from_batchesr) r?rubatchesryrrrrmetadata server_idxs rtest_flight_do_get_metadatar?gs $% D HH cU 3EG   "6 +v{{3 4 "8>v}}S12% OE8 NN5 ! --h.A.A.CDKJ*$ $$ 1HC   xx$$W-{{5!!! " " " " " "s%D#B&DD#D D##D,cTg}g}t5}td|jf5}|jt j d}d} |j \}}|j|tjd|j\}||k(sJ|dz }X#t$rYnwxYw dddn #1swYnxYwdddn #1swYnxYwt5}td|jf5}|jt j d}d}|D]H\}}|j|tjd|j\}||k(sJ|dz }J dddn #1swYnxYwdddn #1swYnxYw||k(sJy)z0Verify the iterator interface works as expected.rrrrrGN) rr rrvrr/ read_chunkrrrr StopIteration) batches1batches2ryrrrrr=r>s r1test_flight_metadata_record_batch_reader_iteratorrE|sHH   6 +v{{3 4 8>v}}S12 "("3"3"5x&$mmD(2E2E2GH j(((q !          6 +v{{3 48>v}}S12% OE8 OOE " --h.A.A.CDKJ*$ $$ 1HC    x  slC(CAB'&C' B30C2B33C7 CC CC+FA4F8 FF FFc"tjjtjgdgdg}tjj tjj j}t|5}td|jf5}|jtjd}|j}|j|sJ ddddddy#1swYxYw#1swYyxYw) z2Try a simple do_get call with V4 metadata version.r4rUr9rrrrrN)r;r=r>r<rrrrrr rrvrr/rr)ruraryrrr?s rtest_flight_do_get_metadata_v4rGs HH % &'u ! 6Eff$$//22%4G g ."& +v{{3 4"8>v}}S12 {{5!!! """"""s%DAC9(D9D >DDc tjgdg}tjj|dg}t 5}t d|j f5}|jtjjd|j\}}|5t|jdD]n\}}tjd|}|j!|||j#} | Jtj$d| j'\} || k(rnJ d d d d d d d d d y #1swYxYw#1swYxYw#1swYy xYw) z'Try a simple do_put call with metadata.r4rUr9rrrGrrN)r;r<r=r>rr rrrrkrlrjrrrrr=r$rr) r?ruryrrmetadata_readerrrr=rr>s rtest_flight_do_put_metadatarJsM $% D HH cU 3E   )6 +v{{3 4 )8>"(--  # # , ,R 0 LL# )'(8(8q(8(IJ ) U!;;tS1**5(;%**,&$mmD#..2BC j(((  ) ) ) ) )  ) ) ) ) ) )sCE?EB E&E*E2EE EE EE$c tjjtjt j dt j gdg}t5}td|jfd5}|jtjjd|j\}}|5tj tj"d 5}|j%|d d d j&j(dk(sJ|j+d d |j+d g}|D]}|j%| d d d tj,j/|g}|j1tj2dj5} || k(sJ d d d d d d y #1swYxYw#1swYxYw#1swY*xYw#1swYy xYw)z+Try a simple do_put call with a size limit.i)dtyperUr9ri)write_size_limit_bytesrzexceeded soft limitrNrir)r;rr>r<nponesrrr rrrrkrlrjr0r1FlightWriteSizeExceededErrorr>rKlimitslicer=r;rvr/r) large_batchryrrrIexcinfosmaller_batchesrractuals rtest_flight_do_put_limitrWs..,, BHHJ/0.U-K  "vk6;;/,0 2"5;"(--  # # , ,R 0   #  *vBB%:< 0?F"";/ 0==&&$. ..!!!S)!!#&O) *""5) * *88((+7v}}S12;;=6!!!'""" 0 0 * * """"sV(G/?G#&G'G 9AGA!G#:G/ G GG G##G, (G//G8ct5}td|jf5}|jt j d}|j tjtjd5|jdddddddddy#1swYxYw#1swYxYw#1swYyxYw)z4Test canceling a DoGet operation on the client side.rr[z(?i).*cancel.*rN) rYr rrvrr/rr0r1rrA)ryrrs rtest_cancel_do_getrYs   6 +v{{3 4 8>v}}W56  ]]666!13              s;B?AB3=B'B3B?'B0 ,B33B< 8B??Cct5}td|jf5}|jt j dt jt jt jt jfd}t j|d}|jjdjj|jd5jsJ d d d d d d d d d y #1swYxYw#1swYxYw#1swYy xYw) z5Test canceling a DoGet operation from another thread.rr[cjjjd jy#tj$r+5jdddYy#1swYYyxYwwxYw)Nr6r)rAsetwaitrr)raised_proper_exceptionread_first_messager result_lockstream_canceledsr block_readz/test_cancel_do_get_threaded..block_readsv      " " $   + 2!!#.. 2 2+//1222 2s)ABA6,B6B ;BBTrr6rrGN)rr rrvrr/rEventLockrrr]rr\joinis_set) ryrrbrr^r_rr`ras @@@@@rtest_cancel_do_get_threadedrgs  4v +v{{3 448>v}}W56&__.#//+nn& "+//"3 2 2!!DA *  A   4*113 33 454444 4 454444s;EC+E E'E /EE E  E EE!ct5}td|jf5}|jt j dd}t |jdk(sJ~ddddddy#1swYxYw#1swYyxYw)Nrrrr#)rr rrrr,rr)ryrrs rtest_streaming_do_actionri s~   +v{{3 48>""6==C#@AG}!!V+++  s#BAA5$B5A> :BB c tjdd}|tjj|jk(sJtjd}|tjj|jk(sJtj d}|tj j|jk(sJtj dd}|tj j|jk(sJtjtjdtjfg}|tjj|jk(sJtjjd}|tjj|jk(sJtjjdd d }|tjj|jk(sJtjtjdtjfg|tjd d gtjd tj j#d dgtj$dj'tj(ddgdddd}tjj|j}|j|jk(sJ|j*|j*k(sJ|j,|j,k(sJ|j.|j.k(sJ|j0|j0k(sJ|j2|j2k(sJ|j4|j4k(sJtj|d tj j#d dgtj$dj'tj(dd}|tjj|jk(sJy)z(Make sure serializable types round-trip.action1s action1-bodyrBsresult1 username1 password1rUrrVz test.arrowrrrrrrr&rGrTr'r$r%N)rr,rXrjr/r.rWrr;rjrrkr-rlrirrrrrrrrar^rcr<r) rrsrLrg schema_resultdescrinfo2r>s rtest_roundtrip_typesrqs ]]9o 6F V]]..v/?/?/AB BB B ]]5 !F V]]..v/?/?/AB BB B ]]: &F V]]..v/?/?/AB BB B!!+{;J ))55j6J6J6LM MM M'' C3D2E(FGM F//;;!# ## #  " " . .v 6D 6**66t~~7GH HH H  " " + +Cl CD 6**66t~~7GH HH H    C$%&  ! !#  7  ! !--k4@A 9:?? T@RS(       D"    ) )$..*: ;E ;;%,, && & ??e.. .. .   u00 00 0   !4!4 44 4 <<5== (( (    2 2 22 2 >>U__ ,, ,$$ 44[$GH '(--bll3.?@ H v,,889K9K9MN NN Nrc t5}td|jf5}tjj D]S\}}t j |d5t|jtj|ddddUt j tjd5t|jdddtjgdg}tjj!|dg}tjtj"tj$tj&tj(d }|j D]\}}t j |d5|j+tj,j/||j0\} } | j3|| j5dddt j |d5|j+tj,j/||j0\} } | j5ddd ddddddy#1swYBxYw#1swYxYw#1swYxYw#1swY3xYw#1swYExYw#1swYyxYw) z:Ensure that Flight errors propagate from server to client.rz.*foo.*rrNr4rUr9)r r rrr)r r rrrir0r1rrrr,rrpr;r<r=r>rrrrrrkr-rjr5r) ryrargexc_typer?ru exceptionsr! exceptionrrs rtest_roundtrip_errorsrwNsJ  ! +v{{3 4!8>.::<BBD @MCxy9 @V%%fmmC&=>? @ @ @]]655Y G ( $$& ' (,-.$$T#$7222211%@@"::  #-"2"2"4  GYy : !'++77@LL""""5)   y : !'++77@LL""     )!!! @ @ ( (     ;!!!!sJ=AJ1#/I> /J1J B=J1AJ 6J1A J$ " J1-J=>J J1 J J1J! J1$J. )J11J: 6J==Kc tjgdg}tjj|dg}t 5}t d|j f5}|jtjjd|j\} dg fd}tj|}|j|jd }|5t!|D]-\}} t#j$d |} |j'| | /|j)|j+d d d  dt-|k(sJ d d d d d d y #1swY.xYw#1swYxYw#1swYy xYw) z7Ensure that separate threads can read/write on a DoPut.r4rUr9rrrcdjdxxdz cc<jyy)NrrG)r$)countrIsr_reader_threadz:test_do_put_independent_read_write.._reader_threads0!&&(4aA "&&(4rrrGrrN)r;r<r=r>rr rrrrkrlrjrrrrrrrr= done_writingrer) r?ruryrrr{rr<rrr=rzrIs @@r"test_do_put_independent_read_writer~tsj $% D HH cU 3E  (6 +v{{3 4(8>"(--  # # , ,R 0 LL# !!8 """3  '0 < U!;;tS1**5(; <    ! KKM Qx3w<'''5(((   !((((s>FBE4AE(;E4F(E1 -E44E= 9FF c xtdti5}td|jf5}t |j t jdd}t|dk(sJ|djj}d|k(sJ d d d d d d y #1swYxYw#1swYy xYw) z@Ensure that server middleware run on the same thread as the RPC.rrrrrrGrs right valueN) rrr rrrrr,rrr)ryrrrKs r"test_server_middleware_same_threadrs -/( '  +v{{3 4'9?v'' gs(CDE7|q    **,&&&''''''s#B0A#B$B0$B- )B00B9c tdti5}td|jf5}t j t j5t|jdddt j tj5t|jtjdddddtd|jftg}t|jtjdd}d|j j#k(sJ ddddddy#1swYxYw#1swYxYw#1swY*xYw#1swYyxYw)z-Test rejecting an RPC with server middleware.rrrNrr)rrr rr0r1r;ArrowNotImplementedErrorrrrrrr,rrrr)ryrresponses rtest_middleware_rejectrs= 46( 9  +v{{3 499? ]]266 7 ( $$& ' (]]6<< = < !!&--S"9: ; < &++ &<>? ((sC)@ABhmm668888#999  ( ( < <9999sSE4$E(E-+E(/EA7E(?E4E E(E% !E((E1 -E44E=c t}t}td|i5}td|jf|g5}t j jd}tjt5t|jdddtjt5|j|dddtjt5|j|dddtjt5|jt j ddddtjt5|j#|t%j&g\}}|j)dddtjt5t|j+t j,dddddtjt5t|j/dddtjt5|j1|\}}|j)dddt j2j4t j2j6t j2j8t j2j:t j2j<t j2j>t j2j@t j2jBg}|jD|k(sJ|jD|k(sJ ddddddy#1swYxYw#1swYxYw#1swYxYw#1swYZxYw#1swY xYw#1swYxYw#1swYxYw#1swYcxYw#1swYzxYw#1swYyxYw)z/Test that middleware records methods correctly.rrrrN)#rrr r rrrkr-r0r1rrrprrrvr/rr;rjrrr,rrr LIST_FLIGHTSGET_FLIGHT_INFO GET_SCHEMADO_GETDO_PUT DO_ACTIONr DO_EXCHANGEr)server_middlewareclient_middlewareryrrrrrs rtest_middleware_mappingrs8:8: f.?%@ A%5V &++ &)* %5 ,,88= ]]. / ( $$& ' ( ]]. / /  " ": . / ]]. / *   j ) * ]]. / . MM&--, - . ]]. /  j"))B-@IFA LLN ]]. / < !!&--S"9: ; < ]]. / ( $$& ' ( ]]. / **:6IFA LLN     , ,    / /    * *    & &    & &    ) )    , ,    + +  !((H444 ((H444K%5%5%5 ( ( / / * * . .   < < ( (  -%5%5%5%5sO"9O7M.!O2M;!O%N7!O%N=!O9N"!O8/N/'!ON<"!O%O (C4OO".M8 3O;N ON ON O"N, 'O/N9 4O<O O O OO O""O+c t5}td|jf5} t|j t j ddJ#t j$r+}|jJ|j}|dk(sJYd}~nd}~wwxYw dddn #1swYnxYwdddy#1swYyxYw)Nrrrr) r r rrrrr,r extra_info)ryreeis rtest_extra_infors  5 +v{{3 458> 5 !!&-- C"@A B 5-- 5<<+ ++B44 44 55555555sEB5B 0AB(!B B BB  B5 B) %B55B>ct}t}t|ddgd|d5}td|jf|d|ddj |ddj 5}|jtjdj}|j|sJ d d d d d d y #1swYxYw#1swYy xYw) z!Test mutual TLS (mTLS) with gRPC.r0rTr/)r( verify_clientroot_certificatesr)r. cert_chain private_keyr[N) r2r@rYr rr-r.rvrr/rr)r+rur%rr?s r test_mtlsrs  E  E #N3A67#K0 2 "67 !&& ! -^,Q/44n-a044  6 ":@}}V]]734==?{{5!!! " " " " " "s$?C,AC3CC CCctjjtjt ddgdg}t 5}t d|jf5}tjjd}|j|\}}|5|j}ddd|k(sJ ddddddy#1swY"xYw#1swYxYw#1swYyxYw)r2rr3rUr9rr'N) r;r=r>r<rr#r rrrkr-rr)rryrrrrrus rtest_doexchange_getrsxx## q)$%%U$H  !6 +v{{3 4!8>,,88@ ++J7  &OO%E &5   !!! & & !!!!s< C##6CC *C:C# C CC C##C,ctjjtjt ddgdg}|j d}t 5}td|jf5}tjjd}|j|\}}|5|j|j|D]}|j||j!|j#}|j$Jt't)|j+d } |j,| k(sJ d d d d d d d d d y #1swYxYw#1swYxYw#1swYy xYw) r7rr3rUr9rrr(Nr)r;r=r>r<rrr#r rrrkr-rr4rjr>r}rAr?r9rrr<) r?r<ryrrrrrr expected_bufs rtest_doexchange_putrs[ 88   q)$%!U  DooCo0G   66 +v{{3 4 68>,,88@ ++J7  6 LL %  *""5) *    !%%'E::% %%s7|,33Gr<rrr#r rrrkr-rr9rr8rAr?r<r4rjr>rr=) r?r<ryrrrrirrrs rtest_doexchange_echor-s# 88   q)$%!U  DooCo0G  16 +v{{3 418>,,88A ++J7  12Y 1!fmmG,%%c*))+zz)))))S000  1 LL %  2""5)}} 333))+zzU***))111  2&g. 15!fmmG,**5#6))+zzU***))S000  1' 1 111 1 1 1111sQH656H*+A'HAr<rrrrrrr#r rrrkr-rr4rjr>rAr?r<) r?r<raryrrrrrrs rtest_doexchange_echo_v4rSs~ 88   q)$%!U  DooCo0Gff$$//22%4G g . 2& +v{{3 4 28>,,88A ++J7  2 LLgL 6  2""5)}} 333))+zzU***))111  2 2 2 2 2 2 2 2 2 2 2sC!F!96F/Ar<rr#r rrrkr-rr4rjr5r}r)r?rryrrrrrus rtest_doexchange_transformrksj 88   q$  q$  q$ !  D xx## q,*+%W$H   !6 +v{{3 4 !8>,,88F ++J7  & LL %   t $    !OO%E  & 5    ! ! ! & & ! ! ! !s= F!6FA F$F4FF FF FF&c tdti5}t}td|jf|g5}t |j tjdd}|jjjd}tj|}tjj!D]l\}}|j#}t%|t&r|jd}|j)||k(sJ|j*j)||k(rlJ ddddddy#1swYxYw#1swYyxYw)rrrrrrasciiN)rrrr rrrrr,rrrast literal_evalrr rirrwbytesrr)ryrrr raw_headersrheaderrs rtest_middleware_multi_headerrsC 24- B 46 fkk*#9& B)/F,,V]]3-DEFH"--224;;GDK --k:N"="F"F"L"L"N Bfe,#]]73F%))&1V;;;++//76AAA  B B BB B B BBs)%EC6E3E7EE EEct}t|d5}dg}tjd|jf|d|}t j tj5|jtjdddd|jd g}tjd|jf|d|}t j tjtjf5|jtjdddd|jdddy#1swYxYw#1swY.xYw#1swYyxYw) z$Test setting generic client options.r0r')zgrpc.ssl_target_name_overrider7rr/)r.generic_optionsr[N)zgrpc.max_receive_message_length )r2rYrrrr0r1r)rvr/rr;rr)r+r%rars rtest_generic_optionsrs$  E u^/D EDEaff 5/4[/A079]]688 9 2 MM&--0 1 2 :;aff 5/4[/A079]]BOOV-H-HI J 2 MM&--0 1 2 !  2 2 2 2s=AE (%E A5E %E'E E E E E  E)ceZdZdZdZdZy)CancelFlightServerzA server for testing StopToken.ctjg}tjjg|}t j |t j|S)Nr)r;rjrr>rrrr)rbrnrsrjr"s rrvzCancelFlightServer.do_getsF2 ^^ ' '6 ' :%%fi.>.>r.BCCrc"tjg}tjjg|}|j ||j s8|j |tjd|j s7yy)Nrr) r;rjrr>r4rr>rr)rbrnrrrrjr"s rrzCancelFlightServer.do_exchangesg2 ^^ ' '6 ' : V&&(   r " JJsO&&(rN)rxryrzr{rvrrrrrrs)D rrctjjtjjk7rt j ddt tjffd}t5}td|jf5}|jtjd}||jtj j#d}|j%|\}}||j |j'ddddddy#t tj(f$rY,wxYw#1swY1xYw#1swYyxYw)Nz'test only works from main Python threadcttjdtjtjyr)rrsignal raise_signalSIGINTrrrsignal_from_threadz*test_interrupt..signal_from_threads 3FMM*rc tj}tj5}|j |ddd|j  j}t|tjt fs-t|jtjt fsJyy#1swYtxYw#j wxYw#t $rtjdYwxYw)Nr|z2KeyboardInterrupt didn't interrupt Flight read_all) rrr0r1rreKeyboardInterruptfailrKrwr;ArrowCancelled __context__)rtexc_infor exc_typesrs rrztest_interrupt..tests N $$,>?]]9-GGIJ NN!b//1BCD q}}r'8'8:K&L M NN ME  N KKL M Ns:+CB:CC:C?CCCC<;C<rrr&)rcurrent_threadident main_threadr0r4rr;rrr rrvrr/rrkr-rrr)rryrrrrrrs @@rtest_interruptrs&!''9+@+@+B+H+HH =>+#B$5$56IN$    +v{{3 4 8>v}}S12 V__,,88A ++J7 V__  LLN   "6#>#>?       sC>EA/&J25J -J27J&J J&'J2/J>I I  I I4I$ I''I1 ,I44I> 9JJ J J2J# J&&J/ +J22J; 7J>>KceZdZdZgZdZy)ActionNoneFlightServerz@A server that implements a side effect to a non iterable action.c|jdk(r/tj|jj dgS|jdk(r|jj dyt )N get_valuerrT)rFjsondumpsVALUESrrrrs rrz ActionNoneFlightServer.do_action4 sV ;;+ %JJt{{+227;< < [[H $ KK  t $!!rN)rxryrzr{rrrrrrr0 sJ F"rrct5}td|jf5}|jt j dd|jt j dd}t jt|jjdgk(sJ ddddddy#1swYxYw#1swYyxYw)zEnsure that actions are executed even when we don't consume iterator. See https://issues.apache.org/jira/browse/ARROW-14255 rrrrTN) rr rrrr,rloadsrrr)ryrrs rtest_none_action_side_effectr= s !?V +v{{3 4?8>x56   V]];< =zz$q',,1134>>> ??????s#CBB<+C<C CCc  d}d}tj|| tjjd}t j dt j fg}G fddtj}|5}td|jf5}|j||\} fd }tj|d } | jtjtj5} |j!t j"d gg| )#1swYnxYw j$j&|k(sJtjtj5} |j)dddn #1swYnxYw| j$j&|k(sJ| j+|j-|\} fd}tj|d } | jtjtj5} |j/d#1swYnxYw| j$j&|k(sJtjtj5} |j)dddn #1swYnxYw| j$j&|k(sJ| j+dddn #1swYnxYwdddy#1swYyxYw)z Ensure that exceptions during writing preserve error context. See https://issues.apache.org/jira/browse/ARROW-16592. rBrE)rrrc"eZdZfdZfdZy)0test_write_error_propagation..FailServercrrrbrnrrrexcs rrz7test_write_error_propagation..FailServer.do_putY Ircrrrs rrz.FailServer.do_exchange\ rrN)rxryrzrr)rsr FailServerrX s   rrrc\ j#tj$rYywxYwr)r$r FlightErrorrsr_readerz-test_write_error_propagation.._readerf s1 KKM%%   ++TrrGrNc\ j#tj$rYywxYwr)rArrrsrrz-test_write_error_propagation.._reader} s4 %%'%%  rr)rrrkr-r;rjrr r rrrrrr0r1r>rrKrrrerr8) expected_message expected_inforrjrryrrrrrrrs @@rtest_write_error_propagationrJ sM  % %] 4C((44S9J YY"((*-. /FV,, / +v{{3 4/8>z6: !!>  ]]666 7 J8""2??QC5#HI J J~~((M999 ]]666 7 8 LLN   ~~((M999  ++J7 !!>  ]]666 7 ,8%%d+ , ,~~((M999 ]]666 7 8 LLN   ~~((M999 _//////s| K<!A%K'+D11D: 6AK';F K'F BK'/II AK' J' K''J0 ,2K' K<'K0 ,K<<Lc.tjdy)z Ensure that the gRPC server is stopped at interpreter shutdown. See https://issues.apache.org/jira/browse/ARROW-16597. zarrow_16597.pyN)r invoke_scriptrrrtest_interpreter_shutdownr s  '(rceZdZdZdZy)TracingFlightServerz/A server that echoes back trace context values.cf|jdj}d|jDS)Ntracingc3NK|]\}}|d|jdyw)z: rN)r).0r.rKs r z0TracingFlightServer.do_action.. s2; S%55'"**73;s#%)r trace_contextri)rbrnrrs rrzTracingFlightServer.do_action s3..y9GG ;$1$7$7$9; ;rNrrrrrr s 9;rrc(tdtji5}td|jf5}tj ddg}|j d|D]} ddddddy#1swYxYw#1swYyxYw) Nrrr)s traceparents700-000ff00f00f0ff000f0f00ff0f00fff0-000f0000f0f00000-00)s tracestaterr)rrrr)rrTracingServerMiddlewareFactoryr rrr)ryrrarKs r test_tracingr s  v<<>)   +v{{3 49?** 5 4   %%j'%B E  s"B1A<+B<B BBctdd}d}tjt|5|j t j jdddddy#1swYyxYw)Nzgrpc+tls://localhost:9643Tr2zRArgument 'schema' has incorrect type \(expected pyarrow.lib.Schema, got NoneType\)rrBr)r r0r1r2rrrkr-)rmsgs r.test_do_put_does_not_crash_when_schema_is_noner sc 56:.HeadersTrailersFlightServerc|jdd|jdd|jdd|jddtjt j g|gS) Nx-header header-value x-header-binz headervalue x-trailer trailer-value x-trailer-binz trailervalue) add_header add_trailerrrir;rjrs rrzJtest_headers_trailers..HeadersTrailersFlightServer.get_flight_info sh   z> :   ~/@ A    _ =   1C D$$ "  rN)rxryrzrrrrHeadersTrailersFlightServerr s rrceZdZdZfdZy)?test_headers_trailers..HeadersTrailersMiddlewareFactorycg|_yrrrms rr_zHtest_headers_trailers..HeadersTrailersMiddlewareFactory.__init__ s DLrc|Srr)rbrHeadersTrailersMiddlewares rrzJtest_headers_trailers..HeadersTrailersMiddlewareFactory.start_call s,T2 2rN)rxryrzr_r)rsr HeadersTrailersMiddlewareFactoryr s   3rrceZdZdZdZy)8test_headers_trailers..HeadersTrailersMiddlewarec||_yrrrs rr_zAtest_headers_trailers..HeadersTrailersMiddleware.__init__ s "DLrc|jD]3\}}|D])}|jjj||f+5yr)rirrr)rbrr.rrKs rrzItest_headers_trailers..HeadersTrailersMiddleware.received_headers sF&}} > V#>ELL((//e => >rN)rxryrzr_rrrrrr s  # >rrrrr)rr)rs headervalue)r r )r s trailervalueN) r rrr rrrrkrlr)rrrryrrs @rtest_headers_trailersr s &6 3+B3>$4>/0G $ &I& +v{{3 JINTv66??CD+w>>>3wFFF-@@@5HHH IIIIIIs$C'A/C C'C$ C''C0)rrwrrrrrrrrr&rrnumpyrN ImportErrorr0rr; pyarrow.librr pyarrow.utilr pyarrow.testsrrrr r r r r rrrr3mark pytestmarkrr r+r2r@rNrWrYrrrrrrrrrrr r#rNrerrr~rrrrrrrrrrrrrrrrrrrrrrrrr?rortrzr}slowrrrrpandasrrrrrrrrrrskipifrrrrrrrrrrrrrrr%header_auth_server_middleware_factoryr r rrrrr"r%requires_testing_datar,r0r5r9r?rErGrJrWrYrgrirqrwr~rrrrrrrrrrrrrrr large_memoryrrrrrrrrrrrrrr's$     /' ?[[    B  ";<2 E+ED#+#L'*"-""0*06 +. +#3..." E 0 E F!1F&7'7*.A(.AbC#+C#L!20!2"...$ ' $ /(? /1!1161(?189!19 /- /9.E9'7F#3F*+-+5$;5).-+B-&/+B/  $4  '>  '>  1)@ 12"22.4)@44"24. 0."J@Z`F!$8 ('(D6FF""<.=7$(2 ! 6BGGtODF&F&*##* # 9 <J4"0 [7, [3 ++BGGtOIK 5K 5+5I)J(K%$&4E ;@8."+"" =# ="" "# """ #  "" 2# 2"* @ "),""8  44@8Ov#L$(N '9,)5X 5"""#"$ !6,#1L20!.B,""#.)"))X # 1 1 ""@ "- " ?CCL) ;* ;$#&IAM B"? F%+V"L"+16((06--06-- ?s#XXXXX=<X=