off-topic-ish

theres also a function to explicit call the collector (sorry, I forgot the name)

it seems php only flag things for collecting  (wen you unset($stuff)
), but never really collect then. The documentation says that the
collector will run wen theres not work to do, but this seems a very
rare event (maybe is never triggered).

hu,,

On 6 February 2010 03:37, Jared Williams <jared.willia...@ntlworld.com> wrote:
>
> A guess would be to try PHP 5.3, and enable the garbage collector.
>
> http://www.php.net/manual/en/function.gc-enable.php
>
> Jared
>
>> -----Original Message-----
>> From: wikitech-l-boun...@lists.wikimedia.org
>> [mailto:wikitech-l-boun...@lists.wikimedia.org] On Behalf Of
>> Ævar Arnfjörð Bjarmason
>> Sent: 06 February 2010 01:05
>> To: wikitech-l@lists.wikimedia.org
>> Cc: mediawiki-...@lists.wikimedia.org
>> Subject: [Wikitech-l] New phpunit tests eat ~1GB of memory
>>
>> Since the tests were ported from t/ to phpunit's
>> phase3/maintenance/tests/ in r61938 and other commits running
>> the tests on my machine takes up to 1GB of memory and grows
>> as it runs more tests. It seems that phpunit uses the same
>> instance of the php interpreter for running all the tests.
>>
>> Is there some way around this? Perhaps phpunit.xml could be
>> tweaked so that it runs a new php for each test?
>>
>> Furthermore when I run `make test' I get this:
>>
>>     Time: 03:35, Memory: 1849.25Mb
>>
>>     There were 2 failures:
>>
>>     1) LanguageConverterTest::testGetPreferredVariantUserOption
>>     Failed asserting that two strings are equal.
>>     --- Expected
>>     +++ Actual
>>     @@ @@
>>     -tg-latn
>>     +tg
>>
>>
>> /home/avar/src/mw/trunk/phase3/maintenance/tests/LanguageConve
>> rterTest.php:82
>>
>>     2) Warning
>>     No tests found in class "ParserUnitTest".
>>
>>     FAILURES!
>>     Tests: 686, Assertions: 3431, Failures: 2, Incomplete: 34
>>
>> But when I run phpunit manually on the test then all tests pass:
>>
>>     $ phpunit LanguageConverterTest.php
>>     PHPUnit 3.4.5 by Sebastian Bergmann.
>>
>>     .........
>>
>>     Time: 23 seconds, Memory: 23.75Mb
>>
>>     OK (9 tests, 34 assertions)
>>
>> Also after I get "Tests: 686, Assertions: 3431, Failures: 2,
>> Incomplete: 34" in the first output phpunit doesn't exit and
>> continues hugging my memory. Why is it still running? It has
>> already run all the tests.
>>
>> On Wed, Feb 3, 2010 at 17:35,  <ia...@svn.wikimedia.org> wrote:
>> > http://www.mediawiki.org/wiki/Special:Code/MediaWiki/61938
>> >
>> > Revision: 61938
>> > Author:   ialex
>> > Date:     2010-02-03 17:35:59 +0000 (Wed, 03 Feb 2010)
>> >
>> > Log Message:
>> > -----------
>> > * Port tests from t/inc/
>> > * Added new tests to XmlTest
>> >
>> > Added Paths:
>> > -----------
>> >    trunk/phase3/tests/LicensesTest.php
>> >    trunk/phase3/tests/SanitizerTest.php
>> >    trunk/phase3/tests/TimeAdjustTest.php
>> >    trunk/phase3/tests/TitleTest.php
>> >    trunk/phase3/tests/XmlTest.php
>> >
>> > Added: trunk/phase3/tests/LicensesTest.php
>> >
> ===================================================================
>> > --- trunk/phase3/tests/LicensesTest.php
>>     (rev
>> > 0)
>> > +++ trunk/phase3/tests/LicensesTest.php 2010-02-03 17:35:59
>> UTC (rev
>> > +++ 61938)
>> > @@ -0,0 +1,17 @@
>> > +<?php
>> > +
>> > +/**
>> > + * @group Broken
>> > + */
>> > +class LicensesTest extends PHPUnit_Framework_TestCase {
>> > +
>> > +       function testLicenses() {
>> > +               $str = "
>> > +* Free licenses:
>> > +** GFLD|Debian disagrees
>> > +";
>> > +
>> > +               $lc = new Licenses( $str );
>> > +               $this->assertTrue( is_a( $lc, 'Licenses' ),
>> 'Correct
>> > +class' );
>> > +       }
>> > +}
>> > \ No newline at end of file
>> >
>> >
>> > Property changes on: trunk/phase3/tests/LicensesTest.php
>> >
> ___________________________________________________________________
>> > Added: svn:eol-style
>> >   + native
>> >
>> > Added: trunk/phase3/tests/SanitizerTest.php
>> >
> ===================================================================
>> > --- trunk/phase3/tests/SanitizerTest.php
>>
>> > (rev 0)
>> > +++ trunk/phase3/tests/SanitizerTest.php        2010-02-03
> 17:35:59
>> > +++ UTC (rev 61938)
>> > @@ -0,0 +1,71 @@
>> > +<?php
>> > +
>> > +global $IP;
>> > +require_once( "$IP/includes/Sanitizer.php" );
>> > +
>> > +class SanitizerTest extends PHPUnit_Framework_TestCase {
>> > +
>> > +       function testDecodeNamedEntities() {
>> > +               $this->assertEquals(
>> > +                       "\xc3\xa9cole",
>> > +                       Sanitizer::decodeCharReferences(
>> > + '&eacute;cole' ),
>> > +                       'decode named entities'
>> > +               );
>> > +       }
>> > +
>> > +       function testDecodeNumericEntities() {
>> > +               $this->assertEquals(
>> > +                       "\xc4\x88io bonas dans l'\xc3\xa9cole!",
>> > +                       Sanitizer::decodeCharReferences(
> "&#x108;io
>> > + bonas dans l'&#233;cole!" ),
>> > +                       'decode numeric entities'
>> > +               );
>> > +       }
>> > +
>> > +       function testDecodeMixedEntities() {
>> > +               $this->assertEquals(
>> > +                       "\xc4\x88io bonas dans l'\xc3\xa9cole!",
>> > +                       Sanitizer::decodeCharReferences(
> "&#x108;io
>> > + bonas dans l'&eacute;cole!" ),
>> > +                       'decode mixed numeric/named entities'
>> > +               );
>> > +       }
>> > +
>> > +       function testDecodeMixedComplexEntities() {
>> > +               $this->assertEquals(
>> > +                       "\xc4\x88io bonas dans
>> l'\xc3\xa9cole! (mais
>> > + pas &#x108;io dans l'&eacute;cole)",
>> > +                       Sanitizer::decodeCharReferences(
>> > +                               "&#x108;io bonas dans
>> l'&eacute;cole! (mais pas &amp;#x108;io dans l'&#38;eacute;cole)"
>> > +                       ),
>> > +                       'decode mixed complex entities'
>> > +               );
>> > +       }
>> > +
>> > +       function testInvalidAmpersand() {
>> > +               $this->assertEquals(
>> > +                       'a & b',
>> > +                       Sanitizer::decodeCharReferences( 'a & b'
> ),
>> > +                       'Invalid ampersand'
>> > +               );
>> > +       }
>> > +
>> > +       function testInvalidEntities() {
>> > +               $this->assertEquals(
>> > +                       '&foo;',
>> > +                       Sanitizer::decodeCharReferences( '&foo;'
> ),
>> > +                       'Invalid named entity'
>> > +               );
>> > +       }
>> > +
>> > +       function testInvalidNumberedEntities() {
>> > +               $this->assertEquals( UTF8_REPLACEMENT,
>> > + Sanitizer::decodeCharReferences( "&#88888888888888;" ), 'Invalid
>
>> > + numbered entity' );
>> > +       }
>> > +
>> > +       function testSelfClosingTag() {
>> > +               $GLOBALS['wgUseTidy'] = false;
>> > +               $this->assertEquals(
>> > +                       '<div>Hello world</div>',
>> > +                       Sanitizer::removeHTMLtags( '<div>Hello
>> > +world</div />' ),
>> > +                       'Self-closing closing div'
>> > +               );
>> > +       }
>> > +}
>> > +
>> >
>> >
>> > Property changes on: trunk/phase3/tests/SanitizerTest.php
>> >
> ___________________________________________________________________
>> > Added: svn:eol-style
>> >   + native
>> >
>> > Added: trunk/phase3/tests/TimeAdjustTest.php
>> >
> ===================================================================
>> > --- trunk/phase3/tests/TimeAdjustTest.php
>>
>> > (rev 0)
>> > +++ trunk/phase3/tests/TimeAdjustTest.php       2010-02-03
> 17:35:59
>> > +++ UTC (rev 61938)
>> > @@ -0,0 +1,40 @@
>> > +<?php
>> > +
>> > +class TimeAdjustTest extends PHPUnit_Framework_TestCase {
>> > +
>> > +       public function setUp() {
>> > +               $this->iniSet( 'precision', 15 );
>> > +       }
>> > +
>> > +       # Test offset usage for a given language::userAdjust
>> > +       function testUserAdjust() {
>> > +               global $wgLocalTZoffset, $wgContLang, $wgUser;
>> > +
>> > +               $wgContLang = $en = Language::factory( 'en' );
>> > +
>> > +               # Collection of parameters for Language_t_Offset.
>> > +               # Format: date to be formatted,
>> localTZoffset value,
>> > + expected date
>> > +               $userAdjust_tests = array(
>> > +                       array( 20061231235959,   0,
>> 20061231235959 ),
>> > +                       array( 20061231235959,   5,
>> 20070101000459 ),
>> > +                       array( 20061231235959,  15,
>> 20070101001459 ),
>> > +                       array( 20061231235959,  60,
>> 20070101005959 ),
>> > +                       array( 20061231235959,  90,
>> 20070101012959 ),
>> > +                       array( 20061231235959, 120,
>> 20070101015959 ),
>> > +                       array( 20061231235959, 540,
>> 20070101085959 ),
>> > +                       array( 20061231235959,  -5,
>> 20061231235459 ),
>> > +                       array( 20061231235959, -30,
>> 20061231232959 ),
>> > +                       array( 20061231235959, -60,
>> 20061231225959 ),
>> > +               );
>> > +
>> > +               foreach( $userAdjust_tests as $data ) {
>> > +                       $wgLocalTZoffset = $data[1];
>> > +
>> > +                       $this->assertEquals(
>> > +                               strval( $data[2] ),
>> > +                               strval( $en->userAdjust(
>> $data[0], ''
>> > +) ),
>> > +                               "User adjust {$data[0]} by
>> {$data[1]} minutes should give {$data[2]}"
>> > +                       );
>> > +               }
>> > +       }
>> > +}
>> >
>> >
>> > Property changes on: trunk/phase3/tests/TimeAdjustTest.php
>> >
> ___________________________________________________________________
>> > Added: svn:eol-style
>> >   + native
>> >
>> > Added: trunk/phase3/tests/TitleTest.php
>> >
> ===================================================================
>> > --- trunk/phase3/tests/TitleTest.php
>>     (rev
>> > 0)
>> > +++ trunk/phase3/tests/TitleTest.php    2010-02-03 17:35:59
>> UTC (rev
>> > +++ 61938)
>> > @@ -0,0 +1,17 @@
>> > +<?php
>> > +
>> > +class TitleTest extends PHPUnit_Framework_TestCase {
>> > +
>> > +       function testLegalChars() {
>> > +               $titlechars = Title::legalChars();
>> > +
>> > +               foreach ( range( 1, 255 ) as $num ) {
>> > +                       $chr = chr( $num );
>> > +                       if ( strpos( "#[]{}<>|", $chr ) !==
>> false ||
>> > +preg_match( "/[\\x00-\\x1f\\x7f]/", $chr ) ) {
>> > +                               $this->assertFalse(
>> (bool)preg_match(
>> > +"/[$titlechars]/", $chr ), "chr($num) = $chr is not a valid
>> > +titlechar" );
>> > +                       } else {
>> > +                               $this->assertTrue(
>> (bool)preg_match(
>> > +"/[$titlechars]/", $chr ), "chr($num) = $chr is a valid
>> titlechar" );
>> > +                       }
>> > +               }
>> > +       }
>> > +}
>> >
>> >
>> > Property changes on: trunk/phase3/tests/TitleTest.php
>> >
> ___________________________________________________________________
>> > Added: svn:eol-style
>> >   + native
>> >
>> > Added: trunk/phase3/tests/XmlTest.php
>> >
> ===================================================================
>> > --- trunk/phase3/tests/XmlTest.php
>>     (rev
>> > 0)
>> > +++ trunk/phase3/tests/XmlTest.php      2010-02-03 17:35:59
>> UTC (rev
>> > +++ 61938)
>> > @@ -0,0 +1,115 @@
>> > +<?php
>> > +
>> > +class XmlTest extends PHPUnit_Framework_TestCase {
>> > +
>> > +       function testElementOpen() {
>> > +               $this->assertEquals(
>> > +                       '<element>',
>> > +                       Xml::element( 'element', null, null ),
>> > +                       'Opening element with no attributes'
>> > +               );
>> > +       }
>> > +
>> > +       function testElementEmpty() {
>> > +               $this->assertEquals(
>> > +                       '<element />',
>> > +                       Xml::element( 'element', null, '' ),
>> > +                       'Terminated empty element'
>> > +               );
>> > +       }
>> > +
>> > +       function testElementEscaping() {
>> > +               $this->assertEquals(
>> > +                       '<element>hello &lt;there&gt; you &amp;
>> > + you</element>',
>> > +                       Xml::element( 'element', null,
>> 'hello <there>
>> > + you & you' ),
>> > +                       'Element with no attributes and
>> content that needs escaping'
>> > +               );
>> > +       }
>> > +
>> > +       function testElementAttributes() {
>> > +               $this->assertEquals(
>> > +                       '<element key="value" <>="&lt;&gt;">',
>> > +                       Xml::element( 'element', array( 'key' =>
>> > + 'value', '<>' => '<>' ), null ),
>> > +                       'Element attributes, keys are not escaped'
>> > +               );
>> > +       }
>> > +
>> > +       function testOpenElement() {
>> > +               $this->assertEquals(
>> > +                       '<element k="v">',
>> > +                       Xml::openElement( 'element', array(
>> 'k' => 'v'
>> > + ) ),
>> > +                       'openElement() shortcut'
>> > +               );
>> > +       }
>> > +
>> > +       function testCloseElement() {
>> > +               $this->assertEquals( '</element>',
>> Xml::closeElement(
>> > + 'element' ), 'closeElement() shortcut' );
>> > +       }
>> > +
>> > +       #
>> > +       # textarea
>> > +       #
>> > +       function testTextareaNoContent() {
>> > +               $this->assertEquals(
>> > +                       '<textarea name="name" id="name" cols="40"
>
>> > + rows="5"></textarea>',
>> > +                       Xml::textarea( 'name', '' ),
>> > +                       'textarea() with not content'
>> > +               );
>> > +       }
>> > +
>> > +       function testTextareaAttribs() {
>> > +               $this->assertEquals(
>> > +                       '<textarea name="name" id="name" cols="20"
>
>> > + rows="10">&lt;txt&gt;</textarea>',
>> > +                       Xml::textarea( 'name', '<txt>', 20, 10 ),
>> > +                       'textarea() with custom attribs'
>> > +               );
>> > +       }
>> > +
>> > +       #
>> > +       # JS
>> > +       #
>> > +       function testEscapeJsStringSpecialChars() {
>> > +               $this->assertEquals(
>> > +                       '\\\\\r\n',
>> > +                       Xml::escapeJsString( "\\\r\n" ),
>> > +                       'escapeJsString() with special characters'
>> > +               );
>> > +       }
>> > +
>> > +       function testEncodeJsVarBoolean() {
>> > +               $this->assertEquals(
>> > +                       'true',
>> > +                       Xml::encodeJsVar( true ),
>> > +                       'encodeJsVar() with boolean'
>> > +               );
>> > +       }
>> > +
>> > +       function testEncodeJsVarNull() {
>> > +               $this->assertEquals(
>> > +                       'null',
>> > +                       Xml::encodeJsVar( null ),
>> > +                       'encodeJsVar() with null'
>> > +               );
>> > +       }
>> > +
>> > +       function testEncodeJsVarArray() {
>> > +               $this->assertEquals(
>> > +                       '["a", 1]',
>> > +                       Xml::encodeJsVar( array( 'a', 1 ) ),
>> > +                       'encodeJsVar() with array'
>> > +               );
>> > +               $this->assertEquals(
>> > +                       '{"a": "a", "b": 1}',
>> > +                       Xml::encodeJsVar( array( 'a' =>
>> 'a', 'b' => 1
>> > + ) ),
>> > +                       'encodeJsVar() with associative array'
>> > +               );
>> > +       }
>> > +
>> > +       function testEncodeJsVarObject() {
>> > +               $this->assertEquals(
>> > +                       '{"a": "a", "b": 1}',
>> > +                       Xml::encodeJsVar( (object)array(
>> 'a' => 'a',
>> > +'b' => 1 ) ),
>> > +                       'encodeJsVar() with object'
>> > +               );
>> > +       }
>> > +}
>> >
>> >
>> > Property changes on: trunk/phase3/tests/XmlTest.php
>> >
> ___________________________________________________________________
>> > Added: svn:eol-style
>> >   + native
>> >
>> >
>> >
>> > _______________________________________________
>> > MediaWiki-CVS mailing list
>> > mediawiki-...@lists.wikimedia.org
>> > https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs
>> >
>> _______________________________________________
>> Wikitech-l mailing list
>> Wikitech-l@lists.wikimedia.org
>> https://lists.wikimedia.org/mailman/listinfo/wikitech-l
>
>
> _______________________________________________
> Wikitech-l mailing list
> Wikitech-l@lists.wikimedia.org
> https://lists.wikimedia.org/mailman/listinfo/wikitech-l
>



-- 
--
ℱin del ℳensaje.
_______________________________________________
Wikitech-l mailing list
Wikitech-l@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikitech-l

Reply via email to