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.
Files changed (290) hide show
  1. data/LICENSE +38 -0
  2. data/README.md +33 -0
  3. data/bin/redis +114 -0
  4. data/redis/Makefile +5 -0
  5. data/redis/extconf.rb +3 -0
  6. data/redis/redis-2.2.11/00-RELEASENOTES +199 -0
  7. data/redis/redis-2.2.11/BUGS +1 -0
  8. data/redis/redis-2.2.11/CONTRIBUTING +13 -0
  9. data/redis/redis-2.2.11/COPYING +10 -0
  10. data/redis/redis-2.2.11/Changelog +1032 -0
  11. data/redis/redis-2.2.11/INSTALL +30 -0
  12. data/redis/redis-2.2.11/Makefile +22 -0
  13. data/redis/redis-2.2.11/README +83 -0
  14. data/redis/redis-2.2.11/TODO +4 -0
  15. data/redis/redis-2.2.11/client-libraries/README +11 -0
  16. data/redis/redis-2.2.11/deps/hiredis/COPYING +10 -0
  17. data/redis/redis-2.2.11/deps/hiredis/Makefile +115 -0
  18. data/redis/redis-2.2.11/deps/hiredis/README.md +311 -0
  19. data/redis/redis-2.2.11/deps/hiredis/TODO +2 -0
  20. data/redis/redis-2.2.11/deps/hiredis/adapters/ae.h +95 -0
  21. data/redis/redis-2.2.11/deps/hiredis/adapters/libev.h +113 -0
  22. data/redis/redis-2.2.11/deps/hiredis/adapters/libevent.h +76 -0
  23. data/redis/redis-2.2.11/deps/hiredis/async.c +321 -0
  24. data/redis/redis-2.2.11/deps/hiredis/async.h +112 -0
  25. data/redis/redis-2.2.11/deps/hiredis/example-ae.c +53 -0
  26. data/redis/redis-2.2.11/deps/hiredis/example-libev.c +47 -0
  27. data/redis/redis-2.2.11/deps/hiredis/example-libevent.c +48 -0
  28. data/redis/redis-2.2.11/deps/hiredis/example.c +67 -0
  29. data/redis/redis-2.2.11/deps/hiredis/fmacros.h +15 -0
  30. data/redis/redis-2.2.11/deps/hiredis/hiredis.c +1058 -0
  31. data/redis/redis-2.2.11/deps/hiredis/hiredis.h +170 -0
  32. data/redis/redis-2.2.11/deps/hiredis/net.c +170 -0
  33. data/redis/redis-2.2.11/deps/hiredis/net.h +43 -0
  34. data/redis/redis-2.2.11/deps/hiredis/sds.c +479 -0
  35. data/redis/redis-2.2.11/deps/hiredis/sds.h +77 -0
  36. data/redis/redis-2.2.11/deps/hiredis/test.c +479 -0
  37. data/redis/redis-2.2.11/deps/hiredis/util.h +40 -0
  38. data/redis/redis-2.2.11/deps/linenoise/Makefile +10 -0
  39. data/redis/redis-2.2.11/deps/linenoise/README.markdown +45 -0
  40. data/redis/redis-2.2.11/deps/linenoise/example.c +27 -0
  41. data/redis/redis-2.2.11/deps/linenoise/linenoise.c +609 -0
  42. data/redis/redis-2.2.11/deps/linenoise/linenoise.h +55 -0
  43. data/redis/redis-2.2.11/design-documents/REDIS-CLUSTER +214 -0
  44. data/redis/redis-2.2.11/design-documents/REDIS-CLUSTER-2 +343 -0
  45. data/redis/redis-2.2.11/doc/AppendCommand.html +48 -0
  46. data/redis/redis-2.2.11/doc/AppendOnlyFileHowto.html +41 -0
  47. data/redis/redis-2.2.11/doc/AuthCommand.html +39 -0
  48. data/redis/redis-2.2.11/doc/Benchmarks.html +129 -0
  49. data/redis/redis-2.2.11/doc/BgrewriteaofCommand.html +41 -0
  50. data/redis/redis-2.2.11/doc/BgsaveCommand.html +39 -0
  51. data/redis/redis-2.2.11/doc/BlpopCommand.html +51 -0
  52. data/redis/redis-2.2.11/doc/BrpoplpushCommand.html +39 -0
  53. data/redis/redis-2.2.11/doc/CommandReference.html +47 -0
  54. data/redis/redis-2.2.11/doc/Comparisons.html +42 -0
  55. data/redis/redis-2.2.11/doc/ConfigCommand.html +76 -0
  56. data/redis/redis-2.2.11/doc/Configuration.html +38 -0
  57. data/redis/redis-2.2.11/doc/ConnectionHandlingSidebar.html +36 -0
  58. data/redis/redis-2.2.11/doc/ControlCommandsSidebar.html +36 -0
  59. data/redis/redis-2.2.11/doc/Credits.html +38 -0
  60. data/redis/redis-2.2.11/doc/DbsizeCommand.html +38 -0
  61. data/redis/redis-2.2.11/doc/DelCommand.html +41 -0
  62. data/redis/redis-2.2.11/doc/DesignPatterns.html +37 -0
  63. data/redis/redis-2.2.11/doc/EventLibray.html +44 -0
  64. data/redis/redis-2.2.11/doc/ExistsCommand.html +42 -0
  65. data/redis/redis-2.2.11/doc/ExpireCommand.html +96 -0
  66. data/redis/redis-2.2.11/doc/FAQ.html +70 -0
  67. data/redis/redis-2.2.11/doc/Features.html +38 -0
  68. data/redis/redis-2.2.11/doc/FlushallCommand.html +39 -0
  69. data/redis/redis-2.2.11/doc/FlushdbCommand.html +39 -0
  70. data/redis/redis-2.2.11/doc/FromSqlToDataStructures.html +37 -0
  71. data/redis/redis-2.2.11/doc/GenericCommandsSidebar.html +36 -0
  72. data/redis/redis-2.2.11/doc/GetCommand.html +39 -0
  73. data/redis/redis-2.2.11/doc/GetbitCommand.html +39 -0
  74. data/redis/redis-2.2.11/doc/GetsetCommand.html +38 -0
  75. data/redis/redis-2.2.11/doc/HackingStrings.html +83 -0
  76. data/redis/redis-2.2.11/doc/HashCommandsSidebar.html +36 -0
  77. data/redis/redis-2.2.11/doc/Hashes.html +37 -0
  78. data/redis/redis-2.2.11/doc/HdelCommand.html +39 -0
  79. data/redis/redis-2.2.11/doc/HexistsCommand.html +39 -0
  80. data/redis/redis-2.2.11/doc/HgetCommand.html +39 -0
  81. data/redis/redis-2.2.11/doc/HgetallCommand.html +40 -0
  82. data/redis/redis-2.2.11/doc/HincrbyCommand.html +45 -0
  83. data/redis/redis-2.2.11/doc/HlenCommand.html +38 -0
  84. data/redis/redis-2.2.11/doc/HmgetCommand.html +40 -0
  85. data/redis/redis-2.2.11/doc/HmsetCommand.html +40 -0
  86. data/redis/redis-2.2.11/doc/HsetCommand.html +40 -0
  87. data/redis/redis-2.2.11/doc/HsetnxCommand.html +41 -0
  88. data/redis/redis-2.2.11/doc/IncrCommand.html +43 -0
  89. data/redis/redis-2.2.11/doc/InfoCommand.html +48 -0
  90. data/redis/redis-2.2.11/doc/IntroductionToRedisDataTypes.html +152 -0
  91. data/redis/redis-2.2.11/doc/KeysCommand.html +43 -0
  92. data/redis/redis-2.2.11/doc/LastsaveCommand.html +39 -0
  93. data/redis/redis-2.2.11/doc/LindexCommand.html +40 -0
  94. data/redis/redis-2.2.11/doc/ListCommandsSidebar.html +36 -0
  95. data/redis/redis-2.2.11/doc/Lists.html +42 -0
  96. data/redis/redis-2.2.11/doc/LlenCommand.html +41 -0
  97. data/redis/redis-2.2.11/doc/LpopCommand.html +41 -0
  98. data/redis/redis-2.2.11/doc/LrangeCommand.html +47 -0
  99. data/redis/redis-2.2.11/doc/LremCommand.html +41 -0
  100. data/redis/redis-2.2.11/doc/LsetCommand.html +38 -0
  101. data/redis/redis-2.2.11/doc/LtrimCommand.html +47 -0
  102. data/redis/redis-2.2.11/doc/MgetCommand.html +52 -0
  103. data/redis/redis-2.2.11/doc/MonitorCommand.html +63 -0
  104. data/redis/redis-2.2.11/doc/MoveCommand.html +42 -0
  105. data/redis/redis-2.2.11/doc/MsetCommand.html +44 -0
  106. data/redis/redis-2.2.11/doc/MultiExecCommand.html +166 -0
  107. data/redis/redis-2.2.11/doc/NonexistentCommands.html +51 -0
  108. data/redis/redis-2.2.11/doc/ObjectHashMappers.html +39 -0
  109. data/redis/redis-2.2.11/doc/Pipelining.html +36 -0
  110. data/redis/redis-2.2.11/doc/ProgrammingExamples.html +38 -0
  111. data/redis/redis-2.2.11/doc/ProtocolSpecification.html +137 -0
  112. data/redis/redis-2.2.11/doc/PublishSubscribe.html +115 -0
  113. data/redis/redis-2.2.11/doc/QuickStart.html +68 -0
  114. data/redis/redis-2.2.11/doc/QuitCommand.html +38 -0
  115. data/redis/redis-2.2.11/doc/README.html +119 -0
  116. data/redis/redis-2.2.11/doc/RandomkeyCommand.html +39 -0
  117. data/redis/redis-2.2.11/doc/Redis0100ChangeLog.html +67 -0
  118. data/redis/redis-2.2.11/doc/Redis0900ChangeLog.html +56 -0
  119. data/redis/redis-2.2.11/doc/RedisBigData.html +61 -0
  120. data/redis/redis-2.2.11/doc/RedisCLI.html +37 -0
  121. data/redis/redis-2.2.11/doc/RedisEventLibrary.html +70 -0
  122. data/redis/redis-2.2.11/doc/RedisGuides.html +37 -0
  123. data/redis/redis-2.2.11/doc/RedisInternals.html +38 -0
  124. data/redis/redis-2.2.11/doc/RedisPipelining.html +93 -0
  125. data/redis/redis-2.2.11/doc/RedisStatus.html +56 -0
  126. data/redis/redis-2.2.11/doc/Redis_1_2_0_Changelog.html +40 -0
  127. data/redis/redis-2.2.11/doc/Redis_2_0_0_Changelog.html +62 -0
  128. data/redis/redis-2.2.11/doc/Redis_2_0_Whats_new.html +59 -0
  129. data/redis/redis-2.2.11/doc/RenameCommand.html +39 -0
  130. data/redis/redis-2.2.11/doc/RenamenxCommand.html +42 -0
  131. data/redis/redis-2.2.11/doc/ReplicationHowto.html +43 -0
  132. data/redis/redis-2.2.11/doc/ReplyTypes.html +42 -0
  133. data/redis/redis-2.2.11/doc/RoadMap.html +38 -0
  134. data/redis/redis-2.2.11/doc/RpoplpushCommand.html +44 -0
  135. data/redis/redis-2.2.11/doc/RpushCommand.html +40 -0
  136. data/redis/redis-2.2.11/doc/SaddCommand.html +41 -0
  137. data/redis/redis-2.2.11/doc/SaveCommand.html +39 -0
  138. data/redis/redis-2.2.11/doc/ScardCommand.html +41 -0
  139. data/redis/redis-2.2.11/doc/SdiffCommand.html +45 -0
  140. data/redis/redis-2.2.11/doc/SdiffstoreCommand.html +38 -0
  141. data/redis/redis-2.2.11/doc/SelectCommand.html +39 -0
  142. data/redis/redis-2.2.11/doc/SetCommand.html +39 -0
  143. data/redis/redis-2.2.11/doc/SetCommandsSidebar.html +36 -0
  144. data/redis/redis-2.2.11/doc/SetbitCommand.html +45 -0
  145. data/redis/redis-2.2.11/doc/SetexCommand.html +42 -0
  146. data/redis/redis-2.2.11/doc/SetnxCommand.html +51 -0
  147. data/redis/redis-2.2.11/doc/SetrangeCommand.html +58 -0
  148. data/redis/redis-2.2.11/doc/Sets.html +36 -0
  149. data/redis/redis-2.2.11/doc/ShutdownCommand.html +39 -0
  150. data/redis/redis-2.2.11/doc/SideBar.html +36 -0
  151. data/redis/redis-2.2.11/doc/SinterCommand.html +40 -0
  152. data/redis/redis-2.2.11/doc/SinterstoreCommand.html +39 -0
  153. data/redis/redis-2.2.11/doc/SismemberCommand.html +42 -0
  154. data/redis/redis-2.2.11/doc/SlaveofCommand.html +41 -0
  155. data/redis/redis-2.2.11/doc/SmembersCommand.html +38 -0
  156. data/redis/redis-2.2.11/doc/SmoveCommand.html +44 -0
  157. data/redis/redis-2.2.11/doc/SortCommand.html +75 -0
  158. data/redis/redis-2.2.11/doc/SortedSetCommandsSidebar.html +36 -0
  159. data/redis/redis-2.2.11/doc/SortedSets.html +36 -0
  160. data/redis/redis-2.2.11/doc/Speed.html +38 -0
  161. data/redis/redis-2.2.11/doc/SponsorshipHistory.html +38 -0
  162. data/redis/redis-2.2.11/doc/SpopCommand.html +40 -0
  163. data/redis/redis-2.2.11/doc/SrandmemberCommand.html +40 -0
  164. data/redis/redis-2.2.11/doc/SremCommand.html +42 -0
  165. data/redis/redis-2.2.11/doc/StringCommandsSidebar.html +36 -0
  166. data/redis/redis-2.2.11/doc/Strings.html +37 -0
  167. data/redis/redis-2.2.11/doc/StrlenCommand.html +39 -0
  168. data/redis/redis-2.2.11/doc/SubstrCommand.html +52 -0
  169. data/redis/redis-2.2.11/doc/SunionCommand.html +40 -0
  170. data/redis/redis-2.2.11/doc/SunionstoreCommand.html +38 -0
  171. data/redis/redis-2.2.11/doc/SupportedLanguages.html +60 -0
  172. data/redis/redis-2.2.11/doc/SupportedPlatforms.html +37 -0
  173. data/redis/redis-2.2.11/doc/TemplateCommand.html +38 -0
  174. data/redis/redis-2.2.11/doc/TtlCommand.html +38 -0
  175. data/redis/redis-2.2.11/doc/TwitterAlikeExample.html +250 -0
  176. data/redis/redis-2.2.11/doc/TypeCommand.html +46 -0
  177. data/redis/redis-2.2.11/doc/UnstableSource.html +39 -0
  178. data/redis/redis-2.2.11/doc/VirtualMemorySpecification.html +156 -0
  179. data/redis/redis-2.2.11/doc/VirtualMemoryUserGuide.html +66 -0
  180. data/redis/redis-2.2.11/doc/ZaddCommand.html +43 -0
  181. data/redis/redis-2.2.11/doc/ZcardCommand.html +41 -0
  182. data/redis/redis-2.2.11/doc/ZincrbyCommand.html +42 -0
  183. data/redis/redis-2.2.11/doc/ZrangeCommand.html +42 -0
  184. data/redis/redis-2.2.11/doc/ZrangebyscoreCommand.html +77 -0
  185. data/redis/redis-2.2.11/doc/ZrankCommand.html +43 -0
  186. data/redis/redis-2.2.11/doc/ZremCommand.html +42 -0
  187. data/redis/redis-2.2.11/doc/ZremrangebyrankCommand.html +39 -0
  188. data/redis/redis-2.2.11/doc/ZremrangebyscoreCommand.html +39 -0
  189. data/redis/redis-2.2.11/doc/ZscoreCommand.html +41 -0
  190. data/redis/redis-2.2.11/doc/ZunionCommand.html +42 -0
  191. data/redis/redis-2.2.11/doc/ZunionstoreCommand.html +43 -0
  192. data/redis/redis-2.2.11/doc/index.html +43 -0
  193. data/redis/redis-2.2.11/doc/redis.png +0 -0
  194. data/redis/redis-2.2.11/doc/style.css +25 -0
  195. data/redis/redis-2.2.11/redis.conf +417 -0
  196. data/redis/redis-2.2.11/src/Makefile +177 -0
  197. data/redis/redis-2.2.11/src/adlist.c +325 -0
  198. data/redis/redis-2.2.11/src/adlist.h +92 -0
  199. data/redis/redis-2.2.11/src/ae.c +390 -0
  200. data/redis/redis-2.2.11/src/ae.h +117 -0
  201. data/redis/redis-2.2.11/src/ae_epoll.c +91 -0
  202. data/redis/redis-2.2.11/src/ae_kqueue.c +93 -0
  203. data/redis/redis-2.2.11/src/ae_select.c +72 -0
  204. data/redis/redis-2.2.11/src/anet.c +347 -0
  205. data/redis/redis-2.2.11/src/anet.h +57 -0
  206. data/redis/redis-2.2.11/src/aof.c +675 -0
  207. data/redis/redis-2.2.11/src/config.c +627 -0
  208. data/redis/redis-2.2.11/src/config.h +64 -0
  209. data/redis/redis-2.2.11/src/db.c +543 -0
  210. data/redis/redis-2.2.11/src/debug.c +314 -0
  211. data/redis/redis-2.2.11/src/dict.c +721 -0
  212. data/redis/redis-2.2.11/src/dict.h +156 -0
  213. data/redis/redis-2.2.11/src/fmacros.h +15 -0
  214. data/redis/redis-2.2.11/src/help.h +638 -0
  215. data/redis/redis-2.2.11/src/intset.c +422 -0
  216. data/redis/redis-2.2.11/src/intset.h +19 -0
  217. data/redis/redis-2.2.11/src/lzf.h +100 -0
  218. data/redis/redis-2.2.11/src/lzfP.h +159 -0
  219. data/redis/redis-2.2.11/src/lzf_c.c +295 -0
  220. data/redis/redis-2.2.11/src/lzf_d.c +150 -0
  221. data/redis/redis-2.2.11/src/mkreleasehdr.sh +9 -0
  222. data/redis/redis-2.2.11/src/multi.c +268 -0
  223. data/redis/redis-2.2.11/src/networking.c +899 -0
  224. data/redis/redis-2.2.11/src/object.c +484 -0
  225. data/redis/redis-2.2.11/src/pqsort.c +197 -0
  226. data/redis/redis-2.2.11/src/pqsort.h +15 -0
  227. data/redis/redis-2.2.11/src/pubsub.c +267 -0
  228. data/redis/redis-2.2.11/src/rdb.c +1020 -0
  229. data/redis/redis-2.2.11/src/redis-benchmark.c +530 -0
  230. data/redis/redis-2.2.11/src/redis-check-aof.c +185 -0
  231. data/redis/redis-2.2.11/src/redis-check-dump.c +681 -0
  232. data/redis/redis-2.2.11/src/redis-cli.c +773 -0
  233. data/redis/redis-2.2.11/src/redis.c +1677 -0
  234. data/redis/redis-2.2.11/src/redis.h +1022 -0
  235. data/redis/redis-2.2.11/src/release.c +13 -0
  236. data/redis/redis-2.2.11/src/replication.c +557 -0
  237. data/redis/redis-2.2.11/src/sds.c +639 -0
  238. data/redis/redis-2.2.11/src/sds.h +78 -0
  239. data/redis/redis-2.2.11/src/sha1.c +276 -0
  240. data/redis/redis-2.2.11/src/sha1.h +17 -0
  241. data/redis/redis-2.2.11/src/solarisfixes.h +22 -0
  242. data/redis/redis-2.2.11/src/sort.c +389 -0
  243. data/redis/redis-2.2.11/src/syncio.c +154 -0
  244. data/redis/redis-2.2.11/src/t_hash.c +476 -0
  245. data/redis/redis-2.2.11/src/t_list.c +986 -0
  246. data/redis/redis-2.2.11/src/t_set.c +610 -0
  247. data/redis/redis-2.2.11/src/t_string.c +438 -0
  248. data/redis/redis-2.2.11/src/t_zset.c +1084 -0
  249. data/redis/redis-2.2.11/src/testhelp.h +54 -0
  250. data/redis/redis-2.2.11/src/util.c +243 -0
  251. data/redis/redis-2.2.11/src/valgrind.sup +5 -0
  252. data/redis/redis-2.2.11/src/version.h +1 -0
  253. data/redis/redis-2.2.11/src/vm.c +1149 -0
  254. data/redis/redis-2.2.11/src/ziplist.c +1323 -0
  255. data/redis/redis-2.2.11/src/ziplist.h +15 -0
  256. data/redis/redis-2.2.11/src/zipmap.c +455 -0
  257. data/redis/redis-2.2.11/src/zipmap.h +48 -0
  258. data/redis/redis-2.2.11/src/zmalloc.c +278 -0
  259. data/redis/redis-2.2.11/src/zmalloc.h +47 -0
  260. data/redis/redis-2.2.11/tests/assets/default.conf +308 -0
  261. data/redis/redis-2.2.11/tests/integration/aof.tcl +104 -0
  262. data/redis/redis-2.2.11/tests/integration/redis-cli.tcl +208 -0
  263. data/redis/redis-2.2.11/tests/integration/replication.tcl +98 -0
  264. data/redis/redis-2.2.11/tests/support/redis.tcl +241 -0
  265. data/redis/redis-2.2.11/tests/support/server.tcl +294 -0
  266. data/redis/redis-2.2.11/tests/support/test.tcl +190 -0
  267. data/redis/redis-2.2.11/tests/support/tmpfile.tcl +15 -0
  268. data/redis/redis-2.2.11/tests/support/util.tcl +296 -0
  269. data/redis/redis-2.2.11/tests/test_helper.tcl +221 -0
  270. data/redis/redis-2.2.11/tests/unit/auth.tcl +15 -0
  271. data/redis/redis-2.2.11/tests/unit/basic.tcl +616 -0
  272. data/redis/redis-2.2.11/tests/unit/cas.tcl +135 -0
  273. data/redis/redis-2.2.11/tests/unit/expire.tcl +74 -0
  274. data/redis/redis-2.2.11/tests/unit/other.tcl +240 -0
  275. data/redis/redis-2.2.11/tests/unit/printver.tcl +6 -0
  276. data/redis/redis-2.2.11/tests/unit/protocol.tcl +62 -0
  277. data/redis/redis-2.2.11/tests/unit/pubsub.tcl +195 -0
  278. data/redis/redis-2.2.11/tests/unit/quit.tcl +40 -0
  279. data/redis/redis-2.2.11/tests/unit/sort.tcl +189 -0
  280. data/redis/redis-2.2.11/tests/unit/type/hash.tcl +300 -0
  281. data/redis/redis-2.2.11/tests/unit/type/list.tcl +819 -0
  282. data/redis/redis-2.2.11/tests/unit/type/set.tcl +334 -0
  283. data/redis/redis-2.2.11/tests/unit/type/zset.tcl +587 -0
  284. data/redis/redis-2.2.11/utils/build-static-symbols.tcl +22 -0
  285. data/redis/redis-2.2.11/utils/generate-command-help.rb +112 -0
  286. data/redis/redis-2.2.11/utils/mktarball.sh +13 -0
  287. data/redis/redis-2.2.11/utils/redis-copy.rb +78 -0
  288. data/redis/redis-2.2.11/utils/redis-sha1.rb +52 -0
  289. data/redis/redis-2.2.11/utils/redis_init_script +42 -0
  290. 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
+ }