From f1da13227122374d7415fabf9ae5c2dbf3dc9852 Mon Sep 17 00:00:00 2001 From: Dan Poltawski Date: Mon, 17 Jun 2013 10:23:44 +0800 Subject: [PATCH] MDL-40207 simplepie: reduce false failures in unit tests 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 --- lib/simplepie/moodle_simplepie.php | 5 +++-- lib/tests/rsslib_test.php | 14 ++++++++------ 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/lib/simplepie/moodle_simplepie.php b/lib/simplepie/moodle_simplepie.php index 6738d29164b..31c5025d60f 100644 --- a/lib/simplepie/moodle_simplepie.php +++ b/lib/simplepie/moodle_simplepie.php @@ -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); @@ -70,7 +71,7 @@ class moodle_simplepie extends SimplePie { $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); diff --git a/lib/tests/rsslib_test.php b/lib/tests/rsslib_test.php index e54c71c8502..f1ff35f8a86 100644 --- a/lib/tests/rsslib_test.php +++ b/lib/tests/rsslib_test.php @@ -37,19 +37,21 @@ require_once($CFG->libdir.'/simplepie/moodle_simplepie.php'); 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); @@ -109,7 +111,7 @@ EOD; * 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()); } @@ -136,7 +138,7 @@ EOD; 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');