redis 3.3.5 → 4.8.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (147) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +236 -2
  3. data/README.md +169 -89
  4. data/lib/redis/client.rb +176 -108
  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 +455 -0
  22. data/lib/redis/commands/lists.rb +290 -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 +223 -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 +240 -0
  32. data/lib/redis/connection/command_helper.rb +7 -10
  33. data/lib/redis/connection/hiredis.rb +5 -3
  34. data/lib/redis/connection/registry.rb +2 -1
  35. data/lib/redis/connection/ruby.rb +136 -128
  36. data/lib/redis/connection/synchrony.rb +24 -9
  37. data/lib/redis/connection.rb +3 -1
  38. data/lib/redis/distributed.rb +255 -85
  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 +174 -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,277 +0,0 @@
1
- # encoding: UTF-8
2
-
3
- require File.expand_path("helper", File.dirname(__FILE__))
4
-
5
- class TestConnectionHandling < Test::Unit::TestCase
6
-
7
- include Helper::Client
8
-
9
- def test_auth
10
- commands = {
11
- :auth => lambda { |password| $auth = password; "+OK" },
12
- :get => lambda { |key| $auth == "secret" ? "$3\r\nbar" : "$-1" },
13
- }
14
-
15
- redis_mock(commands, :password => "secret") do |redis|
16
- assert_equal "bar", redis.get("foo")
17
- end
18
- end
19
-
20
- def test_id
21
- commands = {
22
- :client => lambda { |cmd, name| $name = [cmd, name]; "+OK" },
23
- :ping => lambda { "+PONG" },
24
- }
25
-
26
- redis_mock(commands, :id => "client-name") do |redis|
27
- assert_equal "PONG", redis.ping
28
- end
29
-
30
- assert_equal ["setname","client-name"], $name
31
- end
32
-
33
- def test_ping
34
- assert_equal "PONG", r.ping
35
- end
36
-
37
- def test_select
38
- r.set "foo", "bar"
39
-
40
- r.select 14
41
- assert_equal nil, r.get("foo")
42
-
43
- r.client.disconnect
44
-
45
- assert_equal nil, r.get("foo")
46
- end
47
-
48
- def test_quit
49
- r.quit
50
-
51
- assert !r.client.connected?
52
- end
53
-
54
- def test_close
55
- quit = 0
56
-
57
- commands = {
58
- :quit => lambda do
59
- quit += 1
60
- "+OK"
61
- end
62
- }
63
-
64
- redis_mock(commands) do |redis|
65
- assert_equal 0, quit
66
-
67
- redis.quit
68
-
69
- assert_equal 1, quit
70
-
71
- redis.ping
72
-
73
- redis.close
74
-
75
- assert_equal 1, quit
76
-
77
- assert !redis.connected?
78
- end
79
- end
80
-
81
- def test_disconnect
82
- quit = 0
83
-
84
- commands = {
85
- :quit => lambda do
86
- quit += 1
87
- "+OK"
88
- end
89
- }
90
-
91
- redis_mock(commands) do |redis|
92
- assert_equal 0, quit
93
-
94
- redis.quit
95
-
96
- assert_equal 1, quit
97
-
98
- redis.ping
99
-
100
- redis.disconnect!
101
-
102
- assert_equal 1, quit
103
-
104
- assert !redis.connected?
105
- end
106
- end
107
-
108
- def test_shutdown
109
- commands = {
110
- :shutdown => lambda { :exit }
111
- }
112
-
113
- redis_mock(commands) do |redis|
114
- # SHUTDOWN does not reply: test that it does not raise here.
115
- assert_equal nil, redis.shutdown
116
- end
117
- end
118
-
119
- def test_shutdown_with_error
120
- connections = 0
121
- commands = {
122
- :select => lambda { |*_| connections += 1; "+OK\r\n" },
123
- :connections => lambda { ":#{connections}\r\n" },
124
- :shutdown => lambda { "-ERR could not shutdown\r\n" }
125
- }
126
-
127
- redis_mock(commands) do |redis|
128
- connections = redis.connections
129
-
130
- # SHUTDOWN replies with an error: test that it gets raised
131
- assert_raise Redis::CommandError do
132
- redis.shutdown
133
- end
134
-
135
- # The connection should remain in tact
136
- assert_equal connections, redis.connections
137
- end
138
- end
139
-
140
- def test_shutdown_from_pipeline
141
- commands = {
142
- :shutdown => lambda { :exit }
143
- }
144
-
145
- redis_mock(commands) do |redis|
146
- result = redis.pipelined do
147
- redis.shutdown
148
- end
149
-
150
- assert_equal nil, result
151
- assert !redis.client.connected?
152
- end
153
- end
154
-
155
- def test_shutdown_with_error_from_pipeline
156
- connections = 0
157
- commands = {
158
- :select => lambda { |*_| connections += 1; "+OK\r\n" },
159
- :connections => lambda { ":#{connections}\r\n" },
160
- :shutdown => lambda { "-ERR could not shutdown\r\n" }
161
- }
162
-
163
- redis_mock(commands) do |redis|
164
- connections = redis.connections
165
-
166
- # SHUTDOWN replies with an error: test that it gets raised
167
- assert_raise Redis::CommandError do
168
- redis.pipelined do
169
- redis.shutdown
170
- end
171
- end
172
-
173
- # The connection should remain in tact
174
- assert_equal connections, redis.connections
175
- end
176
- end
177
-
178
- def test_shutdown_from_multi_exec
179
- commands = {
180
- :multi => lambda { "+OK\r\n" },
181
- :shutdown => lambda { "+QUEUED\r\n" },
182
- :exec => lambda { :exit }
183
- }
184
-
185
- redis_mock(commands) do |redis|
186
- result = redis.multi do
187
- redis.shutdown
188
- end
189
-
190
- assert_equal nil, result
191
- assert !redis.client.connected?
192
- end
193
- end
194
-
195
- def test_shutdown_with_error_from_multi_exec
196
- connections = 0
197
- commands = {
198
- :select => lambda { |*_| connections += 1; "+OK\r\n" },
199
- :connections => lambda { ":#{connections}\r\n" },
200
- :multi => lambda { "+OK\r\n" },
201
- :shutdown => lambda { "+QUEUED\r\n" },
202
- :exec => lambda { "*1\r\n-ERR could not shutdown\r\n" }
203
- }
204
-
205
- redis_mock(commands) do |redis|
206
- connections = redis.connections
207
-
208
- # SHUTDOWN replies with an error: test that it gets returned
209
- # We should test for Redis::CommandError here, but hiredis doesn't yet do
210
- # custom error classes.
211
- err = nil
212
-
213
- begin
214
- redis.multi { redis.shutdown }
215
- rescue => err
216
- end
217
-
218
- assert err.kind_of?(StandardError)
219
-
220
- # The connection should remain intact
221
- assert_equal connections, redis.connections
222
- end
223
- end
224
-
225
- def test_slaveof
226
- redis_mock(:slaveof => lambda { |host, port| "+SLAVEOF #{host} #{port}" }) do |redis|
227
- assert_equal "SLAVEOF somehost 6381", redis.slaveof("somehost", 6381)
228
- end
229
- end
230
-
231
- def test_bgrewriteaof
232
- redis_mock(:bgrewriteaof => lambda { "+BGREWRITEAOF" }) do |redis|
233
- assert_equal "BGREWRITEAOF", redis.bgrewriteaof
234
- end
235
- end
236
-
237
- def test_config_get
238
- assert r.config(:get, "*")["timeout"] != nil
239
-
240
- config = r.config(:get, "timeout")
241
- assert_equal ["timeout"], config.keys
242
- assert config.values.compact.size > 0
243
- end
244
-
245
- def test_config_set
246
- begin
247
- assert_equal "OK", r.config(:set, "timeout", 200)
248
- assert_equal "200", r.config(:get, "*")["timeout"]
249
-
250
- assert_equal "OK", r.config(:set, "timeout", 100)
251
- assert_equal "100", r.config(:get, "*")["timeout"]
252
- ensure
253
- r.config :set, "timeout", 300
254
- end
255
- end
256
-
257
- driver(:ruby, :hiredis) do
258
- def test_consistency_on_multithreaded_env
259
- t = nil
260
-
261
- commands = {
262
- :set => lambda { |key, value| t.kill; "+OK\r\n" },
263
- :incr => lambda { |key| ":1\r\n" },
264
- }
265
-
266
- redis_mock(commands) do |redis|
267
- t = Thread.new do
268
- redis.set("foo", "bar")
269
- end
270
-
271
- t.join
272
-
273
- assert_equal 1, redis.incr("baz")
274
- end
275
- end
276
- end
277
- end
@@ -1,57 +0,0 @@
1
- require_relative "helper"
2
-
3
- class TestConnection < Test::Unit::TestCase
4
-
5
- include Helper::Client
6
-
7
- def test_provides_a_meaningful_inspect
8
- assert_equal "#<Redis client v#{Redis::VERSION} for redis://127.0.0.1:#{PORT}/15>", r.inspect
9
- end
10
-
11
- def test_connection_information
12
- assert_equal "127.0.0.1", r.connection.fetch(:host)
13
- assert_equal 6381, r.connection.fetch(:port)
14
- assert_equal 15, r.connection.fetch(:db)
15
- assert_equal "127.0.0.1:6381", r.connection.fetch(:location)
16
- assert_equal "redis://127.0.0.1:6381/15", r.connection.fetch(:id)
17
- end
18
-
19
- def test_default_id_with_host_and_port
20
- redis = Redis.new(OPTIONS.merge(:host => "host", :port => "1234", :db => 0))
21
- assert_equal "redis://host:1234/0", redis.connection.fetch(:id)
22
- end
23
-
24
- def test_default_id_with_host_and_port_and_explicit_scheme
25
- redis = Redis.new(OPTIONS.merge(:host => "host", :port => "1234", :db => 0, :scheme => "foo"))
26
- assert_equal "redis://host:1234/0", redis.connection.fetch(:id)
27
- end
28
-
29
- def test_default_id_with_path
30
- redis = Redis.new(OPTIONS.merge(:path => "/tmp/redis.sock", :db => 0))
31
- assert_equal "redis:///tmp/redis.sock/0", redis.connection.fetch(:id)
32
- end
33
-
34
- def test_default_id_with_path_and_explicit_scheme
35
- redis = Redis.new(OPTIONS.merge(:path => "/tmp/redis.sock", :db => 0, :scheme => "foo"))
36
- assert_equal "redis:///tmp/redis.sock/0", redis.connection.fetch(:id)
37
- end
38
-
39
- def test_override_id
40
- redis = Redis.new(OPTIONS.merge(:id => "test"))
41
- assert_equal "test", redis.connection.fetch(:id)
42
- end
43
-
44
- def test_id_inside_multi
45
- redis = Redis.new(OPTIONS)
46
- id = nil
47
- connection_id = nil
48
-
49
- redis.multi do
50
- id = redis.id
51
- connection_id = redis.connection.fetch(:id)
52
- end
53
-
54
- assert_equal "redis://127.0.0.1:6381/15", id
55
- assert_equal "redis://127.0.0.1:6381/15", connection_id
56
- end
57
- end
data/test/db/.gitkeep DELETED
File without changes
@@ -1,46 +0,0 @@
1
- # encoding: UTF-8
2
-
3
- require File.expand_path("helper", File.dirname(__FILE__))
4
- require "lint/blocking_commands"
5
-
6
- class TestDistributedBlockingCommands < Test::Unit::TestCase
7
-
8
- include Helper::Distributed
9
- include Lint::BlockingCommands
10
-
11
- def test_blpop_raises
12
- assert_raises(Redis::Distributed::CannotDistribute) do
13
- r.blpop(["foo", "bar"])
14
- end
15
- end
16
-
17
- def test_blpop_raises_with_old_prototype
18
- assert_raises(Redis::Distributed::CannotDistribute) do
19
- r.blpop("foo", "bar", 0)
20
- end
21
- end
22
-
23
- def test_brpop_raises
24
- assert_raises(Redis::Distributed::CannotDistribute) do
25
- r.brpop(["foo", "bar"])
26
- end
27
- end
28
-
29
- def test_brpop_raises_with_old_prototype
30
- assert_raises(Redis::Distributed::CannotDistribute) do
31
- r.brpop("foo", "bar", 0)
32
- end
33
- end
34
-
35
- def test_brpoplpush_raises
36
- assert_raises(Redis::Distributed::CannotDistribute) do
37
- r.brpoplpush("foo", "bar")
38
- end
39
- end
40
-
41
- def test_brpoplpush_raises_with_old_prototype
42
- assert_raises(Redis::Distributed::CannotDistribute) do
43
- r.brpoplpush("foo", "bar", 0)
44
- end
45
- end
46
- end
@@ -1,10 +0,0 @@
1
- # encoding: UTF-8
2
-
3
- require File.expand_path("helper", File.dirname(__FILE__))
4
- require "lint/hashes"
5
-
6
- class TestDistributedCommandsOnHashes < Test::Unit::TestCase
7
-
8
- include Helper::Distributed
9
- include Lint::Hashes
10
- end
@@ -1,33 +0,0 @@
1
- # encoding: UTF-8
2
-
3
- require File.expand_path("helper", File.dirname(__FILE__))
4
- require "lint/hyper_log_log"
5
-
6
- class TestDistributedCommandsOnHyperLogLog < Test::Unit::TestCase
7
-
8
- include Helper::Distributed
9
- include Lint::HyperLogLog
10
-
11
- def test_pfmerge
12
- target_version "2.8.9" do
13
- assert_raise Redis::Distributed::CannotDistribute do
14
- r.pfadd "foo", "s1"
15
- r.pfadd "bar", "s2"
16
-
17
- assert r.pfmerge("res", "foo", "bar")
18
- end
19
- end
20
- end
21
-
22
- def test_pfcount_multiple_keys_diff_nodes
23
- target_version "2.8.9" do
24
- assert_raise Redis::Distributed::CannotDistribute do
25
- r.pfadd "foo", "s1"
26
- r.pfadd "bar", "s2"
27
-
28
- assert r.pfcount("res", "foo", "bar")
29
- end
30
- end
31
- end
32
-
33
- end
@@ -1,22 +0,0 @@
1
- # encoding: UTF-8
2
-
3
- require File.expand_path("helper", File.dirname(__FILE__))
4
- require "lint/lists"
5
-
6
- class TestDistributedCommandsOnLists < Test::Unit::TestCase
7
-
8
- include Helper::Distributed
9
- include Lint::Lists
10
-
11
- def test_rpoplpush
12
- assert_raise Redis::Distributed::CannotDistribute do
13
- r.rpoplpush("foo", "bar")
14
- end
15
- end
16
-
17
- def test_brpoplpush
18
- assert_raise Redis::Distributed::CannotDistribute do
19
- r.brpoplpush("foo", "bar", :timeout => 1)
20
- end
21
- end
22
- end
@@ -1,83 +0,0 @@
1
- # encoding: UTF-8
2
-
3
- require File.expand_path("helper", File.dirname(__FILE__))
4
- require "lint/sets"
5
-
6
- class TestDistributedCommandsOnSets < Test::Unit::TestCase
7
-
8
- include Helper::Distributed
9
- include Lint::Sets
10
-
11
- def test_smove
12
- assert_raise Redis::Distributed::CannotDistribute do
13
- r.sadd "foo", "s1"
14
- r.sadd "bar", "s2"
15
-
16
- r.smove("foo", "bar", "s1")
17
- end
18
- end
19
-
20
- def test_sinter
21
- assert_raise Redis::Distributed::CannotDistribute do
22
- r.sadd "foo", "s1"
23
- r.sadd "foo", "s2"
24
- r.sadd "bar", "s2"
25
-
26
- r.sinter("foo", "bar")
27
- end
28
- end
29
-
30
- def test_sinterstore
31
- assert_raise Redis::Distributed::CannotDistribute do
32
- r.sadd "foo", "s1"
33
- r.sadd "foo", "s2"
34
- r.sadd "bar", "s2"
35
-
36
- r.sinterstore("baz", "foo", "bar")
37
- end
38
- end
39
-
40
- def test_sunion
41
- assert_raise Redis::Distributed::CannotDistribute do
42
- r.sadd "foo", "s1"
43
- r.sadd "foo", "s2"
44
- r.sadd "bar", "s2"
45
- r.sadd "bar", "s3"
46
-
47
- r.sunion("foo", "bar")
48
- end
49
- end
50
-
51
- def test_sunionstore
52
- assert_raise Redis::Distributed::CannotDistribute do
53
- r.sadd "foo", "s1"
54
- r.sadd "foo", "s2"
55
- r.sadd "bar", "s2"
56
- r.sadd "bar", "s3"
57
-
58
- r.sunionstore("baz", "foo", "bar")
59
- end
60
- end
61
-
62
- def test_sdiff
63
- assert_raise Redis::Distributed::CannotDistribute do
64
- r.sadd "foo", "s1"
65
- r.sadd "foo", "s2"
66
- r.sadd "bar", "s2"
67
- r.sadd "bar", "s3"
68
-
69
- r.sdiff("foo", "bar")
70
- end
71
- end
72
-
73
- def test_sdiffstore
74
- assert_raise Redis::Distributed::CannotDistribute do
75
- r.sadd "foo", "s1"
76
- r.sadd "foo", "s2"
77
- r.sadd "bar", "s2"
78
- r.sadd "bar", "s3"
79
-
80
- r.sdiffstore("baz", "foo", "bar")
81
- end
82
- end
83
- end
@@ -1,18 +0,0 @@
1
- # encoding: UTF-8
2
-
3
- require File.expand_path("helper", File.dirname(__FILE__))
4
- require "lint/sorted_sets"
5
-
6
- class TestDistributedCommandsOnSortedSets < Test::Unit::TestCase
7
-
8
- include Helper::Distributed
9
- include Lint::SortedSets
10
-
11
- def test_zcount
12
- r.zadd "foo", 1, "s1"
13
- r.zadd "foo", 2, "s2"
14
- r.zadd "foo", 3, "s3"
15
-
16
- assert_equal 2, r.zcount("foo", 2, 3)
17
- end
18
- end
@@ -1,59 +0,0 @@
1
- # encoding: UTF-8
2
-
3
- require File.expand_path("helper", File.dirname(__FILE__))
4
- require "lint/strings"
5
-
6
- class TestDistributedCommandsOnStrings < Test::Unit::TestCase
7
-
8
- include Helper::Distributed
9
- include Lint::Strings
10
-
11
- def test_mget
12
- assert_raise Redis::Distributed::CannotDistribute do
13
- r.mget("foo", "bar")
14
- end
15
- end
16
-
17
- def test_mget_mapped
18
- assert_raise Redis::Distributed::CannotDistribute do
19
- r.mapped_mget("foo", "bar")
20
- end
21
- end
22
-
23
- def test_mset
24
- assert_raise Redis::Distributed::CannotDistribute do
25
- r.mset(:foo, "s1", :bar, "s2")
26
- end
27
- end
28
-
29
- def test_mset_mapped
30
- assert_raise Redis::Distributed::CannotDistribute do
31
- r.mapped_mset(:foo => "s1", :bar => "s2")
32
- end
33
- end
34
-
35
- def test_msetnx
36
- assert_raise Redis::Distributed::CannotDistribute do
37
- r.set("foo", "s1")
38
- r.msetnx(:foo, "s2", :bar, "s3")
39
- end
40
- end
41
-
42
- def test_msetnx_mapped
43
- assert_raise Redis::Distributed::CannotDistribute do
44
- r.set("foo", "s1")
45
- r.mapped_msetnx(:foo => "s2", :bar => "s3")
46
- end
47
- end
48
-
49
- def test_bitop
50
- target_version "2.5.10" do
51
- assert_raise Redis::Distributed::CannotDistribute do
52
- r.set("foo", "a")
53
- r.set("bar", "b")
54
-
55
- r.bitop(:and, "foo&bar", "foo", "bar")
56
- end
57
- end
58
- end
59
- end
@@ -1,95 +0,0 @@
1
- # encoding: UTF-8
2
-
3
- require File.expand_path("helper", File.dirname(__FILE__))
4
- require "lint/value_types"
5
-
6
- class TestDistributedCommandsOnValueTypes < Test::Unit::TestCase
7
-
8
- include Helper::Distributed
9
- include Lint::ValueTypes
10
-
11
- def test_del
12
- r.set "foo", "s1"
13
- r.set "bar", "s2"
14
- r.set "baz", "s3"
15
-
16
- assert_equal ["bar", "baz", "foo"], r.keys("*").sort
17
-
18
- assert_equal 1, r.del("foo")
19
-
20
- assert_equal ["bar", "baz"], r.keys("*").sort
21
-
22
- assert_equal 2, r.del("bar", "baz")
23
-
24
- assert_equal [], r.keys("*").sort
25
- end
26
-
27
- def test_del_with_array_argument
28
- r.set "foo", "s1"
29
- r.set "bar", "s2"
30
- r.set "baz", "s3"
31
-
32
- assert_equal ["bar", "baz", "foo"], r.keys("*").sort
33
-
34
- assert_equal 1, r.del(["foo"])
35
-
36
- assert_equal ["bar", "baz"], r.keys("*").sort
37
-
38
- assert_equal 2, r.del(["bar", "baz"])
39
-
40
- assert_equal [], r.keys("*").sort
41
- end
42
-
43
- def test_randomkey
44
- assert_raise Redis::Distributed::CannotDistribute do
45
- r.randomkey
46
- end
47
- end
48
-
49
- def test_rename
50
- assert_raise Redis::Distributed::CannotDistribute do
51
- r.set("foo", "s1")
52
- r.rename "foo", "bar"
53
- end
54
-
55
- assert_equal "s1", r.get("foo")
56
- assert_equal nil, r.get("bar")
57
- end
58
-
59
- def test_renamenx
60
- assert_raise Redis::Distributed::CannotDistribute do
61
- r.set("foo", "s1")
62
- r.rename "foo", "bar"
63
- end
64
-
65
- assert_equal "s1", r.get("foo")
66
- assert_equal nil , r.get("bar")
67
- end
68
-
69
- def test_dbsize
70
- assert_equal [0], r.dbsize
71
-
72
- r.set("foo", "s1")
73
-
74
- assert_equal [1], r.dbsize
75
- end
76
-
77
- def test_flushdb
78
- r.set("foo", "s1")
79
- r.set("bar", "s2")
80
-
81
- assert_equal [2], r.dbsize
82
-
83
- r.flushdb
84
-
85
- assert_equal [0], r.dbsize
86
- end
87
-
88
- def test_migrate
89
- r.set("foo", "s1")
90
-
91
- assert_raise Redis::Distributed::CannotDistribute do
92
- r.migrate("foo", {})
93
- end
94
- end
95
- end