FLUSHDB, FLUSHALL. + tests.

This commit is contained in:
Nicolas Favre-Felix
2009-11-20 11:39:55 +01:00
parent 0d775b40ed
commit 44fdf18fd0
3 changed files with 41 additions and 10 deletions
+2
View File
@@ -68,6 +68,8 @@ PHP_METHOD(Redis, setTimeout);
PHP_METHOD(Redis, save);
PHP_METHOD(Redis, bgSave);
PHP_METHOD(Redis, lastSave);
PHP_METHOD(Redis, flushDB);
PHP_METHOD(Redis, flushAll);
#ifdef PHP_WIN32
#define PHP_REDIS_API __declspec(dllexport)
+25 -10
View File
@@ -82,6 +82,8 @@ zend_function_entry redis_functions[] = {
PHP_ME(Redis, save, NULL, ZEND_ACC_PUBLIC)
PHP_ME(Redis, bgSave, NULL, ZEND_ACC_PUBLIC)
PHP_ME(Redis, lastSave, NULL, ZEND_ACC_PUBLIC)
PHP_ME(Redis, flushDB, NULL, ZEND_ACC_PUBLIC)
PHP_ME(Redis, flushAll, NULL, ZEND_ACC_PUBLIC)
PHP_MALIAS(Redis, open, connect, NULL, ZEND_ACC_PUBLIC)
{NULL, NULL, NULL}
};
@@ -2312,11 +2314,11 @@ PHP_METHOD(Redis, lSet) {
/* }}} */
PHPAPI void generic_save_cmd(INTERNAL_FUNCTION_PARAMETERS, char *keyword, int keyword_len TSRMLS_DC) {
PHPAPI void generic_empty_cmd(INTERNAL_FUNCTION_PARAMETERS, char *cmd, int cmd_len TSRMLS_DC) {
zval *object;
RedisSock *redis_sock;
char *cmd, *response, ret;
int cmd_len, response_len;
char *response, ret;
int response_len;
if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O",
&object, redis_ce) == FAILURE) {
@@ -2327,15 +2329,10 @@ PHPAPI void generic_save_cmd(INTERNAL_FUNCTION_PARAMETERS, char *keyword, int ke
RETURN_FALSE;
}
cmd_len = redis_cmd_format(&cmd, "%s\r\n",
keyword, keyword_len);
if (redis_sock_write(redis_sock, cmd, cmd_len) < 0) {
efree(cmd);
RETURN_FALSE;
}
efree(cmd);
if ((response = redis_sock_read(redis_sock, &response_len TSRMLS_CC)) == NULL) {
RETURN_FALSE;
}
@@ -2354,7 +2351,7 @@ PHPAPI void generic_save_cmd(INTERNAL_FUNCTION_PARAMETERS, char *keyword, int ke
*/
PHP_METHOD(Redis, save)
{
generic_save_cmd(INTERNAL_FUNCTION_PARAM_PASSTHRU, "SAVE", sizeof("SAVE")-1);
generic_empty_cmd(INTERNAL_FUNCTION_PARAM_PASSTHRU, "SAVE\r\n", sizeof("SAVE\r\n")-1);
}
/* }}} */
@@ -2363,7 +2360,7 @@ PHP_METHOD(Redis, save)
*/
PHP_METHOD(Redis, bgSave)
{
generic_save_cmd(INTERNAL_FUNCTION_PARAM_PASSTHRU, "BGSAVE", sizeof("BGSAVE")-1);
generic_empty_cmd(INTERNAL_FUNCTION_PARAM_PASSTHRU, "BGSAVE\r\n", sizeof("BGSAVE\r\n")-1);
}
/* }}} */
@@ -2408,5 +2405,23 @@ PHP_METHOD(Redis, lastSave)
}
/* }}} */
/* {{{ proto bool Redis::flushDB()
*/
PHP_METHOD(Redis, flushDB)
{
generic_empty_cmd(INTERNAL_FUNCTION_PARAM_PASSTHRU, "FLUSHDB\r\n", sizeof("FLUSHDB\r\n")-1);
RETURN_TRUE;
}
/* }}} */
/* {{{ proto bool Redis::flushAll()
*/
PHP_METHOD(Redis, flushAll)
{
generic_empty_cmd(INTERNAL_FUNCTION_PARAM_PASSTHRU, "FLUSHALL\r\n", sizeof("FLUSHALL\r\n")-1);
RETURN_TRUE;
}
/* }}} */
/* vim: set tabstop=4 expandtab: */
+14
View File
@@ -1051,6 +1051,20 @@ class Redis_Test extends PHPUnit_Framework_TestCase
$this->assertTrue($t_php - $t_redis < 10000); // check that it's approximately what we've measured in PHP.
}
public function testflushDb() {
$this->redis->set('x', 'y');
$this->assertTrue($this->redis->flushDb());
$this->assertTrue($this->redis->getKeys('*') === array());
}
public function testflushAll() {
$this->redis->set('x', 'y');
$this->assertTrue($this->redis->flushAll());
$this->assertTrue($this->redis->getKeys('*') === array());
}
}
?>