
    vg5A                        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mZm	Z	 d dlm
Z
mZ d dlmZ eZ G d dej                  Z G d d	ej                  Z e            rej        ZneZ G d
 de          Z e
            rej        ZneZ G d de          Z G d de          Z G d de          Z G d de          Z G d de          Zd Zedk    r ej        d           dS dS )    N)Mock)SelectPoller
PollPollerKQueuePoller)implements_pollimplements_kqueue)DummyOptionsc                   >    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	S )
BasePollerTestsc                 $    ddl m}  ||          S )Nr   )
BasePoller)supervisor.pollerr   )selfoptionsr   s      Y/var/www/pixelcanvas.ch/venv/lib/python3.11/site-packages/supervisor/tests/test_poller.py_makeOnezBasePollerTests._makeOne   s$    000000z'"""    c                 r    |                      d           }|                     t          |j        d            d S N)r   assertRaisesNotImplementedErrorregister_readabler   insts     r   test_register_readablez&BasePollerTests.test_register_readable   5    }}T""-t/EtLLLLLr   c                 r    |                      d           }|                     t          |j        d            d S r   )r   r   r   register_writabler   s     r   test_register_writablez&BasePollerTests.test_register_writable   r   r   c                 r    |                      d           }|                     t          |j        d            d S r   )r   r   r   unregister_readabler   s     r   test_unregister_readablez(BasePollerTests.test_unregister_readable   5    }}T""-t/GNNNNNr   c                 r    |                      d           }|                     t          |j        d            d S r   )r   r   r   unregister_writabler   s     r   test_unregister_writablez(BasePollerTests.test_unregister_writable!   r#   r   c                 r    |                      d           }|                     t          |j        d            d S r   )r   r   r   pollr   s     r   	test_pollzBasePollerTests.test_poll%   s4    }}T""-ty$?????r   c                     |                      d           }|                     |                                d            d S r   )r   assertEqualbefore_daemonizer   s     r   test_before_daemonizez%BasePollerTests.test_before_daemonize)   s;    }}T""..00$77777r   c                     |                      d           }|                     |                                d            d S r   )r   r+   after_daemonizer   s     r   test_after_daemonizez$BasePollerTests.test_after_daemonize-   s;    }}T""--//66666r   N)__name__
__module____qualname__r   r   r   r"   r&   r)   r-   r0    r   r   r   r      s        # # #M M MM M MO O OO O O@ @ @8 8 87 7 7 7 7r   r   c                   D    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
S )SelectPollerTestsc                      t          |          S r   )r   r   r   s     r   r   zSelectPollerTests._makeOne3       G$$$r   c                     |                      t                                }|                    d           |                    d           |                     t	          |j                  ddg           d S N      )r   r	   r   r+   sorted	readablesr   pollers     r   r   z(SelectPollerTests.test_register_readable6   j    |~~..  ###  ### 011Aa599999r   c                     |                      t                                }|                    d           |                    d           |                     t	          |j                  ddg           d S r;   )r   r	   r   r+   r>   	writablesr@   s     r   r   z(SelectPollerTests.test_register_writable<   rB   r   c                    |                      t                                }|                    d           |                    d           |                    d           |                    d           |                    d           |                    d           |                    d           |                     t          |j                  dg           |                     t          |j                  ddg           d S )Nr<   r=      	   d   )	r   r	   r   r   r!   r+   listr?   rD   r@   s     r   r"   z*SelectPollerTests.test_unregister_readableB   s    |~~..  ###  ###  ###  ###""1%%%""1%%%""3'''f.//!555f.//!Q88888r   c                    |                      t                                }|                    d           |                    d           |                    d           |                    d           |                    d           |                    d           |                    d           |                     t          |j                  ddg           |                     t          |j                  dg           d S )Nr<   r=   rF   rH   )	r   r	   r   r   r%   r+   rI   r?   rD   r@   s     r   r&   z*SelectPollerTests.test_unregister_writableN   s    |~~..  ###  ###  ###  ###""1%%%""1%%%""3'''f.//!Q888f.//!55555r   c                    t          dgdgd          }|                     t                                }||_        |                    d           |                    d           |                    d           |                    d          \  }}|                     |dg           |                     |dg           d S )Nr<   rF   )r?   rD   resultr=      )DummySelectr   r	   _selectr   r   r(   r+   )r   rP   rA   r?   rD   s        r   )test_poll_returns_readables_and_writablesz;SelectPollerTests.test_poll_returns_readables_and_writablesZ   s    A3453&8 &8 9 9 9|~~..   ###  ###  ###%{{1~~	9QC(((QC(((((r   c                 .   t          t          j                  }t                      }|                     |          }||_        |                    d           |                    d           |                     |j	        j
        d         d           d S )Nerrorr<   rN   r   EINTR encountered in poll)rO   errnoEINTRr	   r   rP   r   r(   r+   loggerdatar   rP   r   rA   s       r   test_poll_ignores_eintrz)SelectPollerTests.test_poll_ignores_eintrf   s    EK000..w''   ###A,Q/1LMMMMMr   c                    t          t          j                  }t                      }|                     |          }||_        |                    d           |                    d           |                     |j	        j
        d         d           |                     t          |j                  g            |                     t          |j                  g            d S )NrS   r<   rN   r   zEBADF encountered in poll)rO   rV   EBADFr	   r   rP   r   r(   r+   rX   rY   rI   r?   rD   rZ   s       r   test_poll_ignores_ebadfz)SelectPollerTests.test_poll_ignores_ebadfo   s    EK000..w''   ###A,Q/1LMMMf.//444f.//44444r   c                    t          t          j                  }t                      }|                     |          }||_        |                    d           |                     t          j	        |j
        d           d S )NrS   r<   rN   )rO   rV   EPERMr	   r   rP   r   r   selectrT   r(   rZ   s       r   test_poll_uncaught_exceptionz.SelectPollerTests.test_poll_uncaught_exceptionz   sk    EK000..w''   ###&,Q77777r   N)r1   r2   r3   r   r   r   r"   r&   rQ   r[   r^   rb   r4   r   r   r6   r6   1   s        % % %: : :: : :
9 
9 
9
6 
6 
6
) 
) 
)N N N	5 	5 	58 8 8 8 8r   r6   c                   z    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 Zd ZdS )KQueuePollerTestsc                      t          |          S r   )r   r8   s     r   r   zKQueuePollerTests._makeOne   r9   r   c                    t                      }|                     t                                }||_        |                    d           |                     t          |j                  dg           |                     t          |j	                  d           | 
                    |j	        d         d           d S )Nr<   rN   r   )DummyKQueuer   r	   _kqueuer   r+   rI   r?   lenregistered_keventsassertReadEventAddedr   kqueuerA   s      r   r   z(KQueuePollerTests.test_register_readable   s    |~~..  ###f.//!555V677;;;!!&";A">BBBBBr   c                    t                      }|                     t                                }||_        |                    d           |                     t          |j                  dg           |                     t          |j	                  d           | 
                    |j	        d         d           d S )Nr=   rN   r   )rg   r   r	   rh   r   r+   rI   rD   ri   rj   assertWriteEventAddedrl   s      r   r   z(KQueuePollerTests.test_register_writable   s    |~~..  ###f.//!555V677;;;""6#<Q#?CCCCCr   c                    t                      }|                     t                                }||_        |                    d           |                    d           |                    d           |                    d           |                    d           |                     t          |j	                  dg           |                     t          |j
                  g            |                     |j        d         d           |                     |j        d         d           |                     |j        d         d           |                     |j        d         d           d S Nr=   rF   rH   r   rN         )rg   r   r	   rh   r   r   r!   r+   rI   rD   r?   ro   rj   rk   assertReadEventDeletedrl   s      r   r"   z*KQueuePollerTests.test_unregister_readable   sM   |~~..  ###  ###""1%%%""1%%%""3'''f.//!555f.//444""6#<Q#?CCC!!&";A">BBB##F$=a$@!DDD##F$=a$@!DDDDDr   c                    t                      }|                     t                                }||_        |                    d           |                    d           |                    d           |                    d           |                    d           |                     t          |j	                  g            |                     t          |j
                  dg           |                     |j        d         d           |                     |j        d         d           |                     |j        d         d           |                     |j        d         d           d S rq   )rg   r   r	   rh   r   r   r%   r+   rI   rD   r?   ro   rj   rk   assertWriteEventDeletedrl   s      r   r&   z*KQueuePollerTests.test_unregister_writable   sM   |~~..  ###  ###""1%%%""1%%%""3'''f.//444f.//!555""6#<Q#?CCC!!&";A">BBB$$V%>q%A1EEE$$V%>q%A1EEEEEr   c                    t          dt          j        fdt          j        fdt          j        fg          }|                     t                                }||_        |                    d           |                    d           |                    d           |	                    d          \  }}| 
                    |ddg           | 
                    |dg           d S )Nr<   r=   rF   rL     )rg   ra   KQ_FILTER_READKQ_FILTER_WRITEr   r	   rh   r   r   r(   r+   )r   rm   rA   r?   rD   s        r   rQ   z;KQueuePollerTests.test_poll_returns_readables_and_writables   s    a)>%?&')>%?&')?%@%B C C C |~~..  ###  ###  ###%{{400	9QqE***QC(((((r   c                 .   t          t          j                  }t                      }|                     |          }||_        |                    d           |                    d           |                     |j	        j
        d         d           d S )Nraise_errno_pollr<   rx   r   rU   )rg   rV   rW   r	   r   rh   r   r(   r+   rX   rY   r   rm   r   rA   s       r   r[   z)KQueuePollerTests.test_poll_ignores_eintr   s    ek:::..w''  ###D,Q/1LMMMMMr   c                 z   t          t          j                  }t                      }|                     |          }||_        |                    d           |                    d           |                     |j	        j
        d         d           |                     |j	        j
        d         d           d S )Nraise_errno_registerr<   r=   r   z6EBADF encountered in kqueue. Invalid file descriptor 6rN   z6EBADF encountered in kqueue. Invalid file descriptor 7)rg   rV   r]   r	   r   rh   r   r   r+   rX   rY   r   rh   r   rA   s       r   1test_register_readable_and_writable_ignores_ebadfzCKQueuePollerTests.test_register_readable_and_writable_ignores_ebadf   s    5;???..w''   ###  ###,Q/Q	S 	S 	S,Q/Q	S 	S 	S 	S 	Sr   c                     t          t          j                  }t                      }|                     |          }||_        |                     t          |j        d           d S )Nr      )	rg   rV   ENOMEMr	   r   rh   r   OSErrorr   r   s       r    test_register_uncaught_exceptionz2KQueuePollerTests.test_register_uncaught_exception   sV    5<@@@..w'' '6#;Q?????r   c                     t          t          j                  }t                      }|                     |          }||_        |                    d           |                     t          |j	        d           d S )Nr|   r<   rx   )
rg   rV   EINVALr	   r   rh   r   r   r   r(   r~   s       r   rb   z.KQueuePollerTests.test_poll_uncaught_exception   si    el;;;..w''  ###'6;55555r   c                    t                      }t                      }|                     |          }||_        |                                 |j                                         |                     |j        d            d S r   )r   r	   r   rh   r,   closeassert_called_once_withr+   r   mock_kqueuer   rA   s       r   #test_before_daemonize_closes_kqueuez5KQueuePollerTests.test_before_daemonize_closes_kqueue   sq    ff..w''$!!!11333.....r   c                    t                      }|                     |          }dg|_        dg|_        t	                      |_        t	                      |_        |                                 |                     t          |j
        t          j                             |j                            d           |j                            d           d S )NrN   rs   )r	   r   r?   rD   r   r   r   r/   
assertTrue
isinstancerh   ra   rm   assert_called_with)r   r   rA   s      r   $test_after_daemonize_restores_kqueuez6KQueuePollerTests.test_after_daemonize_restores_kqueue   s    ..w''33#'66 #'66    
6>6=AABBB 33A666 33A66666r   c                    t                      }t                      }|                     |          }||_        |                                 |j                                         |                     |j        d            d S r   )r   r	   r   rh   r   r   r+   r   s       r   test_close_closes_kqueuez*KQueuePollerTests.test_close_closes_kqueue  sl    ff..w''$11333.....r   c                 ^    |                      ||t          j        t          j                   d S r   )assertKeventra   ry   	KQ_EV_ADDr   keventfds      r   rk   z&KQueuePollerTests.assertReadEventAdded  s(    &"f&;V=MNNNNNr   c                 ^    |                      ||t          j        t          j                   d S r   )r   ra   rz   r   r   s      r   ro   z'KQueuePollerTests.assertWriteEventAdded  s(    &"f&<f>NOOOOOr   c                 ^    |                      ||t          j        t          j                   d S r   )r   ra   ry   KQ_EV_DELETEr   s      r   rt   z(KQueuePollerTests.assertReadEventDeleted  s(    &"f&;V=PQQQQQr   c                 ^    |                      ||t          j        t          j                   d S r   )r   ra   rz   r   r   s      r   rv   z)KQueuePollerTests.assertWriteEventDeleted  s(    &"f&<f>QRRRRRr   c                     |                      |j        |           |                      |j        |           |                      |j        |           d S r   )r+   identfilterflags)r   r   r   r   r   s        r   r   zKQueuePollerTests.assertKevent  sP    u---///u-----r   N)r1   r2   r3   r   r   r   r"   r&   rQ   r[   r   r   rb   r   r   r   rk   ro   rt   rv   r   r4   r   r   rd   rd      sC       % % %C C CD D DE E E F F F ) ) )N N N
S 
S 
S@ @ @6 6 6/ / /
7 
7 
7/ / /O O OP P PR R RS S S. . . . .r   rd   c                   8    e Zd Zd Zd Zd Zd Zd Zd Zd Z	dS )	PollerPollTestsc                      t          |          S r   )r   r8   s     r   r   zPollerPollTests._makeOne%  s    '"""r   c                     t                      }|                     t                                }||_        |                    d           |                    d           |                     |j        ddg           d S r;   )DummySelectPollr   r	   _pollerr   r+   registered_as_readabler   select_pollrA   s      r   r   z&PollerPollTests.test_register_readable(  st    %''|~~..$  ###  ###;aUCCCCCr   c                     t                      }|                     t                                }||_        |                    d           |                     |j        dg           d S )Nr<   )r   r   r	   r   r   r+   registered_as_writabler   s      r   r   z&PollerPollTests.test_register_writable0  s^    %''|~~..$  ###;aSAAAAAr   c                    t          dt          j        fdt          j        fdt          j        fdt          j        fg          }|                     t                                }||_        |	                    d           |	                    d           |
                    d           |	                    d           |                    d          \  }}|                     |g d           |                     |dg           d S )Nr<   r=   rF   rG   rL   rx   )r<   r=   rG   )r   ra   POLLINPOLLPRIPOLLOUTPOLLHUPr   r	   r   r   r   r(   r+   r   r   rA   r?   rD   s        r   rQ   z9PollerPollTests.test_poll_returns_readables_and_writables7  s   %q&-.@/0&..A/0&..A/0&..A.C D D D |~~..$  ###  ###  ###  ###%{{400	9GGG,,,QC(((((r   c                 .   t          t          j                  }t                      }|                     |          }||_        |                    d           |                    d           |                     |j	        j
        d         d           d S )NrS   rG   rx   r   rU   )r   rV   rW   r	   r   r   r   r(   r+   rX   rY   r   r   r   rA   s       r   r[   z'PollerPollTests.test_poll_ignores_eintrF  s    %EK888..w''$  ###D,Q/1LMMMMMr   c                    t          t          j                  }t                      }|                     |          }||_        |                    d           |                     t          j	        |j
        d           d S )NrS   rG   rx   )r   rV   r]   r	   r   r   r   r   ra   rT   r(   r   s       r   rb   z,PollerPollTests.test_poll_uncaught_exceptionO  sk    %EK888..w''$  ###&,T:::::r   c                    t          dt          j        fdt          j        fg          }|                     t                                }||_        |                    d           |                    d           |                    d          \  }}| 	                    |dg           | 	                    |j
        dg           d S )Nr<   r=   rL   rx   )r   ra   POLLNVALr   r   r	   r   r   r(   r+   unregisteredr   s        r   +test_poll_ignores_and_unregisters_closed_fdz;PollerPollTests.test_poll_ignores_and_unregisters_closed_fdW  s    %q&/.B/0&..A.C D D D|~~..$  ###  ###%{{400	9QC(((1A377777r   N)
r1   r2   r3   r   r   r   rQ   r[   rb   r   r4   r   r   r   r   #  s        # # #D D DB B B) ) )N N N; ; ;	8 	8 	8 	8 	8r   r   c                        e Zd ZdZddZd ZdS )rO   z0
    Fake implementation of select.select()
    Nc                     |pi }|                     dg           | _        |                     dg           | _        || _        d S )Nr?   rD   )getr?   rD   rT   r   rM   rT   s      r   __init__zDummySelect.__init__f  s@    2K44K44


r   c                 `    | j         rt          j         | j                   | j        | j        g fS r   )rT   ra   r?   rD   )r   rwxtimeouts        r   ra   zDummySelect.selectl  s/    : 	+,tz***~t~r11r   NN)r1   r2   r3   __doc__r   ra   r4   r   r   rO   rO   b  sA            2 2 2 2 2r   rO   c                   ,    e Zd ZdZddZd Zd Zd ZdS )r   z.
    Fake implementation of select.poll()
    Nc                 P    |pg | _         || _        g | _        g | _        g | _        d S r   )rM   rT   r   r   r   r   s      r   r   zDummySelectPoll.__init__u  s2    l
&(#&(#r   c                 *   |t           j        t           j        z  t           j        z  k    r| j                            |           d S |t           j        k    r| j                            |           d S t          d	                    |                    )Nz+Registered a fd on unknown eventmask: '{0}')
ra   r   r   r   r   appendr   r   
ValueErrorformat)r   r   	eventmasks      r   registerzDummySelectPoll.register|  s    6GGG'..r22222&.(('..r22222JQQR[\\]]]r   c                 :    | j                             |           d S r   )r   r   )r   r   s     r   
unregisterzDummySelectPoll.unregister  s      $$$$$r   c                 P    | j         rt          j         | j                   | j        S r   )rT   ra   rM   )r   r   s     r   r(   zDummySelectPoll.poll  s&    : 	+,tz***{r   r   )r1   r2   r3   r   r   r   r   r(   r4   r   r   r   r   q  sb            ^ ^ ^% % %    r   r   c                   :    e Zd ZdZd	dZd
dZd Zd Zd Zd Z	dS )rg   z0
    Fake implementation of select.kqueue()
    Nc                 P    |pg | _         || _        || _        g | _        g | _        d S r   )rM   
errno_pollerrno_registerrj   registered_flags)r   rM   r}   r   s       r   r   zDummyKQueue.__init__  s2    l*2"$ "r   c                 "   |C|                      |           |                     | j                   |                                 S |                     |           |                     | j                   | j                            |           d S r   )assert_max_events_on_pollraise_errorr   build_resultassert_max_events_on_registerr   rj   extend)r   kevents
max_eventsr   s       r   controlzDummyKQueue.control  s    ?**:666T_---$$&&&**:666,---&&w/////r   c                 8    |sd S t                      }||_        |r   )r   rV   )r   errexs      r   r   zDummyKQueue.raise_error  s!    FFYYr   c                 $    d | j         D             S )Nc                 4    g | ]\  }}t          ||          S r4   )
FakeKEvent).0r   r   s      r   
<listcomp>z,DummyKQueue.build_result.<locals>.<listcomp>  s&    JJJleF
5&))JJJr   rL   )r   s    r   r   zDummyKQueue.build_result  s    JJdkJJJJr   c                 T    |t           j        k    sJ dt           j        z              d S )Nz8`max_events` parameter of `kqueue.control() should be %d)r   r   r   r   s     r   r   z%DummyKQueue.assert_max_events_on_poll  s2    \4444F%& 54444r   c                 &    |dk    s
J d            d S )Nr   zD`max_events` parameter of `kqueue.control()` should be 0 on registerr4   r   s     r   r   z)DummyKQueue.assert_max_events_on_register  s    QR r   )NNNr   )
r1   r2   r3   r   r   r   r   r   r   r   r4   r   r   rg   rg     s         # # # #0 0 0 0  K K K' ' '
T T T T Tr   rg   c                       e Zd Zd ZdS )r   c                 "    || _         || _        d S r   )r   r   )r   r   r   s      r   r   zFakeKEvent.__init__  s    
r   N)r1   r2   r3   r   r4   r   r   r   r     s#            r   r   c                  T    t          j        t          j        t                             S r   )unittestfindTestCasessysmodulesr1   r4   r   r   
test_suiter     s    !#+h"7888r   __main__r   )defaultTest)r   r   rV   ra   supervisor.tests.baser   r   r   r   r   r   r   r	   objectSkipTestCaseTestCaser   r6   KQueuePollerTestsBaserd   PollerPollTestsBaser   rO   r   rg   r   r   r1   mainr4   r   r   <module>r      s   



    & & & & & & D D D D D D D D D D @ @ @ @ @ @ @ @ . . . . . .
 7 7 7 7 7h' 7 7 7BO8 O8 O8 O8 O8) O8 O8 O8b  )$-(U. U. U. U. U.- U. U. U.n ? '"+&=8 =8 =8 =8 =8) =8 =8 =8~2 2 2 2 2& 2 2 2    f   8%T %T %T %T %T& %T %T %TN       9 9 9 zHMl++++++ r   