Commit Graph

59 Commits

Author SHA1 Message Date
Daniele Alessandri aaea628c55 Back to development for the next patch release. 2012-01-14 12:51:01 +01:00
Daniele Alessandri 135fd5004b Bump VERSION and update CHANGELOG. 2011-12-27 16:19:23 +01:00
Daniele Alessandri 2cff6f0886 Merge branch 'replication' into v0.7
See ISSUE #21 for history and details about transparent master / slave
replication support in Predis.
2011-12-21 21:25:56 +01:00
Daniele Alessandri bdbbe18e6c Add the ability to get a connection by alias from aggregated connections.
Previously it was possible to create a new instance of Predis\Client using
the alias of a single connection in a cluster of connections. Now we added
the ability to do this also when using master/slave replication.
2011-12-18 15:07:21 +01:00
Daniele Alessandri 4b9ab0bcce Revert to development version for the next patch release.
Forgot to do this early. [ci skip]
2011-12-16 22:04:21 +01:00
Daniele Alessandri 6f4347010d Add new "replication" client option for master / slave replication.
When the "replication" option is specified and evaluates to true, the array of
connection parameters passed to the client constructor os be used to initialize
a new instance of Predis\Network\IConnectionReplication. This option can also
accept a callable object used as an initializer or the fully-qualified name of
a class.
2011-12-16 19:30:07 +01:00
Daniele Alessandri 5561ce6bd3 Bump VERSION and update CHANGELOG.
Guess what time is it? Yes it is release time!
2011-12-11 17:24:01 +01:00
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 a910807666 Make it possible to use any kind of callable for PUB/SUB callbacks. 2011-12-01 21:21:22 +01:00
Daniele Alessandri 2babb8744a Minor code formatting changes. 2011-12-01 16:53:35 +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 1d635c370f Change the visibility of certain methods in the client class. 2011-11-29 17:56:58 +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 4882e23319 Move Publish/Subscribe related classes to the Predis\PubSub namespace. 2011-11-28 10:01:21 +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 29f26b0f9b [phpdoc] Apply a few fixes to the documentation. 2011-10-22 11:41:58 +02: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 2cdcd297f0 Rename Predis\Client::pubSubContext() to Predis\Client::pubSub(). 2011-06-04 18:47:59 +02:00
Daniele Alessandri 65c0336d2f Use the shared initializer to initialize Pub/Sub and accept callbacks.
When a callback is specified, the client does not return a new instance
of Predis\PubSubContext but it invokes that callback on each message
received. The context can be aborted simply by returning FALSE from the
callback.
2011-06-04 18:41:38 +02:00
Daniele Alessandri 24aaa2ac23 Nothing relevant, just reorganizing some private members. 2011-06-02 17:52:22 +02:00
Daniele Alessandri ba4ebb3799 Make the specialized pipeline and transaction initializer methods of Predis\Client protected. 2011-06-02 17:37:33 +02:00
Daniele Alessandri b3910466c9 Clean up a bit the private transaction initializer method of Predis\Client. 2011-06-02 17:25:04 +02:00
Daniele Alessandri 6ad73c782a Move classes related to MULTI/EXEC abstraction to the Predis\Transaction namespace. 2011-06-02 17:20:18 +02:00
Daniele Alessandri 1ba1408d39 Move the handling of pipeline options inside the pipeline class. 2011-06-02 16:41:17 +02:00
Daniele Alessandri e048ac2d51 Move the PipelineContext class in the Predis\Pipeline namespace. 2011-06-02 16:03:33 +02:00
Daniele Alessandri 6e6a28a9f0 Reduce method calls by one when creating a new connection in Predis\Client. 2011-05-07 11:33:33 +02:00
Daniele Alessandri 4d1dcdb280 Change type check order for client options. 2011-05-06 15:39:22 +02:00
Daniele Alessandri 893618c985 Initialize client options in a lazy way. 2011-05-06 15:20:40 +02:00
Daniele Alessandri e97e13bde5 Add the 'prefix' client option. The client will automatically prepend the specified prefix string to each key. 2011-05-05 17:16:14 +02:00
Daniele Alessandri 724543a4e6 Rename Predis\Network\ConnectionCluster to Predis\Network\PredisCluster. 2011-05-05 15:55:24 +02:00
Daniele Alessandri 150795f999 Remove the key_distribution option and allow user-defined callbacks to initialize a cluster connection. 2011-05-05 15:06:00 +02:00
Artur Kotyrba 7e4b367a1d Removed unused argument for constructor of SafeExecutor and SafeClusterExecutor 2011-04-25 23:36:30 +02:00
Daniele Alessandri c07c610a0d Implement Predis\MonitorContext as an abstraction for the MONITOR command. 2011-04-24 13:16:16 +02:00
Daniele Alessandri 4af1b7744c Implement an option to specify which cluster class to use. 2011-04-12 15:42:37 +02:00
Daniele Alessandri a348e32144 Improve Predis\Client::getConnection() internals. 2011-04-11 18:53:02 +02:00
Daniele Alessandri 55899e7741 Check for null client options in the filter method. 2011-04-11 18:21:05 +02:00
Daniele Alessandri bea8a3239d Remove default null value from Predis\Client::initializeConnection(). 2011-04-11 17:01:26 +02:00
Daniele Alessandri 83bab78bd1 Rename the newConnection() method to create() in Predis\ConnectionFactory. 2011-04-08 16:55:08 +02:00
Daniele Alessandri b22cb6f76d Rename Predis\IConnectionSchemes to Predis\IConnectionFactory. 2011-04-08 16:40:25 +02:00
Daniele Alessandri 9340b3ddce Partially rewrite the shared abstraction initializer method of Predis\Client. 2011-04-06 18:31:53 +02:00
Daniele Alessandri 86df741937 Rename Predis\Utils to Predis\Helpers. 2011-04-05 16:37:36 +02:00
Daniele Alessandri c2a61a3113 Rename Predis\CommandPipeline to Predis\PipelineContext. 2011-04-04 11:31:26 +02:00
Daniele Alessandri de1a183315 Do some micro-optimizations to reduce the overhead of creating client instances. 2011-03-28 23:25:37 +02:00
Daniele Alessandri e5ff0ab992 Remove the 'on_connection_initialized' client option (useless in the vast majority of cases). 2011-03-18 21:47:52 +01:00
Daniele Alessandri 94d0805cf6 Apply minor change. 2011-03-18 15:13:52 +01:00
Daniele Alessandri 15af329aa3 Add a new option to specify different connection schemes handlers on a client-instance level. 2011-03-18 15:04:06 +01:00