redis 4.0.0 → 5.0.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 (137) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +252 -1
  3. data/README.md +126 -88
  4. data/lib/redis/client.rb +79 -543
  5. data/lib/redis/commands/bitmaps.rb +66 -0
  6. data/lib/redis/commands/cluster.rb +28 -0
  7. data/lib/redis/commands/connection.rb +53 -0
  8. data/lib/redis/commands/geo.rb +84 -0
  9. data/lib/redis/commands/hashes.rb +254 -0
  10. data/lib/redis/commands/hyper_log_log.rb +37 -0
  11. data/lib/redis/commands/keys.rb +437 -0
  12. data/lib/redis/commands/lists.rb +285 -0
  13. data/lib/redis/commands/pubsub.rb +54 -0
  14. data/lib/redis/commands/scripting.rb +114 -0
  15. data/lib/redis/commands/server.rb +188 -0
  16. data/lib/redis/commands/sets.rb +214 -0
  17. data/lib/redis/commands/sorted_sets.rb +818 -0
  18. data/lib/redis/commands/streams.rb +384 -0
  19. data/lib/redis/commands/strings.rb +314 -0
  20. data/lib/redis/commands/transactions.rb +115 -0
  21. data/lib/redis/commands.rb +235 -0
  22. data/lib/redis/distributed.rb +301 -109
  23. data/lib/redis/errors.rb +19 -1
  24. data/lib/redis/hash_ring.rb +34 -33
  25. data/lib/redis/pipeline.rb +69 -77
  26. data/lib/redis/subscribe.rb +26 -19
  27. data/lib/redis/version.rb +3 -1
  28. data/lib/redis.rb +109 -2728
  29. metadata +37 -229
  30. data/.gitignore +0 -16
  31. data/.travis/Gemfile +0 -13
  32. data/.travis.yml +0 -73
  33. data/.yardopts +0 -3
  34. data/Gemfile +0 -3
  35. data/benchmarking/logging.rb +0 -71
  36. data/benchmarking/pipeline.rb +0 -51
  37. data/benchmarking/speed.rb +0 -21
  38. data/benchmarking/suite.rb +0 -24
  39. data/benchmarking/worker.rb +0 -71
  40. data/bors.toml +0 -14
  41. data/examples/basic.rb +0 -15
  42. data/examples/consistency.rb +0 -114
  43. data/examples/dist_redis.rb +0 -43
  44. data/examples/incr-decr.rb +0 -17
  45. data/examples/list.rb +0 -26
  46. data/examples/pubsub.rb +0 -37
  47. data/examples/sentinel/sentinel.conf +0 -9
  48. data/examples/sentinel/start +0 -49
  49. data/examples/sentinel.rb +0 -41
  50. data/examples/sets.rb +0 -36
  51. data/examples/unicorn/config.ru +0 -3
  52. data/examples/unicorn/unicorn.rb +0 -20
  53. data/lib/redis/connection/command_helper.rb +0 -38
  54. data/lib/redis/connection/hiredis.rb +0 -66
  55. data/lib/redis/connection/registry.rb +0 -12
  56. data/lib/redis/connection/ruby.rb +0 -409
  57. data/lib/redis/connection/synchrony.rb +0 -141
  58. data/lib/redis/connection.rb +0 -9
  59. data/makefile +0 -42
  60. data/redis.gemspec +0 -42
  61. data/test/bitpos_test.rb +0 -63
  62. data/test/blocking_commands_test.rb +0 -40
  63. data/test/client_test.rb +0 -59
  64. data/test/command_map_test.rb +0 -28
  65. data/test/commands_on_hashes_test.rb +0 -19
  66. data/test/commands_on_hyper_log_log_test.rb +0 -19
  67. data/test/commands_on_lists_test.rb +0 -18
  68. data/test/commands_on_sets_test.rb +0 -75
  69. data/test/commands_on_sorted_sets_test.rb +0 -150
  70. data/test/commands_on_strings_test.rb +0 -99
  71. data/test/commands_on_value_types_test.rb +0 -131
  72. data/test/connection_handling_test.rb +0 -275
  73. data/test/db/.gitkeep +0 -0
  74. data/test/distributed_blocking_commands_test.rb +0 -44
  75. data/test/distributed_commands_on_hashes_test.rb +0 -8
  76. data/test/distributed_commands_on_hyper_log_log_test.rb +0 -31
  77. data/test/distributed_commands_on_lists_test.rb +0 -20
  78. data/test/distributed_commands_on_sets_test.rb +0 -81
  79. data/test/distributed_commands_on_sorted_sets_test.rb +0 -16
  80. data/test/distributed_commands_on_strings_test.rb +0 -57
  81. data/test/distributed_commands_on_value_types_test.rb +0 -93
  82. data/test/distributed_commands_requiring_clustering_test.rb +0 -162
  83. data/test/distributed_connection_handling_test.rb +0 -21
  84. data/test/distributed_internals_test.rb +0 -68
  85. data/test/distributed_key_tags_test.rb +0 -50
  86. data/test/distributed_persistence_control_commands_test.rb +0 -24
  87. data/test/distributed_publish_subscribe_test.rb +0 -90
  88. data/test/distributed_remote_server_control_commands_test.rb +0 -64
  89. data/test/distributed_scripting_test.rb +0 -100
  90. data/test/distributed_sorting_test.rb +0 -18
  91. data/test/distributed_test.rb +0 -56
  92. data/test/distributed_transactions_test.rb +0 -30
  93. data/test/encoding_test.rb +0 -14
  94. data/test/error_replies_test.rb +0 -57
  95. data/test/fork_safety_test.rb +0 -60
  96. data/test/helper.rb +0 -201
  97. data/test/helper_test.rb +0 -22
  98. data/test/internals_test.rb +0 -429
  99. data/test/lint/blocking_commands.rb +0 -150
  100. data/test/lint/hashes.rb +0 -162
  101. data/test/lint/hyper_log_log.rb +0 -60
  102. data/test/lint/lists.rb +0 -143
  103. data/test/lint/sets.rb +0 -140
  104. data/test/lint/sorted_sets.rb +0 -316
  105. data/test/lint/strings.rb +0 -246
  106. data/test/lint/value_types.rb +0 -130
  107. data/test/persistence_control_commands_test.rb +0 -24
  108. data/test/pipelining_commands_test.rb +0 -238
  109. data/test/publish_subscribe_test.rb +0 -280
  110. data/test/remote_server_control_commands_test.rb +0 -175
  111. data/test/scanning_test.rb +0 -407
  112. data/test/scripting_test.rb +0 -76
  113. data/test/sentinel_command_test.rb +0 -78
  114. data/test/sentinel_test.rb +0 -253
  115. data/test/sorting_test.rb +0 -57
  116. data/test/ssl_test.rb +0 -69
  117. data/test/support/connection/hiredis.rb +0 -1
  118. data/test/support/connection/ruby.rb +0 -1
  119. data/test/support/connection/synchrony.rb +0 -17
  120. data/test/support/redis_mock.rb +0 -130
  121. data/test/support/ssl/gen_certs.sh +0 -31
  122. data/test/support/ssl/trusted-ca.crt +0 -25
  123. data/test/support/ssl/trusted-ca.key +0 -27
  124. data/test/support/ssl/trusted-cert.crt +0 -81
  125. data/test/support/ssl/trusted-cert.key +0 -28
  126. data/test/support/ssl/untrusted-ca.crt +0 -26
  127. data/test/support/ssl/untrusted-ca.key +0 -27
  128. data/test/support/ssl/untrusted-cert.crt +0 -82
  129. data/test/support/ssl/untrusted-cert.key +0 -28
  130. data/test/support/wire/synchrony.rb +0 -24
  131. data/test/support/wire/thread.rb +0 -5
  132. data/test/synchrony_driver.rb +0 -85
  133. data/test/test.conf.erb +0 -9
  134. data/test/thread_safety_test.rb +0 -60
  135. data/test/transactions_test.rb +0 -262
  136. data/test/unknown_commands_test.rb +0 -12
  137. data/test/url_param_test.rb +0 -136
@@ -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,246 +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_newline_characters
12
- r.set("foo", "1\n")
13
-
14
- assert_equal "1\n", r.get("foo")
15
- end
16
-
17
- def test_set_and_get_with_non_string_value
18
- value = ["a", "b"]
19
-
20
- r.set("foo", value)
21
-
22
- assert_equal value.to_s, r.get("foo")
23
- end
24
-
25
- def test_set_and_get_with_ascii_characters
26
- with_external_encoding("ASCII-8BIT") do
27
- (0..255).each do |i|
28
- str = "#{i.chr}---#{i.chr}"
29
- r.set("foo", str)
30
-
31
- assert_equal str, r.get("foo")
32
- end
33
- end
34
- end
35
-
36
- def test_set_with_ex
37
- target_version "2.6.12" do
38
- r.set("foo", "bar", :ex => 2)
39
- assert_in_range 0..2, r.ttl("foo")
40
- end
41
- end
42
-
43
- def test_set_with_px
44
- target_version "2.6.12" do
45
- r.set("foo", "bar", :px => 2000)
46
- assert_in_range 0..2, r.ttl("foo")
47
- end
48
- end
49
-
50
- def test_set_with_nx
51
- target_version "2.6.12" do
52
- r.set("foo", "qux", :nx => true)
53
- assert !r.set("foo", "bar", :nx => true)
54
- assert_equal "qux", r.get("foo")
55
-
56
- r.del("foo")
57
- assert r.set("foo", "bar", :nx => true)
58
- assert_equal "bar", r.get("foo")
59
- end
60
- end
61
-
62
- def test_set_with_xx
63
- target_version "2.6.12" do
64
- r.set("foo", "qux")
65
- assert r.set("foo", "bar", :xx => true)
66
- assert_equal "bar", r.get("foo")
67
-
68
- r.del("foo")
69
- assert !r.set("foo", "bar", :xx => true)
70
- end
71
- end
72
-
73
- def test_setex
74
- assert r.setex("foo", 1, "bar")
75
- assert_equal "bar", r.get("foo")
76
- assert [0, 1].include? r.ttl("foo")
77
- end
78
-
79
- def test_setex_with_non_string_value
80
- value = ["b", "a", "r"]
81
-
82
- assert r.setex("foo", 1, value)
83
- assert_equal value.to_s, r.get("foo")
84
- assert [0, 1].include? r.ttl("foo")
85
- end
86
-
87
- def test_psetex
88
- target_version "2.5.4" do
89
- assert r.psetex("foo", 1000, "bar")
90
- assert_equal "bar", r.get("foo")
91
- assert [0, 1].include? r.ttl("foo")
92
- end
93
- end
94
-
95
- def test_psetex_with_non_string_value
96
- target_version "2.5.4" do
97
- value = ["b", "a", "r"]
98
-
99
- assert r.psetex("foo", 1000, value)
100
- assert_equal value.to_s, r.get("foo")
101
- assert [0, 1].include? r.ttl("foo")
102
- end
103
- end
104
-
105
- def test_getset
106
- r.set("foo", "bar")
107
-
108
- assert_equal "bar", r.getset("foo", "baz")
109
- assert_equal "baz", r.get("foo")
110
- end
111
-
112
- def test_getset_with_non_string_value
113
- r.set("foo", "zap")
114
-
115
- value = ["b", "a", "r"]
116
-
117
- assert_equal "zap", r.getset("foo", value)
118
- assert_equal value.to_s, r.get("foo")
119
- end
120
-
121
- def test_setnx
122
- r.set("foo", "qux")
123
- assert !r.setnx("foo", "bar")
124
- assert_equal "qux", r.get("foo")
125
-
126
- r.del("foo")
127
- assert r.setnx("foo", "bar")
128
- assert_equal "bar", r.get("foo")
129
- end
130
-
131
- def test_setnx_with_non_string_value
132
- value = ["b", "a", "r"]
133
-
134
- r.set("foo", "qux")
135
- assert !r.setnx("foo", value)
136
- assert_equal "qux", r.get("foo")
137
-
138
- r.del("foo")
139
- assert r.setnx("foo", value)
140
- assert_equal value.to_s, r.get("foo")
141
- end
142
-
143
- def test_incr
144
- assert_equal 1, r.incr("foo")
145
- assert_equal 2, r.incr("foo")
146
- assert_equal 3, r.incr("foo")
147
- end
148
-
149
- def test_incrby
150
- assert_equal 1, r.incrby("foo", 1)
151
- assert_equal 3, r.incrby("foo", 2)
152
- assert_equal 6, r.incrby("foo", 3)
153
- end
154
-
155
- def test_incrbyfloat
156
- target_version "2.5.4" do
157
- assert_equal 1.23, r.incrbyfloat("foo", 1.23)
158
- assert_equal 2 , r.incrbyfloat("foo", 0.77)
159
- assert_equal 1.9 , r.incrbyfloat("foo", -0.1)
160
- end
161
- end
162
-
163
- def test_decr
164
- r.set("foo", 3)
165
-
166
- assert_equal 2, r.decr("foo")
167
- assert_equal 1, r.decr("foo")
168
- assert_equal 0, r.decr("foo")
169
- end
170
-
171
- def test_decrby
172
- r.set("foo", 6)
173
-
174
- assert_equal 3, r.decrby("foo", 3)
175
- assert_equal 1, r.decrby("foo", 2)
176
- assert_equal 0, r.decrby("foo", 1)
177
- end
178
-
179
- def test_append
180
- r.set "foo", "s"
181
- r.append "foo", "1"
182
-
183
- assert_equal "s1", r.get("foo")
184
- end
185
-
186
- def test_getbit
187
- r.set("foo", "a")
188
-
189
- assert_equal 1, r.getbit("foo", 1)
190
- assert_equal 1, r.getbit("foo", 2)
191
- assert_equal 0, r.getbit("foo", 3)
192
- assert_equal 0, r.getbit("foo", 4)
193
- assert_equal 0, r.getbit("foo", 5)
194
- assert_equal 0, r.getbit("foo", 6)
195
- assert_equal 1, r.getbit("foo", 7)
196
- end
197
-
198
- def test_setbit
199
- r.set("foo", "a")
200
-
201
- r.setbit("foo", 6, 1)
202
-
203
- assert_equal "c", r.get("foo")
204
- end
205
-
206
- def test_bitcount
207
- target_version "2.5.10" do
208
- r.set("foo", "abcde")
209
-
210
- assert_equal 10, r.bitcount("foo", 1, 3)
211
- assert_equal 17, r.bitcount("foo", 0, -1)
212
- end
213
- end
214
-
215
- def test_getrange
216
- r.set("foo", "abcde")
217
-
218
- assert_equal "bcd", r.getrange("foo", 1, 3)
219
- assert_equal "abcde", r.getrange("foo", 0, -1)
220
- end
221
-
222
- def test_setrange
223
- r.set("foo", "abcde")
224
-
225
- r.setrange("foo", 1, "bar")
226
-
227
- assert_equal "abare", r.get("foo")
228
- end
229
-
230
- def test_setrange_with_non_string_value
231
- r.set("foo", "abcde")
232
-
233
- value = ["b", "a", "r"]
234
-
235
- r.setrange("foo", 2, value)
236
-
237
- assert_equal "ab#{value.to_s}", r.get("foo")
238
- end
239
-
240
- def test_strlen
241
- r.set "foo", "lorem"
242
-
243
- assert_equal 5, r.strlen("foo")
244
- end
245
- end
246
- end
@@ -1,130 +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
-
97
- r.set("bar", "somethingelse")
98
- assert_raises(Redis::CommandError) { r.restore("bar", 1000, w) } # ensure by default replace is false
99
- assert_raises(Redis::CommandError) { r.restore("bar", 1000, w, :replace => false) }
100
- assert_equal "somethingelse", r.get("bar")
101
- assert r.restore("bar", 1000, w, :replace => true)
102
- assert_equal ["b", "c", "d"], r.lrange("bar", 0, -1)
103
- assert [0, 1].include? r.ttl("bar")
104
- end
105
- end
106
-
107
- def test_move
108
- r.select 14
109
- r.flushdb
110
-
111
- r.set "bar", "s3"
112
-
113
- r.select 15
114
-
115
- r.set "foo", "s1"
116
- r.set "bar", "s2"
117
-
118
- assert r.move("foo", 14)
119
- assert_equal nil, r.get("foo")
120
-
121
- assert !r.move("bar", 14)
122
- assert_equal "s2", r.get("bar")
123
-
124
- r.select 14
125
-
126
- assert_equal "s1", r.get("foo")
127
- assert_equal "s3", r.get("bar")
128
- end
129
- end
130
- end