Changeset 1115

Show
Ignore:
Timestamp:
09/08/08 05:23:26 (3 months ago)
Author:
arnoschn
Message:

Adding checking for memcached socket and feature to skip a unit test

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • branches/arnoschn/cache/lib/AkUnitTest.php

    r1063 r1115  
    3838    } 
    3939     
     40    /** 
     41     *    Gets a list of test names. Normally that will 
     42     *    be all internal methods that start with the 
     43     *    name "test". This method should be overridden 
     44     *    if you want a different rule. 
     45     *    @return array        List of test names. 
     46     *    @access public 
     47     */ 
     48    function getTests() { 
     49        $methods = array(); 
     50        if (isset($this->skip) && $this->skip == true) { 
     51            return $methods; 
     52        } 
     53        foreach (get_class_methods(get_class($this)) as $method) { 
     54            if ($this->_isTest($method)) { 
     55                $methods[] = $method; 
     56            } 
     57        } 
     58        return $methods; 
     59    } 
     60     
    4061    function _configure() 
    4162    { 
     63        $this->skip = !$this->_checkIfEnabled(); 
    4264        $this->_loadFixtures(); 
     65         
     66    } 
     67     
     68    function _checkIfEnabled($file = null) 
     69    { 
     70        if ($file == null) { 
     71            $file = isset($this->check_file)?$this->check_file:null; 
     72        } 
     73        if ($file!=null && file_exists($file)) { 
     74            $val = file_get_contents($file); 
     75            if ($val == 0) { 
     76                return false; 
     77            } 
     78        } 
     79        return true; 
    4380    } 
    4481     
  • branches/arnoschn/cache/lib/utils/scripts/ci-test.php

    r1114 r1115  
    151151            } 
    152152             
     153            if (!$this->_checkMemcacheInstallation()) { 
     154                return false; 
     155            } 
    153156             
    154157        } else { 
     
    159162            } 
    160163            $this->loadSettings(); 
    161         } 
     164            $this->_setupMemcache(); 
     165        } 
     166         
    162167        $this->_fixTestInstallationPermissions(); 
    163168        $this->configured['ci-config.yaml'] = true; 
     
    428433            exec('chmod -Rf 777 '.AK_CI_TEST_DIR.$dir); 
    429434        } 
     435    } 
     436     
     437    function _setupMemcache() 
     438    { 
     439        $memcachedInstalled = $this->promptUserVar('Certain tests need a memcached running. Do you have a memcached installation?',array('default'=>'No')); 
     440         
     441        if (!in_array(strtolower($memcachedInstalled),array('y','yes','si','ja','1'))) { 
     442            $installation = $this->settings['test-installation']; 
     443            $memcacheTestConfigFile = $installation.DS.'test'.DS.'unit'.DS.'suites'.DS.'config'.DS.'memcached'; 
     444            file_put_contents($memcacheTestConfigFile,'0'); 
     445            return; 
     446        } else { 
     447            $socket = $this->_configureMemcache(); 
     448            if ($socket !== false) { 
     449                $res = $this->_createMemcachedConfig($socket); 
     450                if (!$res) { 
     451                    $this->error('Could not create caching.yml. Disabling memcached support.'); 
     452                    $installation = $this->settings['test-installation']; 
     453                    $memcacheTestConfigFile = $installation.DS.'test'.DS.'unit'.DS.'suites'.DS.'config'.DS.'memcached'; 
     454                    file_put_contents($memcacheTestConfigFile,'0'); 
     455                    return; 
     456                } else { 
     457                     
     458                } 
     459            } 
     460        } 
     461    } 
     462     
     463    function _createMemcachedConfig($socket) 
     464    { 
     465        $file1 = AK_CI_TEST_DIR.DS.'test'.DS.'fixtures'.DS.'app'.DS.'config'.DS.'caching.yml'; 
     466        $file2 = AK_CI_TEST_DIR.DS.'config'.DS.'caching.yml'; 
     467        $templateFile = AK_BASE_DIR.DS.'script'.DS.'extras'.DS.'TPL-caching.yml'; 
     468        $this->info('Creating caching configuration for'); 
     469        $res1 = file_put_contents($file1,str_replace('${memcached_server}',$socket,file_get_contents($templateFile)))>0; 
     470        $res2 = file_put_contents($file1,str_replace('${memcached_server}',$socket,file_get_contents($templateFile)))>0; 
     471        $res3 = file_put_contents(AK_CI_CONFIG_FILE,str_replace('${memcached-socket}',$socket,file_get_contents(AK_CI_CONFIG_FILE))); 
     472        return $res1 && $res2 && $res3; 
     473    } 
     474     
     475    function _checkMemcacheInstallation($socket = null) 
     476    { 
     477        if ($socket == null) { 
     478            $socket = $this->settings['memcached-socket']; 
     479        } 
     480        require_once(AK_BASE_DIR.DS.'lib'.DS.'AkCache'.DS.'AkMemcache.php'); 
     481        $memcache = new AkMemcache(); 
     482        return @$memcached->init(array('servers'=>array($socket))); 
     483    } 
     484    function _configureMemcache() 
     485    { 
     486        require_once(AK_BASE_DIR.DS.'lib'.DS.'AkCache'.DS.'AkMemcache.php'); 
     487        $memcache = new AkMemcache(); 
     488        while (($socket = $this->promptUserVar('Please provide the socket memcached is running on',array('default'=>'localhost:11211')) && !$this->_checkMemcacheInstallation($socket))) { 
     489            $this->error('Could not connect to memcached at socket: '.$socket); 
     490            $tryAgain = $this->promptUserVar('Want to try again configuring memcached support?',array('default'=>'Yes')); 
     491            if (!in_array(strtolower($memcachedInstalled),array('y','yes','si','ja','1'))) { 
     492                return false; 
     493            } 
     494        } 
     495        return $socket; 
    430496    } 
    431497    function loadSettings($filename=AK_CI_CONFIG_FILE) 
  • branches/arnoschn/cache/script/extras/TPL-ci-config.yaml

    r1110 r1115  
    22test-installation: ${test-installation} 
    33test-url: ${test-url} 
     4memcached-socket: ${memcached-socket} 
    45 
    56executables:  
  • branches/arnoschn/cache/test/unit/lib/AkCache.php

    r899 r1115  
    66 
    77require_once(AK_LIB_DIR.DS.'AkCache.php'); 
     8 
     9defined('AK_TEST_MEMCACHED_CHECKFILE')? null: define('AK_TEST_MEMCACHED_CHECKFILE',AK_TEST_DIR.DS.'lib'.DS.'unit'.DS.'suites'.DS.'config'.DS.'memcached'); 
     10 
    811 
    912class AkCache_TestCase extends  AkUnitTest  
     
    2326    function test_all_caches() 
    2427    { 
    25          
    26         $cacheHandlers = array('cache_lite'=>1,'akadodbcache'=>2,'akmemcache'=>3); 
     28        $cacheHandlers = array('cache_lite'=>1,'akadodbcache'=>2); 
     29        $memcacheEnabled = $this->_checkIfEnabled(AK_TEST_MEMCACHED_CHECKFILE); 
     30        if ($memcacheEnabled) { 
     31            $cacheHandlers['akmemcache'] = 3; 
     32        } 
    2733        $unitTests = array('_testInit','_test_get_and_save','_testremove', '_Testclean'); 
    2834         
  • branches/arnoschn/cache/test/unit/lib/AkCache/AkMemcache.php

    r949 r1115  
    33require_once(AK_LIB_DIR.DS.'AkCache.php'); 
    44require_once(AK_LIB_DIR.DS.'AkCache'.DS.'AkMemcache.php'); 
     5 
     6defined('AK_TEST_MEMCACHED_CHECKFILE')? null: define('AK_TEST_MEMCACHED_CHECKFILE',AK_TEST_DIR.DS.'lib'.DS.'unit'.DS.'suites'.DS.'config'.DS.'memcached'); 
    57 
    68class Test_AkMemcache extends  UnitTestCase 
     
    1012     */ 
    1113    var $memcache; 
     14     
     15    var $check_file = AK_TEST_MEMCACHED_CHECKFILE; 
     16     
    1217    function setUp() 
    1318    {