
    kc!                     \   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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       yy# e$ r dZY w xY w)z(Test suite for supervisor.socket_manager    N)DummySocketConfig)DummyLogger)UnixStreamSocketConfig)InetStreamSocketConfigc                       e Zd Zd Zd Zd Zy)Subjectc                     d| _         y N   valueselfs    F/usr/lib/python3/dist-packages/supervisor/tests/test_socket_manager.py__init__zSubject.__init__   s	    
    c                     | j                   S Nr   r   s    r   getValuezSubject.getValue   s    zzr   c                     || _         y r   r   )r   vals     r   setValuezSubject.setValue   s	    
r   N)__name__
__module____qualname__r   r   r    r   r   r   r      s    r   r   c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)	ProxyTestc                     d| _         y 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r   c                 .     | j                         |i |S r   r'   r   argskws      r   _makeOnezProxyTest._makeOne(       %t##%t2r22r   c                     d| _         y NTr!   r   s    r   setOnDeleteCalledzProxyTest.setOnDeleteCalled+   s
    #r   c                 v    | j                  t                     }| j                  d|j                                y r
   )r-   r   assertEqualr   r   proxys     r   test_proxy_getattrzProxyTest.test_proxy_getattr.   s)    gi(ENN,-r   c                     | j                  t               | j                        }| j                  d|j	                                d }t                | j                  | j                         y )N)	on_deleter   )r-   r   r1   r3   r   
gc_collect
assertTruer"   r4   s     r   test_on_deletezProxyTest.test_on_delete2   sO    gi43I3IJENN,-,,-r   N)	r   r   r   r#   r'   r-   r1   r6   r;   r   r   r   r   r      s     %3$..r   r   c                   6    e Zd Zd Zd Zd Zd Zd Zd Zd Z	y)	ReferenceCounterTestc                     d| _         y r    runningr   s    r   r#   zReferenceCounterTest.setUp;   	    r   c                     d| _         y r0   r?   r   s    r   startzReferenceCounterTest.start>   s	    r   c                     d| _         y 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                 .     | j                         |i |S r   r)   r*   s      r   r-   zReferenceCounterTest._makeOneH   r.   r   c                    | j                  | j                  | j                        }| j                  | j                         |j                          | j                  | j                         | j                  d|j                                |j                          | j                  | j                         | j                  d|j                                |j                          | j                  | j                         | j                  d|j                                |j                          | j                  | j                         | j                  d|j                                y )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   s    mmDII$**mE&%CMMO,%CMMO,%CMMO,&CMMO,r   c                     | j                  | j                  | j                        }| j                  t        |j
                         y )NrJ   )r-   rE   rC   assertRaises	ExceptionrR   rS   s     r   test_decr_at_zero_raises_errorz3ReferenceCounterTest.test_decr_at_zero_raises_error[   s0    mmDII$**mE)S]]3r   N)
r   r   r   r#   rC   rE   r'   r-   rU   rY   r   r   r   r=   r=   9   s%     3- 4r   r=   c                   l    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y)SocketManagerTestc                     t                y 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                 .     | j                         |i |S r   r)   r*   s      r   r-   zSocketManagerTest._makeOneh   r.   r   c                     t        d      }| j                  |      }d|j                  dt        |      d|j                  d}| j                  t        |      |       y )NrN   <z at z for >)r   r-   	__class__idurlr3   repr)r   confsock_managerexpecteds       r   	test_reprzSocketManagerTest.test_reprk   sM     #}}T*""B|$4dhh@l+X6r   c                 |    t        d      }| j                  |      }| j                  ||j                                y NrN   )r   r-   r3   configr   rh   ri   s      r   test_get_configz!SocketManagerTest.test_get_configr   s3     #}}T*|2245r   c                     t        dd      }| j                  |      }| j                  |j                  |       |j	                         }| j                  |j                         d       y )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   Z    %k59}}T*33T:&&())+-ABr   c                     t        dd      }| j                  |      }| j                  |j                  |       |j	                         }| j                  |j                         d       y )Nru   rs   rt   rv   rz   s       r   test_tcp_w_ipzSocketManagerTest.test_tcp_w_ip~   r}   r   c                 0   t        j                         \  }}t        |      }| j                  |      }| j	                  |j
                  |       |j                         }| j	                  |j                         |       d }t        j                  |       y r   )
tempfilemkstempr   r-   r3   rw   rx   ry   osclose)r   tf_fdtf_namerh   ri   r{   s         r   	test_unixzSocketManagerTest.test_unix   sz    #++-%g.}}T*33T:&&())+W5
r   c                    t        d      }| j                  |      }| j                  |j                                |j	                         }| j                  |j                                t        |j                               }|j	                         }t        |j                               }| j                  ||       | j                  ||       | j                  d|j                                | j                  |j                                | j                  |j                  j                         d }t                | j                  |j                                | j                  |j                  j                         d }t                | j                  |j                                | j                  |j                  j                         |j	                         }| j                  |j                                t        |j                               }| j                  ||       ~t                | j                  |j                                | j                  |j                  j                         y 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4&&(0023TYY[/'')ejjl#D%((+L==?@0023,,99:0023,,99:1134++889 '')0023ejjl#GX.1134++889r   c                    t        d      }t               }| j                  ||      }|j                         }| j	                  t        |j                        d       | j	                  dt        |      z  |j                  d          ~t                | j	                  t        |j                        d       | j	                  dt        |      z  |j                  d          y )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&&(V[[)1--T
:FKKNKV[[)1-,tDz96;;q>Jr   c                 <   t        d      }| j                  |      }|j                         }| j                  |j	                                | j                  |j                         | j                  |j                         | j                  |j                         y )NrM   )	r   r-   rx   r:   r   rO   bind_calledlisten_calledr   rz   s       r   test_prepare_socketz%SocketManagerTest.test_prepare_socket   sw     #}}T*&&(0023))***+**+r   c                     t        dd      }| j                  |      }|j                         }| j                  |j	                                | j                  |j                  |j                                y )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3,,d.>.>.@Ar   c                     t        dd       }| j                  |      }|j                         }| j                  |j	                                | j                  |j                  t        j                         y )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   s[     D1}}T*&&(0023,,f.>.>?r   c                     t        dd      }| j                  |      }|j                         }| j                  |      }| j                  t        j
                  |j                         ~y )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   sU    %k59}}T*&&(d+&,,(@(@Ar   c                     t        d      }| j                  |      }| j                  t        j                  |j
                         y )Nz/notthere/foo.sock)r   r-   rW   r   r   rx   ro   s      r   test_unix_bad_sockz$SocketManagerTest.test_unix_bad_sock   s5    %&:;}}T*&,,(?(?@r   c                 (   t        dd      }| j                  |      }| j                  |j                                	 |j	                          | j                          y # t        $ r)}| j                  |j                  d   d       Y d }~y 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}}T*1134	H!IIK 	HQVVAY(FGG	Hs    A 	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[   _   sZ    376
CC):VK,B@A
Hr   r[   c                      t         =t        j                          t        j                          t        j                          y y r   )__pypy__gccollectr   r   r   r9   r9      s(    








 r   c                  V    t        j                  t        j                  t                 S r   )unittestfindTestCasessysmodulesr   r   r   r   
test_suiter      s    !!#++h"7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    . 	 
 	    4 - 7 7	 	.!! .4$48,, $4LUH)) UHn9 zHMMl+ g  Hs   B! !B+*B+