Commit Graph

263 Commits

Author SHA1 Message Date
Daniele Alessandri 371ac91777 [tests] Rewrite the whole test suite to allow more granular testing.
Fix also a few bugs found while rewriting the test suite.

In order to be able to run integration tests, the test suite requires
a version of Redis >= 2.4.0.

The units have been splitted into several different groups using
PHPUnit @group annotation to allow developers to enable, disable
and combine certain types of tests. The available groups are:

  - disconnected: can run without a Redis server online
  - connected: active connection to a Redis server is required
  - commands: test dedicated to a specific Redis command
  - slow: performs operations that can slow down execution;

A list of the available groups can be obtained by running

  phpunit --list-groups

Groups of tests can be disabled or enabled via the XML configuration
file or the standard command-line test runner. Please note that due
to a bug in PHPUnit, older versions ignore the --group option when
the group is excluded in the XML configuration file. Please refer to
http://github.com/sebastianbergmann/phpunit/issues/320 for details

Integration tests in the @connected group check if the command being
tested is defined in the selected server profile (see the value of
the TEST_SERVER_VERSION constant in phpunit.xml). If the command is
not defined in the target server profile, the integration test is
automatically marked as skipped.

We also provide an helper script in the bin directory that can be
used to automatically generate a file with the scheleton of a test
case for a Redis command by specifying the name of the class in the
Predis\Commands namespace. For example, to generate a test case for
SET (represented by the Predis\Commands\StringSet class):

  ./bin/generate-command-test.php --class=StringSet

The realm of a command is automatically inferred from the name of the
class, but it can be set using the --realm option.
2011-12-10 15:26:00 +01:00
Daniele Alessandri dd20e8557f Pass the client options to the internal cluster initializer method.
This change is useless right now, but when Predis will support Redis cluster
we will need to have access the connection factory object since it will be
required by our future RedisCluster class.
2011-12-02 15:12:47 +01:00
Daniele Alessandri da25d6b6ff Fix wrong method visibility. 2011-12-01 23:25:31 +01:00
Daniele Alessandri cad5d16eae Handle key prefixing in a completely different way.
When we will have PHP 5.4 going mainstream and Predis will drop support for
PHP 5.3, we will be able to rely in traits to semplify code and reuse more.
2011-12-01 22:52:11 +01:00
Daniele Alessandri a910807666 Make it possible to use any kind of callable for PUB/SUB callbacks. 2011-12-01 21:21:22 +01:00
Daniele Alessandri d81346641f Make it possible to get the client instance used by a pipeline object. 2011-12-01 20:42:37 +01:00
Daniele Alessandri 9ab18ff2b4 Fix fields serialization of the connection parameters class.
This was broken by a recent commit.
2011-12-01 18:52:05 +01:00
Daniele Alessandri 2babb8744a Minor code formatting changes. 2011-12-01 16:53:35 +01:00
Daniele Alessandri d9b95d0bc7 Remove useless backslash in the FQN of server profiles. 2011-12-01 16:33:14 +01:00
Daniele Alessandri d79ff39882 Add missing parameters in the phpdocs of PipelineContext. 2011-12-01 15:36:12 +01:00
Daniele Alessandri 559c5097cd Add the ability to discard the commands queued in a pipeline object. 2011-12-01 15:34:45 +01:00
Daniele Alessandri 367ca6e31e Fix mistype in the ServerEval class. 2011-12-01 14:50:34 +01:00
Daniele Alessandri 4a8c678561 Change how the key prefix processor is initialized.
When the argument of 'profile' is an instance of Predis\Profiles\IServerProfile
the value of the 'prefix' option is ignored, which means that it is up to the
user to initialize the appropriate prefix processor.
2011-12-01 14:42:58 +01:00
Daniele Alessandri a5bf0eb41a Partially rewrite the client options bits and remove some madness.
The concept is now similar to a little dependency-injection system.
2011-12-01 12:26:07 +01:00
Daniele Alessandri 1ae30d62db Returns the SHA1 hash of a Lua script from instances of ServerEval. 2011-12-01 08:49:42 +01:00
Daniele Alessandri 64119bb4a0 Do not use different methods to initialize socket for the PhpiredisConnection. 2011-12-01 08:43:34 +01:00
Daniele Alessandri 1d635c370f Change the visibility of certain methods in the client class. 2011-11-29 17:56:58 +01:00
Daniele Alessandri 1260c91f63 Pass the server profile to a connection initializer callback. 2011-11-29 17:17:08 +01:00
Daniele Alessandri 728afe7fcb Redesign how Predis\ConnectionFactory works and make more sense out of it. 2011-11-29 16:32:37 +01:00
Daniele Alessandri b7c715a03f Rename helper method used to fetch the key tag from a key.
The name "getKeyHashablePart" was too generic for this method after all.
2011-11-28 10:10:28 +01:00
Daniele Alessandri 4882e23319 Move Publish/Subscribe related classes to the Predis\PubSub namespace. 2011-11-28 10:01:21 +01:00
Daniele Alessandri 7bdc2e6195 Rename a few protected/private field names. 2011-11-25 14:17:18 +01:00
Daniele Alessandri 0fee0c6d97 Remove the underscore prefix for names of private/protected fields. 2011-11-25 14:17:11 +01:00
Daniele Alessandri 5d04cf540d New commands: INCRBYFLOAT, HINCRBYFLOAT (Redis v2.6-dev). 2011-11-18 16:10:39 +01:00
Daniele Alessandri 51b998720e New commands: PSETEX, PEXPIRE, PEXPIREAT, PTTL (Redis v2.6-dev). 2011-11-18 15:58:36 +01:00
Daniele Alessandri 4e0709ad3d New command: SCRIPT (Redis v2.6-dev).
See http://redis.io/commands/script.
2011-11-18 13:55:03 +01:00
Daniele Alessandri f75974b5d8 New command: SLOWLOG (Redis 2.2).
See http://redis.io/commands/slowlog.
2011-11-18 12:42:14 +01:00
Daniele Alessandri 5680cd40b5 Support the different replies of CONFIG GET|SET|RESETSTAT. 2011-11-18 12:42:09 +01:00
Daniele Alessandri 29f26b0f9b [phpdoc] Apply a few fixes to the documentation. 2011-10-22 11:41:58 +02:00
Gun.io Whitespace Robot b9ca78ac43 Remove whitespace [Gun.io WhitespaceBot] 2011-10-21 10:50:42 -04:00
Daniele Alessandri 4e6ed3f26d [phpdoc] Add API documentation.
This is a starting point to add a documentation of the whole set of APIs and
classes of Predis. The next step will be to actually improve and extend it.
2011-10-21 12:54:24 +02:00
Daniele Alessandri 9608a97469 Add a license header to PHP files. 2011-10-18 16:41:46 +02:00
Daniele Alessandri b4d5b19b30 Fix a few oversights. 2011-10-18 16:19:12 +02:00
Daniele Alessandri 20d872a306 Apply some coding style changes. 2011-10-18 15:51:55 +02:00
Daniele Alessandri b5affe739c Promote 2.4 as the default Redis server profile. 2011-10-15 10:31:38 +02:00
Daniele Alessandri f19c6335d1 Fix parsing of replies to INFO for Redis 2.4.
The new string format for INFO replies has been postponed to a future version
of Redis, so we just moved the INFO class that handles them to the development
server profile.
2011-10-15 10:21:34 +02:00
Daniele Alessandri c107d937fa Apply minor code styling change, nothing that really matters. 2011-10-02 23:19:08 +02:00
Daniele Alessandri 68dba4cb12 Ensure that commands are registered in server profiles using lowercase aliases. 2011-10-02 23:16:04 +02:00
Daniele Alessandri 04b8a8f75c Update comment to reflect old changes. 2011-10-02 11:55:23 +02:00
Daniele Alessandri f7d9c4bac7 Merge pull request #43 from juriansluiman/feature-uppercase
Now Predis follows the same standard behaviour of PHP (method names are treated
case-insensitively) when invoking methods related to Redis commands, (i.e.
$client->info() or $client->INFO() makes no difference).
2011-10-02 02:40:00 -07:00
Jurian Sluiman c33d053531 Add support for mixed case commands
Commands in Redis are most time written in uppercase, Predis supports
only lowercase commands. This change converts all commands into lower-
case, so MiXeDcAsE and UPPERCASE commands can be created as well.
2011-09-28 17:47:56 +02:00
Eric Naeseth 94a2ddeca9 Add an autoloader for Predis classes.
This makes it easier to use Predis in scripts and projects that do
not already include as PSR-0 autoloader.

Signed-off-by: Eric Naeseth <eric@thumbtack.com>
2011-09-27 17:42:06 -07:00
Daniele Alessandri 45a5dd49a7 Merge branch 'multiexec_rewrite' 2011-08-24 16:21:08 +02:00
Daniele Alessandri bd8a44101c Change some exception messages thrown by the transaction class. 2011-08-24 11:59:47 +02:00
Daniele Alessandri 71e7cb1399 Make some methods/fields of the transaction class protected instead of private. 2011-08-24 11:49:31 +02:00
Daniele Alessandri f085d2f97d Use a protected method to get all the flags of a transaction. 2011-08-24 11:46:07 +02:00
Daniele Alessandri 7742fd5a22 Fix the bitmask used to check the state of subscriptions in a PubSub context.
The old code was not really broken, but this one is more appropriate.
2011-08-21 15:24:06 +02:00
Daniele Alessandri 7241fe6419 Make the code that process EXEC replies more easy on the eyes. 2011-08-21 15:18:39 +02:00
Daniele Alessandri d01e738d59 Move the code that executes a transaction block to a separate method. 2011-08-21 15:15:39 +02:00
Daniele Alessandri 0bdcf299c2 Implement a few minor changes. 2011-08-21 14:58:39 +02:00