HOME


Mini Shell 1.0
Redirecting to https://devs.lapieza.net/iniciar-sesion Redirecting to https://devs.lapieza.net/iniciar-sesion.
DIR: /proc/1991109/root/usr/lib/python3/dist-packages/fail2ban/tests/__pycache__/
Upload File :
Current File : //proc/1991109/root/usr/lib/python3/dist-packages/fail2ban/tests/__pycache__/utils.cpython-311.pyc
�

�Bd�u��<�dZdZdZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZddlmZddlmZddlmZmZmZmZdd	lmZmZdd
lmZddlmZddlm Z dd
l!m!Z!ed��Z"dZ#ej$�%dd��Z&e&s8ej'�(ej'�)dd����rdZ&ndZ&ej'�(ej'�)e&d����Z*ej+dej'�,ej'�,ej'�,ej'�-e.����������Gd�dej/��Z0d2d�Z1d�Z2Gd�de0��Z3d�Z4d�Z5d�Z6d�Z7ej$�%d d��Z8d!�Z9d"�Z:d3d#�Z;ddl<Z<ddl=Z=e>ej?d$��sd4d%�Z@e@ej?_@d&d'eAdfd(�ZBeBej?_Be>ej?d)��sd*�ZCeCej?_D	d4d,�ZEeEej?_Ed4d-�ZFeFej?_Fej?jGZHd.�ZIej?jJZKd/�ZLeIej?_GeLej?_JGd0�d1ej?��ZMejNZNdS)5zYaroslav Halchenkoz%Copyright (c) 2013 Yaroslav Halchenko�GPL�N)�StringIO��wraps�)�	getLogger�str2LogLevel�getVerbosityFormat�
uni_decode)�IPAddr�DNSUtils)�MyTime)�Utils)�asyncserver)�version�fail2bani �B�FAIL2BAN_CONFIG_DIR�configz
fail2ban.confz
/etc/fail2ban�
PYTHONPATHc��eZdZd�ZdS)�DefaultTestOptionsc�*�ddddddddddd�
|_dS)NTF)
�	log_level�	verbosity�log_lazy�
log_traceback�full_traceback�fast�	memory_db�no_gamin�
no_network�	negate_re)�__dict__��selfs �6/usr/lib/python3/dist-packages/fail2ban/tests/utils.py�__init__zDefaultTestOptions.__init__Hs,���4�T��D��u�%��U�	��$�-�-�-�N)�__name__�
__module__�__qualname__r'�r(r&rrGs#����������r(r�c��tj}tjdtjdz|zdt
z���}|�|ddddd�	��|d
dddd
���|dddtdd���|ddddd���|ddddd���|dddd d!���|d"d#dd$d%���|d&d'dd(d)���|d*d+dd,d-���|d.d/dd0�1��|d2dd3�1��g��|S)4Nz%s [OPTIONS] [regexps]
rz%prog )�usagerz-lz--log-levelrz4Log level for the logger to use during running tests)�dest�default�helpz-v�countrzIncrease verbosity)�actionr0r1r2z--verbosity�storez'Set numerical level of verbosity (0..4))r4r0�typer1r2z--log-direct�store_falserTz!Prevent lazy logging inside testsz-nz--no-network�
store_truer!z)Do not run tests that require the network)r4r0r2z-gz
--no-gaminr z'Do not run tests that require the gaminz-mz--memory-dbrz/Run database tests using memory instead of filez-fz--fastrzQTry to increase speed of the tests, decreasing of wait intervals, memory databasez-iz--ignorer"zAnegate [regexps] filter to ignore tests matched specified regexpsz-tz--log-tracebackz.Enrich log-messages with compressed tracebacks)r4r2z--full-tracebackzBEither to make the tracebacks full, not compressed (as by default))�optparse�Option�OptionParser�sys�argvr�add_options�int)�docr:�ps   r&�getOptParserrBSs���
�/��
��
$�s�x��{�
2�S�
8��w�� � � ������&��}���A�C�C�C�	�&��g�K���!�!�!�	�&��w�[�s��4�6�6�6�	�&��
���.�0�0�0�	�&��~�l��6�8�8�8�	�&��|�L��4�6�6�6�	�&��}�\��<�>�>�>�	�&��x���^�`�`�`�	�&��z�,��N�P�P�P�	�&�� ��;�=�=�=��&�	�L�O�Q�Q�Q�A"�"�"�"�F	
�r(c	��d}|j�/t|j��}t�|��n$t�tj��tj|_|j}|��|�dny|tjkrdng|tj	krdnU|ttjtj��krdn+|ttj
tj��krdnd}||_t	jt j��}d}|jrddlm}|jrdpd	|z}ntj}t/||��}|�||����t�|��|jdkrFt5d
t6�dt9t j���dd
���d���|S)N���rrz %(message)s)�FormatterWithTraceBackz %(tb)sz %(tbc)sz	Fail2ban z test suite. Python �
r-z. Please wait...)rr	�logSys�setLevel�logging�CRITICAL�levelr�
HEAVYDEBUG�DEBUG�min�INFO�NOTICE�WARNING�ERROR�
StreamHandlerr<�stdoutr�helpersrGr�	Formatterr
�setFormatter�
addHandler�printr�str�replace)�opts�llevrrV�fmtrXs      r&�initProcessras������N��	�d�n�	%�	%�$��/�/�$�����
	�/�/�'�"�#�#�#��,����^��
����1�1���"�"�"�1�1���
���1�1���G�L�'�.�1�1�1�1�1�1���G�O�W�]�3�3�3�3�1�1��
��$�.��
��
�
+�
+������ �;�;�;�;�;�;�	
�	�	*��	8�j�C�?�#�#���)��)�S�)�)�����Y�Y�s�^�^�$�$�$����6����	�N�a����%��w�w��C�K� � �(�(��r�2�2�2�2�
4�6�6�6�	
�r(c�<�eZdZdZdZd�Zd�Zd�Zd�Zd�Z	dd	�Z
d
S)�F2B�<�c�\�|j|_|jrd|_d|_i|jd<dS)NT�share_config)r#rrr )r%r^s  r&r'zF2B.__init__�s5���-�$�-�	�Y���4�>��4�=�"$�$�-����r(c��dS�Nr,r$s r&�
SkipIfFastzF2B.SkipIfFast�����$r(c��dSrir,r$s r&�SkipIfNoNetworkzF2B.SkipIfNoNetwork�rkr(c��ts�|�d��rtjd���dD]�}|�|��}|��tj�|��ddkr|dz
}tj�tj�t|dz|����stjd	|�d
|�������dSdS)z4Helper to check action/filter config is available
		�stockz/Skip test because of missing stock-config files)r4�filterNrDr-z.confz.dzSkip test because of missing z-config for )
�STOCK�get�unittest�SkipTest�os�path�splitext�exists�join�
CONFIG_DIR)r%�kwargs�t�vs    r&�SkipIfCfgMissingzF2B.SkipIfCfgMissing�s���
�W��j�j����O�
�
�M�
N�
N�N� �W�W�q��
�
�1�
�
�A��y�(�	�w������1���#�#�Q�'�\�Q�
�7�>�>�"�'�,�,�z�1�T�6�1�=�=�>�>�W����PQ�PQ�PQ�ST�ST�U�V�V�V�W�W�W�W�Wr(c����fd�}|S)z>Helper decorator to check action/filter config is available
		c�@���t�����fd���}|S)Nc�H��tjjdi����|g|�Ri|��S)Nr,)rsrcr~)r%�argsr{�decargs�fs   ��r&�wrapperz?F2B.skip_if_cfg_missing.<locals>._deco_wrapper.<locals>.wrapper�s<����L�!�,�,�G�,�,�,��1�T�#�D�#�#�#�F�#�#�#r(r)r�r�r�s` �r&�
_deco_wrapperz.F2B.skip_if_cfg_missing.<locals>._deco_wrapper�s9����	�!�H�H�$�$�$�$�$�
�H�$��>r(r,)r%r�r�s ` r&�skip_if_cfg_missingzF2B.skip_if_cfg_missing�s$��������
�r(Tc��t|t��r	|r|j}|jr't|t��rt|��dz}|S)N�
)�
isinstance�bool�MAX_WAITTIMErr?�float)r%�wtimes  r&�maxWaitTimezF2B.maxWaitTime�sU����t��������5�
�Y��:�e�S�)�)����<�<�"��5�	�,r(N�T)r)r*r+r��MID_WAITTIMEr'rjrmr~r�r�r,r(r&rcrc�s�����������%�%�%�������W�W�W�	�	�	������r(rcc�<��t����fd���}|S)z�Helper decorator to create a temporary directory

	Directory gets removed after function returns, regardless
	if exception was thrown of not
	c���tjd���}	�||g|�Ri|��tj|��S#tj|��wxYw)Nzf2b-temp)�prefix)�tempfile�mkdtemp�shutil�rmtree)r%r�r{�tmpr�s    �r&r�zwith_tmpdir.<locals>.wrapper�se�����
�+�+�+�#��
�!�D�#�
'��
'�
'�
'��
'�
'�
�=�������6�=��������s	�9�Ar�r�r�s` r&�with_tmpdirr��s5�����(�(������(��	�r(c�<��t����fd���}|S)z@Helper decorator to execute test in alternate (fixed) test time.c�|��t��	�|g|�Ri|��t��S#t��wxYwri)�setUpMyTime�tearDownMyTime)r%r�r{r�s   �r&r�zwith_alt_time.<locals>.wrapper�sO���
�-�-�-��
�!�D�
"�4�
"�
"�
"�6�
"�
"�������>�������s�+�;rr�s` r&�
with_alt_timer��s3�����(�(������(��	�r(c����|stt����}t|��t_tjjr9dt
_dt
_dt
_d�}|tj_	nAdt
_dt
_dt
_tj��fd�}|t_tjjrd�}|tj_
d	tjd
<tj��t#jt&��t(j}d�|_|�dd
���t1d��D]f}|�d|zd��|�d|zd��|�d|zd��|�d|zd���g|�dd��|�dd��tjj�rf|�dd��|�dd��|�dd��t(j}d�|_dt3��fdt3��fdt3��fdt3��fd t3��fd!t3��fd"t3t7d#��t7d$��g��fd%t3t7d#��t7d$��g��ffD]}|j|��
tjjr@t)j��D].}|�|t)jd&�����+dSdSdS)'Ng{�G�zd?g����Mb@?g-C��6?c�*�tjd���)NzSkip test because of "--fast"�rsrtr,r(r&�F2B_SkipIfFastz!initTests.<locals>.F2B_SkipIfFasts��	�	�:�	;�	;�;r(g�������?g{�G�zt?c�N��|dkrtd|z����|��dS)Ng�?zT[BAD-CODE] To long sleep interval: %s, try to use conditional Utils.wait_for instead)�
ValueError)r}�
_org_sleeps �r&�
_new_sleepzinitTests.<locals>._new_sleeps2����$�h�h�
�k�no�o�
p�
p�p�
�:�a�=�=�=�=�=r(c�*�tjd���)Nz#Skip test because of "--no-network"r�r,r(r&�F2B_SkipIfNoNetworkz&initTests.<locals>.F2B_SkipIfNoNetworks��	�	�@�	A�	A�Ar(zCET-01CEST-02,M3.5.0,M10.5.0�TZc�6�t�d��S)Nz.clear CACHE_ipToName is disabled in test suite�rI�warnr,r(r&�<lambda>zinitTests.<locals>.<lambda>/s��6�;�;�O�P�P�r(i'i,)�maxCount�maxTime�z
192.0.2.%sz
198.51.100.%sz203.0.113.%sz2001:db8::%sz	test-hostz2001:db8::ffffz
test-otherz
87.142.124.10z192.0.2.888z8.8.4.4z
dns.googlec�6�t�d��S)Nz.clear CACHE_nameToIp is disabled in test suiter�r,r(r&r�zinitTests.<locals>.<lambda>As��F�K�K� P�Q�Q�r(z999.999.999.999z
abcdef.abcdefz
192.168.0.z
failed.dns.chz!doh1.2.3.4.buga.xxxxx.yyy.invalidz1.2.3.4.buga.xxxxx.yyy.invalidzexample.comz"2606:2800:220:1:248:1893:25c8:1946z
93.184.216.34zwww.example.com�	localhost)rarrcrsrr�DEFAULT_SLEEP_TIME�DEFAULT_SLEEP_INTERVAL�DEFAULT_SHORT_INTERVALrj�time�sleepr!rmru�environ�tzsetr�setAlternateNow�TEST_NOWr
�CACHE_ipToName�clear�
setOptions�range�set�CACHE_nameToIpr�getSelfNames�dnsToIp)r^r�r�r��c�ir�s      @r&�	initTestsr�sK����+�	�'�)�)�	*�	*�$��D�	�	����L���$�%��!'�%��!'�%��<�<�<�*�(�,���#�%��!&�%��!'�%���z�*�������$�*��L��5�B�B�B�!4�(�,��3���D����������!�!�!����P�P������u�d��+�+�+�
��*�*�(�(�Q��%�%��q��$�����%�%��!��T�"�"�"��%�%����D�!�!�!��%�%����;�'�'�'�'������&�&�&������$�$�$��L��,��%�%�
�t�����%�%�	�<� � � ��%�%�	�<� � � ���!�Q�Q�!�'��s�u�u���S�U�U���#�%�%���S�U�U��'����/�$�c�e�e�,��3��C�D�D�f�_�F]�F]�^�_�_�`��s�F�#G�H�H�&�Q`�Ja�Ja�b�c�c�d�	�

�

�a�	�1�5�!�9�9�9�
�\��,��!�#�#�,�,�q��E�E�!�X�
�k�
*�
*�+�+�+�+�-,�,�(,�,�,�,r(c��dSrir,r,r(r&�
mtimesleepr�Ss	���r(r�c�8�tjt��dSri)r�setTimer�r,r(r&r�r�[s���������r(c��dt_dSri)r�myTimer,r(r&r�r�as
������r(c
�X����t���ddlm}ddlm}ddlm}ddlm}ddlm}ddlm}ddlm}dd	lm	}	dd
lm
}
ddlm}ddlm}dd
lm
}
ddlm}ddlm}ddlm}ddlm}ddlm}�st'j��}n&G���fd�dt&j������}|�t'j|j����|�t'j|j����|�t'j|j����|�t'j|j����|�t'j|j����|�t'j|
j����|�t'j|j����|�t'j|j����|�t'j|j����|�t'j|j ����|�t'j|j����	ddl!}|�t'j|j"����n#tF$rYnwxYw|�t'j|j$����|�t'j|j%����|�t'j|j&����|�t'j|j'����|�t'j|j(����|�t'j|j)����|�t'j|j*����|�t'j|j+����|�t'j|
j,����|�t'j|
j-����|�t'j|
j.����|�t'j|
j/����|�t'j|j0����|�t'j|j1����|�t'j|j2����|�t'j|j3����|�t'j|j4����|�t'j|j5����|�t'j|j6����|�t'j|j7����|�t'j|j8����|�t'j|j9����|�t'j|j:����|�t'j|j;����|�t'j|j<����|�t'j|j����|�t'j|	j=����|�t'j|	j>����|�t'j|j?����|�t'j|j@����|�t'j|jA����|�t'j|jB����t'jC��}ddlmD}t�jFt�jG�Ht�jG�I|jJ������D]�}|�Kd��rj|�Ld��rU|�|�M|jN�dt�jG�O|��d��������ddlPmQ}|g}	t&jRjSst&jRjTr3tGdt&jRjS�dt&jRjT�����ddlUmV}|�W|��n4#tF$r'}t��Yd|z��Yd}~nd}~wwxYw	dd lZm[}|�W|��n4#tF$r'}t��Yd!|z��Yd}~nd}~wwxYw|D]<}|�t'j|�\|�������=	dd"l]m^}|�t'j|�_|������n4#tF$r'}t��Yd#|z��Yd}~nd}~wwxYw|�t'j|j`����|S)$NrD)�banmanagertestcase)�clientbeautifiertestcase)�clientreadertestcase)�tickettestcase)�failmanagertestcase)�filtertestcase)�servertestcase)�datedetectortestcase)�actiontestcase)�actionstestcase)�sockettestcase)�misctestcase)�databasetestcase)�observertestcase)�samplestestcase)�fail2banclienttestcase)�fail2banregextestcasec�<���eZdZd��D��Z���fd�Z�xZS)�&gatherTests.<locals>.FilteredTestSuitec�6�g|]}tj|����Sr,)�re�compile)�.0�rs  r&�
<listcomp>z1gatherTests.<locals>.FilteredTestSuite.<listcomp>s ��.�.�.��r�z�!�}�}�.�.�.r(c�h��g}|D]�}t|tj��r|�|���2t	|��}|jD]:}|�|��}�	js|rn|s|�|��n�;��|D]%}t�|���|���&dSri)
r�rs�	TestSuite�addTestr\�_regexps�searchr"�append�super)
r%�suite�matched�test�sr��m�FilteredTestSuite�	__class__r^s
       ���r&r�z.gatherTests.<locals>.FilteredTestSuite.addTest�s�����G��
�
���4��+�,�,��
�l�l�4�����	�T���Q��m�
�
��
�(�(�1�+�+�a��>�
�!�
�
�1�
��~�~�d�����u����2�2��
��d�#�#�+�+�D�1�1�1�1�2�2r()r)r*r+r�r��
__classcell__)r�r�r^�regexpss@���r&r�r�~sV��������.�.�g�.�.�.�8�2�2�2�2�2�2�2�2�2�2�2r(r�r)�action_d�test_z.py�.r)�
FilterPollzSkip, fast: z, no_gamin: )�FilterGaminz2Skipping gamin backend testing. Got exception '%s')�FilterPyinotifyz9I: Skipping pyinotify backend testing. Got exception '%s')�
FilterSystemdz7I: Skipping systemd backend testing. Got exception '%s')ar�r-r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rsr�r��	makeSuite�Transmitter�	JailTests�
RegexTests�LoggingTests�ServerConfigReaderTests�CommandActionTest�ExecuteActions�TicketTests�
AddFailure�FailmanagerComplex�dns�StatusExtendedCymruInfo�ImportError�BeautifierTest�ConfigReaderTest�JailReaderTest�FilterReaderTest�JailsReaderTest�JailsReaderTestCache�Socket�
ClientMisc�HelpersTest�	SetupTest�TestsUtilsTest�
MyTimeTest�DatabaseTest�ObserverTest�BanTimeIncr�
BanTimeIncrDB�IgnoreIP�BasicFilter�LogFile�LogFileMonitor�LogFileFilterPoll�IgnoreIPDNS�GetFailures�
DNSUtilsTests�DNSUtilsNetworkTests�DateDetectorTest�CustomDateFormatsTest�FilterSamplesRegex�Fail2banClientTest�Fail2banServerTest�Fail2banRegexTest�
TestLoaderr�ru�listdirrv�abspath�dirname�__file__�
startswith�endswith�loadTestsFromNamer)rw�server.filterpollr�rcrr �server.filtergaminr�r�rI�warning�server.filterpyinotifyr��get_monitor_failures_testcase�server.filtersystemdr��%get_monitor_failures_journal_testcase�TransmitterLogging) r�r^r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r��testsr�
testloaderr��file_r��filtersr��er��Filter_r�r�s ``                             @r&�gatherTestsrCes�
�����
�4����"�!�!�!�!�!�'�'�'�'�'�'�#�#�#�#�#�#�������"�"�"�"�"�"�������������#�#�#�#�#�#�������������������������������������������%�%�%�%�%�%�$�$�$�$�$�$���
�
�
�
�%�%�2�2�2�2�2�2�2�2�2�(�,�2�2�2�(�
�
�
�%����x�!�.�"<�=�=�>�>�>����x�!�.�":�;�;�<�<�<����x�!�.�";�<�<�=�=�=����x�!�.�"=�>�>�?�?�?����x�!�.�"H�I�I�J�J�J����x�!�.�"B�C�C�D�D�D����x�!�/�"@�A�A�B�B�B����x�!�.�"<�=�=�>�>�>����x�!�"5�"@�A�A�B�B�B����x�!�"5�"H�I�I�J�J�J����x�!�"4�"?�@�@�A�A�A���*�*�*��-�-��"�#5�#M�N�N�O�O�O�O�������$��������x�!�":�"I�J�J�K�K�K����x�!�"6�"G�H�H�I�I�I����x�!�"6�"E�F�F�G�G�G����x�!�"6�"G�H�H�I�I�I����x�!�"6�"F�G�G�H�H�H����x�!�"6�"K�L�L�M�M�M����x�!�.�"7�8�8�9�9�9����x�!�.�";�<�<�=�=�=����x�!�,�":�;�;�<�<�<����x�!�,�"8�9�9�:�:�:����x�!�,�"=�>�>�?�?�?����x�!�,�"9�:�:�;�;�;����x�!�"2�"?�@�@�A�A�A����x�!�"2�"?�@�@�A�A�A����x�!�"2�">�?�?�@�@�@����x�!�"2�"@�A�A�B�B�B����x�!�.�"9�:�:�;�;�;����x�!�.�"<�=�=�>�>�>����x�!�.�"8�9�9�:�:�:����x�!�.�"?�@�@�A�A�A����x�!�.�"B�C�C�D�D�D����x�!�.�"<�=�=�>�>�>����x�!�.�"<�=�=�>�>�>����x�!�.�">�?�?�@�@�@����x�!�.�"E�F�F�G�G�G����x�!�.�":�;�;�<�<�<����x�!�"6�"G�H�H�I�I�I����x�!�"6�"L�M�M�N�N�N����x�!�/�"D�E�E�F�F�F����x�!�"8�"K�L�L�M�M�M����x�!�"8�"K�L�L�M�M�M����x�!�"7�"I�J�J�K�K�K�
�!�#�#���������j��'�/�/�"�'�/�/�(�"3�4�4�5�5�7�7�@�@�U�
���g���@�5�>�>�%�#8�#8�@��=�=��-�-�� � � �"�'�"2�"2�5�"9�"9�!�"<�"<�=�?�?�@�@�@��,�+�+�+�+�+��<��
K��\��b�(�,�/�b�	��x�|�7H�7H�7H�(�,�J_�J_�`�	a�	a�a�.�.�.�.�.�.�	�.�.��������K�K�K��.�.�E��I�J�J�J�J�J�J�J�J�����K����R�6�6�6�6�6�6�	�.�.��!�!�!�!���R�R�R��.�.�L�q�P�Q�Q�Q�Q�Q�Q�Q�Q�����R�����;�;�W��-�-��"��/�/��8�8�:�:�;�;�;�;�P�2�2�2�2�2�2��-�-��"�>�#W�#W�Xe�#f�#f�g�g�h�h�h�h���P�P�P��.�.�J�Q�N�O�O�O�O�O�O�O�O�����P����
���x�!�.�"C�D�D�E�E�E�
�s\�0K�
K�K�A0g�
g5�g0�0g5�9h�
i�i�i�	Ak
�

k;�k6�6k;�assertDictEqualc	���|�t|t��d��|�t|t��d��||kr�|�d|��}dd�t	jt
j|�����t
j|���������z}|p||z}|�	|��dSdS)Nz"First argument is not a dictionaryz#Second argument is not a dictionary� != rH)
�
assertTruer��dictry�difflib�ndiff�pprint�pformat�
splitlines�fail)r%�d1�d2�msg�standardMsg�diffs      r&rDrDs����/�/�*�R��&�&�(L�M�M�M��/�/�*�R��&�&�(M�N�N�N��2�X�X�!�r�r�2�2�&�;��$�)�)�G�M�
�N�2���!�!�#�#�
�N�2���!�!�#�#�%�%�&�&�&�4�

�	$��t�#�3��9�9�S�>�>�>�>�>�
�Xr(rDFc
��
���d��|rt�n|f�fd�	��
��fd��
	�
|||||��dS#t$r�}t|t��r
|jdnt|��dz}dd�tjtj
|�����tj
|���������z}	|p||	z}|�|��Yd}~dSd}~wwxYw)z�Compare complex elements (like dict, list or tuple) in sorted order until
	level 0 not reached (initial level = -1 meant all levels),
	or if nestedOnly set to True and some of the objects still contains nested lists or dicts.
	c��t|t��r+td�|���D����Std�|D����S)Nc3�ZK�|]&}t|tttf��V��'dSri�r�rH�list�tuple�r�r}s  r&�	<genexpr>z8assertSortedEqual.<locals>._is_nested.<locals>.<genexpr>)s3����
E�
E�Q�j��T�4��/�0�0�
E�
E�
E�
E�
E�
Er(c3�ZK�|]&}t|tttf��V��'dSrirWrZs  r&r[z8assertSortedEqual.<locals>._is_nested.<locals>.<genexpr>*s3����;�;�A�Z��D�$��.�
/�
/�;�;�;�;�;�;r()r�rH�any�values)r}s r&�
_is_nestedz%assertSortedEqual.<locals>._is_nested'sW����4���F�

�
E�
E�!�(�(�*�*�
E�
E�
E�
E�
E�E�	�;�;��;�;�;�	;�	;�;r(c����t|tttf��r+t	t��fd�|D��������S|S)Nc3�0�K�|]}�|���V��dSrir,)r�r}�_nest_sorted�keys  ��r&r[z:assertSortedEqual.<locals>._nest_sorted.<locals>.<genexpr>0s/�����7�7��|�|�A�s�+�+�7�7�7�7�7�7r(�rc)r�r�rXrY�sorted)r}rcrbs `�r&rbz'assertSortedEqual.<locals>._nest_sorted.sV������S�$��&�'�'�B��$�7�7�7�7�7�Q�7�7�7�7�7�S�A�A�A�A�
�8r(c���t|��t|��krt|�d|�����|s4|r2�	|��s'�	|��s||krdSt|�d|�����t|t��r�t|t��r�|���D]�\}}||}t|tt
tf��r=t|tt
tf��r�|||dkr|dz
nd||���l||krt|�d|�������dS�
||���}�
||���}t||��D]~\}}t|tt
tf��r=t|tt
tf��r�|||dkr|dz
nd||���d||krt|�d|������dS)NrFrrDrd)�lenr�r�rH�itemsrXrY�zip)�a�brM�
nestedOnlyrc�k�v1�v2�_assertSortedEqualr_rbs        ���r&rpz-assertSortedEqual.<locals>._assertSortedEqual3s/�����V�V�s�1�v�v���	�!�!�!�Q�Q�'�	(�	(�(�	�)�J�)�
�
�1�
�
�)�j�j��m�m�)��1�f�f�
�F�	�!�!�!�Q�Q�'�	(�	(�(���4���+�Z��4�0�0�+����	�	�+�+�u�q�"�	
�1��B��"�t�T�5�)�*�*�+�z�"�t�T�5�>Q�/R�/R�+����B�5�A�:�:��a���1�j�#�N�N�N�N�	�r����A�A�A�q�q�)�*�*�*�
�	+�+��|�A�3����1��|�A�3����1��Q����+�+�v�r�2��"�t�T�5�)�*�*�+�z�"�t�T�5�>Q�/R�/R�+����B�5�A�:�:��a���1�j�#�N�N�N�N�	�r����A�A�A�q�q�)�*�*�*�
�+�+r(rz
within:rHN)
re�	Exceptionr�r�r�r\ryrIrJrKrLrMrN)
r%rjrkrMrlrcrQrArRrSrpr_rbs
          @@@r&�assertSortedEqualrr!s[�����<�<�<����,�,��������
+�+�+�+�+�+�+�2���Q��5�*�c�2�2�2�2�2������'��:�6�6�R���q�	�	�S��V�V�k�=Q�+�
����7�=�	�>�!�����!�!�	�>�!�����!�!�#�#�$�$�$�$�	�#��d�"�#��)�)�C�.�.�.�.�.�.�.�.�.�����
���s�1�
D	�CD�D	�assertRaisesRegexpc��	||i|��|�dt|d��z��dS#|$rO}tj|t	|�����"|�d|�d|�d���Yd}~dSYd}~dSd}~wwxYw)Nz
%s not raisedr)�"z" does not match ")rN�getattrr�r�r\)r%�exccls�regexp�funr�r{rAs       r&rsrsXs���<��3�������
�9�9�_�w�v�z�:�:�
:�;�;�;�;�;��	
�<�<�<��i���A�����'��I�I�I�������:�;�;�;�;�;�;�;�;�;�(�'�'�'�'�'�����<���s�2�B�>B�BTc��|}d}|�>t|d��r.t|t��stj|��\}}d}||vr1|rt|��}|p|�d|��}|�|��dSdS)NF�__iter__Tz was not found in ��hasattrr�r\�	itertools�teerXrN�r%rjrkrQ�bb�wraps      r&�assertInr�ds����"�	�$��[�W�Q�
�+�+�[�J�q�#�4F�4F�[��=����5�1�b�
�4��a�Z�Z�
���b���B�	�	2�A�A�A�r�r�2�3��9�9�S�>�>�>�>�>��Zr(c��|}d}|�>t|d��r.t|t��stj|��\}}d}||vr1|rt|��}|p|�d|��}|�|��dSdS)NFr{Tz unexpectedly found in r|r�s      r&�assertNotInr�os����"�	�$��[�W�Q�
�+�+�[�J�q�#�4F�4F�[��=����5�1�b�
�4��!�V�V�
���b���B�	�	7����B�B�7�3��9�9�S�>�>�>�>�>��Vr(c�X�tjjtjkrLt
j�d��t�	d|�
����t|��tjjdkrtj
��|_dSdS)NrHz"========== %s ====================r)rsrcrrKrOr<�stderr�writerI�debug�id�
_org_setUprr��__startTimer$s r&�_customSetUpr�|s���
�L��g�m�+�+��*���4�����,�,�'������3�3�3��D�����L��Q����Y�[�[�$�����r(c��tjjdkr>tj�dt
j��|jz
fz��dSdS)Nrz
 %.3fs -- )rsrcrr<r�r�r�r�r$s r&�_customTearDownr��sL���L��Q����*���<�4�9�;�;��1A�#A�"C�C�D�D�D�D�D��r(c���eZdZGd�dej��Z�fd�Z�fd�Zd�Zd�Z	d�Z
dd	�Zd
�Ze
ejfd���Z�xZS)
�LogCaptureTestCasec�:�eZdZdZd
d�Zdd�Zd�Zd�Zd�Zd	�Z	dS)�LogCaptureTestCase._MemHandlerz�Logging handler helper
		
		Affords not to delegate logging to StreamHandler at all,
		format lazily on demand in getvalue.
		Increases performance inside the LogCaptureTestCase tests, because there
		the log level set to DEBUG.
		Tc�
�tj��|_d|_d|_t��|_d|_t��|_	tj�|��|r|j
|_dSdS)Nr-r)�	threading�Lock�_lock�_val�_dirtyrX�_recs�
_nolckCntrr�_strmrK�Handlerr'�_handle_lazy�handle)r%�lazys  r&r'z'LogCaptureTestCase._MemHandler.__init__�sr���� � �4�:��4�9��4�;����4�:��4�?��
�
�4�:�
�?���D�!�!�!�
�$��#�D�K�K�K�$�$r(Nc���|rtd|z���d|_|j5d|_t	��|_|j�d��ddd��dS#1swxYwYdS)z)Truncate the internal buffer and records.z.invalid size argument: %r, should be None or 0r-rN)rqr�r�r�rXr�r��truncate)r%�sizes  r&r�z'LogCaptureTestCase._MemHandler.truncate�s���
�M�
�D�t�K�
L�
L�L��4�9��
����D�K����D�J��J���������������������������s�5A%�%A)�,A)c�T�	|���dz}	|j�|��dS#t$r2|j�|�dd����YdSwxYw#t
$r(}|j�d|z��Yd}~dSd}~wwxYw)NrHzUTF-8r]zError by logging handler: %r)�
getMessager�r��UnicodeEncodeError�encoderq)r%�recordrQrAs    r&�__writez&LogCaptureTestCase._MemHandler.__write�s���9�
�
�
�
�
��
$�C�6�	�Z���c��������6�6�6�	�Z���c�j�j��)�4�4�5�5�5�5�5�5�6�����
�9�9�9��J���3�a�7�8�8�8�8�8�8�8�8�8�����9���s2�A5�6�8A2�.A5�1A2�2A5�5
B'�?B"�"B'c��|js|jS|j�d��}|jdzr�|sB|xjdz
c_|jdkr|jSd|_|j���	|xjdzc_|j}t
��|_|j���n#|j���wxYw|D]}|�|���n+|r)|xjdzc_|j���|j	�
��|_|jS)z&Return current buffer as whole string.FrrD�r������)r�r�r��acquirer�r�rX�release�_MemHandler__writer��getvalue)r%�lck�recsr�s    r&r�z'LogCaptureTestCase._MemHandler.getvalue�sK���+���9��	
��	�	�E�	"�	"�3�
�k�A�o����	�_�_���_�_���1���
�Y���T�_�	�Z�������	�[�[�B��[�[��J�T��&�&�T�Z�	�Z��������T�Z��������������	�\�\�&���������K�K�2��K�K��J�������z�"�"�$�$�4�9�
�)�s�8*B<�<Cc��|�|��|j5|xjdzc_ddd��dS#1swxYwYdS)z-Handle the specified record direct (not lazy)rDN)r�r�r��r%r�s  r&r�z%LogCaptureTestCase._MemHandler.handle�s����<�<������
����K�K�1��K�K���������������������s
�;�?�?c��|j5|j�|��|xjdzc_ddd��dS#1swxYwYdS)z*Lazy handle the specified record on demandrN)r�r�r�r�r�s  r&r�z+LogCaptureTestCase._MemHandler._handle_lazy�s����
����J���f�����K�K�1��K�K���������������������s�+A�A�Ar�ri)
r)r*r+�__doc__r'r�r�r�r�r�r,r(r&�_MemHandlerr��s���������	$�	$�	$�	$�����9�9�9� � � �D�������r(r�c���tj|_tj|_t
�tjj	��|_
|j
gt_|jtjkrtxj|jz
c_|jtjdz
kr't�
tjdz
��tt
|�����dS)NrD)rIrM�
_old_level�handlers�
_old_handlersr�r�rsrcr�_logrKrOrJr��setUp�r%r�s �r&r�zLogCaptureTestCase.setUp�s�����L�$�/���$�� �,�,�X�\�-B�C�C�$�)��Y�K�&�/�	�_��
�%�%�	�?�?�d�(�(�?�?�	�_�w�}�Q��&�&�	�?�?�7�=��?�#�#�#���D�!�!�'�'�)�)�)�)�)r(c���|���|j���|jt_t�|j��tt|���
��dS)zCall after every test case.N)�pruneLogr��closer�rIr�rJr�r�r��tearDownr�s �r&r�zLogCaptureTestCase.tearDown�se����-�-�/�/�/��)�/�/�����&�&�/��/�/�$�/�"�"�"���D�!�!�*�*�,�,�,�,�,r(c��|j���}|�dd��s|D]	}||vrdS�
	dS|D]	}||vrdS�
dS)N�allFT)r�r�rr�r%r�r{�logged�s_s     r&�
_is_loggedzLogCaptureTestCase._is_loggeds����9�����&�	���E�5�	!�	!��
���r�	�V�|�|��D�D����5����r�	�����E�E��
�$r(c	�������dd��}|r:tj�|��}t	j���fd�|��}n
�j�i���}��dd��sE|sA�j���}��	d��d|rd|znd	�d
|�d���dSdS|sG�j���}�D]-}||vr%��	|�d|rd|znd	�d
|�d����,dSdS)
akAssert that one of the strings was logged

		Preferable to assertTrue(self._is_logged(..)))
		since provides message with the actual log.

		Parameters
		----------
		s : string or list/set/tuple of strings
		  Test should succeed if string (or any of the listed) is present in the log
		all : boolean (default False) if True should fail if any of s not logged
		�waitNc����j�i���Sri)r�)r{r�r%s���r&r�z1LogCaptureTestCase.assertLogged.<locals>.<lambda>!s������� =�f� =� =�r(r�FzNone among z was found in the logz, waited %sr-z: ===
�===z was not found in the log)
rrrsrcr�r�wait_forr�r�r�rN)r%r�r{r��resr�r�s```    r&�assertLoggedzLogCaptureTestCase.assertLoggeds������
���F�D�	!�	!�$�	�'�
�,�
"�
"�4�
(�
(�4�	��=�=�=�=�=�=�t�	D�	D�3�3�	���!�	&�v�	&�	&�3�	���E�5�	!�	!�
:�

�8�
�Y�
�
�
!�
!�F��I�I�I�A�A�A� $�,�}�t���"�,�,�v�v�v�7�8�8�8�8�8�8�8��:�
�Y�
�
�
!�
!�F��:�:��
�&���
�i�i�r�r�r�"&�.���	�	�B�.�.����9�:�:�:��	:�:�:�:r(c�&�|j���}t|��dkr@|�dd��s*|D]	}||vrdS�
|�d|�d|�d���dS|D]!}||vr|�|�d|�d����"dS)	aAssert that strings were not logged

		Parameters
		----------
		s : string or list/set/tuple of strings
		  Test should succeed if the string (or at least one of the listed) is not
		  present in the log
		all : boolean (default False) if True should fail if any of s logged
		rDr�FNzAll of the z$ were found present in the log: ===
r�z was found in the log: ===
)r�r�rgrrrNr�s     r&�assertNotLoggedz"LogCaptureTestCase.assertNotLogged3s����9�����&���V�V�a�Z�Z��
�
�5�%�0�0�Z�
���r�	�����V�V���9�9�9�!�!�!�V�V�V�
T�U�U�U�U�U�
�E�E�r�	�V�|�|�	�Y�Y����F�F�F�C�D�D�D��E�Er(Nc�x�|j�d��|rt�d|��dSdS)Nrz===== %s =====)r�r�rIr�)r%�logphases  r&r�zLogCaptureTestCase.pruneLogHsE���)���Q����
�2�	�<�<�&��1�1�1�1�1�2�2r(c�4�|j���Sri)r�r�r$s r&�getLogzLogCaptureTestCase.getLogMs��	
��	�	�	�	�r(c��|tjks't���tjkrU|d|zdz��tj|��D]"}|�d��}||���#|d��dSdS)z@Helper which outputs content of the file at HEAVYDEBUG loglevelsz---- z ----rHz------------------------------N)rIr��getEffectiveLevelrKrO�	fileinput�input�rstrip)�fnr��lines   r&�dumpFilezLogCaptureTestCase.dumpFilePs���
������ 8� 8� :� :�g�m� K� K�	�6�'�B�,��
 �!�!�!���r�"�"���t��;�;�t���D�
�F�4�L�L�L�L�	�6�&�>�>�>�>�>�!L� Kr(ri)r)r*r+rKr�r�r�r�r�r�r�r�r��staticmethodrIr�r�r�)r�s@r&r�r��s��������V�V�V�V�V�7�?�V�V�V�p*�*�*�*�*� -�-�-�-�-���� :�:�:�BE�E�E�*2�2�2�2�
����������,�����r(r�)r-)NNri)O�
__author__�
__copyright__�__license__r�r~rKr9rur�r�r�r<r�r�rs�ior�	functoolsrrWrr	r
r�server.ipdnsrr
�
server.mytimer�server.utilsr�serverrrrIr�r�rrrzrvrxryrq�putenvr0r/r1�ValuesrrBrarcr�r�r�r��old_TZr�r�rCrIrKr}�TestCaserD�reprrrrs�assertRaisesRegexr�r�r�r�r�r��
_org_tearDownr�r��
pid_existsr,r(r&�<module>r�s���*"�
�7�
�������������������	�	�	�	�	�	�	�	�����
�
�
�
�
�
�
�
�������������������������M�M�M�M�M�M�M�M�M�M�M�M�+�+�+�+�+�+�+�+�"�"�"�"�"�"� � � � � � � � � � � � �������
��:�	�	����
�Z�^�^�1�4�
8�
8�
����G�N�N�2�7�<�<���9�9�:�:���*�*��*�	����r�w�|�|�J��@�@�A�A��
��	�,��������������������9�9�)�)����������������*
�*
�*
�*
�X2�2�2�j/�/�/�/�/�
�/�/�/�d��� 	�	�	�N,�N,�N,�b���

�����d�	#�	#��������g�g�g�g�\���������w�x� �"3�4�4�5�	�	�	�	�&5���"�()�e��4�3�3�3�3�h'8���#��w�x� �"6�7�7�	:�<�<�<�(:���$�-�	�	�	�	�'����	�	�	�	�"-����
�
�
$�
�!�!�!��!�*�
�E�E�E�'����,����I�I�I�I�I��*�I�I�I�X�
�
�
�
r(