ResourceLoaderULSModule::getModifiedTime updates continuously

Fix is simple: cache the hash of content per language

Added PHPUnit test for the same

Bug: 56856
Change-Id: I590b27af220d6e790c70728062d1a04c098b3d11
This commit is contained in:
Niklas Laxström
2013-11-11 09:04:59 +00:00
committed by Santhosh Thottingal
parent 6cd178359e
commit bd52ae0538
2 changed files with 75 additions and 15 deletions

View File

@@ -0,0 +1,49 @@
<?php
/**
* PHP Unit tests for ResourceLoaderULSModule class.
*
* @file
* @ingroup Extensions
*
* @author Santhosh Thottingal
*/
/**
* @covers ResourceLoaderULSModule
*/
class ResourceLoaderULSModuleMemcachedTest extends MediaWikiTestCase {
/**
* Test whether the modified time of the RL module varies
* correctly with language code.
* @covers ResourceLoaderSchemaModule::getModifiedTime
*/
function testModifiedTime() {
$request = new WebRequest();
$module = new ResourceLoaderULSModule();
$request->setVal( 'lang', 'he' );
$context = new ResourceLoaderContext(
new ResourceLoader(), $request );
$mtimeHebrew = $module->getModifiedTime( $context );
// sleep for 1 second
sleep( 1 );
$request->setVal( 'lang', 'hi' );
$context = new ResourceLoaderContext( new ResourceLoader(), $request );
$mtimeHindi = $module->getModifiedTime( $context );
$this->assertGreaterThan( $mtimeHebrew, $mtimeHindi, "Hindi has recent timestamp than Hebrew" );
// sleep for 1 second
sleep( 1 );
$request->setVal( 'lang', 'he' );
$context = new ResourceLoaderContext( new ResourceLoader(), $request );
$mtimeHebrewNew = $module->getModifiedTime( $context );
$this->assertEquals( $mtimeHebrewNew, $mtimeHebrew, "Hebrew timestamp remained same" );
// sleep for 1 second
sleep( 1 );
$request->setVal( 'lang', 'hi' );
$context = new ResourceLoaderContext( new ResourceLoader(), $request );
$mtimeHindiNew = $module->getModifiedTime( $context );
$this->assertEquals( $mtimeHindi, $mtimeHindiNew, "Hindi timestamp remained same" );
}
}