
    bd+                        d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Z
d dlmZmZ d dlmZ d dlZ ej        d          Z ej        d          Z G d d          Zej        d	             Zej        d
             Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d Z"d Z#d Z$d Z%d Z&d Z'd Z(d Z)d Z*d Z+d Z,d  Z-d! Z.d" Z/d# Z0d$ Z1d% Z2d& Z3dS )'    )print_functionN)journalid128
_make_line 8441372f8dca4ca98694a6091fd8519f 8441370000000000000000001fd85000c                        e Zd Zd Z	 	 ddZdS )
MockSenderc                     g | _         d S N)buf)selfs    ;/usr/lib/python3/dist-packages/systemd/test/test_journal.py__init__zMockSender.__init__   s        Nc                 &   d|z   g}|)t          |d|          }|                    d|z              ||cxu r|cxu r*n n't          j        d          d         d d         \  }}}||                    d|z              |(|                    d	                    |                     ||                    d
|z              |                    d |                                D                        | j                            |           d S )NzMESSAGE=hexMESSAGE_ID=   )limitr      z
CODE_FILE=zCODE_LINE={:d}z
CODE_FUNC=c              3   <   K   | ]\  }}t          ||          V  d S r   r   ).0keyvals      r   	<genexpr>z"MockSender.send.<locals>.<genexpr>*   s0      HHXS#JsC((HHHHHHr   )getattrappend	tracebackextract_stackformatextenditemsr   )	r   MESSAGE
MESSAGE_ID	CODE_FILE	CODE_LINE	CODE_FUNCkwargsargsids	            r   sendzMockSender.send   s9    W$%!UJ77BKK*+++	6666Y66666666.7.EA.N.N.Nq.QRTSTRT.U+Iy) KKy0111 KK(//	::;;; KKy0111HHHHHHHHr   )NNNN)__name__
__module____qualname__r   r-    r   r   r   r      s?           (,7;     r   r   c              #      K   	 d V  d S # t           t          f$ r$}|j        | k    rt          j                      d }~ww xY wr   )OSErrorIOErrorerrnopytestskip)codees     r   skip_oserrorr:   -   sU      W   7d??KMMMs   
 ?:?c               #   \   K   	 d V  d S # t           $ r t          j                     Y d S w xY wr   )
ValueErrorr6   r7   r1   r   r   skip_valueerrorr=   6   sD         s   
 ++c                     t           j        j        }  | t          j                  t           j        k    sJ  | t          j                  t           j        k    sJ  | t          j        dz
            t           j        k    sJ  | t          j        dz             t           j        k    sJ  | t          j        dz
            t           j        k    sJ  | t          j                  t           j        k    sJ  | t          j        dz             t           j	        k    sJ  | t          j
        dz
            t           j	        k    sJ  | t          j
                  t           j	        k    sJ  | t          j
        dz             t           j        k    sJ  | t          j        dz
            t           j        k    sJ  | t          j                  t           j        k    sJ  | t          j        dz             t           j        k    sJ  | t          j                  t           j        k    sJ  | t          j                  t           j        k    sJ  | t          j        dz             t           j        k    sJ d S )N   )r   JournalHandlermap_priorityloggingNOTSET	LOG_DEBUGDEBUGLOG_INFOINFOLOG_WARNINGWARNLOG_ERRERRORLOG_CRITFATALCRITICAL	LOG_ALERT)ps    r   test_prioritiesrQ   =   s;   +A1W^g&777771W]g&777771W]Qg&777771W]Qg&666661W\Ag&666661W\??g&666661W\Ag&999991W\Ag&999991W\??g&999991W\Ago55551W]Qgo55551W]go55551W]Qg&666661W]g&666661Wg&666661W!""g&7777777r   c                  4   ddi} t          j        t                    5  t          j        di |  d d d            n# 1 swxY w Y   t          j        t                    5  t          j                            |            d d d            d S # 1 swxY w Y   d S )Nz X  r   r1   )r6   raisesr<   r   r@   	with_argskws    r   "test_journalhandler_init_exceptionrW   R   s   
B	z	"	" % %$$$$$% % % % % % % % % % % % % % %	z	"	" - -((,,,- - - - - - - - - - - - - - - - - -s!   <A A   BBBc                      ddd} t          j        t          j        fi |  t          j        | d<   t           j                            |            d S )Nr      )XX3level)r   r@   rB   rG   rT   rU   s    r   test_journalhandler_initr]   Y   sP    aB7<..2...,BwK$$R(((((r   c            	         t          j        dt           j        dddd d           } t                      }dd|j        d}t          j        t           j        fi |}|                    |            t          |j	                  dk    sJ d|j	        d	         v sJ d
|j	        d	         v sJ t                      }t
          j        
                    t           j        dd|j        d          }|                    |            t          |j	                  dk    sJ d|j	        d	         v sJ d
|j	        d	         v sJ t
          j        
                                 d S )Ntest-loggertestpathr?   testr   rY   )rZ   r[   sender_functionzX=3r   zX3=4)r\   rZ   r[   rb   )rB   	LogRecordrG   r   r-   r   r@   emitlenr   rT   )recordsenderrV   handlers       r   test_journalhandler_infori   _   sW   }glJ6SWY]^^F\\FaFK	8	8B$W\88R88GLLvz??aFJqM!!!!VZ]""""\\F$..!RSgmgr/s/sttGLLvz??aFJqM!!!!VZ]"""" $$&&&&&r   c            	      ^   t          j        dt           j        dddd d           } t                      }t	          j        t           j        |j                  }|                    |            t          |j	                  dk    sJ t          d |j	        d         D                       sJ d S )Nr_   r`   r?   ra   )rb   c              3   B   K   | ]}|                     d            V  dS )r   N)
startswith)r   ms     r   r   z4test_journalhandler_no_message_id.<locals>.<genexpr>z   s1      FF11<<...FFFFFFr   r   )rB   rc   rG   r   r   r@   r-   rd   re   r   allrf   rg   rh   s      r   !test_journalhandler_no_message_idrp   t   s    }glJ6SWY]^^F\\F$W\6;OOOGLLvz??aFF
1FFFFFFFFFFr   c            	      Z   t          j        dt           j        dddd d           } t                      }t	          j        t           j        |j        t                    }|                    |            t          |j
                  dk    sJ dt          j        z   |j
        d         v sJ d S Nr_   r`   r?   ra   rb   r&   r   r   )rB   rc   rG   r   r   r@   r-   TEST_MIDrd   re   r   r   ro   s      r   )test_journalhandler_message_id_on_handlerru   |   s    }glJ6SWY]^^F\\F$W\6;08: : :GLLvz??a8<'6:a=888888r   c            	      d   t          j        dt           j        dddd d           } t                      }t	          j        t           j        |j        t          j                  }|	                    |            t          |j                  dk    sJ dt          j        z   |j        d         v sJ d S rr   )rB   rc   rG   r   r   r@   r-   rt   r   rd   re   r   ro   s      r   -test_journalhandler_message_id_on_handler_hexrw      s    }glJ6SWY]^^F\\F$W\6;08> > >GLLvz??a8<'6:a=888888r   c            	      x   t          j        dt           j        dddd d           } t          | j        d<   t                      }t          j        t           j        |j        t                    }|
                    |            t          |j                  dk    sJ dt          j        z   |j        d         v sJ d S 	Nr_   r`   r?   ra   r&   rs   r   r   )rB   rc   rG   	TEST_MID2__dict__r   r   r@   r-   rt   rd   re   r   r   ro   s      r   )test_journalhandler_message_id_on_messager|      s    }glJ6SWY]^^F$-FOL!\\F$W\6;08: : :GLLvz??a9=(FJqM999999r   c            	         t          j        dt           j        dddd d           } t          j        | j        d<   t                      }t          j        t           j        |j	        t                    }|                    |            t          |j                  dk    sJ dt          j        z   |j        d         v sJ d S ry   )rB   rc   rG   rz   r   r{   r   r   r@   r-   rt   rd   re   r   ro   s      r   -test_journalhandler_message_id_on_message_hexr~      s    }glJ6SWY]^^F$-MFOL!\\F$W\6;08: : :GLLvz??a9=(FJqM999999r   c                  x   t          j                    } t          j        t           j                  }t          j        t           j                  }t          j        t           j                  }t          j        t           j        t           j        z  t           j        z            }t          j        d          }d S )Nr   )r   Reader
LOCAL_ONLYRUNTIME_ONLYSYSTEM_ONLY)j1j2j3j4j5j6s         r   test_reader_init_flagsr      sz    			B	*	+	+B	,	-	-B	+	,	,B	*W-AAGDWW	X	XB			BBBr   c                 N   t          j        t                    5  t          j        t          j                   d d d            n# 1 swxY w Y   t                      5  t          j        | j        t          j                  }d d d            n# 1 swxY w Y   t                      5  t          j        | j        t          j        t          j        z            }d d d            n# 1 swxY w Y   t          j        | j        t          j        t          j	        z            }d S )N)pathflags)
r6   rS   r<   r   r   OS_ROOTr=   strpathCURRENT_USERr   )tmpdirr   r   r   s       r   test_reader_os_rootr      s   	z	"	" ( (w'''( ( ( ( ( ( ( ( ( ( ( ( ( ( (			 3 3^")/3 3 33 3 3 3 3 3 3 3 3 3 3 3 3 3 3 
		 J J^")/G4H"HJ J JJ J J J J J J J J J J J J J J 
V^%o0CC
E 
E 
EBBBs5   AA	A	&BBB)3C((C,/C,c                     t          j        | j                  }t          j        d| j                   t          j        | j                  }t          j        | j                   d S )Nr   r   )r   r   r   )r   r   r   s      r   test_reader_init_pathr      s\    	V^	,	,	,BN16>****	V^	,	,	,BN''''''r   c                      t          j        t                    5  t          j        dd           d d d            d S # 1 swxY w Y   d S )Nr   r   r6   rS   r3   r   r   r1   r   r    test_reader_init_path_invalid_fdr      s    	w		 # #qr""""# # # # # # # # # # # # # # # # # #   >AAc                      t          j        t                    5  t          j        dd           d d d            d S # 1 swxY w Y   d S )Nr   r   r   r1   r   r   %test_reader_init_path_nondirectory_fdr      s    	w		 " "qq!!!!" " " " " " " " " " " " " " " " " "r   c                 $   t          j        | j        t           j                  }t	          t
          j                  5  t          j        |          }d d d            n# 1 swxY w Y   t          |          g k    sJ t                      5  t          j        t          j        |          }d d d            n# 1 swxY w Y   t          |          g k    sJ t          j        t          j        |          }t          |          g k    sJ d S Nr   )osopenr   O_RDONLYr:   r5   ENOSYSr   r   listr=   SYSTEMr   )r   fdr   r   r   s        r   test_reader_init_path_fdr      sY   		-	-B	el	#	# % %^$$$% % % % % % % % % % % % % % %88r>>>>			 5 5^GN4445 5 5 5 5 5 5 5 5 5 5 5 5 5 588r>>>>	,2	6	6	6B88r>>>>>>s#   A  A$'A$!B;;B?B?c                    t          j        | j                  }|5  |j        rJ 	 d d d            n# 1 swxY w Y   |j        sJ t	          j        t                    5  t          |           d d d            d S # 1 swxY w Y   d S r   )r   r   r   closedr6   rS   r3   nextr   js     r   test_reader_as_cmr      s   FN+++A	
  8              8OOO	w		  Q                 s   
488!A>>BBc                     t          j        | j                  }|5  |                    t          j                   |                    t          j        j                   d d d            d S # 1 swxY w Y   d S r   )r   r   r   messageid_matchr   SD_MESSAGE_JOURNAL_STARTSD_MESSAGE_JOURNAL_STOPr   r   s     r   test_reader_messageid_matchr      s    FN+++A	
 = =	%8999	%7;<<<= = = = = = = = = = = = = = = = = =s   AA..A25A2c                 
   t          j        | j                  }|5  |                                 |                    t                     |                    t          j                   d d d            d S # 1 swxY w Y   d S r   )r   r   r   	this_bootrt   r   r   s     r   test_reader_this_bootr      s    FN+++A	
 " "		H	HL!!!" " " " " " " " " " " " " " " " " "   AA88A<?A<c                 
   t          j        | j                  }|5  |                                 |                    t                     |                    t          j                   d d d            d S # 1 swxY w Y   d S r   )r   r   r   this_machinert   r   r   s     r   test_reader_this_machiner      s    FN+++A	
 % %		x   	x|$$$% % % % % % % % % % % % % % % % % %r   c                 P   t          j        | j                  }|5  t          t          j                  5  |                    d          }d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          |t                    sJ |t                      k    sJ d S )Nr   FOOBAR)	r   r   r   r:   r5   r   query_unique
isinstancesetr   r   anss      r   test_reader_query_uniquer      s   FN+++A	
 + +%,'' 	+ 	+..**C	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	++ + + + + + + + + + + + + + + c3#%%<<<<<<s4   A0AA0A	A0 A	!A00A47A4c                 N   t          j        | j                  }|5  t          t          j                  5  |                                }d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          |t                    sJ |t                      k    sJ d S r   )	r   r   r   r:   r5   r   enumerate_fieldsr   r   r   s      r   test_reader_enumerate_fieldsr      s   FN+++A	
 ' '%,'' 	' 	'$$&&C	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	'' ' ' ' ' ' ' ' ' ' ' ' ' ' ' c3#%%<<<<<<4   A/AA/A	A/A	 A//A36A3c                    t          j        | j                  }|5  t          t          j                  5  |                                }d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |du sJ d S Nr   Fr   r   r   r:   r5   r   has_runtime_filesr   s      r   test_reader_has_runtime_filesr          FN+++A	
 ( (%,'' 	( 	(%%''C	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(( ( ( ( ( ( ( ( ( ( ( ( ( ( ( %<<<<<<r   c                    t          j        | j                  }|5  t          t          j                  5  |                                }d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |du sJ d S r   r   r   s      r    test_reader_has_persistent_filesr     r   r   c                     dd i}t          j        | j        |          }|                    dd          }|dk    sJ |                    dd          }|dk    sJ d S )Nxxxc                     dS Nyyyr1   args    r   <lambda>z(test_reader_converters.<locals>.<lambda>  s    e r   r   
converters   abcr   zzz   )r   r   r   _convert_fieldr   r   r   r   s       r   test_reader_convertersr     st    ++,JFNzBBBA


5&
)
)C%<<<<


5+
.
.C+r   c                     d d d}t          j        | j        |          }|                    ddddgddgd	          }|d
dddgddgd	k    sJ d S )Nc                     dS r   r1   r   s    r   r   z+test_reader_convert_entry.<locals>.<lambda>      U r   c                     dS )NYYYr1   r   s    r   r   z+test_reader_convert_entry.<locals>.<lambda>  r   r   )x1x2r   r   r   s   defs   )r   y1r   y2r   r   )r   r   r   _convert_entryr   s       r   test_reader_convert_entryr     s    ****, ,JFNzBBBA


6#.$*F#3$/#=? ? @ @C %% %.&46 6 6 6 6 6 6 6r   c                 X   t          j        | j                  }|                    dd          }t          j        dk    r	|j        J |                    dd          }t          j        dk    r	|j        J |                    dd          }t          j        dk    r	|j        J d S d S )Nr   _SOURCE_REALTIME_TIMESTAMPl   ZKT. )r   __REALTIME_TIMESTAMPCOREDUMP_TIMESTAMP)r   r   r   r   sysversion_infotzinfo)r   r   r   s      r   test_reader_convert_timestampsr   &  s    FN+++A


79I
J
JC
4z%%%


13C
D
DC
4z%%%


/1A
B
BC
4z%%%  %%r   c                 
   t          j        | j                  }t          j                    }|                    |           |                    d           t          j        ddd          }|                    |           d S )Nr   i90  i     rY   )r   r   r   timeseek_realtimedatetime)r   r   nowlong_agos       r   test_seek_realtimer   5  sq    FN+++A
)++COOCOOE q!,,HOOHr   c                      t          t          j                  5  t          j        d          } d d d            n# 1 swxY w Y   |                     d          }|dv sJ t          d|            d S )Nztest_journal.pyzmessage...
)   Nzprinted message...)file)r:   r5   ENOENTr   streamwriteprint)r   ress     r   test_journal_streamr   @  s    	el	#	# 3 3 1223 3 3 3 3 3 3 3 3 3 3 3 3 3 3 ,,~
&
&C*	
V,,,,,,s   ;??)4
__future__r   
contextlibr   r5   rB   r   r   uuidr   r    systemdr   r   systemd.journalr   r6   UUIDrt   rz   r   contextmanagerr:   r=   rQ   rW   r]   ri   rp   ru   rw   r|   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r1   r   r   <module>r     s   % % % % % %        				   



     " " " " " " " " & & & & & & 49788DI899	       2      8 8 8*- - -) ) )' ' '*G G G9 9 99 9 9: : :: : :  
E 
E 
E( ( (# # #" " "    = = =" " "% % %          6 6 6& & &	 	 	- - - - -r   