3 X]'@sddlmZddlZddlZddlZddlZddlZddlZddlZddl Z ddl m Z m Z ddlmZddlZejdZejdZGdddZejd d Zejd d Zd dZddZddZddZddZddZddZddZddZ dd Z!d!d"Z"d#d$Z#d%d&Z$d'd(Z%d)d*Z&d+d,Z'd-d.Z(d/d0Z)d1d2Z*d3d4Z+d5d6Z,d7d8Z-d9d:Z.d;d<Z/d=d>Z0d?d@Z1dAdBZ2dS)C)print_functionN)journalid128) _make_lineZ 8441372f8dca4ca98694a6091fd8519fZ 8441370000000000000000001fd85000c@seZdZddZdddZdS) MockSendercCs g|_dS)N)buf)selfr $/usr/lib64/python3.6/test_journal.py__init__szMockSender.__init__Nc Ksd|g}|dk r,t|d|}|jd|||koH|koHdknrltjddddd\}}}|dk r|jd||dk r|jd j||dk r|jd ||jd d |jD|jj|dS) NzMESSAGE=hexz MESSAGE_ID=)limitrz CODE_FILE=zCODE_LINE={:d}z CODE_FUNC=css|]\}}t||VqdS)N)r).0keyvalr r r )sz"MockSender.send..)getattrappend _traceback extract_stackformatextenditemsr) rZMESSAGE MESSAGE_IDZ CODE_FILEZ CODE_LINEZ CODE_FUNCkwargsargsidr r r sends  "zMockSender.send)NNNN)__name__ __module__ __qualname__r rr r r r rsrccsJy dVWn:ttfk rD}z|j|kr2tjWYdd}~XnXdS)N)OSErrorIOErrorerrnopytestskip)codeer r r skip_oserror,s   r*c cs,y dVWntk r&tjYnXdS)N) ValueErrorr&r'r r r r skip_valueerror5s r,cCs|tjj}|tjtjkst|tjtjks0t|tjdtjksHt|tjdtjks`t|tj dtjksxt|tj tjkst|tj dtj kst|tj dtj kst|tj tj kst|tj dtj kst|tj dtj kst|tj tj kst|tj dtjks2t|tjtjksHt|tjtjks^t|tjdtjksxtdS)N)rJournalHandlerZ map_priorityloggingZNOTSETZ LOG_DEBUGAssertionErrorDEBUGZLOG_INFOINFOZ LOG_WARNINGZWARNZLOG_ERRZERRORZLOG_CRITZFATALZCRITICALZ LOG_ALERT)pr r r test_priorities<s"r4c Cs.ddi}tjttjf|WdQRXdS)Nz X r)r&raisesr+rr.)kwr r r "test_journalhandler_init_exceptionQs r7cCsddd}tjtjf|dS)Nr)XX3)rr.r/r2)r6r r r test_journalhandler_initVs r;cCstjdtjddddd}t}dd|jd}tjtjf|}|j|t|j dksXt d|j d ksjt d |j d ks|t dS) Nz test-loggertestpathr-testrr8)r9r:sender_functionzX=3rzX3=4) r/ LogRecordr2rrrr.emitlenrr0)recordsenderr6handlerr r r test_journalhandler_infoZs rEcCsltjdtjddddd}t}tjtj|jd}|j|t|j dksLt t dd|j dDsht dS) Nz test-loggerr<r-r=)r>css|]}|jd VqdS)z MESSAGE_ID=N) startswith)rmr r r rksz4test_journalhandler_no_message_id..r) r/r?r2rrr.rr@rArr0all)rBrCrDr r r !test_journalhandler_no_message_ides  rIcCsjtjdtjddddd}t}tjtj|jtd}|j|t |j dksNt dtj |j dksft dS)Nz test-loggerr<r-r=)r>rz MESSAGE_ID=r) r/r?r2rrr.rTEST_MIDr@rArr0r )rBrCrDr r r )test_journalhandler_message_id_on_handlerms  rKcCsltjdtjddddd}t}tjtj|jtjd}|j |t |j dksPt dtj|j dksht dS)Nz test-loggerr<r-r=)r>rz MESSAGE_ID=r) r/r?r2rrr.rrJr r@rArr0)rBrCrDr r r -test_journalhandler_message_id_on_handler_hexvs   rLcCsttjdtjddddd}t|jd<t}tjtj|jt d}|j |t |j dksXt dtj|j dkspt dS) Nz test-loggerr<r-r=r)r>rz MESSAGE_ID=r)r/r?r2 TEST_MID2__dict__rrr.rrJr@rArr0r )rBrCrDr r r )test_journalhandler_message_id_on_messages   rOcCsvtjdtjddddd}tj|jd<t}tjtj|j t d}|j |t |j dksZtdtj|j dksrtdS) Nz test-loggerr<r-r=r)r>rz MESSAGE_ID=r)r/r?r2rMr rNrrr.rrJr@rArr0)rBrCrDr r r -test_journalhandler_message_id_on_message_hexs   rPcCsRtj}tjtj}tjtj}tjtj}tjtjtjBtjB}tjd}dS)Nr)rReaderZ LOCAL_ONLYZ RUNTIME_ONLY SYSTEM_ONLY)j1j2j3Zj4Zj5Zj6r r r test_reader_init_flagss    rVcCstjttjtjWdQRXttj|jtjd}WdQRXttj|jtjtjBd}WdQRXtj|jtjtj Bd}dS)N)pathflags) r&r5r+rrQZOS_ROOTr,strpath CURRENT_USERrR)tmpdirrSrTrUr r r test_reader_os_roots r\cCs>tj|jd}tjd|jdtj|jd}tj|jddS)N)rWr)rrQrY)r[rSrTr r r test_reader_init_pathsr]c Cs(tjttjdddWdQRXdS)Nrr-)rW)r&r5r#rrQr r r r test_reader_init_path_invalid_fds r_c Cs(tjttjdddWdQRXdS)Nr)rW)r&r5r#rrQr r r r %test_reader_init_path_nondirectory_fds r`cCstj|jtj}ttjtj|d}WdQRXt |gksBt t tjtj |d}WdQRXt |gkstt tjtj |d}t |gkst dS)N)rW)osopenrYO_RDONLYr*r%ENOSYSrrQlistr0r,ZSYSTEMrZ)r[fdrSrTrUr r r test_reader_init_path_fds rgcCsVtj|jd}||j s tWdQRX|js4ttjtt|WdQRXdS)N)rW) rrQrYclosedr0r&r5r#next)r[jr r r test_reader_as_cms   rkc Cs<tj|jd}| |jtj|jtjjWdQRXdS)N)rW)rrQrYZmessageid_matchrZSD_MESSAGE_JOURNAL_STARTZSD_MESSAGE_JOURNAL_STOPr )r[rjr r r test_reader_messageid_matchs rlc Cs@tj|jd}|$|j|jt|jtjWdQRXdS)N)rW)rrQrYZ this_bootrJr )r[rjr r r test_reader_this_boots  rmc Cs@tj|jd}|$|j|jt|jtjWdQRXdS)N)rW)rrQrYZ this_machinerJr )r[rjr r r test_reader_this_machines  rncCs^tj|jd}|&ttj|jd}WdQRXWdQRXt|tsLt |tksZt dS)N)rWZFOOBAR) rrQrYr*r%rdZ query_unique isinstancesetr0)r[rjansr r r test_reader_query_uniques  rrcCs\tj|jd}|$ttj|j}WdQRXWdQRXt|tsJt |tksXt dS)N)rW) rrQrYr*r%rdZenumerate_fieldsrorpr0)r[rjrqr r r test_reader_enumerate_fieldss  rscCsLtj|jd}|$ttj|j}WdQRXWdQRX|dksHtdS)N)rWF)rrQrYr*r%rdhas_runtime_filesr0)r[rjrqr r r test_reader_has_runtime_filess  rucCsLtj|jd}|$ttj|j}WdQRXWdQRX|dksHtdS)N)rWF)rrQrYr*r%rdrtr0)r[rjrqr r r test_reader_has_persistent_filess  rvcCsPdddi}tj|j|d}|jdd}|dks4t|jdd}|dksLtdS) NZxxxcSsdS)Nyyyr )argr r r sz(test_reader_converters..)rW converterssabcrwZzzzs)rrQrYZ_convert_fieldr0)r[rzrjrr r r test_reader_converterss     r{cCs`ddddd}tj|j|d}|jddddgdd gd }|d dd d gdd gd ks\tdS) NcSsdS)Nrwr )rxr r r ry sz+test_reader_convert_entry..cSsdS)NYYYr )rxr r r ry s)x1x2)rWrzsabcssdefs)r}Zy1r~Zy2rwr|)rrQrYZ_convert_entryr0)r[rzrjrr r r test_reader_convert_entry s rcCsFtj|jd}tj}|j||jdtjddd}|j|dS)N)rWi90ir8)rrQrYtimeZ seek_realtimedatetime)r[rjZnowZlong_agor r r test_seek_realtimes   rc CsFttjtjd}WdQRX|jd}|dks6ttd|ddS)Nztest_journal.pyz message... zprinted message...)file)rN)r*r%ENOENTrstreamwriter0print)rresr r r test_journal_stream"s    r)3Z __future__r contextlibrr%r/rarZuuid tracebackrZsystemdrrZsystemd.journalrr&ZUUIDrJrMrcontextmanagerr*r,r4r7r;rErIrKrLrOrPrVr\r]r_r`rgrkrlrmrnrrrsrurvr{rrrr r r r sV