
    vg!                     Z   d 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n# e$ r dZY nw xY wddl	m
Z
 ddl	mZ ddlmZ ddlmZ  G d d          Z G d	 d
ej                  Z G d dej                  Z G d dej                  Zd Zd Zedk    r ej        d           dS dS )z(Test suite for supervisor.socket_manager    N)DummySocketConfig)DummyLogger)UnixStreamSocketConfig)InetStreamSocketConfigc                        e Zd Zd Zd Zd ZdS )Subjectc                     d| _         d S N   valueselfs    a/var/www/pixelcanvas.ch/venv/lib/python3.11/site-packages/supervisor/tests/test_socket_manager.py__init__zSubject.__init__   s    


    c                     | j         S Nr   r   s    r   getValuezSubject.getValue   s
    zr   c                     || _         d S r   r   )r   vals     r   setValuezSubject.setValue   s    


r   N)__name__
__module____qualname__r   r   r    r   r   r   r      sA                r   r   c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )	ProxyTestc                     d| _         d S NFon_deleteCalledr   s    r   setUpzProxyTest.setUp!   s    $r   c                     ddl m} |S )Nr   )Proxy)supervisor.socket_managerr%   )r   r%   s     r   _getTargetClasszProxyTest._getTargetClass$   s    333333r   c                 6     |                                  |i |S r   r'   r   argskws      r   _makeOnezProxyTest._makeOne(   #    %t##%%t2r222r   c                     d| _         d S NTr!   r   s    r   setOnDeleteCalledzProxyTest.setOnDeleteCalled+   s    #r   c                     |                      t                                }|                     d|                                           d S r
   )r-   r   assertEqualr   r   proxys     r   test_proxy_getattrzProxyTest.test_proxy_getattr.   s=    gii((ENN,,-----r   c                     |                      t                      | j                  }|                     d|                                           d }t                       |                     | j                   d S )N)	on_deleter   )r-   r   r1   r3   r   
gc_collect
assertTruer"   r4   s     r   test_on_deletezProxyTest.test_on_delete2   sg    gii43IJJENN,,---,-----r   N)	r   r   r   r#   r'   r-   r1   r6   r;   r   r   r   r   r      sn        % % %  3 3 3$ $ $. . .. . . . .r   r   c                   8    e Zd Zd Zd Zd Zd Zd Zd Zd Z	dS )	ReferenceCounterTestc                     d| _         d S r    runningr   s    r   r#   zReferenceCounterTest.setUp;       r   c                     d| _         d S r0   r?   r   s    r   startzReferenceCounterTest.start>   s    r   c                     d| _         d S r    r?   r   s    r   stopzReferenceCounterTest.stopA   rA   r   c                     ddl m} |S )Nr   )ReferenceCounter)r&   rG   )r   rG   s     r   r'   z$ReferenceCounterTest._getTargetClassD   s    >>>>>>r   c                 6     |                                  |i |S r   r)   r*   s      r   r-   zReferenceCounterTest._makeOneH   r.   r   c                 ,   |                      | j        | j                  }|                     | j                   |                                 |                     | j                   |                     d|                                           |                                 |                     | j                   |                     d|                                           |	                                 |                     | j                   |                     d|                                           |	                                 |                     | j                   |                     d|                                           d S )Non_zeroon_non_zero      r   )
r-   rE   rC   assertFalser@   	incrementr:   r3   	get_count	decrementr   ctrs     r   test_incr_and_decrz'ReferenceCounterTest.test_incr_and_decrK   s5   mmDI$*mEE&&&%%%CMMOO,,,%%%CMMOO,,,%%%CMMOO,,,&&&CMMOO,,,,,r   c                     |                      | j        | j                  }|                     t          |j                   d S )NrJ   )r-   rE   rC   assertRaises	ExceptionrR   rS   s     r   test_decr_at_zero_raises_errorz3ReferenceCounterTest.test_decr_at_zero_raises_error[   s9    mmDI$*mEE)S]33333r   N)
r   r   r   r#   rC   rE   r'   r-   rU   rY   r   r   r   r=   r=   9   s}                   3 3 3- - - 4 4 4 4 4r   r=   c                   n    e 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S )SocketManagerTestc                 "    t                       d S r   )r9   r   s    r   tearDownzSocketManagerTest.tearDowna   s    r   c                     ddl m} |S )Nr   )SocketManager)r&   r_   )r   r_   s     r   r'   z!SocketManagerTest._getTargetClassd   s    ;;;;;;r   c                 6     |                                  |i |S r   r)   r*   s      r   r-   zSocketManagerTest._makeOneh   r.   r   c                     t          d          }|                     |          }d|j        dt          |          d|j        d}|                     t          |          |           d S )NrN   <z at z for >)r   r-   	__class__idurlr3   repr)r   confsock_managerexpecteds       r   	test_reprzSocketManagerTest.test_reprk   sr     ##}}T**"""B|$4$4$4$4dhhh@l++X66666r   c                     t          d          }|                     |          }|                     ||                                           d S NrN   )r   r-   r3   configr   rh   ri   s      r   test_get_configz!SocketManagerTest.test_get_configr   sH     ##}}T**|224455555r   c                     t          dd          }|                     |          }|                     |j        |           |                                }|                     |                                d           d S )N	localhosta  	127.0.0.1rs   r   r-   r3   socket_config
get_socketgetsocknamer   rh   ri   socks       r   test_tcp_w_hostnamez%SocketManagerTest.test_tcp_w_hostnamew   u    %k599}}T**3T:::&&(())++-ABBBBBr   c                     t          dd          }|                     |          }|                     |j        |           |                                }|                     |                                d           d S )Nru   rs   rt   rv   rz   s       r   test_tcp_w_ipzSocketManagerTest.test_tcp_w_ip~   r}   r   c                 T   t          j                    \  }}t          |          }|                     |          }|                     |j        |           |                                }|                     |                                |           d }t          j	        |           d S r   )
tempfilemkstempr   r-   r3   rw   rx   ry   osclose)r   tf_fdtf_namerh   ri   r{   s         r   	test_unixzSocketManagerTest.test_unix   s    #+--%g..}}T**3T:::&&(())++W555
r   c                    t          d          }|                     |          }|                     |                                           |                                }|                     |                                           t          |                                          }|                                }t          |                                          }|                     ||           | 	                    ||           | 	                    d|
                                           |                     |                                           |                     |j        j                   d }t                       |                     |                                           |                     |j        j                   d }t                       |                     |                                           |                     |j        j                   |                                }|                     |                                           t          |                                          }|                     ||           ~t                       |                     |                                           |                     |j        j                   d S rm   )r   r-   rO   is_preparedrx   r:   re   _getassertNotEqualr3   get_socket_ref_countsocketclose_calledr9   )	r   rh   ri   r{   sock_idsock2sock2_idsock3sock3_ids	            r   test_socket_lifecyclez'SocketManagerTest.test_socket_lifecycle   s`    ##}}T**1133444&&((0022333TYY[[//''))ejjll##D%((((+++L==??@@@0022333,9:::0022333,9:::1133444+8999 ''))0022333ejjll##GX...1133444+899999r   c                    t          d          }t                      }|                     ||          }|                                }|                     t          |j                  d           |                     dt          |          z  |j        d                    ~t                       |                     t          |j                  d           |                     dt          |          z  |j        d                    d S )NrM   )loggerzCreating socket %sr   rN   zClosing socket %s)	r   r   r-   rx   r3   lendatarg   r9   )r   rh   r   ri   r{   s        r   test_loggingzSocketManagerTest.test_logging   s     ##}}T&}99&&((V[))1----T

:FKNKKKV[))1---,tDzz96;q>JJJJJr   c                 `   t          d          }|                     |          }|                                }|                     |                                           |                     |j                   |                     |j                   |                     |j                   d S )NrM   )	r   r-   rx   r:   r   rO   bind_calledlisten_calledr   rz   s       r   test_prepare_socketz%SocketManagerTest.test_prepare_socket   s     ##}}T**&&((0022333)****+++*+++++r   c                 "   t          dd          }|                     |          }|                                }|                     |                                           |                     |j        |                                           d S )NrM   *   backlog)r   r-   rx   r:   r   r3   listen_backlogget_backlogrz   s       r   +test_prepare_socket_uses_configured_backlogz=SocketManagerTest.test_prepare_socket_uses_configured_backlog   s     B///}}T**&&((0022333,d.>.>.@.@AAAAAr   c                    t          dd           }|                     |          }|                                }|                     |                                           |                     |j        t          j                   d S )NrM   r   )	r   r-   rx   r:   r   r3   r   r   	SOMAXCONNrz   s       r   ;test_prepare_socket_uses_somaxconn_if_no_backlog_configuredzMSocketManagerTest.test_prepare_socket_uses_somaxconn_if_no_backlog_configured   sv     D111}}T**&&((0022333,f.>?????r   c                     t          dd          }|                     |          }|                                }|                     |          }|                     t          j        |j                   ~d S )Nru   rs   )r   r-   rx   rW   r   error)r   rh   ri   r{   sock_manager2s        r   test_tcp_socket_already_takenz/SocketManagerTest.test_tcp_socket_already_taken   sf    %k599}}T**&&((d++&,(@AAADDr   c                     t          d          }|                     |          }|                     t          j        |j                   d S )Nz/notthere/foo.sock)r   r-   rW   r   r   rx   ro   s      r   test_unix_bad_sockz$SocketManagerTest.test_unix_bad_sock   sB    %&:;;}}T**&,(?@@@@@r   c                 b   t          dd          }|                     |          }|                     |                                           	 |                                 |                                  d S # t          $ r,}|                     |j        d         d           Y d }~d S d }~ww xY w)Nru   rs   r   zSocket has not been prepared)	r   r-   rO   r   _closefailrX   r3   r+   )r   rh   ri   es       r   #test_close_requires_prepared_socketz5SocketManagerTest.test_close_requires_prepared_socket   s    %k599}}T**1133444	H!!!IIKKKKK 	H 	H 	HQVAY(FGGGGGGGGG	Hs   (A8 8
B.!B))B.N)r   r   r   r]   r'   r-   rk   rp   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r[   r[   _   s           3 3 37 7 76 6 6
C C CC C C  ): ): ):VK K K, , ,B B B@ @ @  A A A
H H H H Hr   r[   c                      t           ;t          j                     t          j                     t          j                     d S d S r   )__pypy__gccollectr   r   r   r9   r9      s5    





 r   c                  T    t          j        t          j        t                             S r   )unittestfindTestCasessysmodulesr   r   r   r   
test_suiter      s    !#+h"7888r   __main__r   )defaultTest)__doc__r   r   r   r   r   r   r   ImportErrorsupervisor.tests.baser   r   supervisor.datatypesr   r   r   TestCaser   r=   r[   r9   r   r   mainr   r   r   <module>r      s   . . 				 



 				   OOOO   HHH 4 3 3 3 3 3 - - - - - - 7 7 7 7 7 7 7 7 7 7 7 7	 	 	 	 	 	 	 	. . . . .! . . .4$4 $4 $4 $4 $48, $4 $4 $4LUH UH UH UH UH) UH UH UHn  9 9 9 zHMl++++++ s   ! ++