redis 3.3.5 → 4.7.0

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 (147) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +220 -2
  3. data/README.md +169 -89
  4. data/lib/redis/client.rb +176 -99
  5. data/lib/redis/cluster/command.rb +79 -0
  6. data/lib/redis/cluster/command_loader.rb +33 -0
  7. data/lib/redis/cluster/key_slot_converter.rb +72 -0
  8. data/lib/redis/cluster/node.rb +120 -0
  9. data/lib/redis/cluster/node_key.rb +31 -0
  10. data/lib/redis/cluster/node_loader.rb +34 -0
  11. data/lib/redis/cluster/option.rb +100 -0
  12. data/lib/redis/cluster/slot.rb +86 -0
  13. data/lib/redis/cluster/slot_loader.rb +46 -0
  14. data/lib/redis/cluster.rb +315 -0
  15. data/lib/redis/commands/bitmaps.rb +63 -0
  16. data/lib/redis/commands/cluster.rb +45 -0
  17. data/lib/redis/commands/connection.rb +58 -0
  18. data/lib/redis/commands/geo.rb +84 -0
  19. data/lib/redis/commands/hashes.rb +251 -0
  20. data/lib/redis/commands/hyper_log_log.rb +37 -0
  21. data/lib/redis/commands/keys.rb +411 -0
  22. data/lib/redis/commands/lists.rb +289 -0
  23. data/lib/redis/commands/pubsub.rb +72 -0
  24. data/lib/redis/commands/scripting.rb +114 -0
  25. data/lib/redis/commands/server.rb +188 -0
  26. data/lib/redis/commands/sets.rb +207 -0
  27. data/lib/redis/commands/sorted_sets.rb +812 -0
  28. data/lib/redis/commands/streams.rb +382 -0
  29. data/lib/redis/commands/strings.rb +313 -0
  30. data/lib/redis/commands/transactions.rb +139 -0
  31. data/lib/redis/commands.rb +242 -0
  32. data/lib/redis/connection/command_helper.rb +7 -10
  33. data/lib/redis/connection/hiredis.rb +5 -5
  34. data/lib/redis/connection/registry.rb +2 -1
  35. data/lib/redis/connection/ruby.rb +130 -128
  36. data/lib/redis/connection/synchrony.rb +24 -9
  37. data/lib/redis/connection.rb +3 -1
  38. data/lib/redis/distributed.rb +231 -72
  39. data/lib/redis/errors.rb +57 -0
  40. data/lib/redis/hash_ring.rb +30 -73
  41. data/lib/redis/pipeline.rb +178 -13
  42. data/lib/redis/subscribe.rb +11 -12
  43. data/lib/redis/version.rb +3 -1
  44. data/lib/redis.rb +173 -2661
  45. metadata +66 -202
  46. data/.gitignore +0 -16
  47. data/.travis/Gemfile +0 -11
  48. data/.travis.yml +0 -89
  49. data/.yardopts +0 -3
  50. data/Gemfile +0 -4
  51. data/Rakefile +0 -87
  52. data/benchmarking/logging.rb +0 -71
  53. data/benchmarking/pipeline.rb +0 -51
  54. data/benchmarking/speed.rb +0 -21
  55. data/benchmarking/suite.rb +0 -24
  56. data/benchmarking/worker.rb +0 -71
  57. data/examples/basic.rb +0 -15
  58. data/examples/consistency.rb +0 -114
  59. data/examples/dist_redis.rb +0 -43
  60. data/examples/incr-decr.rb +0 -17
  61. data/examples/list.rb +0 -26
  62. data/examples/pubsub.rb +0 -37
  63. data/examples/sentinel/sentinel.conf +0 -9
  64. data/examples/sentinel/start +0 -49
  65. data/examples/sentinel.rb +0 -41
  66. data/examples/sets.rb +0 -36
  67. data/examples/unicorn/config.ru +0 -3
  68. data/examples/unicorn/unicorn.rb +0 -20
  69. data/redis.gemspec +0 -44
  70. data/test/bitpos_test.rb +0 -69
  71. data/test/blocking_commands_test.rb +0 -42
  72. data/test/client_test.rb +0 -59
  73. data/test/command_map_test.rb +0 -30
  74. data/test/commands_on_hashes_test.rb +0 -21
  75. data/test/commands_on_hyper_log_log_test.rb +0 -21
  76. data/test/commands_on_lists_test.rb +0 -20
  77. data/test/commands_on_sets_test.rb +0 -77
  78. data/test/commands_on_sorted_sets_test.rb +0 -137
  79. data/test/commands_on_strings_test.rb +0 -101
  80. data/test/commands_on_value_types_test.rb +0 -133
  81. data/test/connection_handling_test.rb +0 -277
  82. data/test/connection_test.rb +0 -57
  83. data/test/db/.gitkeep +0 -0
  84. data/test/distributed_blocking_commands_test.rb +0 -46
  85. data/test/distributed_commands_on_hashes_test.rb +0 -10
  86. data/test/distributed_commands_on_hyper_log_log_test.rb +0 -33
  87. data/test/distributed_commands_on_lists_test.rb +0 -22
  88. data/test/distributed_commands_on_sets_test.rb +0 -83
  89. data/test/distributed_commands_on_sorted_sets_test.rb +0 -18
  90. data/test/distributed_commands_on_strings_test.rb +0 -59
  91. data/test/distributed_commands_on_value_types_test.rb +0 -95
  92. data/test/distributed_commands_requiring_clustering_test.rb +0 -164
  93. data/test/distributed_connection_handling_test.rb +0 -23
  94. data/test/distributed_internals_test.rb +0 -79
  95. data/test/distributed_key_tags_test.rb +0 -52
  96. data/test/distributed_persistence_control_commands_test.rb +0 -26
  97. data/test/distributed_publish_subscribe_test.rb +0 -92
  98. data/test/distributed_remote_server_control_commands_test.rb +0 -66
  99. data/test/distributed_scripting_test.rb +0 -102
  100. data/test/distributed_sorting_test.rb +0 -20
  101. data/test/distributed_test.rb +0 -58
  102. data/test/distributed_transactions_test.rb +0 -32
  103. data/test/encoding_test.rb +0 -18
  104. data/test/error_replies_test.rb +0 -59
  105. data/test/fork_safety_test.rb +0 -65
  106. data/test/helper.rb +0 -232
  107. data/test/helper_test.rb +0 -24
  108. data/test/internals_test.rb +0 -417
  109. data/test/lint/blocking_commands.rb +0 -150
  110. data/test/lint/hashes.rb +0 -162
  111. data/test/lint/hyper_log_log.rb +0 -60
  112. data/test/lint/lists.rb +0 -143
  113. data/test/lint/sets.rb +0 -140
  114. data/test/lint/sorted_sets.rb +0 -316
  115. data/test/lint/strings.rb +0 -260
  116. data/test/lint/value_types.rb +0 -122
  117. data/test/persistence_control_commands_test.rb +0 -26
  118. data/test/pipelining_commands_test.rb +0 -242
  119. data/test/publish_subscribe_test.rb +0 -282
  120. data/test/remote_server_control_commands_test.rb +0 -118
  121. data/test/scanning_test.rb +0 -413
  122. data/test/scripting_test.rb +0 -78
  123. data/test/sentinel_command_test.rb +0 -80
  124. data/test/sentinel_test.rb +0 -255
  125. data/test/sorting_test.rb +0 -59
  126. data/test/ssl_test.rb +0 -73
  127. data/test/support/connection/hiredis.rb +0 -1
  128. data/test/support/connection/ruby.rb +0 -1
  129. data/test/support/connection/synchrony.rb +0 -17
  130. data/test/support/redis_mock.rb +0 -130
  131. data/test/support/ssl/gen_certs.sh +0 -31
  132. data/test/support/ssl/trusted-ca.crt +0 -25
  133. data/test/support/ssl/trusted-ca.key +0 -27
  134. data/test/support/ssl/trusted-cert.crt +0 -81
  135. data/test/support/ssl/trusted-cert.key +0 -28
  136. data/test/support/ssl/untrusted-ca.crt +0 -26
  137. data/test/support/ssl/untrusted-ca.key +0 -27
  138. data/test/support/ssl/untrusted-cert.crt +0 -82
  139. data/test/support/ssl/untrusted-cert.key +0 -28
  140. data/test/support/wire/synchrony.rb +0 -24
  141. data/test/support/wire/thread.rb +0 -5
  142. data/test/synchrony_driver.rb +0 -88
  143. data/test/test.conf.erb +0 -9
  144. data/test/thread_safety_test.rb +0 -62
  145. data/test/transactions_test.rb +0 -264
  146. data/test/unknown_commands_test.rb +0 -14
  147. data/test/url_param_test.rb +0 -138
@@ -1,316 +0,0 @@
1
- module Lint
2
-
3
- module SortedSets
4
-
5
- Infinity = 1.0/0.0
6
-
7
- def test_zadd
8
- assert_equal 0, r.zcard("foo")
9
- assert_equal true, r.zadd("foo", 1, "s1")
10
- assert_equal false, r.zadd("foo", 1, "s1")
11
- assert_equal 1, r.zcard("foo")
12
- r.del "foo"
13
-
14
- target_version "3.0.2" do
15
- # XX option
16
- assert_equal 0, r.zcard("foo")
17
- assert_equal false, r.zadd("foo", 1, "s1", :xx => true)
18
- r.zadd("foo", 1, "s1")
19
- assert_equal false, r.zadd("foo", 2, "s1", :xx => true)
20
- assert_equal 2, r.zscore("foo", "s1")
21
- r.del "foo"
22
-
23
- # NX option
24
- assert_equal 0, r.zcard("foo")
25
- assert_equal true, r.zadd("foo", 1, "s1", :nx => true)
26
- assert_equal false, r.zadd("foo", 2, "s1", :nx => true)
27
- assert_equal 1, r.zscore("foo", "s1")
28
- assert_equal 1, r.zcard("foo")
29
- r.del "foo"
30
-
31
- # CH option
32
- assert_equal 0, r.zcard("foo")
33
- assert_equal true, r.zadd("foo", 1, "s1", :ch => true)
34
- assert_equal false, r.zadd("foo", 1, "s1", :ch => true)
35
- assert_equal true, r.zadd("foo", 2, "s1", :ch => true)
36
- assert_equal 1, r.zcard("foo")
37
- r.del "foo"
38
-
39
- # INCR option
40
- assert_equal 1.0, r.zadd("foo", 1, "s1", :incr => true)
41
- assert_equal 11.0, r.zadd("foo", 10, "s1", :incr => true)
42
- assert_equal(-Infinity, r.zadd("bar", "-inf", "s1", :incr => true))
43
- assert_equal(+Infinity, r.zadd("bar", "+inf", "s2", :incr => true))
44
- r.del "foo", "bar"
45
-
46
- # Incompatible options combination
47
- assert_raise(Redis::CommandError) { r.zadd("foo", 1, "s1", :xx => true, :nx => true) }
48
- end
49
- end
50
-
51
- def test_variadic_zadd
52
- target_version "2.3.9" do # 2.4-rc6
53
- # Non-nested array with pairs
54
- assert_equal 0, r.zcard("foo")
55
- assert_equal 2, r.zadd("foo", [1, "s1", 2, "s2"])
56
- assert_equal 1, r.zadd("foo", [4, "s1", 5, "s2", 6, "s3"])
57
- assert_equal 3, r.zcard("foo")
58
- r.del "foo"
59
-
60
- # Nested array with pairs
61
- assert_equal 0, r.zcard("foo")
62
- assert_equal 2, r.zadd("foo", [[1, "s1"], [2, "s2"]])
63
- assert_equal 1, r.zadd("foo", [[4, "s1"], [5, "s2"], [6, "s3"]])
64
- assert_equal 3, r.zcard("foo")
65
- r.del "foo"
66
-
67
- # Wrong number of arguments
68
- assert_raise(Redis::CommandError) { r.zadd("foo", ["bar"]) }
69
- assert_raise(Redis::CommandError) { r.zadd("foo", ["bar", "qux", "zap"]) }
70
- end
71
-
72
- target_version "3.0.2" do
73
- # XX option
74
- assert_equal 0, r.zcard("foo")
75
- assert_equal 0, r.zadd("foo", [1, "s1", 2, "s2"], :xx => true)
76
- r.zadd("foo", [1, "s1", 2, "s2"])
77
- assert_equal 0, r.zadd("foo", [2, "s1", 3, "s2", 4, "s3"], :xx => true)
78
- assert_equal 2, r.zscore("foo", "s1")
79
- assert_equal 3, r.zscore("foo", "s2")
80
- assert_equal nil, r.zscore("foo", "s3")
81
- assert_equal 2, r.zcard("foo")
82
- r.del "foo"
83
-
84
- # NX option
85
- assert_equal 0, r.zcard("foo")
86
- assert_equal 2, r.zadd("foo", [1, "s1", 2, "s2"], :nx => true)
87
- assert_equal 1, r.zadd("foo", [2, "s1", 3, "s2", 4, "s3"], :nx => true)
88
- assert_equal 1, r.zscore("foo", "s1")
89
- assert_equal 2, r.zscore("foo", "s2")
90
- assert_equal 4, r.zscore("foo", "s3")
91
- assert_equal 3, r.zcard("foo")
92
- r.del "foo"
93
-
94
- # CH option
95
- assert_equal 0, r.zcard("foo")
96
- assert_equal 2, r.zadd("foo", [1, "s1", 2, "s2"], :ch => true)
97
- assert_equal 2, r.zadd("foo", [1, "s1", 3, "s2", 4, "s3"], :ch => true)
98
- assert_equal 3, r.zcard("foo")
99
- r.del "foo"
100
-
101
- # INCR option
102
- assert_equal 1.0, r.zadd("foo", [1, "s1"], :incr => true)
103
- assert_equal 11.0, r.zadd("foo", [10, "s1"], :incr => true)
104
- assert_equal(-Infinity, r.zadd("bar", ["-inf", "s1"], :incr => true))
105
- assert_equal(+Infinity, r.zadd("bar", ["+inf", "s2"], :incr => true))
106
- assert_raise(Redis::CommandError) { r.zadd("foo", [1, "s1", 2, "s2"], :incr => true) }
107
- r.del "foo", "bar"
108
-
109
- # Incompatible options combination
110
- assert_raise(Redis::CommandError) { r.zadd("foo", [1, "s1"], :xx => true, :nx => true) }
111
- end
112
- end
113
-
114
- def test_zrem
115
- r.zadd("foo", 1, "s1")
116
- r.zadd("foo", 2, "s2")
117
-
118
- assert_equal 2, r.zcard("foo")
119
- assert_equal true, r.zrem("foo", "s1")
120
- assert_equal false, r.zrem("foo", "s1")
121
- assert_equal 1, r.zcard("foo")
122
- end
123
-
124
- def test_variadic_zrem
125
- target_version "2.3.9" do # 2.4-rc6
126
- r.zadd("foo", 1, "s1")
127
- r.zadd("foo", 2, "s2")
128
- r.zadd("foo", 3, "s3")
129
-
130
- assert_equal 3, r.zcard("foo")
131
- assert_equal 1, r.zrem("foo", ["s1", "aaa"])
132
- assert_equal 0, r.zrem("foo", ["bbb", "ccc" "ddd"])
133
- assert_equal 1, r.zrem("foo", ["eee", "s3"])
134
- assert_equal 1, r.zcard("foo")
135
- end
136
- end
137
-
138
- def test_zincrby
139
- rv = r.zincrby "foo", 1, "s1"
140
- assert_equal 1.0, rv
141
-
142
- rv = r.zincrby "foo", 10, "s1"
143
- assert_equal 11.0, rv
144
-
145
- rv = r.zincrby "bar", "-inf", "s1"
146
- assert_equal(-Infinity, rv)
147
-
148
- rv = r.zincrby "bar", "+inf", "s2"
149
- assert_equal(+Infinity, rv)
150
- end
151
-
152
- def test_zrank
153
- r.zadd "foo", 1, "s1"
154
- r.zadd "foo", 2, "s2"
155
- r.zadd "foo", 3, "s3"
156
-
157
- assert_equal 2, r.zrank("foo", "s3")
158
- end
159
-
160
- def test_zrevrank
161
- r.zadd "foo", 1, "s1"
162
- r.zadd "foo", 2, "s2"
163
- r.zadd "foo", 3, "s3"
164
-
165
- assert_equal 0, r.zrevrank("foo", "s3")
166
- end
167
-
168
- def test_zrange
169
- r.zadd "foo", 1, "s1"
170
- r.zadd "foo", 2, "s2"
171
- r.zadd "foo", 3, "s3"
172
-
173
- assert_equal ["s1", "s2"], r.zrange("foo", 0, 1)
174
- assert_equal [["s1", 1.0], ["s2", 2.0]], r.zrange("foo", 0, 1, :with_scores => true)
175
- assert_equal [["s1", 1.0], ["s2", 2.0]], r.zrange("foo", 0, 1, :withscores => true)
176
-
177
- r.zadd "bar", "-inf", "s1"
178
- r.zadd "bar", "+inf", "s2"
179
- assert_equal [["s1", -Infinity], ["s2", +Infinity]], r.zrange("bar", 0, 1, :with_scores => true)
180
- assert_equal [["s1", -Infinity], ["s2", +Infinity]], r.zrange("bar", 0, 1, :withscores => true)
181
- end
182
-
183
- def test_zrevrange
184
- r.zadd "foo", 1, "s1"
185
- r.zadd "foo", 2, "s2"
186
- r.zadd "foo", 3, "s3"
187
-
188
- assert_equal ["s3", "s2"], r.zrevrange("foo", 0, 1)
189
- assert_equal [["s3", 3.0], ["s2", 2.0]], r.zrevrange("foo", 0, 1, :with_scores => true)
190
- assert_equal [["s3", 3.0], ["s2", 2.0]], r.zrevrange("foo", 0, 1, :withscores => true)
191
-
192
- r.zadd "bar", "-inf", "s1"
193
- r.zadd "bar", "+inf", "s2"
194
- assert_equal [["s2", +Infinity], ["s1", -Infinity]], r.zrevrange("bar", 0, 1, :with_scores => true)
195
- assert_equal [["s2", +Infinity], ["s1", -Infinity]], r.zrevrange("bar", 0, 1, :withscores => true)
196
- end
197
-
198
- def test_zrangebyscore
199
- r.zadd "foo", 1, "s1"
200
- r.zadd "foo", 2, "s2"
201
- r.zadd "foo", 3, "s3"
202
-
203
- assert_equal ["s2", "s3"], r.zrangebyscore("foo", 2, 3)
204
- end
205
-
206
- def test_zrevrangebyscore
207
- r.zadd "foo", 1, "s1"
208
- r.zadd "foo", 2, "s2"
209
- r.zadd "foo", 3, "s3"
210
-
211
- assert_equal ["s3", "s2"], r.zrevrangebyscore("foo", 3, 2)
212
- end
213
-
214
- def test_zrangebyscore_with_limit
215
- r.zadd "foo", 1, "s1"
216
- r.zadd "foo", 2, "s2"
217
- r.zadd "foo", 3, "s3"
218
- r.zadd "foo", 4, "s4"
219
-
220
- assert_equal ["s2"], r.zrangebyscore("foo", 2, 4, :limit => [0, 1])
221
- assert_equal ["s3"], r.zrangebyscore("foo", 2, 4, :limit => [1, 1])
222
- assert_equal ["s3", "s4"], r.zrangebyscore("foo", 2, 4, :limit => [1, 2])
223
- end
224
-
225
- def test_zrevrangebyscore_with_limit
226
- r.zadd "foo", 1, "s1"
227
- r.zadd "foo", 2, "s2"
228
- r.zadd "foo", 3, "s3"
229
- r.zadd "foo", 4, "s4"
230
-
231
- assert_equal ["s4"], r.zrevrangebyscore("foo", 4, 2, :limit => [0, 1])
232
- assert_equal ["s3"], r.zrevrangebyscore("foo", 4, 2, :limit => [1, 1])
233
- assert_equal ["s3", "s2"], r.zrevrangebyscore("foo", 4, 2, :limit => [1, 2])
234
- end
235
-
236
- def test_zrangebyscore_with_withscores
237
- r.zadd "foo", 1, "s1"
238
- r.zadd "foo", 2, "s2"
239
- r.zadd "foo", 3, "s3"
240
- r.zadd "foo", 4, "s4"
241
-
242
- assert_equal [["s2", 2.0]], r.zrangebyscore("foo", 2, 4, :limit => [0, 1], :with_scores => true)
243
- assert_equal [["s3", 3.0]], r.zrangebyscore("foo", 2, 4, :limit => [1, 1], :with_scores => true)
244
- assert_equal [["s2", 2.0]], r.zrangebyscore("foo", 2, 4, :limit => [0, 1], :withscores => true)
245
- assert_equal [["s3", 3.0]], r.zrangebyscore("foo", 2, 4, :limit => [1, 1], :withscores => true)
246
-
247
- r.zadd "bar", "-inf", "s1"
248
- r.zadd "bar", "+inf", "s2"
249
- assert_equal [["s1", -Infinity]], r.zrangebyscore("bar", -Infinity, +Infinity, :limit => [0, 1], :with_scores => true)
250
- assert_equal [["s2", +Infinity]], r.zrangebyscore("bar", -Infinity, +Infinity, :limit => [1, 1], :with_scores => true)
251
- assert_equal [["s1", -Infinity]], r.zrangebyscore("bar", -Infinity, +Infinity, :limit => [0, 1], :withscores => true)
252
- assert_equal [["s2", +Infinity]], r.zrangebyscore("bar", -Infinity, +Infinity, :limit => [1, 1], :withscores => true)
253
- end
254
-
255
- def test_zrevrangebyscore_with_withscores
256
- r.zadd "foo", 1, "s1"
257
- r.zadd "foo", 2, "s2"
258
- r.zadd "foo", 3, "s3"
259
- r.zadd "foo", 4, "s4"
260
-
261
- assert_equal [["s4", 4.0]], r.zrevrangebyscore("foo", 4, 2, :limit => [0, 1], :with_scores => true)
262
- assert_equal [["s3", 3.0]], r.zrevrangebyscore("foo", 4, 2, :limit => [1, 1], :with_scores => true)
263
- assert_equal [["s4", 4.0]], r.zrevrangebyscore("foo", 4, 2, :limit => [0, 1], :withscores => true)
264
- assert_equal [["s3", 3.0]], r.zrevrangebyscore("foo", 4, 2, :limit => [1, 1], :withscores => true)
265
-
266
- r.zadd "bar", "-inf", "s1"
267
- r.zadd "bar", "+inf", "s2"
268
- assert_equal [["s2", +Infinity]], r.zrevrangebyscore("bar", +Infinity, -Infinity, :limit => [0, 1], :with_scores => true)
269
- assert_equal [["s1", -Infinity]], r.zrevrangebyscore("bar", +Infinity, -Infinity, :limit => [1, 1], :with_scores => true)
270
- assert_equal [["s2", +Infinity]], r.zrevrangebyscore("bar", +Infinity, -Infinity, :limit => [0, 1], :withscores => true)
271
- assert_equal [["s1", -Infinity]], r.zrevrangebyscore("bar", +Infinity, -Infinity, :limit => [1, 1], :withscores => true)
272
- end
273
-
274
- def test_zcard
275
- assert_equal 0, r.zcard("foo")
276
-
277
- r.zadd "foo", 1, "s1"
278
-
279
- assert_equal 1, r.zcard("foo")
280
- end
281
-
282
- def test_zscore
283
- r.zadd "foo", 1, "s1"
284
-
285
- assert_equal 1.0, r.zscore("foo", "s1")
286
-
287
- assert_equal nil, r.zscore("foo", "s2")
288
- assert_equal nil, r.zscore("bar", "s1")
289
-
290
- r.zadd "bar", "-inf", "s1"
291
- r.zadd "bar", "+inf", "s2"
292
- assert_equal(-Infinity, r.zscore("bar", "s1"))
293
- assert_equal(+Infinity, r.zscore("bar", "s2"))
294
- end
295
-
296
- def test_zremrangebyrank
297
- r.zadd "foo", 10, "s1"
298
- r.zadd "foo", 20, "s2"
299
- r.zadd "foo", 30, "s3"
300
- r.zadd "foo", 40, "s4"
301
-
302
- assert_equal 3, r.zremrangebyrank("foo", 1, 3)
303
- assert_equal ["s1"], r.zrange("foo", 0, -1)
304
- end
305
-
306
- def test_zremrangebyscore
307
- r.zadd "foo", 1, "s1"
308
- r.zadd "foo", 2, "s2"
309
- r.zadd "foo", 3, "s3"
310
- r.zadd "foo", 4, "s4"
311
-
312
- assert_equal 3, r.zremrangebyscore("foo", 2, 4)
313
- assert_equal ["s1"], r.zrange("foo", 0, -1)
314
- end
315
- end
316
- end
data/test/lint/strings.rb DELETED
@@ -1,260 +0,0 @@
1
- module Lint
2
-
3
- module Strings
4
-
5
- def test_set_and_get
6
- r.set("foo", "s1")
7
-
8
- assert_equal "s1", r.get("foo")
9
- end
10
-
11
- def test_set_and_get_with_brackets
12
- r["foo"] = "s1"
13
-
14
- assert_equal "s1", r["foo"]
15
- end
16
-
17
- def test_set_and_get_with_brackets_and_symbol
18
- r[:foo] = "s1"
19
-
20
- assert_equal "s1", r[:foo]
21
- end
22
-
23
- def test_set_and_get_with_newline_characters
24
- r.set("foo", "1\n")
25
-
26
- assert_equal "1\n", r.get("foo")
27
- end
28
-
29
- def test_set_and_get_with_non_string_value
30
- value = ["a", "b"]
31
-
32
- r.set("foo", value)
33
-
34
- assert_equal value.to_s, r.get("foo")
35
- end
36
-
37
- def test_set_and_get_with_ascii_characters
38
- if defined?(Encoding)
39
- with_external_encoding("ASCII-8BIT") do
40
- (0..255).each do |i|
41
- str = "#{i.chr}---#{i.chr}"
42
- r.set("foo", str)
43
-
44
- assert_equal str, r.get("foo")
45
- end
46
- end
47
- end
48
- end
49
-
50
- def test_set_with_ex
51
- target_version "2.6.12" do
52
- r.set("foo", "bar", :ex => 2)
53
- assert_in_range 0..2, r.ttl("foo")
54
- end
55
- end
56
-
57
- def test_set_with_px
58
- target_version "2.6.12" do
59
- r.set("foo", "bar", :px => 2000)
60
- assert_in_range 0..2, r.ttl("foo")
61
- end
62
- end
63
-
64
- def test_set_with_nx
65
- target_version "2.6.12" do
66
- r.set("foo", "qux", :nx => true)
67
- assert !r.set("foo", "bar", :nx => true)
68
- assert_equal "qux", r.get("foo")
69
-
70
- r.del("foo")
71
- assert r.set("foo", "bar", :nx => true)
72
- assert_equal "bar", r.get("foo")
73
- end
74
- end
75
-
76
- def test_set_with_xx
77
- target_version "2.6.12" do
78
- r.set("foo", "qux")
79
- assert r.set("foo", "bar", :xx => true)
80
- assert_equal "bar", r.get("foo")
81
-
82
- r.del("foo")
83
- assert !r.set("foo", "bar", :xx => true)
84
- end
85
- end
86
-
87
- def test_setex
88
- assert r.setex("foo", 1, "bar")
89
- assert_equal "bar", r.get("foo")
90
- assert [0, 1].include? r.ttl("foo")
91
- end
92
-
93
- def test_setex_with_non_string_value
94
- value = ["b", "a", "r"]
95
-
96
- assert r.setex("foo", 1, value)
97
- assert_equal value.to_s, r.get("foo")
98
- assert [0, 1].include? r.ttl("foo")
99
- end
100
-
101
- def test_psetex
102
- target_version "2.5.4" do
103
- assert r.psetex("foo", 1000, "bar")
104
- assert_equal "bar", r.get("foo")
105
- assert [0, 1].include? r.ttl("foo")
106
- end
107
- end
108
-
109
- def test_psetex_with_non_string_value
110
- target_version "2.5.4" do
111
- value = ["b", "a", "r"]
112
-
113
- assert r.psetex("foo", 1000, value)
114
- assert_equal value.to_s, r.get("foo")
115
- assert [0, 1].include? r.ttl("foo")
116
- end
117
- end
118
-
119
- def test_getset
120
- r.set("foo", "bar")
121
-
122
- assert_equal "bar", r.getset("foo", "baz")
123
- assert_equal "baz", r.get("foo")
124
- end
125
-
126
- def test_getset_with_non_string_value
127
- r.set("foo", "zap")
128
-
129
- value = ["b", "a", "r"]
130
-
131
- assert_equal "zap", r.getset("foo", value)
132
- assert_equal value.to_s, r.get("foo")
133
- end
134
-
135
- def test_setnx
136
- r.set("foo", "qux")
137
- assert !r.setnx("foo", "bar")
138
- assert_equal "qux", r.get("foo")
139
-
140
- r.del("foo")
141
- assert r.setnx("foo", "bar")
142
- assert_equal "bar", r.get("foo")
143
- end
144
-
145
- def test_setnx_with_non_string_value
146
- value = ["b", "a", "r"]
147
-
148
- r.set("foo", "qux")
149
- assert !r.setnx("foo", value)
150
- assert_equal "qux", r.get("foo")
151
-
152
- r.del("foo")
153
- assert r.setnx("foo", value)
154
- assert_equal value.to_s, r.get("foo")
155
- end
156
-
157
- def test_incr
158
- assert_equal 1, r.incr("foo")
159
- assert_equal 2, r.incr("foo")
160
- assert_equal 3, r.incr("foo")
161
- end
162
-
163
- def test_incrby
164
- assert_equal 1, r.incrby("foo", 1)
165
- assert_equal 3, r.incrby("foo", 2)
166
- assert_equal 6, r.incrby("foo", 3)
167
- end
168
-
169
- def test_incrbyfloat
170
- target_version "2.5.4" do
171
- assert_equal 1.23, r.incrbyfloat("foo", 1.23)
172
- assert_equal 2 , r.incrbyfloat("foo", 0.77)
173
- assert_equal 1.9 , r.incrbyfloat("foo", -0.1)
174
- end
175
- end
176
-
177
- def test_decr
178
- r.set("foo", 3)
179
-
180
- assert_equal 2, r.decr("foo")
181
- assert_equal 1, r.decr("foo")
182
- assert_equal 0, r.decr("foo")
183
- end
184
-
185
- def test_decrby
186
- r.set("foo", 6)
187
-
188
- assert_equal 3, r.decrby("foo", 3)
189
- assert_equal 1, r.decrby("foo", 2)
190
- assert_equal 0, r.decrby("foo", 1)
191
- end
192
-
193
- def test_append
194
- r.set "foo", "s"
195
- r.append "foo", "1"
196
-
197
- assert_equal "s1", r.get("foo")
198
- end
199
-
200
- def test_getbit
201
- r.set("foo", "a")
202
-
203
- assert_equal 1, r.getbit("foo", 1)
204
- assert_equal 1, r.getbit("foo", 2)
205
- assert_equal 0, r.getbit("foo", 3)
206
- assert_equal 0, r.getbit("foo", 4)
207
- assert_equal 0, r.getbit("foo", 5)
208
- assert_equal 0, r.getbit("foo", 6)
209
- assert_equal 1, r.getbit("foo", 7)
210
- end
211
-
212
- def test_setbit
213
- r.set("foo", "a")
214
-
215
- r.setbit("foo", 6, 1)
216
-
217
- assert_equal "c", r.get("foo")
218
- end
219
-
220
- def test_bitcount
221
- target_version "2.5.10" do
222
- r.set("foo", "abcde")
223
-
224
- assert_equal 10, r.bitcount("foo", 1, 3)
225
- assert_equal 17, r.bitcount("foo", 0, -1)
226
- end
227
- end
228
-
229
- def test_getrange
230
- r.set("foo", "abcde")
231
-
232
- assert_equal "bcd", r.getrange("foo", 1, 3)
233
- assert_equal "abcde", r.getrange("foo", 0, -1)
234
- end
235
-
236
- def test_setrange
237
- r.set("foo", "abcde")
238
-
239
- r.setrange("foo", 1, "bar")
240
-
241
- assert_equal "abare", r.get("foo")
242
- end
243
-
244
- def test_setrange_with_non_string_value
245
- r.set("foo", "abcde")
246
-
247
- value = ["b", "a", "r"]
248
-
249
- r.setrange("foo", 2, value)
250
-
251
- assert_equal "ab#{value.to_s}", r.get("foo")
252
- end
253
-
254
- def test_strlen
255
- r.set "foo", "lorem"
256
-
257
- assert_equal 5, r.strlen("foo")
258
- end
259
- end
260
- end
@@ -1,122 +0,0 @@
1
- module Lint
2
-
3
- module ValueTypes
4
-
5
- def test_exists
6
- assert_equal false, r.exists("foo")
7
-
8
- r.set("foo", "s1")
9
-
10
- assert_equal true, r.exists("foo")
11
- end
12
-
13
- def test_type
14
- assert_equal "none", r.type("foo")
15
-
16
- r.set("foo", "s1")
17
-
18
- assert_equal "string", r.type("foo")
19
- end
20
-
21
- def test_keys
22
- r.set("f", "s1")
23
- r.set("fo", "s2")
24
- r.set("foo", "s3")
25
-
26
- assert_equal ["f","fo", "foo"], r.keys("f*").sort
27
- end
28
-
29
- def test_expire
30
- r.set("foo", "s1")
31
- assert r.expire("foo", 2)
32
- assert_in_range 0..2, r.ttl("foo")
33
- end
34
-
35
- def test_pexpire
36
- target_version "2.5.4" do
37
- r.set("foo", "s1")
38
- assert r.pexpire("foo", 2000)
39
- assert_in_range 0..2, r.ttl("foo")
40
- end
41
- end
42
-
43
- def test_expireat
44
- r.set("foo", "s1")
45
- assert r.expireat("foo", (Time.now + 2).to_i)
46
- assert_in_range 0..2, r.ttl("foo")
47
- end
48
-
49
- def test_pexpireat
50
- target_version "2.5.4" do
51
- r.set("foo", "s1")
52
- assert r.pexpireat("foo", (Time.now + 2).to_i * 1_000)
53
- assert_in_range 0..2, r.ttl("foo")
54
- end
55
- end
56
-
57
- def test_persist
58
- r.set("foo", "s1")
59
- r.expire("foo", 1)
60
- r.persist("foo")
61
-
62
- assert(-1 == r.ttl("foo"))
63
- end
64
-
65
- def test_ttl
66
- r.set("foo", "s1")
67
- r.expire("foo", 2)
68
- assert_in_range 0..2, r.ttl("foo")
69
- end
70
-
71
- def test_pttl
72
- target_version "2.5.4" do
73
- r.set("foo", "s1")
74
- r.expire("foo", 2)
75
- assert_in_range 1..2000, r.pttl("foo")
76
- end
77
- end
78
-
79
- def test_dump_and_restore
80
- target_version "2.5.7" do
81
- r.set("foo", "a")
82
- v = r.dump("foo")
83
- r.del("foo")
84
-
85
- assert r.restore("foo", 1000, v)
86
- assert_equal "a", r.get("foo")
87
- assert [0, 1].include? r.ttl("foo")
88
-
89
- r.rpush("bar", ["b", "c", "d"])
90
- w = r.dump("bar")
91
- r.del("bar")
92
-
93
- assert r.restore("bar", 1000, w)
94
- assert_equal ["b", "c", "d"], r.lrange("bar", 0, -1)
95
- assert [0, 1].include? r.ttl("bar")
96
- end
97
- end
98
-
99
- def test_move
100
- r.select 14
101
- r.flushdb
102
-
103
- r.set "bar", "s3"
104
-
105
- r.select 15
106
-
107
- r.set "foo", "s1"
108
- r.set "bar", "s2"
109
-
110
- assert r.move("foo", 14)
111
- assert_equal nil, r.get("foo")
112
-
113
- assert !r.move("bar", 14)
114
- assert_equal "s2", r.get("bar")
115
-
116
- r.select 14
117
-
118
- assert_equal "s1", r.get("foo")
119
- assert_equal "s3", r.get("bar")
120
- end
121
- end
122
- end