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}dS)N)rÚJournalHandlerZ map_priority)Úpr r r Útest_priorities<sr/c Cs.ddi}tjtƒ�tjf|ŽWdQRXdS)Nz X r)r&Úraisesr+rr-)Úkwr r r Ú"test_journalhandler_init_exceptionQs r2cCsdddœ}tjtjf|ŽdS)Nré)ÚXÚX3)rr-ÚloggingÚINFO)r1r r r Útest_journalhandler_initVs r8cCsJtjdtjdddddƒ}tƒ}dd|jdœ}tjtjf|Ž}|j|ƒdS)Nz test-loggerÚtestpathéÚtestrr3)r4r5Úsender_function)r6Ú LogRecordr7rrrr-Úemit)ÚrecordÚsenderr1Úhandlerr r r Útest_journalhandler_infoZs  rBcCs>tjdtjdddddƒ}tƒ}tjtj|jd�}|j|ƒdS)Nz test-loggerr9r:r;)r<)r6r=r7rrr-rr>)r?r@rAr r r Ú!test_journalhandler_no_message_ides  rCcCs@tjdtjdddddƒ}tƒ}tjtj|jtd�}|j|ƒdS)Nz test-loggerr9r:r;)r<r) r6r=r7rrr-rÚTEST_MIDr>)r?r@rAr r r Ú)test_journalhandler_message_id_on_handlerms   rEcCsBtjdtjdddddƒ}tƒ}tjtj|jtjd�}|j |ƒdS)Nz test-loggerr9r:r;)r<r) r6r=r7rrr-rrDr r>)r?r@rAr r r Ú-test_journalhandler_message_id_on_handler_hexvs    rFcCsJtjdtjdddddƒ}t|jd<tƒ}tjtj|jt d�}|j |ƒdS)Nz test-loggerr9r:r;r)r<r) r6r=r7Ú TEST_MID2Ú__dict__rrr-rrDr>)r?r@rAr r r Ú)test_journalhandler_message_id_on_messages   rIcCsLtjdtjdddddƒ}tj|jd<tƒ}tjtj|j t d�}|j |ƒdS)Nz test-loggerr9r:r;r)r<r) r6r=r7rGr rHrrr-rrDr>)r?r@rAr r r Ú-test_journalhandler_message_id_on_message_hex‰s   rJcCsRtjƒ}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    rPcCsŒtjtƒ�tjtjƒWdQRXtƒ�tj|jtjd�}WdQRXtƒ�tj|jtjtjBd�}WdQRXtj|jtjtj Bd�}dS)N)ÚpathÚflags) r&r0r+rrKZOS_ROOTr,ÚstrpathÚ CURRENT_USERrL)ÚtmpdirrMrNrOr r r Útest_reader_os_root›s rVcCs>tj|jd�}tjd|jd�tj|jd�}tj|jd�dS)N)rQr)rrKrS)rUrMrNr r r Útest_reader_init_path§srWc Cs(tjtƒ�tjddd�WdQRXdS)Nrr:)rQéÿÿÿÿ)r&r0r#rrKr r r r Ú test_reader_init_path_invalid_fd®s rYc Cs(tjtƒ�tjddd�WdQRXdS)Nr)rQ)r&r0r#rrKr r r r Ú%test_reader_init_path_nondirectory_fd²s rZcCshtj|jtjƒ}ttjƒ�tj|d�}WdQRXt ƒ�tjtj |d�}WdQRXtjtj |d�}dS)N)rQ) ÚosÚopenrSÚO_RDONLYr*r%ÚENOSYSrrKr,ZSYSTEMrT)rUÚfdrMrNrOr r r Útest_reader_init_path_fd¶s r`cCs@tj|jd�}|�WdQRXtjtƒ�t|ƒWdQRXdS)N)rQ)rrKrSr&r0r#Únext)rUÚjr r r Útest_reader_as_cmÄs   rcc Cs<tj|jd�}|� |jtjƒ|jtjjƒWdQRXdS)N)rQ)rrKrSZmessageid_matchrZSD_MESSAGE_JOURNAL_STARTZSD_MESSAGE_JOURNAL_STOPr )rUrbr r r Útest_reader_messageid_matchÍs rdc Cs@tj|jd�}|�$|jƒ|jtƒ|jtjƒWdQRXdS)N)rQ)rrKrSZ this_bootrDr )rUrbr r r Útest_reader_this_bootÓs  rec Cs@tj|jd�}|�$|jƒ|jtƒ|jtjƒWdQRXdS)N)rQ)rrKrSZ this_machinerDr )rUrbr r r Útest_reader_this_machineÚs  rfcCsBtj|jd�}|�&ttjƒ�|jdƒ}WdQRXWdQRXdS)N)rQZFOOBAR)rrKrSr*r%r^Z query_unique)rUrbÚansr r r Útest_reader_query_uniqueás  rhcCs@tj|jd�}|�$ttjƒ�|jƒ}WdQRXWdQRXdS)N)rQ)rrKrSr*r%r^Zenumerate_fields)rUrbrgr r r Útest_reader_enumerate_fieldsés  ricCs@tj|jd�}|�$ttjƒ�|jƒ}WdQRXWdQRXdS)N)rQ)rrKrSr*r%r^Úhas_runtime_files)rUrbrgr r r Útest_reader_has_runtime_filesñs  rkcCs@tj|jd�}|�$ttjƒ�|jƒ}WdQRXWdQRXdS)N)rQ)rrKrSr*r%r^rj)rUrbrgr r r Ú test_reader_has_persistent_filesøs  rlcCs8ddd„i}tj|j|d�}|jddƒ}|jddƒ}dS)NZxxxcSsdS)NÚyyyr )Úargr r r Úsz(test_reader_converters..)rQÚ converterssabcZzzzs€€)rrKrSZ_convert_field)rUrprbrr r r Útest_reader_convertersÿs    rqcCsBdd„dd„dœ}tj|j|d�}|jddddgdd gd œƒ}dS) NcSsdS)Nrmr )rnr r r ro sz+test_reader_convert_entry..cSsdS)NZYYYr )rnr r r ro s)Úx1Úx2)rQrpsabcs€€sdefs€�)rrZy1rsZy2)rrKrSZ_convert_entry)rUrprbrr r r Útest_reader_convert_entry s rtcCsFtj|jd�}tjƒ}|j|ƒ|jdƒtjdddƒ}|j|ƒdS)N)rQi90i²ér3)rrKrSÚtimeZ seek_realtimeÚdatetime)rUrbZnowZlong_agor r r Útest_seek_realtimes   rxc Cs:ttjƒ�tjdƒ}WdQRX|jdƒ}td|d�dS)Nztest_journal.pyz message... zprinted message...)Úfile)r*r%ÚENOENTrÚstreamÚwriteÚprint)r{Úresr r r Útest_journal_stream"s  r)3Z __future__rÚ contextlibrwr%r6r[rvZuuidÚ tracebackrZsystemdrrZsystemd.journalrr&ZUUIDrDrGrÚcontextmanagerr*r,r/r2r8rBrCrErFrIrJrPrVrWrYrZr`rcrdrerfrhrirkrlrqrtrxrr r r r ÚsV