
    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& Z3y)'    )print_functionN)journalid128
_make_line 8441372f8dca4ca98694a6091fd8519f 8441370000000000000000001fd85000c                       e Zd Zd Z	 	 ddZy)
MockSenderc                     g | _         y N)buf)selfs    ;/usr/lib/python3/dist-packages/systemd/test/test_journal.py__init__zMockSender.__init__   s	        Nc                    d|z   g}|!t        |d|      }|j                  d|z          ||cxu r|cxu r#n n t        j                  d      d   d d \  }}}||j                  d|z          | |j                  d	j	                  |             ||j                  d
|z          |j                  d |j                         D               | j                  j                  |       y )NzMESSAGE=hexMESSAGE_ID=   )limitr      z
CODE_FILE=zCODE_LINE={:d}z
CODE_FUNC=c              3   :   K   | ]  \  }}t        ||        y wr   r   ).0keyvals      r   	<genexpr>z"MockSender.send.<locals>.<genexpr>*   s     HXS#JsC(Hs   )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   s     W$%!UJ7BKK*+	6Y6.7.E.EA.Nq.QRTST.U+Iy) KKy01 KK(//	:; KKy01HHHr   )NNNN)__name__
__module____qualname__r   r-    r   r   r   r      s     (,7;r   r   c              #      K   	 d  y # t         t        f$ r)}|j                  | k(  rt        j                           d }~ww xY wwr   )OSErrorIOErrorerrnopytestskip)codees     r   skip_oserrorr:   -   s9     W 77d?KKMs"   A	 AA$<AAc               #   \   K   	 d  y # t         $ r t        j                          Y y w xY wwr   )
ValueErrorr6   r7   r1   r   r   skip_valueerrorr=   6   s%      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 y )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W^^g&7&7777W]]g&7&7777W]]Qg&7&7777W]]Qg&6&6666W\\Ag&6&6666W\\?g&6&6666W\\Ag&9&9999W\\Ag&9&9999W\\?g&9&9999W\\Agoo555W]]Qgoo555W]]goo555W]]Qg&6&6666W]]g&6&6666Wg&6&6666W!"g&7&7777r   c                  ,   ddi} t        j                  t              5  t        j                  di |  d d d        t        j                  t              5  t        j                  j                  |        d d d        y # 1 sw Y   KxY w# 1 sw Y   y xY w)Nz X  r   r1   )r6   raisesr<   r   r@   	with_argskws    r   "test_journalhandler_init_exceptionrW   R   sw    
B	z	" %$$%	z	" -((,- -% %- -s   A> B
>B
Bc                      ddd} t        j                  t        j                  fi |  t        j                  | d<   t         j                  j	                  |        y )Nr      )XX3level)r   r@   rB   rG   rT   rU   s    r   test_journalhandler_initr]   Y   sC    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 |}|j                  |        t        |j                        dk(  sJ d|j                  d	   v sJ d
|j                  d	   v sJ t               }t
        j                  j                  t         j                  dd|j                  d      }|j                  |        t        |j                        dk(  sJ d|j                  d	   v sJ d
|j                  d	   v sJ t
        j                  j                          y )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   _   s6   }gllJ6SWY]^F\FaFKK	8B$$W\\8R8GLLvzz?aFJJqM!!!VZZ]"""\F$$..!RSgmgrgr/stGLLvzz?aFJJqM!!!VZZ]""" $$&r   c            	      `   t        j                  dt         j                  dddd d       } t               }t	        j
                  t         j                  |j                        }|j                  |        t        |j                        dk(  sJ t        d |j                  d   D              sJ y )Nr_   r`   r?   ra   )rb   c              3   @   K   | ]  }|j                  d          yw)r   N)
startswith)r   ms     r   r   z4test_journalhandler_no_message_id.<locals>.<genexpr>z   s     F11<<..Fs   r   )rB   rc   rG   r   r   r@   r-   rd   re   r   allrf   rg   rh   s      r   !test_journalhandler_no_message_idrp   t   s    }gllJ6SWY]^F\F$$W\\6;;OGLLvzz?aF

1FFFFr   c            	      p   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 y 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    }gllJ6SWY]^F\F$$W\\6;;08:GLLvzz?a8<<'6::a=888r   c            	         t        j                  dt         j                  dddd d       } t               }t	        j
                  t         j                  |j                  t        j                        }|j                  |        t        |j                        dk(  sJ dt        j                  z   |j                  d   v sJ y rr   )rB   rc   rG   r   r   r@   r-   rt   r   rd   re   r   ro   s      r   -test_journalhandler_message_id_on_handler_hexrw      s    }gllJ6SWY]^F\F$$W\\6;;08>GLLvzz?a8<<'6::a=888r   c            	         t        j                  dt         j                  dddd d       } t        | j                  d<   t               }t        j                  t         j                  |j                  t              }|j                  |        t        |j                        dk(  sJ dt        j                  z   |j                  d   v sJ y 	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    }gllJ6SWY]^F$-FOOL!\F$$W\\6;;08:GLLvzz?a9==(FJJqM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              }|j                  |        t        |j                        dk(  sJ dt        j                  z   |j                  d   v sJ y 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    }gllJ6SWY]^F$-MMFOOL!\F$$W\\6;;08:GLLvzz?a9==(FJJqM999r   c                     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      }y )Nr   )r   Reader
LOCAL_ONLYRUNTIME_ONLYSYSTEM_ONLY)j1j2j3j4j5j6s         r   test_reader_init_flagsr      s    		B	**	+B	,,	-B	++	,B	**W-A-AAGDWDWW	XB		Br   c                    t        j                  t              5  t        j                  t        j
                         d d d        t               5  t        j                  | j                  t        j
                        }d d d        t               5  t        j                  | j                  t        j
                  t        j                  z        }d d d        t        j                  | j                  t        j
                  t        j                  z        }y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   bxY w)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 
	 J^^")//G4H4H"HJJ 
V^^%oo0C0CC
EB( (3 3J Js$   $D0D(AD4D%(D14D=c                    t        j                  | j                        }t        j                  d| j                         t        j                  | j                        }t        j                  | j                         y )Nr   r   )r   r   r   )r   r   r   s      r   test_reader_init_pathr      sH    	V^^	,BNN16>>*	V^^	,BNN'r   c                      t        j                  t              5  t        j                  dd       d d d        y # 1 sw Y   y xY w)Nr   r   r6   rS   r3   r   r   r1   r   r    test_reader_init_path_invalid_fdr      s1    	w	 #qr"# # #	   ;Ac                      t        j                  t              5  t        j                  dd       d d d        y # 1 sw Y   y xY w)Nr   r   r   r1   r   r   %test_reader_init_path_nondirectory_fdr      s1    	w	 "qq!" " "r   c                    t        j                  | j                  t         j                        }t	        t
        j                        5  t        j                  |      }d d d        t              g k(  sJ t               5  t        j                  t        j                  |      }d d d        t              g k(  sJ t        j                  t        j                  |      }t        |      g k(  sJ y # 1 sw Y   xY w# 1 sw Y   [xY wNr   )osopenr   O_RDONLYr:   r5   ENOSYSr   r   listr=   SYSTEMr   )r   fdr   r   r   s        r   test_reader_init_path_fdr      s    		-B	ell	# %^^$%8r>>		 5^^GNN458r>>	,,2	6B8r>>% %5 5s   C5&D5C>D
c                    t        j                  | j                        }|5  |j                  rJ 	 d d d        |j                  sJ t	        j
                  t              5  t        |       d d d        y # 1 sw Y   ExY w# 1 sw Y   y xY wr   )r   r   r   closedr6   rS   r3   nextr   js     r   test_reader_as_cmr      sr    FNN+A	
 88|888O8	w	 Q 	  s   A7"B7B Bc                    t        j                  | j                        }|5  |j                  t        j
                         |j                  t        j                  j                         d d d        y # 1 sw Y   y xY wr   )r   r   r   messageid_matchr   SD_MESSAGE_JOURNAL_STARTSD_MESSAGE_JOURNAL_STOPr   r   s     r   test_reader_messageid_matchr      sZ    FNN+A	
 =	%889	%77;;<= = =s   A	A55A>c                     t        j                  | j                        }|5  |j                          |j                  t               |j                  t        j
                         d d d        y # 1 sw Y   y xY wr   )r   r   r   	this_bootrt   r   r   s     r   test_reader_this_bootr      sQ    FNN+A	
 "		H	HLL!" " "   AA11A:c                     t        j                  | j                        }|5  |j                          |j                  t               |j                  t        j
                         d d d        y # 1 sw Y   y xY wr   )r   r   r   this_machinert   r   r   s     r   test_reader_this_machiner      sR    FNN+A	
 %		x 	x||$% % %r   c                 2   t        j                  | j                        }|5  t        t        j
                        5  |j                  d      }d d d        d d d        t        t              sJ |t               k(  sJ y # 1 sw Y   3xY w# 1 sw Y   7xY w)Nr   FOOBAR)	r   r   r   r:   r5   r   query_unique
isinstancesetr   r   anss      r   test_reader_query_uniquer      s{    FNN+A	
 +%,,' 	+..*C	++ c3#%<<	+ 	++ +s"   BBBB
	BBc                 0   t        j                  | j                        }|5  t        t        j
                        5  |j                         }d d d        d d d        t        t              sJ |t               k(  sJ y # 1 sw Y   3xY w# 1 sw Y   7xY wr   )	r   r   r   r:   r5   r   enumerate_fieldsr   r   r   s      r   test_reader_enumerate_fieldsr      s{    FNN+A	
 '%,,' 	'$$&C	'' c3#%<<	' 	'' 's"   BB B B		BBc                     t        j                  | j                        }|5  t        t        j
                        5  |j                         }d d d        d d d        du sJ y # 1 sw Y   xY w# 1 sw Y   xY wNr   Fr   r   r   r:   r5   r   has_runtime_filesr   s      r   test_reader_has_runtime_filesr      i    FNN+A	
 (%,,' 	(%%'C	(( %<<	( 	(( ("   A1A%A1%A.	*A11A:c                     t        j                  | j                        }|5  t        t        j
                        5  |j                         }d d d        d d d        du sJ y # 1 sw Y   xY w# 1 sw Y   xY wr   r   r   s      r    test_reader_has_persistent_filesr     r   r   c                     dd i}t        j                  | j                  |      }|j                  dd      }|dk(  sJ |j                  dd      }|dk(  sJ y )Nxxxc                      yNyyyr1   args    r   <lambda>z(test_reader_converters.<locals>.<lambda>      r   r   
converters   abcr   zzz   )r   r   r   _convert_fieldr   r   r   r   s       r   test_reader_convertersr     s_    +,JFNNzBA


5&
)C%<<


5+
.C+r   c                     d d d}t        j                  | j                  |      }|j                  ddddgddgd	      }|d
dddgddgd	k(  sJ y )Nc                      yr   r1   r   s    r   r   z+test_reader_convert_entry.<locals>.<lambda>  r   r   c                      y)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FNNzBA


6#.$*F#3$/#=? @C %% %.&46 6 6 6r   c                 x   t        j                  | j                        }|j                  dd      }t        j
                  dk\  r|j                  J |j                  dd      }t        j
                  dk\  r|j                  J |j                  dd      }t        j
                  dk\  r|j                  J y y )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    FNN+A


79I
JC
4zz%%%


13C
DC
4zz%%%


/1A
BC
4zz%%%  r   c                     t        j                  | j                        }t        j                         }|j	                  |       |j	                  d       t        j
                  ddd      }|j	                  |       y )Nr   i90  i     rY   )r   r   r   timeseek_realtimedatetime)r   r   nowlong_agos       r   test_seek_realtimer   5  sW    FNN+A
))+COOCOOE  q!,HOOHr   c                      t        t        j                        5  t        j                  d      } d d d         j                  d      }|dv sJ t        d|        y # 1 sw Y   .xY w)Nztest_journal.pyzmessage...
)   Nzprinted message...)file)r:   r5   ENOENTr   streamwriteprint)r   ress     r   test_journal_streamr   @  s[    	ell	# 3 123 ,,~
&C*	
V,3 3s   AA&)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   %     	   
  " & 49978DII89	 2    8*-)'*G99::
E(#"="%6&	-r   