Automatisk verifikation av PHP-funktioner
December 27, 2011I samband med att jag skrev recept till Chef behövde jag ett sätt att kontrollera att nya PHP-moduler verkligen fungerar. Syftet med receptet var att installera Apache, PHP, MySQL och nödvändiga PHP-moduler som memcache och imagick.
För att underlätta verifikationen av PHP-modulerna tog jag fram följande funktion (Bash):
# ${1} Name of functionality being checked (e.g. 'imagick') # ${2} PHP code snippet used for verification # ${3} Expected result if test is successful function verify_php { echo "Checking ${1}" /etc/init.d/apache2 restart 1>/dev/null 2>&1 echo ${2} > /var/www/index.php if [[ $(wget 127.0.0.1/index.php -O - 2>/dev/null) == ${3} ]] then echo "${1} working correctly" else echo "Could not verify a working ${1} installation" fi }
Funktionen i sig är väldigt enkel:
- Ersätt /var/www/index.php med en rad PHP-kod som utför testet
- Använd wget för att se resultatet av PHP-koden
- Jämför utdatan från PHP-skriptet med ett förväntat resultat
Exempel på tester:
Testa om PHP fungerar korrekt. PHP-koden skriver ut användarens IP-adress. Det förväntade resultatet är 127.0.0.1 (localhost):
verify_php 'PHP' '<?php echo $_SERVER["REMOTE_ADDR"]; ?>' '127.0.0.1'
Testa om Imagick är installerat:
verify_php 'Imagick' '<?php if ( ! class_exists("Imagick") ) { die("1"); } die("0"); ?>' '0'
Testa om memcache fungerar korrekt. Ansluter till memcache och ger variabeln var_key ett värde:
verify_php 'memcached' '<?php if ( ! function_exists("memcache_connect") ) { die(1); }
$memcache_obj = memcache_connect("localhost", 11211);
memcache_set($memcache_obj, "var_key", "0"); die(memcache_get($memcache_obj, "var_key")); ?>' '0'