Make WordPress Core


Ignore:
Timestamp:
01/30/2021 11:29:34 AM (6 years ago)
Author:
SergeyBiryukov
Message:

Tests: Use skipTestOnTimeout() in more HTTP tests.

Adjust it to handle more types of timeouts, e.g. "Resolving timed out", "Connection timed out".

Merges [43511], [43512], [46682], [46996] to the 4.7 branch.
See #51669.

Location:
branches/4.7
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/4.7

  • branches/4.7/tests/phpunit/tests/http/base.php

    r39174 r50088  
    1818        protected $http_request_args;
    1919
    20         /**
    21          * Mark test as skipped if the HTTP request times out
    22          */
    23         function skipTestOnTimeout( $response ) {
    24                 if( ! is_wp_error( $response ) ){
    25                         return;
    26                 }
    27                 if ( 'connect() timed out!' === $response->get_error_message() ){
    28                         $this->markTestSkipped( 'HTTP timeout' );
    29                 }
    30 
    31                 if ( 0 === strpos( $response->get_error_message(), 'Operation timed out after' ) ){
    32                         $this->markTestSkipped( 'HTTP timeout' );
    33                 }
    34 
    35                 if ( 0 === strpos( $response->get_error_message(), 'stream_socket_client(): unable to connect to tcp://s.w.org:80' ) ) {
    36                         $this->markTestSkipped( 'HTTP timeout' );
    37                 }
    38 
    39         }
    40 
    4120        function setUp() {
    4221
    … …  
    7453                // 5 : 5 & 301
    7554                $res = wp_remote_request($this->redirection_script . '?code=301&rt=' . 5, array('redirection' => 5) );
     55
     56                $this->skipTestOnTimeout( $res );
    7657                $this->assertNotWPError( $res );
    7758                $this->assertEquals(200, (int)$res['response']['code'] );
    … …  
    8162                // 5 : 5 & 302
    8263                $res = wp_remote_request($this->redirection_script . '?code=302&rt=' . 5, array('redirection' => 5) );
     64
     65                $this->skipTestOnTimeout( $res );
    8366                $this->assertNotWPError( $res );
    8467                $this->assertEquals(200, (int)$res['response']['code'] );
    … …  
    9174                // 5 > 0 & 301
    9275                $res = wp_remote_request($this->redirection_script . '?code=301&rt=' . 5, array('redirection' => 0) );
     76
     77                $this->skipTestOnTimeout( $res );
    9378                $this->assertNotWPError( $res );
    9479                $this->assertEquals(301, (int)$res['response']['code'] );
    … …  
    10186                // 5 > 0 & 302
    10287                $res = wp_remote_request($this->redirection_script . '?code=302&rt=' . 5, array('redirection' => 0) );
     88
     89                $this->skipTestOnTimeout( $res );
    10390                $this->assertNotWPError( $res );
    10491                $this->assertEquals(302, (int)$res['response']['code'] );
    … …  
    10895                // 5 - 5
    10996                $res = wp_remote_request($this->redirection_script . '?rt=' . 5, array('redirection' => 5) );
     97
     98                $this->skipTestOnTimeout( $res );
    11099                $this->assertNotWPError( $res );
    111100                $this->assertEquals(200, (int)$res['response']['code'] );
    … …  
    115104                // No redirections on HEAD request:
    116105                $res = wp_remote_request($this->redirection_script . '?code=302&rt=' . 1, array('method' => 'HEAD') );
     106
     107                $this->skipTestOnTimeout( $res );
    117108                $this->assertNotWPError( $res );
    118109                $this->assertEquals( 302, (int)$res['response']['code'] );
    … …  
    125116                // Redirections on HEAD request when Requested
    126117                $res = wp_remote_request($this->redirection_script . '?rt=' . 5, array('redirection' => 5, 'method' => 'HEAD') );
     118
     119                $this->skipTestOnTimeout( $res );
    127120                $this->assertNotWPError( $res );
    128121                $this->assertEquals( 200, (int)$res['response']['code'] );
    … …  
    132125                // 10 > 5
    133126                $res = wp_remote_request($this->redirection_script . '?rt=' . 10, array('redirection' => 5) );
     127
     128                $this->skipTestOnTimeout( $res );
    134129                $this->assertWPError( $res );
    135130        }
    … …  
    138133                // 6 > 5 (close edgecase)
    139134                $res = wp_remote_request($this->redirection_script . '?rt=' . 6, array('redirection' => 5) );
     135
     136                $this->skipTestOnTimeout( $res );
    140137                $this->assertWPError( $res );
    141138        }
    … …  
    144141                // 4 < 5 (close edgecase)
    145142                $res = wp_remote_request($this->redirection_script . '?rt=' . 4, array('redirection' => 5) );
     143
     144                $this->skipTestOnTimeout( $res );
    146145                $this->assertNotWPError( $res );
    147146        }
    … …  
    153152                // 0 redirections asked for, Should return the document?
    154153                $res = wp_remote_request($this->redirection_script . '?code=302&rt=' . 5, array('redirection' => 0) );
     154
     155                $this->skipTestOnTimeout( $res );
    155156                $this->assertNotWPError( $res );
    156157                $this->assertEquals( 302, (int)$res['response']['code'] );
    … …  
    165166                // Prints PASS on initial load, FAIL if the client follows the specified redirection
    166167                $res = wp_remote_request( $this->redirection_script . '?201-location=true' );
     168
     169                $this->skipTestOnTimeout( $res );
    167170                $this->assertNotWPError( $res );
    168171                $this->assertEquals( 'PASS', $res['body']);
    … …  
    179182                // Test 301 - POST to POST
    180183                $res = wp_remote_request( $url, array( 'method' => 'PUT', 'timeout' => 30 ) );
     184
     185                $this->skipTestOnTimeout( $res );
    181186                $this->assertEquals( 'PASS', wp_remote_retrieve_body( $res ) );
    182187                $this->assertTrue( !empty( $res['headers']['location'] ) );
    … …  
    191196                $res = wp_remote_request( $this->redirection_script . '?header-check', array('headers' => $headers) );
    192197
     198                $this->skipTestOnTimeout( $res );
    193199                $this->assertNotWPError( $res );
    194200
    … …  
    221227
    222228                $this->skipTestOnTimeout( $res );
    223 
    224229                $this->assertNotWPError( $res );
    225230                $this->assertEquals( '', $res['body'] ); // The body should be empty.
    … …  
    244249
    245250                $this->skipTestOnTimeout( $res );
    246 
    247251                $this->assertNotWPError( $res );
    248252                $this->assertEquals( $size, $filesize ); // Check that the file is written to disk correctly without any extra characters
    … …  
    262266
    263267                $this->skipTestOnTimeout( $res );
    264 
    265268                $this->assertNotWPError( $res );
    266269                $this->assertEquals( $size, strlen( $res['body'] ) );
    … …  
    278281
    279282                $res = wp_remote_post( add_query_arg( 'response_code', $response_code, $url ), array( 'timeout' => 30 ) );
     283
     284                $this->skipTestOnTimeout( $res );
    280285                $this->assertEquals( $method, wp_remote_retrieve_body( $res ) );
    281286        }
    … …  
    323328
    324329                $res = wp_remote_get( $url, $args );
     330
     331                $this->skipTestOnTimeout( $res );
    325332                $this->assertEquals( 'PASS', wp_remote_retrieve_body( $res ) );
    326333
    … …  
    344351                remove_filter( 'http_request_args', array( $this, 'filter_http_request_args' ) );
    345352
     353                $this->skipTestOnTimeout( $res );
    346354                $this->assertNotEmpty( $this->http_request_args['sslcertificates'] );
    347355                $this->assertNotWPError( $res );
    … …  
    357365                $res = wp_remote_head( $url, array( 'timeout' => 30 ) );
    358366
     367                $this->skipTestOnTimeout( $res );
    359368                $this->assertInternalType( 'array', wp_remote_retrieve_header( $res, 'location' ) );
    360369                $this->assertCount( 2, wp_remote_retrieve_header( $res, 'location' ) );
    361370
    362371                $res = wp_remote_get( $url, array( 'timeout' => 30 ) );
     372
     373                $this->skipTestOnTimeout( $res );
    363374                $this->assertEquals( 'PASS', wp_remote_retrieve_body( $res ) );
    364375
    … …  
    374385
    375386                $res = wp_remote_get( $url );
     387
     388                $this->skipTestOnTimeout( $res );
    376389                $this->assertEquals( 'PASS', wp_remote_retrieve_body( $res ) );
    377390        }
    … …  
    388401
    389402                $res = wp_remote_get( 'https://wordpress.org/' );
     403
     404                $this->skipTestOnTimeout( $res );
    390405                $this->assertNotWPError( $res );
    391406        }
    … …  
    401416
    402417                $res = wp_remote_request( $url );
     418
     419                $this->skipTestOnTimeout( $res );
    403420                $this->assertNotWPError( $res );
    404421        }
Note: See TracChangeset for help on using the changeset viewer.