[BUGFIX] Skip unreliable APC test on PHP versions below 5.3.4 01/18901/2
authorChristian Kuhn <lolli@schwarzbu.ch>
Thu, 14 Feb 2013 00:13:43 +0000 (01:13 +0100)
committerChristian Kuhn <lolli@schwarzbu.ch>
Thu, 14 Mar 2013 11:26:59 +0000 (12:26 +0100)
APC has some slam protection that tries to prevent hammering of cache
entries. This can be disabled, but the option does not work at least
in native PHP 5.3.3 on debian squeeze. While it is no problem with
higher PHP version like the current one on travis-ci.org,
some tests are now just skipped on PHP environments knows for issues.

Change-Id: Ibbef201805b58041bb0b3e8aa16f0c1a2e366020
Resolves: #46267
Release: 6.1, 6.0
Reviewed-on: https://review.typo3.org/18901
Reviewed-by: Christian Kuhn
Tested-by: Christian Kuhn
typo3/sysext/core/Tests/Unit/Cache/Backend/ApcBackendTest.php

index 06b082b..9cd43bc 100644 (file)
@@ -65,6 +65,14 @@ class ApcBackendTest extends \TYPO3\CMS\Core\Tests\UnitTestCase {
         * @test
         */
        public function itIsPossibleToSetAndCheckExistenceInCache() {
+               // APC has some slam protection that tries to prevent hammering of cache
+               // entries. This can be disabled, but the option does not work at least
+               // in native PHP 5.3.3 on debian squeeze. While it is no problem with
+               // higher PHP version like the current one on travis-ci.org,
+               // the test is now just skipped on PHP environments that are knows for issues.
+               if (version_compare(phpversion(), '5.3.4', '<')) {
+                       $this->markTestSkipped('This test is not reliable with PHP version below 5.3.3');
+               }
                $backend = $this->setUpBackend();
                $data = 'Some data';
                $identifier = 'MyIdentifier' . md5(uniqid(mt_rand(), TRUE));
@@ -77,6 +85,14 @@ class ApcBackendTest extends \TYPO3\CMS\Core\Tests\UnitTestCase {
         * @test
         */
        public function itIsPossibleToSetAndGetEntry() {
+               // APC has some slam protection that tries to prevent hammering of cache
+               // entries. This can be disabled, but the option does not work at least
+               // in native PHP 5.3.3 on debian squeeze. While it is no problem with
+               // higher PHP version like the current one on travis-ci.org,
+               // the test is now just skipped on PHP environments that are knows for issues.
+               if (version_compare(phpversion(), '5.3.4', '<')) {
+                       $this->markTestSkipped('This test is not reliable with PHP version below 5.3.3');
+               }
                $backend = $this->setUpBackend();
                $data = 'Some data';
                $identifier = 'MyIdentifier' . md5(uniqid(mt_rand(), TRUE));
@@ -149,9 +165,11 @@ class ApcBackendTest extends \TYPO3\CMS\Core\Tests\UnitTestCase {
                ));
 
                /** @var $backendMock \TYPO3\CMS\Core\Cache\Backend\ApcBackend */
-               $backendMock = $this->getMock('TYPO3\\CMS\\Core\\Cache\\Backend\\ApcBackend',
-                                                                               array('setIdentifierPrefix','getCurrentUserData','getPathSite'),
-                                                                               array('testcontext'));
+               $backendMock = $this->getMock(
+                       'TYPO3\\CMS\\Core\\Cache\\Backend\\ApcBackend',
+                       array('setIdentifierPrefix','getCurrentUserData','getPathSite'),
+                       array('testcontext')
+               );
 
                $backendMock->expects($this->once())->method('getCurrentUserData')->will(
                        $this->returnValue(array('name' => 'testname'))
@@ -205,6 +223,14 @@ class ApcBackendTest extends \TYPO3\CMS\Core\Tests\UnitTestCase {
         * @test
         */
        public function flushRemovesAllCacheEntries() {
+               // APC has some slam protection that tries to prevent hammering of cache
+               // entries. This can be disabled, but the option does not work at least
+               // in native PHP 5.3.3 on debian squeeze. While it is no problem with
+               // higher PHP version like the current one on travis-ci.org,
+               // the test is now just skipped on PHP environments that are knows for issues.
+               if (version_compare(phpversion(), '5.3.4', '<')) {
+                       $this->markTestSkipped('This test is not reliable with PHP version below 5.3.3');
+               }
                $backend = $this->setUpBackend();
                $data = 'some data' . microtime();
                $backend->set('BackendAPCTest1', $data);