Skip to content
This repository has been archived by the owner on Dec 13, 2024. It is now read-only.

Commit

Permalink
MDL-40207 simplepie: reduce false failures in unit tests
Browse files Browse the repository at this point in the history
The simplepie tests time out too quickly due to a low connect timeout,
to fix this:

* Introduced a way to set the timeout during intitial construction
* Converted the unit tests to use a high timeout value
  • Loading branch information
danpoltawski committed Jun 17, 2013
1 parent f192883 commit f1da132
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 8 deletions.
5 changes: 3 additions & 2 deletions lib/simplepie/moodle_simplepie.php
Original file line number Diff line number Diff line change
Expand Up @@ -52,8 +52,9 @@ class moodle_simplepie extends SimplePie {
* with Moodle defaults.
*
* @param string $feedurl optional URL of the feed
* @param int $timeout how many seconds requests should wait for server response
*/
public function __construct($feedurl = null) {
public function __construct($feedurl = null, $timeout = 2) {
$cachedir = moodle_simplepie::get_cache_directory();
check_dir_exists($cachedir);

Expand All @@ -70,7 +71,7 @@ public function __construct($feedurl = null) {
$this->set_output_encoding('UTF-8');

// default to a short timeout as most operations will be interactive
$this->set_timeout(2);
$this->set_timeout($timeout);

// 1 hour default cache
$this->set_cache_location($cachedir);
Expand Down
14 changes: 8 additions & 6 deletions lib/tests/rsslib_test.php
Original file line number Diff line number Diff line change
Expand Up @@ -37,19 +37,21 @@

class moodlesimplepie_testcase extends basic_testcase {

# A url we know exists and is valid
// A url we know exists and is valid.
const VALIDURL = 'http://download.moodle.org/unittest/rsstest.xml';
# A url which we know doesn't exist
// A url which we know doesn't exist.
const INVALIDURL = 'http://download.moodle.org/unittest/rsstest-which-doesnt-exist.xml';
# This tinyurl redirects to th rsstest.xml file
// This tinyurl redirects to th rsstest.xml file.
const REDIRECTURL = 'http://tinyurl.com/lvyslv';
// The number of seconds tests should wait for the server to respond (high to prevent false positives).
const TIMEOUT = 10;

function setUp() {
moodle_simplepie::reset_cache();
}

function test_getfeed() {
$feed = new moodle_simplepie(self::VALIDURL);
$feed = new moodle_simplepie(self::VALIDURL, self::TIMEOUT);

$this->assertInstanceOf('moodle_simplepie', $feed);

Expand Down Expand Up @@ -109,7 +111,7 @@ function test_getfeed() {
* Test retrieving a url which doesn't exist
*/
function test_failurl() {
$feed = @new moodle_simplepie(self::INVALIDURL); // we do not want this in php error log
$feed = @new moodle_simplepie(self::INVALIDURL, self::TIMEOUT); // we do not want this in php error log

$this->assertNotEmpty($feed->error());
}
Expand All @@ -136,7 +138,7 @@ function test_failproxy() {
function test_redirect() {
global $CFG;

$feed = new moodle_simplepie(self::REDIRECTURL);
$feed = new moodle_simplepie(self::REDIRECTURL, self::TIMEOUT);

$this->assertNull($feed->error());
$this->assertEquals($feed->get_title(), 'Moodle News');
Expand Down

0 comments on commit f1da132

Please sign in to comment.