bS/ddlZddlZddlZddlZddlZddlZddlmZmZm Z m Z m Z m Z m Z mZmZmZmZmZmZmZmZmZddlZej0dZej0dZdZdZdZdZd Zd Z d Z!d Z"d Z#dZ$dZ%dZ&dZ'dZ(dZ)dZ*dZ+dZ,dZ-dZ.dZ/dZ0dZ1ejddk\re3Z4ne5Z4dZ6dZ7dZ8y) N)bootedis_fifo_is_fifo is_socket _is_socketis_socket_inet_is_socket_inetis_socket_unix_is_socket_unixis_socket_sockaddr_is_socket_sockaddris_mq_is_mq listen_fdslisten_fds_with_namesnotifyc#K dy#t$r7}|jtjk(rtjd}~wwxYwwN)OSErrorerrnoENOSYSpytestskip)es :/usr/lib/python3/dist-packages/systemd/test/test_daemon.py skip_enosysrs9  77ell " KKM s$A  A  A 2AA  A c#Ktj|} ||dj|djy#|dj|djwxYww)Nr)socket socketpairclose)familypairs rclosing_socketpairr$sW   V $D  Q  Q  Q  Q sA/A'A/(A,,A/cxtjjdr tsJytdvsJy)Nz/run/systemd/system>FT)ospathexistsrr test_bootedr+&s. ww~~+,xxx=(((r*c|jdj}tj|t j |tj tjz}t|dsJt||sJy)N test.fifo) joinstrpathposixmkfifor&openO_RDONLY O_NONBLOCKr)tmpdirr'fds r test__is_fifor7.s_ ;;{ # + +D LL r{{2==0 1B B   B  r*c|jd}|jd|j}tj|tj tj z}t|drJt||rJy)Nr-boo)r.writer/r&r2r3r4rr5filer'r6s rtest__is_fifo_filer=6se ;;{ #DJJu <>2 22!#v~~6 66c6>>63E3EF FF!#v~~v7H7HI II ].sNFDUDUWXZ[\\\\ ] ] ]]]`` ] ]!]]s=CG; G! cttj5}|D]I}|j}t |sJt |tjsJt |tj rJt |tjtj sJt |tj tjrJt |sJt |tjsJt |tj rJt |tjtj sJt |tj tjsJJ dddy#1swYyxYwr)r$rrXrYrr^r_r`rZs rtest__is_socketrss FNN + It IDBb> !>b&..1 11!"fnn5 55b&..&2D2DE EE!"fnnf6G6GH HHb> !>b&..1 11!"fnn5 55b&..&2D2DE EE!"fnnf6G6GH HH I I I IsE E4'E44E=cFttj5}|D]m}||jfD]V}t |sJt |drJt |tj sJt |tj sVJo dddy#1swYyxYw)N /no/such/path)r')r$rrXrYr r_r`ras rtest_is_socket_unixrvs FNN +Bt BDdkkm, B%c***)#ODDD%c6+=+=>>>)#v/@/@AAA  B BBBBsA-BBB c:ttj5}|D]g}|j}t |sJt |dddrJt |tj sJt |tj sgJ dddy#1swYyxYw)Nrr@ru)r$rrXrYr r_r`rZs rtest__is_socket_unixrxs FNN +>t >DB"2& &&&r1b/B BB"2v'9'9: ::&r6+<+<= ==  >>>>sA)BBBctjdtjdtgk(sJtdgk(sJtdgk(sJy)N LISTEN_FDS LISTEN_PIDTF)r&unsetenvrr)r*rtest_listen_fds_no_fdsr}sPKK KK  <2   d r !! ! e  "" "r*cdtjd<ttjtjd<t dgdk(sJt dgdk(sJt gk(sJy)N3rzr{FTr&environstrgetpidrr)r*rtest_listen_fdsrs_"BJJ|"299;/BJJ| e  )) ) d y (( ( <2  r*cdtjd<ttjtjd<t ddgk(sJt dgk(sJt gk(sJy)N1rzr{Frrr)r*rtest_listen_fds_default_unsetrs`"BJJ|"299;/BJJ| e  ## #  99 9  &1i. 88 8 "b (( (r*cdtjd<ttjtjd<dtjd<t dddik(sJt ddik(sJt dik(sJy) Nrrzr{cmdsrFrTr&rrrrr)r*r!test_listen_fds_with_names_singlersw"BJJ|"299;/BJJ|#)BJJ  'Av; 66 6 "q&k 11 1  &" ,, ,r*cdtjd<ttjtjd<dtjd<t dddd d k(sJt d ddd d k(sJt ik(sJy) Nrrzr{zcmds:data:errsrFrdataerrsrTrr)r*r#test_listen_fds_with_names_multipler!s}"BJJ|"299;/BJJ|#3BJJ  'v&V+L LL L  &fF*K KK K "b (( (r*cxtjjddtddusJt 5tdgdusJ dddtdddgdusJtdtj dusJtdtj d dusJy#1swYdxYw) N NOTIFY_SOCKETREADY=1F FDSTORE=1fdsrpidrrr)r&rpoprrrr)r*rtest_notify_no_socketr+sJJNN?D) )  %% % 4kr*e3334 +Aq6 *e 33 3 +299; /5 88 8 +299;D 9U BB B 44s B00B9)rcdtjd<tjt5t ddddtjt5t 5t dgddddddtjt5t dddgdddtjt5t dtjdddtjt5t dtjd dddy#1swYxYw#1swYxYw#1swYxYw#1swYxYw#1swY}xYw#1swYyxYw) Nz /dev/nullrrrrrrrrr)r&rrrAconnection_errorrrrr)r*rtest_notify_bad_socketr:s"-BJJ ' (y ' (( ] ( ;B ' (( ' (({A'( ' (-{ ,- ' (7{ 677 ( (((((--77sS D8 E%E3EE E)!E58EE EEE&)E25E>c|jdj}tjtjtj} |j |ttdd}|jtj|d|tjd<tdsJt5tdg sJ dddtddd g sJtdtj sJtdtj d sJy#tj $r"}tjd|zYd}~d}~wwxYw#1swYxYw)Nrzfailed to bind socket (%s) SO_PASSCREDrrrrrrrrr)r.r/rrXr`rjrRrxfailgetattr setsockopt SOL_SOCKETr&rrrr)r5r'r[rrs rtest_notify_with_socketrIs ;;x ( (D ==):): ;D7 $&-4KOOF%%{A6"&BJJ )   +kr***+ +Aq6 ** * +299; // / +299;D 99 9 <<7 1A5667++s$D*<E"*E=EE"E+cd}|g}tj|} tddd|tj||ksJdy#t$rY+wxYw)NrTrleak)sys getrefcountrr)r6rref_cnts rtest_daemon_notify_memleakr\sa B $Coob!G r4C  ??2 ' )161 )    sA AA)9rr&r0rrhrsystemd.daemonrrrrrrr r r r r rrrrrrcontextmanagerrr$r+r7r=rCrHrJrLrSrVr\rbrqrsrvrxr}rrrrrrr version_infoConnectionRefusedErrorrrrrrr)r*rrs   $$$$$  )"&  !%E,]($LI B>#.)-)Ct- 7:& 2r*