ó
[³XMc           @   sš  d  Z  d d l m Z d d l m Z d d l m Z y d d l m Z Wn e k
 rc d Z n Xd d l
 m Z d d l m Z d d l m Z d d	 l m Z d d
 l m Z d d l m Z m Z m Z d d l m Z d d l m Z d d d „  ƒ  YZ d „  Z d e e f d „  ƒ  YZ d e e f d „  ƒ  YZ d e f d „  ƒ  YZ  e! ƒ  j" e j# ƒ  ƒ e! ƒ  j" e j# ƒ  ƒ e! ƒ  j" e  j# ƒ  ƒ d S(   s/   
Tests for implementations of L{IReactorUNIX}.
iÿÿÿÿ(   t   S_IMODE(   t   stat(   t   platform(   t   AF_UNIX(   t   verifyObject(   t   md5(   t
   IConnector(   t   UNIXAddress(   t
   interfaces(   t   ServerFactoryt   ClientFactoryt   DatagramProtocol(   t   ReactorBuilder(   t   TCPPortTestsBuildert   UNIXFamilyMixinc           B   s,   e  Z d  Z e d k r! d Z n  d „  Z RS(   sK   
    Test-helper defining mixin for things related to AF_UNIX sockets.
    s)   Platform does not support AF_UNIX socketsc         C   s]   d } |  j  ƒ  } t | | ƒ | | d | ƒ} | j ƒ  |  j t t | ƒ j ƒ | ƒ d S(   s}   
        Assert that the mode of the created unix socket is set to the mode
        specified to the reactor method.
        i€  t   modeN(   t   buildReactort   getattrt   stopListeningt   assertEqualR    R   t   st_mode(   t   selft
   methodNamet   patht   factoryR   t   reactort   unixPort(    (    sC   /usr/lib/python2.7/dist-packages/twisted/internet/test/test_unix.pyt	   _modeTest%   s
    
N(   t   __name__t
   __module__t   __doc__R   t   Nonet   skipR   (    (    (    sC   /usr/lib/python2.7/dist-packages/twisted/internet/test/test_unix.pyR      s   	c         C   s   t  |  j ƒ  ƒ j ƒ  S(   sI   
    Return a new, unique abstract namespace path to be listened on.
    (   R   t   mktempt	   hexdigest(   t   case(    (    sC   /usr/lib/python2.7/dist-packages/twisted/internet/test/test_unix.pyt   _abstractPath1   s    t   UNIXTestsBuilderc           B   sb   e  Z d  Z d „  Z d „  Z d „  Z e d k r? d e _ n  d „  Z e d k r` d e _ n  RS(   s=   
    Builder defining tests relating to L{IReactorUNIX}.
    c         C   sA   |  j  ƒ  } | j |  j ƒ  t ƒ  ƒ } |  j t t | ƒ ƒ d S(   sX   
        L{IReactorUNIX.connectUNIX} returns an object providing L{IConnector}.
        N(   R   t   connectUNIXR!   R
   t
   assertTrueR   R   (   R   R   t	   connector(    (    sC   /usr/lib/python2.7/dist-packages/twisted/internet/test/test_unix.pyt   test_interface?   s    c         C   s    |  j  d |  j ƒ  t ƒ  ƒ d S(   ss   
        The UNIX socket created by L{IReactorUNIX.listenUNIX} is created with
        the mode specified.
        t
   listenUNIXN(   R   R!   R	   (   R   (    (    sC   /usr/lib/python2.7/dist-packages/twisted/internet/test/test_unix.pyt	   test_modeH   s    c         C   sU   t  |  ƒ } |  j ƒ  } | j d | t ƒ  ƒ } |  j | j ƒ  t d | ƒ ƒ d S(   sµ   
        On Linux, a UNIX socket path may begin with C{' '} to indicate a socket
        in the abstract namespace.  L{IReactorUNIX.listenUNIX} accepts such a
        path.
        t    N(   R$   R   R*   R	   t   assertEqualst   getHostR   (   R   R   R   t   port(    (    sC   /usr/lib/python2.7/dist-packages/twisted/internet/test/test_unix.pyt#   test_listenOnLinuxAbstractNamespaceP   s    t   linux2s8   Abstract namespace UNIX sockets only supported on Linux.c         C   sU   t  |  ƒ } |  j ƒ  } | j d | t ƒ  ƒ } |  j | j ƒ  t d | ƒ ƒ d S(   sc   
        L{IReactorUNIX.connectUNIX} also accepts a Linux abstract namespace
        path.
        R,   N(   R$   R   R&   R
   R-   t   getDestinationR   (   R   R   R   R(   (    (    sC   /usr/lib/python2.7/dist-packages/twisted/internet/test/test_unix.pyt$   test_connectToLinuxAbstractNamespace`   s
    (	   R   R   R   R)   R+   R0   R   R    R3   (    (    (    sC   /usr/lib/python2.7/dist-packages/twisted/internet/test/test_unix.pyR%   ;   s   					
t   UNIXDatagramTestsBuilderc           B   s8   e  Z d  Z d „  Z d „  Z e d k r6 d e _ n  RS(   sE   
    Builder defining tests relating to L{IReactorUNIXDatagram}.
    c         C   s    |  j  d |  j ƒ  t ƒ  ƒ d S(   sƒ   
        The UNIX socket created by L{IReactorUNIXDatagram.listenUNIXDatagram}
        is created with the mode specified.
        t   listenUNIXDatagramN(   R   R!   R   (   R   (    (    sC   /usr/lib/python2.7/dist-packages/twisted/internet/test/test_unix.pyt   test_listenModew   s    c         C   sU   t  |  ƒ } |  j ƒ  } | j d | t ƒ  ƒ } |  j | j ƒ  t d | ƒ ƒ d S(   s½   
        On Linux, a UNIX socket path may begin with C{' '} to indicate a socket
        in the abstract namespace.  L{IReactorUNIX.listenUNIXDatagram} accepts
        such a path.
        R,   N(   R$   R   R5   R   R-   R.   R   (   R   R   R   R/   (    (    sC   /usr/lib/python2.7/dist-packages/twisted/internet/test/test_unix.pyR0      s    R1   s8   Abstract namespace UNIX sockets only supported on Linux.(   R   R   R   R6   R0   R   R    (    (    (    sC   /usr/lib/python2.7/dist-packages/twisted/internet/test/test_unix.pyR4   p   s
   		
t   UNIXPortTestsBuilderc           B   s,   e  Z d  Z e j g Z d „  Z d „  Z RS(   s.   
    Tests for L{IReactorUNIX.listenUnix}
    c         C   s   | j  |  j ƒ  t ƒ  ƒ S(   s0   
        Get a UNIX port from a reactor
        (   R*   R!   R	   (   R   R   (    (    sC   /usr/lib/python2.7/dist-packages/twisted/internet/test/test_unix.pyt   getListeningPort–   s    c         C   s   d t  | j ƒ f S(   sJ   
        Get the expected connection lost message for a UNIX port
        s   (UNIX Port %s Closed)(   t   reprR/   (   R   R/   (    (    sC   /usr/lib/python2.7/dist-packages/twisted/internet/test/test_unix.pyt   getExpectedConnectionLostLogMsg   s    (   R   R   R   R   t   IReactorUNIXt   requiredInterfacesR8   R:   (    (    (    sC   /usr/lib/python2.7/dist-packages/twisted/internet/test/test_unix.pyR7      s   	N(    ($   R   R   R    t   ost   sysR   t   socketR   t   ImportErrorR   t   zope.interface.verifyR   t   twisted.python.hashlibR   t   twisted.internet.interfacesR   t   twisted.internet.addressR   t   twisted.internetR   t   twisted.internet.protocolR	   R
   R   t#   twisted.internet.test.reactormixinsR   t   twisted.internet.test.test_tcpR   R   R$   R%   R4   R7   t   globalst   updatet   makeTestCaseClasses(    (    (    sC   /usr/lib/python2.7/dist-packages/twisted/internet/test/test_unix.pyt   <module>   s.   
	
5