3 ‡×X]'ã@sŠddlmZddlZddlZddlZddlZddlZddlZddlZddl Z ddl m Z m Z ddlmZddlZejdƒZejdƒZGdd„dƒZejd d „ƒZejd d „ƒZd d„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Z dd „Z!d!d"„Z"d#d$„Z#d%d&„Z$d'd(„Z%d)d*„Z&d+d,„Z'd-d.„Z(d/d0„Z)d1d2„Z*d3d4„Z+d5d6„Z,d7d8„Z-d9d:„Z.d;d<„Z/d=d>„Z0d?d@„Z1dAdB„Z2dS)Cé)Úprint_functionN)ÚjournalÚid128)Ú _make_lineZ 8441372f8dca4ca98694a6091fd8519fZ 8441370000000000000000001fd85000c@seZdZdd„Zddd„ZdS)Ú MockSendercCs g|_dS)N)Úbuf)Úself©r ú$/usr/lib64/python3.6/test_journal.pyÚ__init__szMockSender.__init__Nc KsØd|g}|dk r,t|d|ƒ}|jd|ƒ||koH|koHdknrltjdd�ddd…\}}}|dk r‚|jd|ƒ|dk rš|jd j|ƒƒ|dk r°|jd |ƒ|jd d „|jƒDƒƒ|jj|ƒdS) NzMESSAGE=Úhexz MESSAGE_ID=é)Úlimitréz CODE_FILE=zCODE_LINE={:d}z CODE_FUNC=css|]\}}t||ƒVqdS)N)r)Ú.0ÚkeyÚvalr r r ú )sz"MockSender.send..)ÚgetattrÚappendÚ _tracebackÚ extract_stackÚformatÚextendÚitemsr) rZMESSAGEÚ MESSAGE_IDZ CODE_FILEZ CODE_LINEZ CODE_FUNCÚkwargsÚargsÚidr r r Úsends  "zMockSender.send)NNNN)Ú__name__Ú __module__Ú __qualname__r rr r r r rsrccsJy dVWn:ttfk rD}z|j|kr2tjƒ‚WYdd}~XnXdS)N)ÚOSErrorÚIOErrorÚerrnoÚpytestÚskip)ÚcodeÚer r r Ú skip_oserror,s   r*c cs,y dVWntk r&tjƒYnXdS)N)Ú ValueErrorr&r'r r r r Úskip_valueerror5s r,cCs|tjj}|tjƒtjkst‚|tjƒtjks0t‚|tjdƒtjksHt‚|tjdƒtjks`t‚|tj dƒtjksxt‚|tj ƒtjksŒt‚|tj dƒtj ks¤t‚|tj dƒtj ks¼t‚|tj ƒtj ksÐt‚|tj dƒtj ksèt‚|tj dƒtj k�st‚|tj ƒtj k�st‚|tj dƒtjk�s2t‚|tjƒtjk�sHt‚|tjƒtjk�s^t‚|tjdƒtjk�sxt‚dS)Né)rÚJournalHandlerZ map_priorityÚloggingZNOTSETZ LOG_DEBUGÚAssertionErrorÚDEBUGZLOG_INFOÚINFOZ LOG_WARNINGZWARNZLOG_ERRZERRORZLOG_CRITZFATALZCRITICALZ LOG_ALERT)Úpr r r Útest_priorities<s"r4c Cs.ddi}tjtƒ�tjf|ŽWdQRXdS)Nz X r)r&Úraisesr+rr.)Úkwr r r Ú"test_journalhandler_init_exceptionQs r7cCsdddœ}tjtjf|ŽdS)Nré)ÚXÚX3)rr.r/r2)r6r r r Útest_journalhandler_initVs r;cCs€tjdtjdddddƒ}tƒ}dd|jdœ}tjtjf|Ž}|j|ƒt|j ƒdksXt ‚d|j d ksjt ‚d |j d ks|t ‚dS) Nz test-loggerÚtestpathr-Útestrr8)r9r:Úsender_functionzX=3rzX3=4) r/Ú LogRecordr2rrrr.ÚemitÚlenrr0)ÚrecordÚsenderr6Úhandlerr r r Útest_journalhandler_infoZs rEcCsltjdtjdddddƒ}tƒ}tjtj|jd�}|j|ƒt|j ƒdksLt ‚t dd„|j dDƒƒsht ‚dS) Nz test-loggerr<r-r=)r>css|]}|jdƒ VqdS)z MESSAGE_ID=N)Ú startswith)rÚmr r r rksz4test_journalhandler_no_message_id..r) r/r?r2rrr.rr@rArr0Úall)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.rÚTEST_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 ƒdksZt‚dtj|j dksrt‚dS) 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_hex‰s   rPcCsRtjƒ}tjtjƒ}tjtjƒ}tjtjƒ}tjtjtjBtjBƒ}tjdƒ}dS)Nr)rÚReaderZ LOCAL_ONLYZ RUNTIME_ONLYÚ SYSTEM_ONLY)Új1Új2Új3Zj4Zj5Zj6r r r Útest_reader_init_flags“s    rVcCsŒtjtƒ�tjtjƒWdQRXtƒ�tj|jtjd�}WdQRXtƒ�tj|jtjtjBd�}WdQRXtj|jtjtj Bd�}dS)N)ÚpathÚflags) r&r5r+rrQZOS_ROOTr,ÚstrpathÚ CURRENT_USERrR)ÚtmpdirrSrTrUr r r Útest_reader_os_root›s r\cCs>tj|jd�}tjd|jd�tj|jd�}tj|jd�dS)N)rWr)rrQrY)r[rSrTr r r Útest_reader_init_path§sr]c Cs(tjtƒ�tjddd�WdQRXdS)Nrr-)rWéÿÿÿÿ)r&r5r#rrQr r r r Ú test_reader_init_path_invalid_fd®s r_c Cs(tjtƒ�tjddd�WdQRXdS)Nr)rW)r&r5r#rrQr r r r Ú%test_reader_init_path_nondirectory_fd²s r`cCs˜tj|jtjƒ}ttjƒ�tj|d�}WdQRXt |ƒgksBt ‚t ƒ�tjtj |d�}WdQRXt |ƒgkstt ‚tjtj |d�}t |ƒgks”t ‚dS)N)rW)ÚosÚopenrYÚO_RDONLYr*r%ÚENOSYSrrQÚlistr0r,ZSYSTEMrZ)r[ÚfdrSrTrUr r r Útest_reader_init_path_fd¶s rgcCsVtj|jd�}|�|j s t‚WdQRX|js4t‚tjtƒ�t|ƒWdQRXdS)N)rW) rrQrYÚclosedr0r&r5r#Únext)r[Újr r r Útest_reader_as_cmÄs   rkc Cs<tj|jd�}|� |jtjƒ|jtjjƒWdQRXdS)N)rW)rrQrYZmessageid_matchrZSD_MESSAGE_JOURNAL_STARTZSD_MESSAGE_JOURNAL_STOPr )r[rjr r r Útest_reader_messageid_matchÍs rlc Cs@tj|jd�}|�$|jƒ|jtƒ|jtjƒWdQRXdS)N)rW)rrQrYZ this_bootrJr )r[rjr r r Útest_reader_this_bootÓs  rmc Cs@tj|jd�}|�$|jƒ|jtƒ|jtjƒWdQRXdS)N)rW)rrQrYZ this_machinerJr )r[rjr r r Útest_reader_this_machineÚs  rncCs^tj|jd�}|�&ttjƒ�|jdƒ}WdQRXWdQRXt|tƒsLt ‚|tƒksZt ‚dS)N)rWZFOOBAR) rrQrYr*r%rdZ query_uniqueÚ isinstanceÚsetr0)r[rjÚansr r r Útest_reader_query_uniqueás  rrcCs\tj|jd�}|�$ttjƒ�|jƒ}WdQRXWdQRXt|tƒsJt ‚|tƒksXt ‚dS)N)rW) rrQrYr*r%rdZenumerate_fieldsrorpr0)r[rjrqr r r Útest_reader_enumerate_fieldsés  rscCsLtj|jd�}|�$ttjƒ�|jƒ}WdQRXWdQRX|dksHt‚dS)N)rWF)rrQrYr*r%rdÚhas_runtime_filesr0)r[rjrqr r r Útest_reader_has_runtime_filesñs  rucCsLtj|jd�}|�$ttjƒ�|jƒ}WdQRXWdQRX|dksHt‚dS)N)rWF)rrQrYr*r%rdrtr0)r[rjrqr r r Ú test_reader_has_persistent_filesøs  rvcCsPddd„i}tj|j|d�}|jddƒ}|dks4t‚|jddƒ}|dksLt‚dS) NZxxxcSsdS)NÚyyyr )Úargr r r Úsz(test_reader_converters..)rWÚ converterssabcrwZzzzs€€)rrQrYZ_convert_fieldr0)r[rzrjrr r r Útest_reader_convertersÿs     r{cCs`dd„dd„dœ}tj|j|d�}|jddddgdd gd œƒ}|d dd d gdd gd œks\t‚dS) NcSsdS)Nrwr )rxr r r ry sz+test_reader_convert_entry..cSsdS)NÚYYYr )rxr r r ry s)Úx1Úx2)rWrzsabcs€€sdefs€�)r}Zy1r~Zy2rwr|)rrQrYZ_convert_entryr0)r[rzrjrr r r Útest_reader_convert_entry s rcCsFtj|jd�}tjƒ}|j|ƒ|jdƒtjdddƒ}|j|ƒdS)N)rWi90i²ér8)rrQrYÚtimeZ seek_realtimeÚdatetime)r[rjZnowZlong_agor r r Útest_seek_realtimes   rƒc CsFttjƒ�tjdƒ}WdQRX|jdƒ}|dks6t‚td|d�dS)Nztest_journal.pyz message... é zprinted message...)Úfile)r„N)r*r%ÚENOENTrÚstreamÚwriter0Úprint)r‡Úresr r r Útest_journal_stream"s    r‹)3Z __future__rÚ contextlibr‚r%r/rar�ZuuidÚ tracebackrZsystemdrrZsystemd.journalrr&ZUUIDrJrMrÚcontextmanagerr*r,r4r7r;rErIrKrLrOrPrVr\r]r_r`rgrkrlrmrnrrrsrurvr{rrƒr‹r r r r ÚsV