897 Commits

Author SHA1 Message Date
antirez
6607fa3165 AOF tests fixed turning aof-load-truncated to no.
When aof-load-truncated option was introduced, with a default of "yes",
the past behavior of the server to abort with trunncated AOF changed, so
we need to explicitly configure the tests to abort with truncated AOF
by setting the option to no.
2014-09-08 10:56:52 +02:00
antirez
90d3728735 Test AOF format error detection. 2014-09-08 10:56:52 +02:00
antirez
23f7c9d551 AOF loading: split handling of format errors from unexpected EOF. 2014-09-08 10:56:52 +02:00
Paddy Byers
65398b0647 Add regression test for issue #1939 2014-09-01 10:42:27 +02:00
Mariano Pérez Rodríguez
144922a63e Stop tests from leaving a black background
Uses ANSI "default background" color code after closing tests
so any non-black terminals don't remain polluted.

Fixes #1649
Closes #1912
2014-08-25 10:14:03 +02:00
Matt Stancliff
d19473a4f6 Reject MOVE to non-integer DBs
Previously, "MOVE key somestring" would move the key to
DB 0 which is just unexpected and wrong.
String as DB == error.

Test added too.

Modified by @antirez in order to use the getLongLongFromObject() API
instead of strtol().

Fixes #1428
2014-08-08 12:38:43 +02:00
Matt Stancliff
09e3b6e97c pubsub: Return integers for NUMSUB, not strings
Also adds test for numsub — due to tcl being tcl,
it doesn't capture the "numberness" of the fix,
but now we at least have one test case for numsub.

Closes #1561
2014-08-08 11:19:37 +02:00
Matt Stancliff
9cc73e9864 Fix key extraction for SORT
We only want to use the last STORE key, but we have to record
we actually found a STORE key so we can increment the final return
key count.

Test added to prevent further regression.

Closes #1883, #1645, #1647
2014-08-07 16:14:15 +02:00
Jan-Erik Rediger
ea8b1d383f Handle large getrange requests
Previously the end was casted to a smaller type
which resulted in a wrong check and failed
with values larger than handled by unsigned.

Closes #1847, #1844
2014-08-07 12:40:44 +02:00
Matt Stancliff
d7fe09e2eb scripting: no eval with negative key count
Negative key count causes segfault in Lua functions.

Fixes #1842
Closes #1843
2014-08-07 12:38:36 +02:00
antirez
462d12f9fc Cluster test: unit 07, replicas migration. 2014-07-28 12:48:51 +02:00
antirez
5933b4bdf5 Cluster test: unit 06 cluster creation comment fixed. 2014-07-28 12:35:05 +02:00
antirez
5129a24e16 Cluster test: node reachability condition fixed. 2014-07-25 16:17:13 +02:00
antirez
75be22fd08 Cluster test: init test, be patient during restarts. 2014-07-25 16:10:18 +02:00
antirez
9ce037111f Cluster test: 03 unit speedup, don't send WAIT to slaves. 2014-07-25 16:09:31 +02:00
antirez
040e990dc7 Cluster test: unit 06, slaves with stale data can't failover. 2014-07-25 15:40:25 +02:00
antirez
8daba93234 Cluster test: new unit 05, slave selection. 2014-07-25 11:23:51 +02:00
antirez
822c911566 Test: check sorted set elements order after union.
This is not a regression but issue #1786 showed the need for this test.
2014-07-22 17:52:04 +02:00
antirez
fb1533cd0d Cluster test: use larger keyspace in resharding test. 2014-07-21 16:29:49 +02:00
antirez
46f9ffe705 Cluster test: unit 04, consistency during resharding. 2014-07-21 16:26:05 +02:00
antirez
255a6e32aa Cluster test: test that writes are retained during failovers.
In the test we use WAIT when the master and slave are up, and only later the
partition is created killing the master, so we are sure we don't incur
in failure modes that may lose writes in this test: the goal here is to
make sure that the elected slave was replicating correctly with the
master.
2014-07-18 17:13:46 +02:00
antirez
5926e0164e Test: Pub/Sub PING. 2014-07-18 12:03:31 +02:00
antirez
65cca8c9bb Test: small integer sharing depends on maxmemory policy. 2014-07-18 10:55:08 +02:00
antirez
efe07ffa3a Test: more reliable AOF rewrite test under write load. 2014-07-10 16:42:43 +02:00
antirez
6f52d71a21 LATENCY command / monitor basic tests. 2014-07-10 16:23:54 +02:00
antirez
186b5b0f66 Test: enable latency monitor in the default config.
This way as a side effect of running the test we also stress the latency
monitor data collection.
2014-07-10 15:04:34 +02:00
antirez
383536119d Test: AOF rewrite during write load. 2014-07-10 11:25:12 +02:00
antirez
e2078f8001 Test: find_available_port: check that cluster port is free as well.
The function will only return ports that have also port+10000 free, so
that Redis Cluster instances can be executed at the returned port.
2014-06-30 12:08:24 +02:00
antirez
91c02dff33 Test: fix instances.tcl restart_instance abort error. 2014-06-30 12:06:27 +02:00
antirez
ad2cf3ddeb Fixed assert conditional in ROLE command test. 2014-06-26 22:13:46 +02:00
antirez
03e5fed5cb Remove infinite loop from PSYNC test.
Added for debugging and forgot there.
2014-06-26 18:30:03 +02:00
antirez
aeb758eb82 Test: hopefully more robust PSYNC test.
This is supposed to fix issue #1417, but we'll know if this is enough
only after a couple of runs of the CI test without false positives.
2014-06-26 16:00:27 +02:00
antirez
e1ca058b82 Sentinel test: more correct sentinels config reset.
In the initialization test for each instance we used to unregister the
old master and register it again to clear the config.
However there is a race condition doing this: as soon as we unregister
and re-register "mymaster", another Sentinel can update the new
configuration with the old state because of gossip "hello" messages.

So the correct procedure is instead, unregister "mymaster" from all the
sentinel instances, and re-register it everywhere again.
2014-06-23 14:07:47 +02:00
antirez
727974077a Basic tests for the ROLE command. 2014-06-23 09:08:51 +02:00
antirez
0b9e698647 Sentinel test: tolerate larger delays in init tests. 2014-06-19 15:58:45 +02:00
antirez
1465b21678 Sentinel test: unit 02, avoid some time related false positives. 2014-06-19 15:56:28 +02:00
antirez
b06f34a92c Sentinel test: add manual failover test. 2014-06-19 10:33:12 +02:00
antirez
45c507b0bd Test: use higher level redis.tcl proc to read replies. 2014-06-18 16:25:53 +02:00
antirez
beba266b38 Sentienl/Redis test: enable link reconnection in instances.tcl. 2014-06-18 15:55:04 +02:00
antirez
49e28db0df Test: Tcl client initial support for automatic reconnection. 2014-06-18 15:52:14 +02:00
antirez
a3e0573ee8 Test: tcl client, unset deferred var on close. 2014-06-18 15:07:08 +02:00
Matt Stancliff
7234bf5e9e Add correct exit value to failed tests 2014-06-18 08:10:04 -04:00
antirez
f7df4e9674 Scripting: regression test for issue #1811. 2014-06-12 16:20:30 +02:00
antirez
ec2fd7bbc1 Fix semantics of Lua calls to SELECT.
Lua scripts are executed in the context of the currently selected
database (as selected by the caller of the script).

However Lua scripts are also free to use the SELECT command in order to
affect other DBs. When SELECT is called frm Lua, the old behavior, before
this commit, was to automatically set the Lua caller selected DB to the
last DB selected by Lua. See for example the following sequence of
commands:

    SELECT 0
    SET x 10
    EVAL "redis.call('select','1')" 0
    SET x 20

Before this commit after the execution of this sequence of commands,
we'll have x=10 in DB 0, and x=20 in DB 1.

Because of the problem above, there was a bug affecting replication of
Lua scripts, because of the actual implementation of replication. It was
possible to fix the implementation of Lua scripts in order to fix the
issue, but looking closely, the bug is the consequence of the behavior
of Lua ability to set the caller's DB.

Under the old semantics, a script selecting a different DB, has no simple
ways to restore the state and select back the previously selected DB.
Moreover the script auhtor must remember that the restore is needed,
otherwise the new commands executed by the caller, will be executed in
the context of a different DB.

So this commit fixes both the replication issue, and this hard-to-use
semantics, by removing the ability of Lua, after the script execution,
to force the caller to switch to the DB selected by the Lua script.

The new behavior of the previous sequence of commadns is to just set
X=20 in DB 0. However Lua scripts are still capable of writing / reading
from different DBs if needed.

WARNING: This is a semantical change that will break programs that are
conceived to select the client selected DB via Lua scripts.

This fixes issue #1811.
2014-06-12 16:05:52 +02:00
antirez
4e7d88a6ec Cluser test: write multiple keys in unit 03.
The write-failover-read test is better if we write 100 keys so that we
are sure all the nodes are affected by the write.
2014-06-11 16:25:17 +02:00
antirez
d147438869 Cluster test: rewrite config when resetting nodes. 2014-06-11 16:23:13 +02:00
Matt Stancliff
5a61117448 Scripting: Fix regression from #1118
The new check-for-number behavior of Lua arguments broke
users who use large strings of just integers.

The Lua number check would convert the string to a number, but
that breaks user data because
Lua numbers have limited precision compared to an arbitrarily
precise number wrapped in a string.

Regression fixed and new test added.

Fixes #1118 again.
2014-06-10 14:26:13 -04:00
antirez
5670a2258a Cluster test: set config epochs when creating clusters. 2014-06-10 16:56:43 +02:00
antirez
48fa91477f Cluster test: unit 03, check epochs correctness. 2014-06-10 15:46:36 +02:00
antirez
81dc12a983 Cluster test: better failover detection in unit 03. 2014-06-10 15:46:00 +02:00