redis 3.3.5 → 4.0.0.rc1

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 (86) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +32 -50
  3. data/CHANGELOG.md +7 -9
  4. data/Gemfile +0 -1
  5. data/README.md +31 -75
  6. data/benchmarking/logging.rb +1 -1
  7. data/lib/redis.rb +31 -35
  8. data/lib/redis/client.rb +13 -8
  9. data/lib/redis/connection.rb +2 -2
  10. data/lib/redis/connection/command_helper.rb +2 -8
  11. data/lib/redis/connection/hiredis.rb +2 -2
  12. data/lib/redis/connection/ruby.rb +7 -27
  13. data/lib/redis/connection/synchrony.rb +3 -3
  14. data/lib/redis/pipeline.rb +0 -6
  15. data/lib/redis/version.rb +1 -1
  16. data/makefile +42 -0
  17. data/redis.gemspec +4 -8
  18. data/test/bitpos_test.rb +13 -19
  19. data/test/blocking_commands_test.rb +147 -6
  20. data/test/client_test.rb +1 -1
  21. data/test/command_map_test.rb +3 -5
  22. data/test/commands_on_hashes_test.rb +158 -5
  23. data/test/commands_on_hyper_log_log_test.rb +55 -6
  24. data/test/commands_on_lists_test.rb +139 -5
  25. data/test/commands_on_sets_test.rb +136 -5
  26. data/test/commands_on_sorted_sets_test.rb +312 -5
  27. data/test/commands_on_strings_test.rb +243 -6
  28. data/test/commands_on_value_types_test.rb +120 -7
  29. data/test/connection_handling_test.rb +5 -7
  30. data/test/encoding_test.rb +4 -8
  31. data/test/error_replies_test.rb +2 -4
  32. data/test/fork_safety_test.rb +1 -6
  33. data/test/helper.rb +9 -62
  34. data/test/helper_test.rb +1 -3
  35. data/test/internals_test.rb +67 -49
  36. data/test/persistence_control_commands_test.rb +1 -3
  37. data/test/pipelining_commands_test.rb +4 -8
  38. data/test/publish_subscribe_test.rb +1 -3
  39. data/test/remote_server_control_commands_test.rb +61 -4
  40. data/test/scanning_test.rb +1 -7
  41. data/test/scripting_test.rb +1 -3
  42. data/test/sentinel_command_test.rb +1 -3
  43. data/test/sentinel_test.rb +1 -3
  44. data/test/sorting_test.rb +1 -3
  45. data/test/ssl_test.rb +45 -49
  46. data/test/support/connection/hiredis.rb +1 -1
  47. data/test/support/connection/ruby.rb +1 -1
  48. data/test/support/connection/synchrony.rb +1 -1
  49. data/test/synchrony_driver.rb +6 -9
  50. data/test/thread_safety_test.rb +1 -3
  51. data/test/transactions_test.rb +1 -3
  52. data/test/unknown_commands_test.rb +1 -3
  53. data/test/url_param_test.rb +44 -46
  54. metadata +31 -77
  55. data/Rakefile +0 -87
  56. data/examples/dist_redis.rb +0 -43
  57. data/lib/redis/distributed.rb +0 -873
  58. data/lib/redis/hash_ring.rb +0 -132
  59. data/test/connection_test.rb +0 -57
  60. data/test/distributed_blocking_commands_test.rb +0 -46
  61. data/test/distributed_commands_on_hashes_test.rb +0 -10
  62. data/test/distributed_commands_on_hyper_log_log_test.rb +0 -33
  63. data/test/distributed_commands_on_lists_test.rb +0 -22
  64. data/test/distributed_commands_on_sets_test.rb +0 -83
  65. data/test/distributed_commands_on_sorted_sets_test.rb +0 -18
  66. data/test/distributed_commands_on_strings_test.rb +0 -59
  67. data/test/distributed_commands_on_value_types_test.rb +0 -95
  68. data/test/distributed_commands_requiring_clustering_test.rb +0 -164
  69. data/test/distributed_connection_handling_test.rb +0 -23
  70. data/test/distributed_internals_test.rb +0 -79
  71. data/test/distributed_key_tags_test.rb +0 -52
  72. data/test/distributed_persistence_control_commands_test.rb +0 -26
  73. data/test/distributed_publish_subscribe_test.rb +0 -92
  74. data/test/distributed_remote_server_control_commands_test.rb +0 -66
  75. data/test/distributed_scripting_test.rb +0 -102
  76. data/test/distributed_sorting_test.rb +0 -20
  77. data/test/distributed_test.rb +0 -58
  78. data/test/distributed_transactions_test.rb +0 -32
  79. data/test/lint/blocking_commands.rb +0 -150
  80. data/test/lint/hashes.rb +0 -162
  81. data/test/lint/hyper_log_log.rb +0 -60
  82. data/test/lint/lists.rb +0 -143
  83. data/test/lint/sets.rb +0 -140
  84. data/test/lint/sorted_sets.rb +0 -316
  85. data/test/lint/strings.rb +0 -260
  86. data/test/lint/value_types.rb +0 -122
@@ -1,12 +1,125 @@
1
- # encoding: UTF-8
2
-
3
- require File.expand_path("helper", File.dirname(__FILE__))
4
- require "lint/value_types"
1
+ require_relative "helper"
5
2
 
6
3
  class TestCommandsOnValueTypes < Test::Unit::TestCase
7
4
 
8
5
  include Helper::Client
9
- include Lint::ValueTypes
6
+
7
+ def test_exists
8
+ assert_equal false, r.exists("foo")
9
+
10
+ r.set("foo", "s1")
11
+
12
+ assert_equal true, r.exists("foo")
13
+ end
14
+
15
+ def test_type
16
+ assert_equal "none", r.type("foo")
17
+
18
+ r.set("foo", "s1")
19
+
20
+ assert_equal "string", r.type("foo")
21
+ end
22
+
23
+ def test_keys
24
+ r.set("f", "s1")
25
+ r.set("fo", "s2")
26
+ r.set("foo", "s3")
27
+
28
+ assert_equal ["f","fo", "foo"], r.keys("f*").sort
29
+ end
30
+
31
+ def test_expire
32
+ r.set("foo", "s1")
33
+ assert r.expire("foo", 2)
34
+ assert_in_range 0..2, r.ttl("foo")
35
+ end
36
+
37
+ def test_pexpire
38
+ target_version "2.5.4" do
39
+ r.set("foo", "s1")
40
+ assert r.pexpire("foo", 2000)
41
+ assert_in_range 0..2, r.ttl("foo")
42
+ end
43
+ end
44
+
45
+ def test_expireat
46
+ r.set("foo", "s1")
47
+ assert r.expireat("foo", (Time.now + 2).to_i)
48
+ assert_in_range 0..2, r.ttl("foo")
49
+ end
50
+
51
+ def test_pexpireat
52
+ target_version "2.5.4" do
53
+ r.set("foo", "s1")
54
+ assert r.pexpireat("foo", (Time.now + 2).to_i * 1_000)
55
+ assert_in_range 0..2, r.ttl("foo")
56
+ end
57
+ end
58
+
59
+ def test_persist
60
+ r.set("foo", "s1")
61
+ r.expire("foo", 1)
62
+ r.persist("foo")
63
+
64
+ assert(-1 == r.ttl("foo"))
65
+ end
66
+
67
+ def test_ttl
68
+ r.set("foo", "s1")
69
+ r.expire("foo", 2)
70
+ assert_in_range 0..2, r.ttl("foo")
71
+ end
72
+
73
+ def test_pttl
74
+ target_version "2.5.4" do
75
+ r.set("foo", "s1")
76
+ r.expire("foo", 2)
77
+ assert_in_range 1..2000, r.pttl("foo")
78
+ end
79
+ end
80
+
81
+ def test_dump_and_restore
82
+ target_version "2.5.7" do
83
+ r.set("foo", "a")
84
+ v = r.dump("foo")
85
+ r.del("foo")
86
+
87
+ assert r.restore("foo", 1000, v)
88
+ assert_equal "a", r.get("foo")
89
+ assert [0, 1].include? r.ttl("foo")
90
+
91
+ r.rpush("bar", ["b", "c", "d"])
92
+ w = r.dump("bar")
93
+ r.del("bar")
94
+
95
+ assert r.restore("bar", 1000, w)
96
+ assert_equal ["b", "c", "d"], r.lrange("bar", 0, -1)
97
+ assert [0, 1].include? r.ttl("bar")
98
+ end
99
+ end
100
+
101
+ def test_move
102
+ r.select 14
103
+ r.flushdb
104
+
105
+ r.set "bar", "s3"
106
+
107
+ r.select 15
108
+
109
+ r.set "foo", "s1"
110
+ r.set "bar", "s2"
111
+
112
+ assert r.move("foo", 14)
113
+ assert_equal nil, r.get("foo")
114
+
115
+ assert !r.move("bar", 14)
116
+ assert_equal "s2", r.get("bar")
117
+
118
+ r.select 14
119
+
120
+ assert_equal "s1", r.get("foo")
121
+ assert_equal "s3", r.get("bar")
122
+ end
10
123
 
11
124
  def test_del
12
125
  r.set "foo", "s1"
@@ -111,8 +224,8 @@ class TestCommandsOnValueTypes < Test::Unit::TestCase
111
224
  end
112
225
  assert ex.message =~ /port not specified/
113
226
 
114
- default_db = redis.client.db.to_i
115
- default_timeout = redis.client.timeout.to_i
227
+ default_db = redis._client.db.to_i
228
+ default_timeout = redis._client.timeout.to_i
116
229
 
117
230
  # Test defaults
118
231
  actual = redis.migrate("foo", options)
@@ -1,6 +1,4 @@
1
- # encoding: UTF-8
2
-
3
- require File.expand_path("helper", File.dirname(__FILE__))
1
+ require_relative "helper"
4
2
 
5
3
  class TestConnectionHandling < Test::Unit::TestCase
6
4
 
@@ -40,7 +38,7 @@ class TestConnectionHandling < Test::Unit::TestCase
40
38
  r.select 14
41
39
  assert_equal nil, r.get("foo")
42
40
 
43
- r.client.disconnect
41
+ r._client.disconnect
44
42
 
45
43
  assert_equal nil, r.get("foo")
46
44
  end
@@ -48,7 +46,7 @@ class TestConnectionHandling < Test::Unit::TestCase
48
46
  def test_quit
49
47
  r.quit
50
48
 
51
- assert !r.client.connected?
49
+ assert !r._client.connected?
52
50
  end
53
51
 
54
52
  def test_close
@@ -148,7 +146,7 @@ class TestConnectionHandling < Test::Unit::TestCase
148
146
  end
149
147
 
150
148
  assert_equal nil, result
151
- assert !redis.client.connected?
149
+ assert !redis._client.connected?
152
150
  end
153
151
  end
154
152
 
@@ -188,7 +186,7 @@ class TestConnectionHandling < Test::Unit::TestCase
188
186
  end
189
187
 
190
188
  assert_equal nil, result
191
- assert !redis.client.connected?
189
+ assert !redis._client.connected?
192
190
  end
193
191
  end
194
192
 
@@ -1,18 +1,14 @@
1
- # encoding: UTF-8
2
-
3
- require File.expand_path("helper", File.dirname(__FILE__))
1
+ require_relative "helper"
4
2
 
5
3
  class TestEncoding < Test::Unit::TestCase
6
4
 
7
5
  include Helper::Client
8
6
 
9
7
  def test_returns_properly_encoded_strings
10
- if defined?(Encoding)
11
- with_external_encoding("UTF-8") do
12
- r.set "foo", "שלום"
8
+ with_external_encoding("UTF-8") do
9
+ r.set "foo", "שלום"
13
10
 
14
- assert_equal "Shalom שלום", "Shalom " + r.get("foo")
15
- end
11
+ assert_equal "Shalom שלום", "Shalom " + r.get("foo")
16
12
  end
17
13
  end
18
14
  end
@@ -1,6 +1,4 @@
1
- # encoding: UTF-8
2
-
3
- require File.expand_path("helper", File.dirname(__FILE__))
1
+ require_relative "helper"
4
2
 
5
3
  class TestErrorReplies < Test::Unit::TestCase
6
4
 
@@ -47,7 +45,7 @@ class TestErrorReplies < Test::Unit::TestCase
47
45
  def test_recover_from_raise_in__call_loop
48
46
  with_reconnection_check do
49
47
  begin
50
- r.client.call_loop([:invalid_monitor]) do
48
+ r._client.call_loop([:invalid_monitor]) do
51
49
  assert false # Should never be executed
52
50
  end
53
51
  rescue => ex
@@ -1,11 +1,8 @@
1
- # encoding: UTF-8
2
-
3
- require File.expand_path("helper", File.dirname(__FILE__))
1
+ require_relative "helper"
4
2
 
5
3
  class TestForkSafety < Test::Unit::TestCase
6
4
 
7
5
  include Helper::Client
8
- include Helper::Skipable
9
6
 
10
7
  driver(:ruby, :hiredis) do
11
8
  def test_fork_safety
@@ -32,7 +29,6 @@ class TestForkSafety < Test::Unit::TestCase
32
29
 
33
30
  rescue NotImplementedError => error
34
31
  raise unless error.message =~ /fork is not available/
35
- return skip(error.message)
36
32
  end
37
33
 
38
34
  def test_fork_safety_with_enabled_inherited_socket
@@ -59,7 +55,6 @@ class TestForkSafety < Test::Unit::TestCase
59
55
 
60
56
  rescue NotImplementedError => error
61
57
  raise unless error.message =~ /fork is not available/
62
- return skip(error.message)
63
58
  end
64
59
  end
65
60
  end
data/test/helper.rb CHANGED
@@ -1,27 +1,16 @@
1
- $:.unshift File.expand_path("../lib", File.dirname(__FILE__))
2
- $:.unshift File.expand_path(File.dirname(__FILE__))
3
-
4
1
  require "test/unit"
5
2
  require "logger"
6
3
  require "stringio"
7
4
 
8
- (class Random; def self.rand(*args) super end; end) unless defined?(Random)
9
-
10
- begin
11
- require "ruby-debug"
12
- rescue LoadError
13
- end
14
-
15
5
  $VERBOSE = true
16
6
 
17
- ENV["conn"] ||= "ruby"
7
+ ENV["DRIVER"] ||= "ruby"
18
8
 
19
- require "redis"
20
- require "redis/distributed"
21
- require "redis/connection/#{ENV["conn"]}"
9
+ require_relative "../lib/redis"
10
+ require_relative "../lib/redis/connection/#{ENV["DRIVER"]}"
22
11
 
23
- require "support/redis_mock"
24
- require "support/connection/#{ENV["conn"]}"
12
+ require_relative "support/redis_mock"
13
+ require_relative "support/connection/#{ENV["DRIVER"]}"
25
14
 
26
15
  PORT = 6381
27
16
  OPTIONS = {:port => PORT, :db => 15, :timeout => Float(ENV["TIMEOUT"] || 0.1)}
@@ -44,11 +33,11 @@ def init(redis)
44
33
 
45
34
  Try this once:
46
35
 
47
- $ rake clean
36
+ $ make clean
48
37
 
49
38
  Then run the build again:
50
39
 
51
- $ rake
40
+ $ make
52
41
 
53
42
  EOS
54
43
  exit 1
@@ -56,7 +45,7 @@ def init(redis)
56
45
  end
57
46
 
58
47
  def driver(*drivers, &blk)
59
- if drivers.map(&:to_s).include?(ENV["conn"])
48
+ if drivers.map(&:to_s).include?(ENV["DRIVER"])
60
49
  class_eval(&blk)
61
50
  end
62
51
  end
@@ -92,14 +81,6 @@ module Helper
92
81
  end
93
82
  end
94
83
 
95
- def try_encoding(encoding, &block)
96
- if defined?(Encoding)
97
- with_external_encoding(encoding, &block)
98
- else
99
- yield
100
- end
101
- end
102
-
103
84
  class Version
104
85
 
105
86
  include Comparable
@@ -191,42 +172,8 @@ module Helper
191
172
  end
192
173
 
193
174
  def _new_client(options = {})
194
- Redis.new(_format_options(options).merge(:driver => ENV["conn"]))
195
- end
196
- end
197
-
198
- module Distributed
199
-
200
- include Generic
201
-
202
- def version
203
- Version.new(redis.info.first["redis_version"])
204
- end
205
-
206
- private
207
-
208
- def _format_options(options)
209
- {
210
- :timeout => OPTIONS[:timeout],
211
- :logger => ::Logger.new(@log),
212
- }.merge(options)
213
- end
214
-
215
- def _new_client(options = {})
216
- Redis::Distributed.new(NODES, _format_options(options).merge(:driver => ENV["conn"]))
175
+ Redis.new(_format_options(options).merge(:driver => ENV["DRIVER"]))
217
176
  end
218
177
  end
219
178
 
220
- # Basic support for `skip` in 1.8.x
221
- # Note: YOU MUST use `return skip(message)` in order to appropriately bail
222
- # from a running test.
223
- module Skipable
224
- Skipped = Class.new(RuntimeError)
225
-
226
- def skip(message = nil, bt = caller)
227
- return super if defined?(super)
228
-
229
- $stderr.puts("SKIPPED: #{self} #{message || 'no reason given'}")
230
- end
231
- end
232
179
  end
data/test/helper_test.rb CHANGED
@@ -1,6 +1,4 @@
1
- # encoding: UTF-8
2
-
3
- require File.expand_path("helper", File.dirname(__FILE__))
1
+ require_relative "helper"
4
2
 
5
3
  class TestHelper < Test::Unit::TestCase
6
4
 
@@ -1,11 +1,8 @@
1
- # encoding: UTF-8
2
-
3
- require File.expand_path("helper", File.dirname(__FILE__))
1
+ require_relative "helper"
4
2
 
5
3
  class TestInternals < Test::Unit::TestCase
6
4
 
7
5
  include Helper::Client
8
- include Helper::Skipable
9
6
 
10
7
  def test_logger
11
8
  r.ping
@@ -44,24 +41,28 @@ class TestInternals < Test::Unit::TestCase
44
41
  end
45
42
  end
46
43
 
44
+ def test_provides_a_meaningful_inspect
45
+ assert_equal "#<Redis client v#{Redis::VERSION} for redis://127.0.0.1:#{PORT}/15>", r.inspect
46
+ end
47
+
47
48
  def test_redis_current
48
- assert_equal "127.0.0.1", Redis.current.client.host
49
- assert_equal 6379, Redis.current.client.port
50
- assert_equal 0, Redis.current.client.db
49
+ assert_equal "127.0.0.1", Redis.current._client.host
50
+ assert_equal 6379, Redis.current._client.port
51
+ assert_equal 0, Redis.current._client.db
51
52
 
52
53
  Redis.current = Redis.new(OPTIONS.merge(:port => 6380, :db => 1))
53
54
 
54
55
  t = Thread.new do
55
- assert_equal "127.0.0.1", Redis.current.client.host
56
- assert_equal 6380, Redis.current.client.port
57
- assert_equal 1, Redis.current.client.db
56
+ assert_equal "127.0.0.1", Redis.current._client.host
57
+ assert_equal 6380, Redis.current._client.port
58
+ assert_equal 1, Redis.current._client.db
58
59
  end
59
60
 
60
61
  t.join
61
62
 
62
- assert_equal "127.0.0.1", Redis.current.client.host
63
- assert_equal 6380, Redis.current.client.port
64
- assert_equal 1, Redis.current.client.db
63
+ assert_equal "127.0.0.1", Redis.current._client.host
64
+ assert_equal 6380, Redis.current._client.port
65
+ assert_equal 1, Redis.current._client.db
65
66
  end
66
67
 
67
68
  def test_redis_connected?
@@ -75,12 +76,48 @@ class TestInternals < Test::Unit::TestCase
75
76
  assert !fresh_client.connected?
76
77
  end
77
78
 
79
+ def test_default_id_with_host_and_port
80
+ redis = Redis.new(OPTIONS.merge(:host => "host", :port => "1234", :db => 0))
81
+ assert_equal "redis://host:1234/0", redis._client.id
82
+ end
83
+
84
+ def test_default_id_with_host_and_port_and_explicit_scheme
85
+ redis = Redis.new(OPTIONS.merge(:host => "host", :port => "1234", :db => 0, :scheme => "foo"))
86
+ assert_equal "redis://host:1234/0", redis._client.id
87
+ end
88
+
89
+ def test_default_id_with_path
90
+ redis = Redis.new(OPTIONS.merge(:path => "/tmp/redis.sock", :db => 0))
91
+ assert_equal "redis:///tmp/redis.sock/0", redis._client.id
92
+ end
93
+
94
+ def test_default_id_with_path_and_explicit_scheme
95
+ redis = Redis.new(OPTIONS.merge(:path => "/tmp/redis.sock", :db => 0, :scheme => "foo"))
96
+ assert_equal "redis:///tmp/redis.sock/0", redis._client.id
97
+ end
98
+
99
+ def test_override_id
100
+ redis = Redis.new(OPTIONS.merge(:id => "test"))
101
+ assert_equal redis._client.id, "test"
102
+ end
103
+
78
104
  def test_timeout
79
105
  assert_nothing_raised do
80
106
  Redis.new(OPTIONS.merge(:timeout => 0))
81
107
  end
82
108
  end
83
109
 
110
+ def test_id_inside_multi
111
+ redis = Redis.new(OPTIONS)
112
+ id = nil
113
+
114
+ redis.multi do
115
+ id = redis.id
116
+ end
117
+
118
+ assert_equal id, "redis://127.0.0.1:6381/15"
119
+ end
120
+
84
121
  driver(:ruby) do
85
122
  def test_tcp_keepalive
86
123
  keepalive = {:time => 20, :intvl => 10, :probes => 5}
@@ -88,7 +125,7 @@ class TestInternals < Test::Unit::TestCase
88
125
  redis = Redis.new(OPTIONS.merge(:tcp_keepalive => keepalive))
89
126
  redis.ping
90
127
 
91
- connection = redis.client.connection
128
+ connection = redis._client.connection
92
129
  actual_keepalive = connection.get_tcp_keepalive
93
130
 
94
131
  [:time, :intvl, :probes].each do |key|
@@ -121,25 +158,6 @@ class TestInternals < Test::Unit::TestCase
121
158
  assert (Time.now - start_time) <= opts[:timeout]
122
159
  end
123
160
 
124
- driver(:ruby) do
125
- def test_write_timeout
126
- return skip("Relies on buffer sizes, might be unreliable")
127
-
128
- server = TCPServer.new("127.0.0.1", 0)
129
- port = server.addr[1]
130
-
131
- # Hacky, but we need the buffer size
132
- val = TCPSocket.new("127.0.0.1", port).getsockopt(Socket::SOL_SOCKET, Socket::SO_SNDBUF).unpack("i")[0]
133
-
134
- assert_raise(Redis::TimeoutError) do
135
- Timeout.timeout(1) do
136
- redis = Redis.new(:port => port, :timeout => 5, :write_timeout => 0.1)
137
- redis.set("foo", "1" * val*2)
138
- end
139
- end
140
- end
141
- end
142
-
143
161
  def close_on_ping(seq, options = {})
144
162
  $request = 0
145
163
 
@@ -197,7 +215,7 @@ class TestInternals < Test::Unit::TestCase
197
215
  redis.ping
198
216
  end
199
217
 
200
- assert !redis.client.connected?
218
+ assert !redis._client.connected?
201
219
  end
202
220
  end
203
221
 
@@ -213,7 +231,7 @@ class TestInternals < Test::Unit::TestCase
213
231
  redis.ping
214
232
  end
215
233
 
216
- assert !redis.client.connected?
234
+ assert !redis._client.connected?
217
235
  end
218
236
  end
219
237
 
@@ -226,7 +244,7 @@ class TestInternals < Test::Unit::TestCase
226
244
  end
227
245
  end
228
246
 
229
- assert !redis.client.connected?
247
+ assert !redis._client.connected?
230
248
  end
231
249
  end
232
250
 
@@ -267,14 +285,14 @@ class TestInternals < Test::Unit::TestCase
267
285
 
268
286
  def test_retry_on_write_error_by_default
269
287
  close_on_connection([0]) do |redis|
270
- assert_equal "1", redis.client.call(["x" * 128 * 1024])
288
+ assert_equal "1", redis._client.call(["x" * 128 * 1024])
271
289
  end
272
290
  end
273
291
 
274
292
  def test_retry_on_write_error_when_wrapped_in_with_reconnect_true
275
293
  close_on_connection([0]) do |redis|
276
294
  redis.with_reconnect(true) do
277
- assert_equal "1", redis.client.call(["x" * 128 * 1024])
295
+ assert_equal "1", redis._client.call(["x" * 128 * 1024])
278
296
  end
279
297
  end
280
298
  end
@@ -283,7 +301,7 @@ class TestInternals < Test::Unit::TestCase
283
301
  close_on_connection([0]) do |redis|
284
302
  assert_raise Redis::ConnectionError do
285
303
  redis.with_reconnect(false) do
286
- redis.client.call(["x" * 128 * 1024])
304
+ redis._client.call(["x" * 128 * 1024])
287
305
  end
288
306
  end
289
307
  end
@@ -293,7 +311,7 @@ class TestInternals < Test::Unit::TestCase
293
311
  close_on_connection([0]) do |redis|
294
312
  assert_raise Redis::ConnectionError do
295
313
  redis.without_reconnect do
296
- redis.client.call(["x" * 128 * 1024])
314
+ redis._client.call(["x" * 128 * 1024])
297
315
  end
298
316
  end
299
317
  end
@@ -301,7 +319,7 @@ class TestInternals < Test::Unit::TestCase
301
319
 
302
320
  def test_connecting_to_unix_domain_socket
303
321
  assert_nothing_raised do
304
- Redis.new(OPTIONS.merge(:path => "./test/db/redis.sock")).ping
322
+ Redis.new(OPTIONS.merge(:path => ENV.fetch("SOCKET_PATH"))).ping
305
323
  end
306
324
  end
307
325
 
@@ -323,23 +341,23 @@ class TestInternals < Test::Unit::TestCase
323
341
  def test_client_options
324
342
  redis = Redis.new(OPTIONS.merge(:host => "host", :port => 1234, :db => 1, :scheme => "foo"))
325
343
 
326
- assert_equal "host", redis.client.options[:host]
327
- assert_equal 1234, redis.client.options[:port]
328
- assert_equal 1, redis.client.options[:db]
329
- assert_equal "foo", redis.client.options[:scheme]
344
+ assert_equal "host", redis._client.options[:host]
345
+ assert_equal 1234, redis._client.options[:port]
346
+ assert_equal 1, redis._client.options[:db]
347
+ assert_equal "foo", redis._client.options[:scheme]
330
348
  end
331
349
 
332
350
  def test_does_not_change_self_client_options
333
351
  redis = Redis.new(OPTIONS.merge(:host => "host", :port => 1234, :db => 1, :scheme => "foo"))
334
- options = redis.client.options
352
+ options = redis._client.options
335
353
 
336
354
  options[:host] << "new_host"
337
355
  options[:scheme] << "bar"
338
356
  options.merge!(:db => 0)
339
357
 
340
- assert_equal "host", redis.client.options[:host]
341
- assert_equal 1, redis.client.options[:db]
342
- assert_equal "foo", redis.client.options[:scheme]
358
+ assert_equal "host", redis._client.options[:host]
359
+ assert_equal 1, redis._client.options[:db]
360
+ assert_equal "foo", redis._client.options[:scheme]
343
361
  end
344
362
 
345
363
  def test_resolves_localhost