ó
ç'ÊUc           @   sì   d  d l  Z  d  d l m Z d  d l m Z m Z m Z m Z m Z m	 Z	 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 d  d	 l m Z d
 e  j f d „  ƒ  YZ e d k rè e  j ƒ  n  d S(   iÿÿÿÿN(   t   defer(   t   TimeoutErrort   DNSLookupErrort   ConnectionRefusedErrort   ConnectionDonet   ConnectErrort   ConnectionLostt   TCPTimedOutError(   t   optional_features(   t   RetryMiddleware(   t   ResponseFailed(   t   Spider(   t   Requestt   Response(   t   get_crawlert	   RetryTestc           B   sP   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 RS(   c         C   s@   t  t ƒ } | j d ƒ |  _ t j | ƒ |  _ d |  j _ d  S(   Nt   fooi   (   R   R   t   _create_spidert   spiderR	   t   from_crawlert   mwt   max_retry_times(   t   selft   crawler(    (    sI   /home/travis/build/scrapy/scrapy/tests/test_downloadermiddleware_retry.pyt   setUp   s    c         C   s[   t  d ƒ } t d d d d d ƒ} |  j j | | |  j ƒ } | j | j k  sW t ‚ d  S(   Ns   http://www.scrapytest.org/503t   bodyt    t   statusi÷  (   R   R   R   t   process_responseR   t   priorityt   AssertionError(   R   t   reqt   rspt   req2(    (    sI   /home/travis/build/scrapy/scrapy/tests/test_downloadermiddleware_retry.pyt   test_priority_adjust   s    c         C   sO   t  d ƒ } t d d d d d ƒ} |  j j | | |  j ƒ | k sK t ‚ d  S(   Ns   http://www.scrapytest.org/404R   R   R   i”  (   R   R   R   R   R   R   (   R   R   R    (    (    sI   /home/travis/build/scrapy/scrapy/tests/test_downloadermiddleware_retry.pyt   test_404   s    c         C   s´   t  d d i t d 6ƒ} t d d d d d ƒ} |  j j | | |  j ƒ } | | k s^ t ‚ t  d d i t d 6ƒ} t d ƒ } |  j j | | |  j ƒ } | | k s° t ‚ d  S(   Ns   http://www.scrapytest.org/503t   metat
   dont_retryR   R   R   i÷  (   R   t   TrueR   R   R   R   R   t   False(   R   R   R    t   r(    (    sI   /home/travis/build/scrapy/scrapy/tests/test_downloadermiddleware_retry.pyt   test_dont_retry#   s    c         C   sM   t  d d i t d 6ƒ} |  j j | t ƒ  |  j ƒ } | d  k sI t ‚ d  S(   Ns   http://www.scrapytest.org/503R$   R%   (   R   R&   R   t   process_exceptionR   R   t   NoneR   (   R   R   R(   (    (    sI   /home/travis/build/scrapy/scrapy/tests/test_downloadermiddleware_retry.pyt   test_dont_retry_exc3   s    c         C   sÝ   t  d ƒ } t d d d d d ƒ} |  j j | | |  j ƒ } t | t  ƒ sT t ‚ |  j | j d d ƒ |  j j | | |  j ƒ } t | t  ƒ s› t ‚ |  j | j d d ƒ |  j j | | |  j ƒ | k sÙ t ‚ d  S(	   Ns   http://www.scrapytest.org/503R   R   R   i÷  t   retry_timesi   i   (	   R   R   R   R   R   t
   isinstanceR   t   assertEqualR$   (   R   R   R    (    (    sI   /home/travis/build/scrapy/scrapy/tests/test_downloadermiddleware_retry.pyt   test_5039   s    c         C   s{   t  j t t t t t t t g } d t k r= | j	 t
 ƒ n  x7 | D]/ } t d | j ƒ } |  j | | d ƒ ƒ qD Wd  S(   Nt   http11s   http://www.scrapytest.org/%sR   (   R    R   R   R   R   R   R   R   R   t   appendR
   R   t   __name__t   _test_retry_exception(   R   t
   exceptionst   excR   (    (    sI   /home/travis/build/scrapy/scrapy/tests/test_downloadermiddleware_retry.pyt   test_twistederrorsJ   s    	c         C   s½   |  j  j | | |  j ƒ } t | t ƒ s0 t ‚ |  j | j d d ƒ |  j  j | | |  j ƒ } t | t ƒ sw t ‚ |  j | j d d ƒ |  j  j | | |  j ƒ } |  j | d  ƒ d  S(   NR-   i   i   (	   R   R*   R   R.   R   R   R/   R$   R+   (   R   R   t	   exception(    (    sI   /home/travis/build/scrapy/scrapy/tests/test_downloadermiddleware_retry.pyR4   U   s    (
   R3   t
   __module__R   R"   R#   R)   R,   R0   R7   R4   (    (    (    sI   /home/travis/build/scrapy/scrapy/tests/test_downloadermiddleware_retry.pyR      s   							t   __main__(   t   unittestt   twisted.internetR    t   twisted.internet.errorR   R   R   R   R   R   R   t   scrapyR   t"   scrapy.downloadermiddlewares.retryR	   t   scrapy.xlib.txR
   t   scrapy.spidersR   t   scrapy.httpR   R   t   scrapy.utils.testR   t   TestCaseR   R3   t   main(    (    (    sI   /home/travis/build/scrapy/scrapy/tests/test_downloadermiddleware_retry.pyt   <module>   s   4V