redis-server 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/LICENSE +38 -0
- data/README.md +33 -0
- data/bin/redis +114 -0
- data/redis/Makefile +5 -0
- data/redis/extconf.rb +3 -0
- data/redis/redis-2.2.11/00-RELEASENOTES +199 -0
- data/redis/redis-2.2.11/BUGS +1 -0
- data/redis/redis-2.2.11/CONTRIBUTING +13 -0
- data/redis/redis-2.2.11/COPYING +10 -0
- data/redis/redis-2.2.11/Changelog +1032 -0
- data/redis/redis-2.2.11/INSTALL +30 -0
- data/redis/redis-2.2.11/Makefile +22 -0
- data/redis/redis-2.2.11/README +83 -0
- data/redis/redis-2.2.11/TODO +4 -0
- data/redis/redis-2.2.11/client-libraries/README +11 -0
- data/redis/redis-2.2.11/deps/hiredis/COPYING +10 -0
- data/redis/redis-2.2.11/deps/hiredis/Makefile +115 -0
- data/redis/redis-2.2.11/deps/hiredis/README.md +311 -0
- data/redis/redis-2.2.11/deps/hiredis/TODO +2 -0
- data/redis/redis-2.2.11/deps/hiredis/adapters/ae.h +95 -0
- data/redis/redis-2.2.11/deps/hiredis/adapters/libev.h +113 -0
- data/redis/redis-2.2.11/deps/hiredis/adapters/libevent.h +76 -0
- data/redis/redis-2.2.11/deps/hiredis/async.c +321 -0
- data/redis/redis-2.2.11/deps/hiredis/async.h +112 -0
- data/redis/redis-2.2.11/deps/hiredis/example-ae.c +53 -0
- data/redis/redis-2.2.11/deps/hiredis/example-libev.c +47 -0
- data/redis/redis-2.2.11/deps/hiredis/example-libevent.c +48 -0
- data/redis/redis-2.2.11/deps/hiredis/example.c +67 -0
- data/redis/redis-2.2.11/deps/hiredis/fmacros.h +15 -0
- data/redis/redis-2.2.11/deps/hiredis/hiredis.c +1058 -0
- data/redis/redis-2.2.11/deps/hiredis/hiredis.h +170 -0
- data/redis/redis-2.2.11/deps/hiredis/net.c +170 -0
- data/redis/redis-2.2.11/deps/hiredis/net.h +43 -0
- data/redis/redis-2.2.11/deps/hiredis/sds.c +479 -0
- data/redis/redis-2.2.11/deps/hiredis/sds.h +77 -0
- data/redis/redis-2.2.11/deps/hiredis/test.c +479 -0
- data/redis/redis-2.2.11/deps/hiredis/util.h +40 -0
- data/redis/redis-2.2.11/deps/linenoise/Makefile +10 -0
- data/redis/redis-2.2.11/deps/linenoise/README.markdown +45 -0
- data/redis/redis-2.2.11/deps/linenoise/example.c +27 -0
- data/redis/redis-2.2.11/deps/linenoise/linenoise.c +609 -0
- data/redis/redis-2.2.11/deps/linenoise/linenoise.h +55 -0
- data/redis/redis-2.2.11/design-documents/REDIS-CLUSTER +214 -0
- data/redis/redis-2.2.11/design-documents/REDIS-CLUSTER-2 +343 -0
- data/redis/redis-2.2.11/doc/AppendCommand.html +48 -0
- data/redis/redis-2.2.11/doc/AppendOnlyFileHowto.html +41 -0
- data/redis/redis-2.2.11/doc/AuthCommand.html +39 -0
- data/redis/redis-2.2.11/doc/Benchmarks.html +129 -0
- data/redis/redis-2.2.11/doc/BgrewriteaofCommand.html +41 -0
- data/redis/redis-2.2.11/doc/BgsaveCommand.html +39 -0
- data/redis/redis-2.2.11/doc/BlpopCommand.html +51 -0
- data/redis/redis-2.2.11/doc/BrpoplpushCommand.html +39 -0
- data/redis/redis-2.2.11/doc/CommandReference.html +47 -0
- data/redis/redis-2.2.11/doc/Comparisons.html +42 -0
- data/redis/redis-2.2.11/doc/ConfigCommand.html +76 -0
- data/redis/redis-2.2.11/doc/Configuration.html +38 -0
- data/redis/redis-2.2.11/doc/ConnectionHandlingSidebar.html +36 -0
- data/redis/redis-2.2.11/doc/ControlCommandsSidebar.html +36 -0
- data/redis/redis-2.2.11/doc/Credits.html +38 -0
- data/redis/redis-2.2.11/doc/DbsizeCommand.html +38 -0
- data/redis/redis-2.2.11/doc/DelCommand.html +41 -0
- data/redis/redis-2.2.11/doc/DesignPatterns.html +37 -0
- data/redis/redis-2.2.11/doc/EventLibray.html +44 -0
- data/redis/redis-2.2.11/doc/ExistsCommand.html +42 -0
- data/redis/redis-2.2.11/doc/ExpireCommand.html +96 -0
- data/redis/redis-2.2.11/doc/FAQ.html +70 -0
- data/redis/redis-2.2.11/doc/Features.html +38 -0
- data/redis/redis-2.2.11/doc/FlushallCommand.html +39 -0
- data/redis/redis-2.2.11/doc/FlushdbCommand.html +39 -0
- data/redis/redis-2.2.11/doc/FromSqlToDataStructures.html +37 -0
- data/redis/redis-2.2.11/doc/GenericCommandsSidebar.html +36 -0
- data/redis/redis-2.2.11/doc/GetCommand.html +39 -0
- data/redis/redis-2.2.11/doc/GetbitCommand.html +39 -0
- data/redis/redis-2.2.11/doc/GetsetCommand.html +38 -0
- data/redis/redis-2.2.11/doc/HackingStrings.html +83 -0
- data/redis/redis-2.2.11/doc/HashCommandsSidebar.html +36 -0
- data/redis/redis-2.2.11/doc/Hashes.html +37 -0
- data/redis/redis-2.2.11/doc/HdelCommand.html +39 -0
- data/redis/redis-2.2.11/doc/HexistsCommand.html +39 -0
- data/redis/redis-2.2.11/doc/HgetCommand.html +39 -0
- data/redis/redis-2.2.11/doc/HgetallCommand.html +40 -0
- data/redis/redis-2.2.11/doc/HincrbyCommand.html +45 -0
- data/redis/redis-2.2.11/doc/HlenCommand.html +38 -0
- data/redis/redis-2.2.11/doc/HmgetCommand.html +40 -0
- data/redis/redis-2.2.11/doc/HmsetCommand.html +40 -0
- data/redis/redis-2.2.11/doc/HsetCommand.html +40 -0
- data/redis/redis-2.2.11/doc/HsetnxCommand.html +41 -0
- data/redis/redis-2.2.11/doc/IncrCommand.html +43 -0
- data/redis/redis-2.2.11/doc/InfoCommand.html +48 -0
- data/redis/redis-2.2.11/doc/IntroductionToRedisDataTypes.html +152 -0
- data/redis/redis-2.2.11/doc/KeysCommand.html +43 -0
- data/redis/redis-2.2.11/doc/LastsaveCommand.html +39 -0
- data/redis/redis-2.2.11/doc/LindexCommand.html +40 -0
- data/redis/redis-2.2.11/doc/ListCommandsSidebar.html +36 -0
- data/redis/redis-2.2.11/doc/Lists.html +42 -0
- data/redis/redis-2.2.11/doc/LlenCommand.html +41 -0
- data/redis/redis-2.2.11/doc/LpopCommand.html +41 -0
- data/redis/redis-2.2.11/doc/LrangeCommand.html +47 -0
- data/redis/redis-2.2.11/doc/LremCommand.html +41 -0
- data/redis/redis-2.2.11/doc/LsetCommand.html +38 -0
- data/redis/redis-2.2.11/doc/LtrimCommand.html +47 -0
- data/redis/redis-2.2.11/doc/MgetCommand.html +52 -0
- data/redis/redis-2.2.11/doc/MonitorCommand.html +63 -0
- data/redis/redis-2.2.11/doc/MoveCommand.html +42 -0
- data/redis/redis-2.2.11/doc/MsetCommand.html +44 -0
- data/redis/redis-2.2.11/doc/MultiExecCommand.html +166 -0
- data/redis/redis-2.2.11/doc/NonexistentCommands.html +51 -0
- data/redis/redis-2.2.11/doc/ObjectHashMappers.html +39 -0
- data/redis/redis-2.2.11/doc/Pipelining.html +36 -0
- data/redis/redis-2.2.11/doc/ProgrammingExamples.html +38 -0
- data/redis/redis-2.2.11/doc/ProtocolSpecification.html +137 -0
- data/redis/redis-2.2.11/doc/PublishSubscribe.html +115 -0
- data/redis/redis-2.2.11/doc/QuickStart.html +68 -0
- data/redis/redis-2.2.11/doc/QuitCommand.html +38 -0
- data/redis/redis-2.2.11/doc/README.html +119 -0
- data/redis/redis-2.2.11/doc/RandomkeyCommand.html +39 -0
- data/redis/redis-2.2.11/doc/Redis0100ChangeLog.html +67 -0
- data/redis/redis-2.2.11/doc/Redis0900ChangeLog.html +56 -0
- data/redis/redis-2.2.11/doc/RedisBigData.html +61 -0
- data/redis/redis-2.2.11/doc/RedisCLI.html +37 -0
- data/redis/redis-2.2.11/doc/RedisEventLibrary.html +70 -0
- data/redis/redis-2.2.11/doc/RedisGuides.html +37 -0
- data/redis/redis-2.2.11/doc/RedisInternals.html +38 -0
- data/redis/redis-2.2.11/doc/RedisPipelining.html +93 -0
- data/redis/redis-2.2.11/doc/RedisStatus.html +56 -0
- data/redis/redis-2.2.11/doc/Redis_1_2_0_Changelog.html +40 -0
- data/redis/redis-2.2.11/doc/Redis_2_0_0_Changelog.html +62 -0
- data/redis/redis-2.2.11/doc/Redis_2_0_Whats_new.html +59 -0
- data/redis/redis-2.2.11/doc/RenameCommand.html +39 -0
- data/redis/redis-2.2.11/doc/RenamenxCommand.html +42 -0
- data/redis/redis-2.2.11/doc/ReplicationHowto.html +43 -0
- data/redis/redis-2.2.11/doc/ReplyTypes.html +42 -0
- data/redis/redis-2.2.11/doc/RoadMap.html +38 -0
- data/redis/redis-2.2.11/doc/RpoplpushCommand.html +44 -0
- data/redis/redis-2.2.11/doc/RpushCommand.html +40 -0
- data/redis/redis-2.2.11/doc/SaddCommand.html +41 -0
- data/redis/redis-2.2.11/doc/SaveCommand.html +39 -0
- data/redis/redis-2.2.11/doc/ScardCommand.html +41 -0
- data/redis/redis-2.2.11/doc/SdiffCommand.html +45 -0
- data/redis/redis-2.2.11/doc/SdiffstoreCommand.html +38 -0
- data/redis/redis-2.2.11/doc/SelectCommand.html +39 -0
- data/redis/redis-2.2.11/doc/SetCommand.html +39 -0
- data/redis/redis-2.2.11/doc/SetCommandsSidebar.html +36 -0
- data/redis/redis-2.2.11/doc/SetbitCommand.html +45 -0
- data/redis/redis-2.2.11/doc/SetexCommand.html +42 -0
- data/redis/redis-2.2.11/doc/SetnxCommand.html +51 -0
- data/redis/redis-2.2.11/doc/SetrangeCommand.html +58 -0
- data/redis/redis-2.2.11/doc/Sets.html +36 -0
- data/redis/redis-2.2.11/doc/ShutdownCommand.html +39 -0
- data/redis/redis-2.2.11/doc/SideBar.html +36 -0
- data/redis/redis-2.2.11/doc/SinterCommand.html +40 -0
- data/redis/redis-2.2.11/doc/SinterstoreCommand.html +39 -0
- data/redis/redis-2.2.11/doc/SismemberCommand.html +42 -0
- data/redis/redis-2.2.11/doc/SlaveofCommand.html +41 -0
- data/redis/redis-2.2.11/doc/SmembersCommand.html +38 -0
- data/redis/redis-2.2.11/doc/SmoveCommand.html +44 -0
- data/redis/redis-2.2.11/doc/SortCommand.html +75 -0
- data/redis/redis-2.2.11/doc/SortedSetCommandsSidebar.html +36 -0
- data/redis/redis-2.2.11/doc/SortedSets.html +36 -0
- data/redis/redis-2.2.11/doc/Speed.html +38 -0
- data/redis/redis-2.2.11/doc/SponsorshipHistory.html +38 -0
- data/redis/redis-2.2.11/doc/SpopCommand.html +40 -0
- data/redis/redis-2.2.11/doc/SrandmemberCommand.html +40 -0
- data/redis/redis-2.2.11/doc/SremCommand.html +42 -0
- data/redis/redis-2.2.11/doc/StringCommandsSidebar.html +36 -0
- data/redis/redis-2.2.11/doc/Strings.html +37 -0
- data/redis/redis-2.2.11/doc/StrlenCommand.html +39 -0
- data/redis/redis-2.2.11/doc/SubstrCommand.html +52 -0
- data/redis/redis-2.2.11/doc/SunionCommand.html +40 -0
- data/redis/redis-2.2.11/doc/SunionstoreCommand.html +38 -0
- data/redis/redis-2.2.11/doc/SupportedLanguages.html +60 -0
- data/redis/redis-2.2.11/doc/SupportedPlatforms.html +37 -0
- data/redis/redis-2.2.11/doc/TemplateCommand.html +38 -0
- data/redis/redis-2.2.11/doc/TtlCommand.html +38 -0
- data/redis/redis-2.2.11/doc/TwitterAlikeExample.html +250 -0
- data/redis/redis-2.2.11/doc/TypeCommand.html +46 -0
- data/redis/redis-2.2.11/doc/UnstableSource.html +39 -0
- data/redis/redis-2.2.11/doc/VirtualMemorySpecification.html +156 -0
- data/redis/redis-2.2.11/doc/VirtualMemoryUserGuide.html +66 -0
- data/redis/redis-2.2.11/doc/ZaddCommand.html +43 -0
- data/redis/redis-2.2.11/doc/ZcardCommand.html +41 -0
- data/redis/redis-2.2.11/doc/ZincrbyCommand.html +42 -0
- data/redis/redis-2.2.11/doc/ZrangeCommand.html +42 -0
- data/redis/redis-2.2.11/doc/ZrangebyscoreCommand.html +77 -0
- data/redis/redis-2.2.11/doc/ZrankCommand.html +43 -0
- data/redis/redis-2.2.11/doc/ZremCommand.html +42 -0
- data/redis/redis-2.2.11/doc/ZremrangebyrankCommand.html +39 -0
- data/redis/redis-2.2.11/doc/ZremrangebyscoreCommand.html +39 -0
- data/redis/redis-2.2.11/doc/ZscoreCommand.html +41 -0
- data/redis/redis-2.2.11/doc/ZunionCommand.html +42 -0
- data/redis/redis-2.2.11/doc/ZunionstoreCommand.html +43 -0
- data/redis/redis-2.2.11/doc/index.html +43 -0
- data/redis/redis-2.2.11/doc/redis.png +0 -0
- data/redis/redis-2.2.11/doc/style.css +25 -0
- data/redis/redis-2.2.11/redis.conf +417 -0
- data/redis/redis-2.2.11/src/Makefile +177 -0
- data/redis/redis-2.2.11/src/adlist.c +325 -0
- data/redis/redis-2.2.11/src/adlist.h +92 -0
- data/redis/redis-2.2.11/src/ae.c +390 -0
- data/redis/redis-2.2.11/src/ae.h +117 -0
- data/redis/redis-2.2.11/src/ae_epoll.c +91 -0
- data/redis/redis-2.2.11/src/ae_kqueue.c +93 -0
- data/redis/redis-2.2.11/src/ae_select.c +72 -0
- data/redis/redis-2.2.11/src/anet.c +347 -0
- data/redis/redis-2.2.11/src/anet.h +57 -0
- data/redis/redis-2.2.11/src/aof.c +675 -0
- data/redis/redis-2.2.11/src/config.c +627 -0
- data/redis/redis-2.2.11/src/config.h +64 -0
- data/redis/redis-2.2.11/src/db.c +543 -0
- data/redis/redis-2.2.11/src/debug.c +314 -0
- data/redis/redis-2.2.11/src/dict.c +721 -0
- data/redis/redis-2.2.11/src/dict.h +156 -0
- data/redis/redis-2.2.11/src/fmacros.h +15 -0
- data/redis/redis-2.2.11/src/help.h +638 -0
- data/redis/redis-2.2.11/src/intset.c +422 -0
- data/redis/redis-2.2.11/src/intset.h +19 -0
- data/redis/redis-2.2.11/src/lzf.h +100 -0
- data/redis/redis-2.2.11/src/lzfP.h +159 -0
- data/redis/redis-2.2.11/src/lzf_c.c +295 -0
- data/redis/redis-2.2.11/src/lzf_d.c +150 -0
- data/redis/redis-2.2.11/src/mkreleasehdr.sh +9 -0
- data/redis/redis-2.2.11/src/multi.c +268 -0
- data/redis/redis-2.2.11/src/networking.c +899 -0
- data/redis/redis-2.2.11/src/object.c +484 -0
- data/redis/redis-2.2.11/src/pqsort.c +197 -0
- data/redis/redis-2.2.11/src/pqsort.h +15 -0
- data/redis/redis-2.2.11/src/pubsub.c +267 -0
- data/redis/redis-2.2.11/src/rdb.c +1020 -0
- data/redis/redis-2.2.11/src/redis-benchmark.c +530 -0
- data/redis/redis-2.2.11/src/redis-check-aof.c +185 -0
- data/redis/redis-2.2.11/src/redis-check-dump.c +681 -0
- data/redis/redis-2.2.11/src/redis-cli.c +773 -0
- data/redis/redis-2.2.11/src/redis.c +1677 -0
- data/redis/redis-2.2.11/src/redis.h +1022 -0
- data/redis/redis-2.2.11/src/release.c +13 -0
- data/redis/redis-2.2.11/src/replication.c +557 -0
- data/redis/redis-2.2.11/src/sds.c +639 -0
- data/redis/redis-2.2.11/src/sds.h +78 -0
- data/redis/redis-2.2.11/src/sha1.c +276 -0
- data/redis/redis-2.2.11/src/sha1.h +17 -0
- data/redis/redis-2.2.11/src/solarisfixes.h +22 -0
- data/redis/redis-2.2.11/src/sort.c +389 -0
- data/redis/redis-2.2.11/src/syncio.c +154 -0
- data/redis/redis-2.2.11/src/t_hash.c +476 -0
- data/redis/redis-2.2.11/src/t_list.c +986 -0
- data/redis/redis-2.2.11/src/t_set.c +610 -0
- data/redis/redis-2.2.11/src/t_string.c +438 -0
- data/redis/redis-2.2.11/src/t_zset.c +1084 -0
- data/redis/redis-2.2.11/src/testhelp.h +54 -0
- data/redis/redis-2.2.11/src/util.c +243 -0
- data/redis/redis-2.2.11/src/valgrind.sup +5 -0
- data/redis/redis-2.2.11/src/version.h +1 -0
- data/redis/redis-2.2.11/src/vm.c +1149 -0
- data/redis/redis-2.2.11/src/ziplist.c +1323 -0
- data/redis/redis-2.2.11/src/ziplist.h +15 -0
- data/redis/redis-2.2.11/src/zipmap.c +455 -0
- data/redis/redis-2.2.11/src/zipmap.h +48 -0
- data/redis/redis-2.2.11/src/zmalloc.c +278 -0
- data/redis/redis-2.2.11/src/zmalloc.h +47 -0
- data/redis/redis-2.2.11/tests/assets/default.conf +308 -0
- data/redis/redis-2.2.11/tests/integration/aof.tcl +104 -0
- data/redis/redis-2.2.11/tests/integration/redis-cli.tcl +208 -0
- data/redis/redis-2.2.11/tests/integration/replication.tcl +98 -0
- data/redis/redis-2.2.11/tests/support/redis.tcl +241 -0
- data/redis/redis-2.2.11/tests/support/server.tcl +294 -0
- data/redis/redis-2.2.11/tests/support/test.tcl +190 -0
- data/redis/redis-2.2.11/tests/support/tmpfile.tcl +15 -0
- data/redis/redis-2.2.11/tests/support/util.tcl +296 -0
- data/redis/redis-2.2.11/tests/test_helper.tcl +221 -0
- data/redis/redis-2.2.11/tests/unit/auth.tcl +15 -0
- data/redis/redis-2.2.11/tests/unit/basic.tcl +616 -0
- data/redis/redis-2.2.11/tests/unit/cas.tcl +135 -0
- data/redis/redis-2.2.11/tests/unit/expire.tcl +74 -0
- data/redis/redis-2.2.11/tests/unit/other.tcl +240 -0
- data/redis/redis-2.2.11/tests/unit/printver.tcl +6 -0
- data/redis/redis-2.2.11/tests/unit/protocol.tcl +62 -0
- data/redis/redis-2.2.11/tests/unit/pubsub.tcl +195 -0
- data/redis/redis-2.2.11/tests/unit/quit.tcl +40 -0
- data/redis/redis-2.2.11/tests/unit/sort.tcl +189 -0
- data/redis/redis-2.2.11/tests/unit/type/hash.tcl +300 -0
- data/redis/redis-2.2.11/tests/unit/type/list.tcl +819 -0
- data/redis/redis-2.2.11/tests/unit/type/set.tcl +334 -0
- data/redis/redis-2.2.11/tests/unit/type/zset.tcl +587 -0
- data/redis/redis-2.2.11/utils/build-static-symbols.tcl +22 -0
- data/redis/redis-2.2.11/utils/generate-command-help.rb +112 -0
- data/redis/redis-2.2.11/utils/mktarball.sh +13 -0
- data/redis/redis-2.2.11/utils/redis-copy.rb +78 -0
- data/redis/redis-2.2.11/utils/redis-sha1.rb +52 -0
- data/redis/redis-2.2.11/utils/redis_init_script +42 -0
- metadata +362 -0
@@ -0,0 +1,135 @@
|
|
1
|
+
start_server {tags {"cas"}} {
|
2
|
+
test {EXEC works on WATCHed key not modified} {
|
3
|
+
r watch x y z
|
4
|
+
r watch k
|
5
|
+
r multi
|
6
|
+
r ping
|
7
|
+
r exec
|
8
|
+
} {PONG}
|
9
|
+
|
10
|
+
test {EXEC fail on WATCHed key modified (1 key of 1 watched)} {
|
11
|
+
r set x 30
|
12
|
+
r watch x
|
13
|
+
r set x 40
|
14
|
+
r multi
|
15
|
+
r ping
|
16
|
+
r exec
|
17
|
+
} {}
|
18
|
+
|
19
|
+
test {EXEC fail on WATCHed key modified (1 key of 5 watched)} {
|
20
|
+
r set x 30
|
21
|
+
r watch a b x k z
|
22
|
+
r set x 40
|
23
|
+
r multi
|
24
|
+
r ping
|
25
|
+
r exec
|
26
|
+
} {}
|
27
|
+
|
28
|
+
test {After successful EXEC key is no longer watched} {
|
29
|
+
r set x 30
|
30
|
+
r watch x
|
31
|
+
r multi
|
32
|
+
r ping
|
33
|
+
r exec
|
34
|
+
r set x 40
|
35
|
+
r multi
|
36
|
+
r ping
|
37
|
+
r exec
|
38
|
+
} {PONG}
|
39
|
+
|
40
|
+
test {After failed EXEC key is no longer watched} {
|
41
|
+
r set x 30
|
42
|
+
r watch x
|
43
|
+
r set x 40
|
44
|
+
r multi
|
45
|
+
r ping
|
46
|
+
r exec
|
47
|
+
r set x 40
|
48
|
+
r multi
|
49
|
+
r ping
|
50
|
+
r exec
|
51
|
+
} {PONG}
|
52
|
+
|
53
|
+
test {It is possible to UNWATCH} {
|
54
|
+
r set x 30
|
55
|
+
r watch x
|
56
|
+
r set x 40
|
57
|
+
r unwatch
|
58
|
+
r multi
|
59
|
+
r ping
|
60
|
+
r exec
|
61
|
+
} {PONG}
|
62
|
+
|
63
|
+
test {UNWATCH when there is nothing watched works as expected} {
|
64
|
+
r unwatch
|
65
|
+
} {OK}
|
66
|
+
|
67
|
+
test {FLUSHALL is able to touch the watched keys} {
|
68
|
+
r set x 30
|
69
|
+
r watch x
|
70
|
+
r flushall
|
71
|
+
r multi
|
72
|
+
r ping
|
73
|
+
r exec
|
74
|
+
} {}
|
75
|
+
|
76
|
+
test {FLUSHALL does not touch non affected keys} {
|
77
|
+
r del x
|
78
|
+
r watch x
|
79
|
+
r flushall
|
80
|
+
r multi
|
81
|
+
r ping
|
82
|
+
r exec
|
83
|
+
} {PONG}
|
84
|
+
|
85
|
+
test {FLUSHDB is able to touch the watched keys} {
|
86
|
+
r set x 30
|
87
|
+
r watch x
|
88
|
+
r flushdb
|
89
|
+
r multi
|
90
|
+
r ping
|
91
|
+
r exec
|
92
|
+
} {}
|
93
|
+
|
94
|
+
test {FLUSHDB does not touch non affected keys} {
|
95
|
+
r del x
|
96
|
+
r watch x
|
97
|
+
r flushdb
|
98
|
+
r multi
|
99
|
+
r ping
|
100
|
+
r exec
|
101
|
+
} {PONG}
|
102
|
+
|
103
|
+
test {WATCH is able to remember the DB a key belongs to} {
|
104
|
+
r select 5
|
105
|
+
r set x 30
|
106
|
+
r watch x
|
107
|
+
r select 1
|
108
|
+
r set x 10
|
109
|
+
r select 5
|
110
|
+
r multi
|
111
|
+
r ping
|
112
|
+
r exec
|
113
|
+
} {PONG}
|
114
|
+
|
115
|
+
test {WATCH will consider touched keys target of EXPIRE} {
|
116
|
+
r del x
|
117
|
+
r set x foo
|
118
|
+
r watch x
|
119
|
+
r expire x 10
|
120
|
+
r multi
|
121
|
+
r ping
|
122
|
+
r exec
|
123
|
+
} {}
|
124
|
+
|
125
|
+
test {WATCH will not consider touched expired keys} {
|
126
|
+
r del x
|
127
|
+
r set x foo
|
128
|
+
r expire x 2
|
129
|
+
r watch x
|
130
|
+
after 3000
|
131
|
+
r multi
|
132
|
+
r ping
|
133
|
+
r exec
|
134
|
+
} {PONG}
|
135
|
+
}
|
@@ -0,0 +1,74 @@
|
|
1
|
+
start_server {tags {"expire"}} {
|
2
|
+
test {EXPIRE - set timeouts multiple times} {
|
3
|
+
r set x foobar
|
4
|
+
set v1 [r expire x 5]
|
5
|
+
set v2 [r ttl x]
|
6
|
+
set v3 [r expire x 10]
|
7
|
+
set v4 [r ttl x]
|
8
|
+
r expire x 4
|
9
|
+
list $v1 $v2 $v3 $v4
|
10
|
+
} {1 5 1 10}
|
11
|
+
|
12
|
+
test {EXPIRE - It should be still possible to read 'x'} {
|
13
|
+
r get x
|
14
|
+
} {foobar}
|
15
|
+
|
16
|
+
tags {"slow"} {
|
17
|
+
test {EXPIRE - After 6 seconds the key should no longer be here} {
|
18
|
+
after 6000
|
19
|
+
list [r get x] [r exists x]
|
20
|
+
} {{} 0}
|
21
|
+
}
|
22
|
+
|
23
|
+
test {EXPIRE - write on expire should work} {
|
24
|
+
r del x
|
25
|
+
r lpush x foo
|
26
|
+
r expire x 1000
|
27
|
+
r lpush x bar
|
28
|
+
r lrange x 0 -1
|
29
|
+
} {bar foo}
|
30
|
+
|
31
|
+
test {EXPIREAT - Check for EXPIRE alike behavior} {
|
32
|
+
r del x
|
33
|
+
r set x foo
|
34
|
+
r expireat x [expr [clock seconds]+15]
|
35
|
+
r ttl x
|
36
|
+
} {1[345]}
|
37
|
+
|
38
|
+
test {SETEX - Set + Expire combo operation. Check for TTL} {
|
39
|
+
r setex x 12 test
|
40
|
+
r ttl x
|
41
|
+
} {1[012]}
|
42
|
+
|
43
|
+
test {SETEX - Check value} {
|
44
|
+
r get x
|
45
|
+
} {test}
|
46
|
+
|
47
|
+
test {SETEX - Overwrite old key} {
|
48
|
+
r setex y 1 foo
|
49
|
+
r get y
|
50
|
+
} {foo}
|
51
|
+
|
52
|
+
tags {"slow"} {
|
53
|
+
test {SETEX - Wait for the key to expire} {
|
54
|
+
after 3000
|
55
|
+
r get y
|
56
|
+
} {}
|
57
|
+
}
|
58
|
+
|
59
|
+
test {SETEX - Wrong time parameter} {
|
60
|
+
catch {r setex z -10 foo} e
|
61
|
+
set _ $e
|
62
|
+
} {*invalid expire*}
|
63
|
+
|
64
|
+
test {PERSIST can undo an EXPIRE} {
|
65
|
+
r set x foo
|
66
|
+
r expire x 50
|
67
|
+
list [r ttl x] [r persist x] [r ttl x] [r get x]
|
68
|
+
} {50 1 -1 foo}
|
69
|
+
|
70
|
+
test {PERSIST returns 0 against non existing or non volatile keys} {
|
71
|
+
r set x foo
|
72
|
+
list [r persist foo] [r persist nokeyatall]
|
73
|
+
} {0 0}
|
74
|
+
}
|
@@ -0,0 +1,240 @@
|
|
1
|
+
start_server {tags {"other"}} {
|
2
|
+
test {SAVE - make sure there are all the types as values} {
|
3
|
+
# Wait for a background saving in progress to terminate
|
4
|
+
waitForBgsave r
|
5
|
+
r lpush mysavelist hello
|
6
|
+
r lpush mysavelist world
|
7
|
+
r set myemptykey {}
|
8
|
+
r set mynormalkey {blablablba}
|
9
|
+
r zadd mytestzset 10 a
|
10
|
+
r zadd mytestzset 20 b
|
11
|
+
r zadd mytestzset 30 c
|
12
|
+
r save
|
13
|
+
} {OK}
|
14
|
+
|
15
|
+
tags {"slow"} {
|
16
|
+
foreach fuzztype {binary alpha compr} {
|
17
|
+
test "FUZZ stresser with data model $fuzztype" {
|
18
|
+
set err 0
|
19
|
+
for {set i 0} {$i < 10000} {incr i} {
|
20
|
+
set fuzz [randstring 0 512 $fuzztype]
|
21
|
+
r set foo $fuzz
|
22
|
+
set got [r get foo]
|
23
|
+
if {$got ne $fuzz} {
|
24
|
+
set err [list $fuzz $got]
|
25
|
+
break
|
26
|
+
}
|
27
|
+
}
|
28
|
+
set _ $err
|
29
|
+
} {0}
|
30
|
+
}
|
31
|
+
}
|
32
|
+
|
33
|
+
test {BGSAVE} {
|
34
|
+
waitForBgsave r
|
35
|
+
r flushdb
|
36
|
+
r save
|
37
|
+
r set x 10
|
38
|
+
r bgsave
|
39
|
+
waitForBgsave r
|
40
|
+
r debug reload
|
41
|
+
r get x
|
42
|
+
} {10}
|
43
|
+
|
44
|
+
test {SELECT an out of range DB} {
|
45
|
+
catch {r select 1000000} err
|
46
|
+
set _ $err
|
47
|
+
} {*invalid*}
|
48
|
+
|
49
|
+
tags {consistency} {
|
50
|
+
if {![catch {package require sha1}]} {
|
51
|
+
test {Check consistency of different data types after a reload} {
|
52
|
+
r flushdb
|
53
|
+
createComplexDataset r 10000
|
54
|
+
set dump [csvdump r]
|
55
|
+
set sha1 [r debug digest]
|
56
|
+
r debug reload
|
57
|
+
set sha1_after [r debug digest]
|
58
|
+
if {$sha1 eq $sha1_after} {
|
59
|
+
set _ 1
|
60
|
+
} else {
|
61
|
+
set newdump [csvdump r]
|
62
|
+
puts "Consistency test failed!"
|
63
|
+
puts "You can inspect the two dumps in /tmp/repldump*.txt"
|
64
|
+
|
65
|
+
set fd [open /tmp/repldump1.txt w]
|
66
|
+
puts $fd $dump
|
67
|
+
close $fd
|
68
|
+
set fd [open /tmp/repldump2.txt w]
|
69
|
+
puts $fd $newdump
|
70
|
+
close $fd
|
71
|
+
|
72
|
+
set _ 0
|
73
|
+
}
|
74
|
+
} {1}
|
75
|
+
|
76
|
+
test {Same dataset digest if saving/reloading as AOF?} {
|
77
|
+
r bgrewriteaof
|
78
|
+
waitForBgrewriteaof r
|
79
|
+
r debug loadaof
|
80
|
+
set sha1_after [r debug digest]
|
81
|
+
if {$sha1 eq $sha1_after} {
|
82
|
+
set _ 1
|
83
|
+
} else {
|
84
|
+
set newdump [csvdump r]
|
85
|
+
puts "Consistency test failed!"
|
86
|
+
puts "You can inspect the two dumps in /tmp/aofdump*.txt"
|
87
|
+
|
88
|
+
set fd [open /tmp/aofdump1.txt w]
|
89
|
+
puts $fd $dump
|
90
|
+
close $fd
|
91
|
+
set fd [open /tmp/aofdump2.txt w]
|
92
|
+
puts $fd $newdump
|
93
|
+
close $fd
|
94
|
+
|
95
|
+
set _ 0
|
96
|
+
}
|
97
|
+
} {1}
|
98
|
+
}
|
99
|
+
}
|
100
|
+
|
101
|
+
test {EXPIRES after a reload (snapshot + append only file)} {
|
102
|
+
r flushdb
|
103
|
+
r set x 10
|
104
|
+
r expire x 1000
|
105
|
+
r save
|
106
|
+
r debug reload
|
107
|
+
set ttl [r ttl x]
|
108
|
+
set e1 [expr {$ttl > 900 && $ttl <= 1000}]
|
109
|
+
r bgrewriteaof
|
110
|
+
waitForBgrewriteaof r
|
111
|
+
set ttl [r ttl x]
|
112
|
+
set e2 [expr {$ttl > 900 && $ttl <= 1000}]
|
113
|
+
list $e1 $e2
|
114
|
+
} {1 1}
|
115
|
+
|
116
|
+
test {PIPELINING stresser (also a regression for the old epoll bug)} {
|
117
|
+
set fd2 [socket $::host $::port]
|
118
|
+
fconfigure $fd2 -encoding binary -translation binary
|
119
|
+
puts -nonewline $fd2 "SELECT 9\r\n"
|
120
|
+
flush $fd2
|
121
|
+
gets $fd2
|
122
|
+
|
123
|
+
for {set i 0} {$i < 100000} {incr i} {
|
124
|
+
set q {}
|
125
|
+
set val "0000${i}0000"
|
126
|
+
append q "SET key:$i $val\r\n"
|
127
|
+
puts -nonewline $fd2 $q
|
128
|
+
set q {}
|
129
|
+
append q "GET key:$i\r\n"
|
130
|
+
puts -nonewline $fd2 $q
|
131
|
+
}
|
132
|
+
flush $fd2
|
133
|
+
|
134
|
+
for {set i 0} {$i < 100000} {incr i} {
|
135
|
+
gets $fd2 line
|
136
|
+
gets $fd2 count
|
137
|
+
set count [string range $count 1 end]
|
138
|
+
set val [read $fd2 $count]
|
139
|
+
read $fd2 2
|
140
|
+
}
|
141
|
+
close $fd2
|
142
|
+
set _ 1
|
143
|
+
} {1}
|
144
|
+
|
145
|
+
test {MUTLI / EXEC basics} {
|
146
|
+
r del mylist
|
147
|
+
r rpush mylist a
|
148
|
+
r rpush mylist b
|
149
|
+
r rpush mylist c
|
150
|
+
r multi
|
151
|
+
set v1 [r lrange mylist 0 -1]
|
152
|
+
set v2 [r ping]
|
153
|
+
set v3 [r exec]
|
154
|
+
list $v1 $v2 $v3
|
155
|
+
} {QUEUED QUEUED {{a b c} PONG}}
|
156
|
+
|
157
|
+
test {DISCARD} {
|
158
|
+
r del mylist
|
159
|
+
r rpush mylist a
|
160
|
+
r rpush mylist b
|
161
|
+
r rpush mylist c
|
162
|
+
r multi
|
163
|
+
set v1 [r del mylist]
|
164
|
+
set v2 [r discard]
|
165
|
+
set v3 [r lrange mylist 0 -1]
|
166
|
+
list $v1 $v2 $v3
|
167
|
+
} {QUEUED OK {a b c}}
|
168
|
+
|
169
|
+
test {Nested MULTI are not allowed} {
|
170
|
+
set err {}
|
171
|
+
r multi
|
172
|
+
catch {[r multi]} err
|
173
|
+
r exec
|
174
|
+
set _ $err
|
175
|
+
} {*ERR MULTI*}
|
176
|
+
|
177
|
+
test {MULTI where commands alter argc/argv} {
|
178
|
+
r sadd myset a
|
179
|
+
r multi
|
180
|
+
r spop myset
|
181
|
+
list [r exec] [r exists myset]
|
182
|
+
} {a 0}
|
183
|
+
|
184
|
+
test {WATCH inside MULTI is not allowed} {
|
185
|
+
set err {}
|
186
|
+
r multi
|
187
|
+
catch {[r watch x]} err
|
188
|
+
r exec
|
189
|
+
set _ $err
|
190
|
+
} {*ERR WATCH*}
|
191
|
+
|
192
|
+
test {APPEND basics} {
|
193
|
+
list [r append foo bar] [r get foo] \
|
194
|
+
[r append foo 100] [r get foo]
|
195
|
+
} {3 bar 6 bar100}
|
196
|
+
|
197
|
+
test {APPEND basics, integer encoded values} {
|
198
|
+
set res {}
|
199
|
+
r del foo
|
200
|
+
r append foo 1
|
201
|
+
r append foo 2
|
202
|
+
lappend res [r get foo]
|
203
|
+
r set foo 1
|
204
|
+
r append foo 2
|
205
|
+
lappend res [r get foo]
|
206
|
+
} {12 12}
|
207
|
+
|
208
|
+
test {APPEND fuzzing} {
|
209
|
+
set err {}
|
210
|
+
foreach type {binary alpha compr} {
|
211
|
+
set buf {}
|
212
|
+
r del x
|
213
|
+
for {set i 0} {$i < 1000} {incr i} {
|
214
|
+
set bin [randstring 0 10 $type]
|
215
|
+
append buf $bin
|
216
|
+
r append x $bin
|
217
|
+
}
|
218
|
+
if {$buf != [r get x]} {
|
219
|
+
set err "Expected '$buf' found '[r get x]'"
|
220
|
+
break
|
221
|
+
}
|
222
|
+
}
|
223
|
+
set _ $err
|
224
|
+
} {}
|
225
|
+
|
226
|
+
# Leave the user with a clean DB before to exit
|
227
|
+
test {FLUSHDB} {
|
228
|
+
set aux {}
|
229
|
+
r select 9
|
230
|
+
r flushdb
|
231
|
+
lappend aux [r dbsize]
|
232
|
+
r select 10
|
233
|
+
r flushdb
|
234
|
+
lappend aux [r dbsize]
|
235
|
+
} {0 0}
|
236
|
+
|
237
|
+
test {Perform a final SAVE to leave a clean DB on disk} {
|
238
|
+
r save
|
239
|
+
} {OK}
|
240
|
+
}
|