redis 3.3.5 → 4.0.3

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 (127) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +3 -0
  3. data/.travis/Gemfile +8 -1
  4. data/.travis.yml +34 -62
  5. data/CHANGELOG.md +45 -2
  6. data/Gemfile +5 -1
  7. data/README.md +32 -76
  8. data/benchmarking/logging.rb +1 -1
  9. data/bin/build +71 -0
  10. data/bors.toml +14 -0
  11. data/lib/redis/client.rb +38 -20
  12. data/lib/redis/cluster/command.rb +81 -0
  13. data/lib/redis/cluster/command_loader.rb +32 -0
  14. data/lib/redis/cluster/key_slot_converter.rb +72 -0
  15. data/lib/redis/cluster/node.rb +104 -0
  16. data/lib/redis/cluster/node_key.rb +35 -0
  17. data/lib/redis/cluster/node_loader.rb +35 -0
  18. data/lib/redis/cluster/option.rb +76 -0
  19. data/lib/redis/cluster/slot.rb +69 -0
  20. data/lib/redis/cluster/slot_loader.rb +47 -0
  21. data/lib/redis/cluster.rb +285 -0
  22. data/lib/redis/connection/command_helper.rb +2 -8
  23. data/lib/redis/connection/hiredis.rb +2 -2
  24. data/lib/redis/connection/ruby.rb +13 -30
  25. data/lib/redis/connection/synchrony.rb +12 -4
  26. data/lib/redis/connection.rb +2 -2
  27. data/lib/redis/distributed.rb +29 -8
  28. data/lib/redis/errors.rb +46 -0
  29. data/lib/redis/hash_ring.rb +20 -64
  30. data/lib/redis/pipeline.rb +9 -7
  31. data/lib/redis/version.rb +1 -1
  32. data/lib/redis.rb +287 -52
  33. data/makefile +74 -0
  34. data/redis.gemspec +9 -10
  35. data/test/bitpos_test.rb +13 -19
  36. data/test/blocking_commands_test.rb +3 -5
  37. data/test/client_test.rb +18 -1
  38. data/test/cluster_abnormal_state_test.rb +38 -0
  39. data/test/cluster_blocking_commands_test.rb +15 -0
  40. data/test/cluster_client_internals_test.rb +77 -0
  41. data/test/cluster_client_key_hash_tags_test.rb +88 -0
  42. data/test/cluster_client_options_test.rb +147 -0
  43. data/test/cluster_client_pipelining_test.rb +59 -0
  44. data/test/cluster_client_replicas_test.rb +36 -0
  45. data/test/cluster_client_slots_test.rb +94 -0
  46. data/test/cluster_client_transactions_test.rb +71 -0
  47. data/test/cluster_commands_on_cluster_test.rb +165 -0
  48. data/test/cluster_commands_on_connection_test.rb +40 -0
  49. data/test/cluster_commands_on_geo_test.rb +74 -0
  50. data/test/cluster_commands_on_hashes_test.rb +11 -0
  51. data/test/cluster_commands_on_hyper_log_log_test.rb +17 -0
  52. data/test/cluster_commands_on_keys_test.rb +134 -0
  53. data/test/cluster_commands_on_lists_test.rb +15 -0
  54. data/test/cluster_commands_on_pub_sub_test.rb +101 -0
  55. data/test/cluster_commands_on_scripting_test.rb +56 -0
  56. data/test/cluster_commands_on_server_test.rb +221 -0
  57. data/test/cluster_commands_on_sets_test.rb +39 -0
  58. data/test/cluster_commands_on_sorted_sets_test.rb +35 -0
  59. data/test/cluster_commands_on_streams_test.rb +196 -0
  60. data/test/cluster_commands_on_strings_test.rb +15 -0
  61. data/test/cluster_commands_on_transactions_test.rb +41 -0
  62. data/test/cluster_commands_on_value_types_test.rb +14 -0
  63. data/test/command_map_test.rb +3 -5
  64. data/test/commands_on_geo_test.rb +116 -0
  65. data/test/commands_on_hashes_test.rb +2 -16
  66. data/test/commands_on_hyper_log_log_test.rb +3 -17
  67. data/test/commands_on_lists_test.rb +2 -15
  68. data/test/commands_on_sets_test.rb +2 -72
  69. data/test/commands_on_sorted_sets_test.rb +2 -132
  70. data/test/commands_on_strings_test.rb +2 -96
  71. data/test/commands_on_value_types_test.rb +80 -6
  72. data/test/connection_handling_test.rb +5 -7
  73. data/test/distributed_blocking_commands_test.rb +10 -4
  74. data/test/distributed_commands_on_hashes_test.rb +16 -5
  75. data/test/distributed_commands_on_hyper_log_log_test.rb +8 -15
  76. data/test/distributed_commands_on_lists_test.rb +4 -7
  77. data/test/distributed_commands_on_sets_test.rb +58 -36
  78. data/test/distributed_commands_on_sorted_sets_test.rb +51 -10
  79. data/test/distributed_commands_on_strings_test.rb +30 -10
  80. data/test/distributed_commands_on_value_types_test.rb +38 -4
  81. data/test/distributed_commands_requiring_clustering_test.rb +1 -3
  82. data/test/distributed_connection_handling_test.rb +1 -3
  83. data/test/distributed_internals_test.rb +8 -19
  84. data/test/distributed_key_tags_test.rb +4 -6
  85. data/test/distributed_persistence_control_commands_test.rb +1 -3
  86. data/test/distributed_publish_subscribe_test.rb +1 -3
  87. data/test/distributed_remote_server_control_commands_test.rb +1 -3
  88. data/test/distributed_scripting_test.rb +1 -3
  89. data/test/distributed_sorting_test.rb +1 -3
  90. data/test/distributed_test.rb +12 -14
  91. data/test/distributed_transactions_test.rb +1 -3
  92. data/test/encoding_test.rb +4 -8
  93. data/test/error_replies_test.rb +2 -4
  94. data/test/fork_safety_test.rb +1 -6
  95. data/test/helper.rb +179 -66
  96. data/test/helper_test.rb +1 -3
  97. data/test/internals_test.rb +47 -56
  98. data/test/lint/blocking_commands.rb +40 -16
  99. data/test/lint/hashes.rb +41 -0
  100. data/test/lint/hyper_log_log.rb +15 -1
  101. data/test/lint/lists.rb +16 -0
  102. data/test/lint/sets.rb +142 -0
  103. data/test/lint/sorted_sets.rb +183 -2
  104. data/test/lint/strings.rb +108 -20
  105. data/test/lint/value_types.rb +8 -0
  106. data/test/persistence_control_commands_test.rb +1 -3
  107. data/test/pipelining_commands_test.rb +12 -8
  108. data/test/publish_subscribe_test.rb +1 -3
  109. data/test/remote_server_control_commands_test.rb +60 -3
  110. data/test/scanning_test.rb +1 -7
  111. data/test/scripting_test.rb +1 -3
  112. data/test/sentinel_command_test.rb +1 -3
  113. data/test/sentinel_test.rb +1 -3
  114. data/test/sorting_test.rb +1 -3
  115. data/test/ssl_test.rb +45 -49
  116. data/test/support/cluster/orchestrator.rb +199 -0
  117. data/test/support/connection/hiredis.rb +1 -1
  118. data/test/support/connection/ruby.rb +1 -1
  119. data/test/support/connection/synchrony.rb +1 -1
  120. data/test/support/redis_mock.rb +1 -1
  121. data/test/synchrony_driver.rb +6 -9
  122. data/test/thread_safety_test.rb +1 -3
  123. data/test/transactions_test.rb +11 -3
  124. data/test/unknown_commands_test.rb +1 -3
  125. data/test/url_param_test.rb +44 -46
  126. metadata +109 -16
  127. data/Rakefile +0 -87
@@ -1,7 +1,5 @@
1
- # encoding: UTF-8
2
-
3
- require File.expand_path("helper", File.dirname(__FILE__))
4
- require "lint/blocking_commands"
1
+ require_relative "helper"
2
+ require_relative "lint/blocking_commands"
5
3
 
6
4
  class TestDistributedBlockingCommands < Test::Unit::TestCase
7
5
 
@@ -43,4 +41,12 @@ class TestDistributedBlockingCommands < Test::Unit::TestCase
43
41
  r.brpoplpush("foo", "bar", 0)
44
42
  end
45
43
  end
44
+
45
+ def test_bzpopmin
46
+ # Not implemented yet
47
+ end
48
+
49
+ def test_bzpopmax
50
+ # Not implemented yet
51
+ end
46
52
  end
@@ -1,10 +1,21 @@
1
- # encoding: UTF-8
2
-
3
- require File.expand_path("helper", File.dirname(__FILE__))
4
- require "lint/hashes"
1
+ require_relative 'helper'
2
+ require_relative 'lint/hashes'
5
3
 
6
4
  class TestDistributedCommandsOnHashes < Test::Unit::TestCase
7
-
8
5
  include Helper::Distributed
9
6
  include Lint::Hashes
7
+
8
+ def test_hscan
9
+ # Not implemented yet
10
+ end
11
+
12
+ def test_hstrlen
13
+ # Not implemented yet
14
+ end
15
+
16
+ def test_mapped_hmget_in_a_pipeline_returns_hash
17
+ assert_raise(Redis::Distributed::CannotDistribute) do
18
+ super
19
+ end
20
+ end
10
21
  end
@@ -1,33 +1,26 @@
1
- # encoding: UTF-8
2
-
3
- require File.expand_path("helper", File.dirname(__FILE__))
4
- require "lint/hyper_log_log"
1
+ require_relative 'helper'
2
+ require_relative 'lint/hyper_log_log'
5
3
 
6
4
  class TestDistributedCommandsOnHyperLogLog < Test::Unit::TestCase
7
-
8
5
  include Helper::Distributed
9
6
  include Lint::HyperLogLog
10
7
 
11
8
  def test_pfmerge
12
- target_version "2.8.9" do
9
+ target_version '2.8.9' do
13
10
  assert_raise Redis::Distributed::CannotDistribute do
14
- r.pfadd "foo", "s1"
15
- r.pfadd "bar", "s2"
16
-
17
- assert r.pfmerge("res", "foo", "bar")
11
+ super
18
12
  end
19
13
  end
20
14
  end
21
15
 
22
16
  def test_pfcount_multiple_keys_diff_nodes
23
- target_version "2.8.9" do
17
+ target_version '2.8.9' do
24
18
  assert_raise Redis::Distributed::CannotDistribute do
25
- r.pfadd "foo", "s1"
26
- r.pfadd "bar", "s2"
19
+ r.pfadd 'foo', 's1'
20
+ r.pfadd 'bar', 's2'
27
21
 
28
- assert r.pfcount("res", "foo", "bar")
22
+ assert r.pfcount('res', 'foo', 'bar')
29
23
  end
30
24
  end
31
25
  end
32
-
33
26
  end
@@ -1,22 +1,19 @@
1
- # encoding: UTF-8
2
-
3
- require File.expand_path("helper", File.dirname(__FILE__))
4
- require "lint/lists"
1
+ require_relative 'helper'
2
+ require_relative 'lint/lists'
5
3
 
6
4
  class TestDistributedCommandsOnLists < Test::Unit::TestCase
7
-
8
5
  include Helper::Distributed
9
6
  include Lint::Lists
10
7
 
11
8
  def test_rpoplpush
12
9
  assert_raise Redis::Distributed::CannotDistribute do
13
- r.rpoplpush("foo", "bar")
10
+ r.rpoplpush('foo', 'bar')
14
11
  end
15
12
  end
16
13
 
17
14
  def test_brpoplpush
18
15
  assert_raise Redis::Distributed::CannotDistribute do
19
- r.brpoplpush("foo", "bar", :timeout => 1)
16
+ r.brpoplpush('foo', 'bar', timeout: 1)
20
17
  end
21
18
  end
22
19
  end
@@ -1,83 +1,105 @@
1
- # encoding: UTF-8
2
-
3
- require File.expand_path("helper", File.dirname(__FILE__))
4
- require "lint/sets"
1
+ require_relative 'helper'
2
+ require_relative 'lint/sets'
5
3
 
6
4
  class TestDistributedCommandsOnSets < Test::Unit::TestCase
7
-
8
5
  include Helper::Distributed
9
6
  include Lint::Sets
10
7
 
11
8
  def test_smove
12
9
  assert_raise Redis::Distributed::CannotDistribute do
13
- r.sadd "foo", "s1"
14
- r.sadd "bar", "s2"
10
+ r.sadd 'foo', 's1'
11
+ r.sadd 'bar', 's2'
15
12
 
16
- r.smove("foo", "bar", "s1")
13
+ r.smove('foo', 'bar', 's1')
17
14
  end
18
15
  end
19
16
 
20
17
  def test_sinter
21
18
  assert_raise Redis::Distributed::CannotDistribute do
22
- r.sadd "foo", "s1"
23
- r.sadd "foo", "s2"
24
- r.sadd "bar", "s2"
19
+ r.sadd 'foo', 's1'
20
+ r.sadd 'foo', 's2'
21
+ r.sadd 'bar', 's2'
25
22
 
26
- r.sinter("foo", "bar")
23
+ r.sinter('foo', 'bar')
27
24
  end
28
25
  end
29
26
 
30
27
  def test_sinterstore
31
28
  assert_raise Redis::Distributed::CannotDistribute do
32
- r.sadd "foo", "s1"
33
- r.sadd "foo", "s2"
34
- r.sadd "bar", "s2"
29
+ r.sadd 'foo', 's1'
30
+ r.sadd 'foo', 's2'
31
+ r.sadd 'bar', 's2'
35
32
 
36
- r.sinterstore("baz", "foo", "bar")
33
+ r.sinterstore('baz', 'foo', 'bar')
37
34
  end
38
35
  end
39
36
 
40
37
  def test_sunion
41
38
  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"
39
+ r.sadd 'foo', 's1'
40
+ r.sadd 'foo', 's2'
41
+ r.sadd 'bar', 's2'
42
+ r.sadd 'bar', 's3'
46
43
 
47
- r.sunion("foo", "bar")
44
+ r.sunion('foo', 'bar')
48
45
  end
49
46
  end
50
47
 
51
48
  def test_sunionstore
52
49
  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"
50
+ r.sadd 'foo', 's1'
51
+ r.sadd 'foo', 's2'
52
+ r.sadd 'bar', 's2'
53
+ r.sadd 'bar', 's3'
57
54
 
58
- r.sunionstore("baz", "foo", "bar")
55
+ r.sunionstore('baz', 'foo', 'bar')
59
56
  end
60
57
  end
61
58
 
62
59
  def test_sdiff
63
60
  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"
61
+ r.sadd 'foo', 's1'
62
+ r.sadd 'foo', 's2'
63
+ r.sadd 'bar', 's2'
64
+ r.sadd 'bar', 's3'
68
65
 
69
- r.sdiff("foo", "bar")
66
+ r.sdiff('foo', 'bar')
70
67
  end
71
68
  end
72
69
 
73
70
  def test_sdiffstore
74
71
  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"
72
+ r.sadd 'foo', 's1'
73
+ r.sadd 'foo', 's2'
74
+ r.sadd 'bar', 's2'
75
+ r.sadd 'bar', 's3'
76
+
77
+ r.sdiffstore('baz', 'foo', 'bar')
78
+ end
79
+ end
80
+
81
+ def test_sscan
82
+ assert_nothing_raised do
83
+ r.sadd 'foo', 's1'
84
+ r.sadd 'foo', 's2'
85
+ r.sadd 'bar', 's2'
86
+ r.sadd 'bar', 's3'
87
+
88
+ cursor, vals = r.sscan 'foo', 0
89
+ assert_equal '0', cursor
90
+ assert_equal %w[s1 s2], vals.sort
91
+ end
92
+ end
93
+
94
+ def test_sscan_each
95
+ assert_nothing_raised do
96
+ r.sadd 'foo', 's1'
97
+ r.sadd 'foo', 's2'
98
+ r.sadd 'bar', 's2'
99
+ r.sadd 'bar', 's3'
79
100
 
80
- r.sdiffstore("baz", "foo", "bar")
101
+ vals = r.sscan_each('foo').to_a
102
+ assert_equal %w[s1 s2], vals.sort
81
103
  end
82
104
  end
83
105
  end
@@ -1,18 +1,59 @@
1
- # encoding: UTF-8
2
-
3
- require File.expand_path("helper", File.dirname(__FILE__))
4
- require "lint/sorted_sets"
1
+ require_relative 'helper'
2
+ require_relative 'lint/sorted_sets'
5
3
 
6
4
  class TestDistributedCommandsOnSortedSets < Test::Unit::TestCase
7
-
8
5
  include Helper::Distributed
9
6
  include Lint::SortedSets
10
7
 
11
- def test_zcount
12
- r.zadd "foo", 1, "s1"
13
- r.zadd "foo", 2, "s2"
14
- r.zadd "foo", 3, "s3"
8
+ def test_zinterstore
9
+ assert_raise(Redis::Distributed::CannotDistribute) { super }
10
+ end
11
+
12
+ def test_zinterstore_with_aggregate
13
+ assert_raise(Redis::Distributed::CannotDistribute) { super }
14
+ end
15
+
16
+ def test_zinterstore_with_weights
17
+ assert_raise(Redis::Distributed::CannotDistribute) { super }
18
+ end
19
+
20
+ def test_zlexcount
21
+ # Not implemented yet
22
+ end
23
+
24
+ def test_zpopmax
25
+ # Not implemented yet
26
+ end
27
+
28
+ def test_zpopmin
29
+ # Not implemented yet
30
+ end
31
+
32
+ def test_zrangebylex
33
+ # Not implemented yet
34
+ end
35
+
36
+ def test_zremrangebylex
37
+ # Not implemented yet
38
+ end
39
+
40
+ def test_zrevrangebylex
41
+ # Not implemented yet
42
+ end
43
+
44
+ def test_zscan
45
+ # Not implemented yet
46
+ end
47
+
48
+ def test_zunionstore
49
+ assert_raise(Redis::Distributed::CannotDistribute) { super }
50
+ end
51
+
52
+ def test_zunionstore_with_aggregate
53
+ assert_raise(Redis::Distributed::CannotDistribute) { super }
54
+ end
15
55
 
16
- assert_equal 2, r.zcount("foo", 2, 3)
56
+ def test_zunionstore_with_weights
57
+ assert_raise(Redis::Distributed::CannotDistribute) { super }
17
58
  end
18
59
  end
@@ -1,7 +1,5 @@
1
- # encoding: UTF-8
2
-
3
- require File.expand_path("helper", File.dirname(__FILE__))
4
- require "lint/strings"
1
+ require_relative "helper"
2
+ require_relative "lint/strings"
5
3
 
6
4
  class TestDistributedCommandsOnStrings < Test::Unit::TestCase
7
5
 
@@ -9,15 +7,27 @@ class TestDistributedCommandsOnStrings < Test::Unit::TestCase
9
7
  include Lint::Strings
10
8
 
11
9
  def test_mget
12
- assert_raise Redis::Distributed::CannotDistribute do
13
- r.mget("foo", "bar")
14
- end
10
+ r.set("foo", "s1")
11
+ r.set("bar", "s2")
12
+
13
+ assert_equal ["s1", "s2"] , r.mget("foo", "bar")
14
+ assert_equal ["s1", "s2", nil], r.mget("foo", "bar", "baz")
15
15
  end
16
16
 
17
17
  def test_mget_mapped
18
- assert_raise Redis::Distributed::CannotDistribute do
19
- r.mapped_mget("foo", "bar")
20
- end
18
+ r.set("foo", "s1")
19
+ r.set("bar", "s2")
20
+
21
+ response = r.mapped_mget("foo", "bar")
22
+
23
+ assert_equal "s1", response["foo"]
24
+ assert_equal "s2", response["bar"]
25
+
26
+ response = r.mapped_mget("foo", "bar", "baz")
27
+
28
+ assert_equal "s1", response["foo"]
29
+ assert_equal "s2", response["bar"]
30
+ assert_equal nil , response["baz"]
21
31
  end
22
32
 
23
33
  def test_mset
@@ -56,4 +66,14 @@ class TestDistributedCommandsOnStrings < Test::Unit::TestCase
56
66
  end
57
67
  end
58
68
  end
69
+
70
+ def test_mapped_mget_in_a_pipeline_returns_hash
71
+ assert_raise Redis::Distributed::CannotDistribute do
72
+ super
73
+ end
74
+ end
75
+
76
+ def test_bitfield
77
+ # Not implemented yet
78
+ end
59
79
  end
@@ -1,7 +1,5 @@
1
- # encoding: UTF-8
2
-
3
- require File.expand_path("helper", File.dirname(__FILE__))
4
- require "lint/value_types"
1
+ require_relative "helper"
2
+ require_relative "lint/value_types"
5
3
 
6
4
  class TestDistributedCommandsOnValueTypes < Test::Unit::TestCase
7
5
 
@@ -40,6 +38,42 @@ class TestDistributedCommandsOnValueTypes < Test::Unit::TestCase
40
38
  assert_equal [], r.keys("*").sort
41
39
  end
42
40
 
41
+ def test_unlink
42
+ target_version "4.0.0" do
43
+ r.set "foo", "s1"
44
+ r.set "bar", "s2"
45
+ r.set "baz", "s3"
46
+
47
+ assert_equal ["bar", "baz", "foo"], r.keys("*").sort
48
+
49
+ assert_equal 1, r.unlink("foo")
50
+
51
+ assert_equal ["bar", "baz"], r.keys("*").sort
52
+
53
+ assert_equal 2, r.unlink("bar", "baz")
54
+
55
+ assert_equal [], r.keys("*").sort
56
+ end
57
+ end
58
+
59
+ def test_unlink_with_array_argument
60
+ target_version "4.0.0" do
61
+ r.set "foo", "s1"
62
+ r.set "bar", "s2"
63
+ r.set "baz", "s3"
64
+
65
+ assert_equal ["bar", "baz", "foo"], r.keys("*").sort
66
+
67
+ assert_equal 1, r.unlink(["foo"])
68
+
69
+ assert_equal ["bar", "baz"], r.keys("*").sort
70
+
71
+ assert_equal 2, r.unlink(["bar", "baz"])
72
+
73
+ assert_equal [], r.keys("*").sort
74
+ end
75
+ end
76
+
43
77
  def test_randomkey
44
78
  assert_raise Redis::Distributed::CannotDistribute do
45
79
  r.randomkey
@@ -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 TestDistributedCommandsRequiringClustering < Test::Unit::TestCase
6
4
 
@@ -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 TestDistributedConnectionHandling < Test::Unit::TestCase
6
4
 
@@ -1,41 +1,39 @@
1
- # encoding: UTF-8
2
-
3
- require File.expand_path("helper", File.dirname(__FILE__))
1
+ require_relative "helper"
4
2
 
5
3
  class TestDistributedInternals < Test::Unit::TestCase
6
4
 
7
5
  include Helper::Distributed
8
6
 
9
7
  def test_provides_a_meaningful_inspect
10
- nodes = ["redis://localhost:#{PORT}/15", *NODES]
8
+ nodes = ["redis://127.0.0.1:#{PORT}/15", *NODES]
11
9
  redis = Redis::Distributed.new nodes
12
10
 
13
11
  assert_equal "#<Redis client v#{Redis::VERSION} for #{redis.nodes.map(&:id).join(', ')}>", redis.inspect
14
12
  end
15
13
 
16
14
  def test_default_as_urls
17
- nodes = ["redis://localhost:#{PORT}/15", *NODES]
15
+ nodes = ["redis://127.0.0.1:#{PORT}/15", *NODES]
18
16
  redis = Redis::Distributed.new nodes
19
- assert_equal ["redis://localhost:#{PORT}/15", *NODES], redis.nodes.map { |node| node.client.id}
17
+ assert_equal ["redis://127.0.0.1:#{PORT}/15", *NODES], redis.nodes.map { |node| node._client.id }
20
18
  end
21
19
 
22
20
  def test_default_as_config_hashes
23
21
  nodes = [OPTIONS.merge(:host => '127.0.0.1'), OPTIONS.merge(:host => 'somehost', :port => PORT.next)]
24
22
  redis = Redis::Distributed.new nodes
25
- assert_equal ["redis://127.0.0.1:#{PORT}/15","redis://somehost:#{PORT.next}/15"], redis.nodes.map { |node| node.client.id }
23
+ assert_equal ["redis://127.0.0.1:#{PORT}/15","redis://somehost:#{PORT.next}/15"], redis.nodes.map { |node| node._client.id }
26
24
  end
27
25
 
28
26
  def test_as_mix_and_match
29
27
  nodes = ["redis://127.0.0.1:7389/15", OPTIONS.merge(:host => 'somehost'), OPTIONS.merge(:host => 'somehost', :port => PORT.next)]
30
28
  redis = Redis::Distributed.new nodes
31
- assert_equal ["redis://127.0.0.1:7389/15", "redis://somehost:#{PORT}/15", "redis://somehost:#{PORT.next}/15"], redis.nodes.map { |node| node.client.id }
29
+ assert_equal ["redis://127.0.0.1:7389/15", "redis://somehost:#{PORT}/15", "redis://somehost:#{PORT.next}/15"], redis.nodes.map { |node| node._client.id }
32
30
  end
33
31
 
34
32
  def test_override_id
35
33
  nodes = [OPTIONS.merge(:host => '127.0.0.1', :id => "test"), OPTIONS.merge( :host => 'somehost', :port => PORT.next, :id => "test1")]
36
34
  redis = Redis::Distributed.new nodes
37
- assert_equal redis.nodes.first.client.id, "test"
38
- assert_equal redis.nodes.last.client.id, "test1"
35
+ assert_equal redis.nodes.first._client.id, "test"
36
+ assert_equal redis.nodes.last._client.id, "test1"
39
37
  assert_equal "#<Redis client v#{Redis::VERSION} for #{redis.nodes.map(&:id).join(', ')}>", redis.inspect
40
38
  end
41
39
 
@@ -67,13 +65,4 @@ class TestDistributedInternals < Test::Unit::TestCase
67
65
 
68
66
  assert_equal [], r2.sinter("baz:foo", "baz:bar")
69
67
  end
70
-
71
- def test_colliding_node_ids
72
- nodes = ["redis://localhost:#{PORT}/15", "redis://localhost:#{PORT}/15", *NODES]
73
-
74
- assert_raise(RuntimeError) do
75
- Redis::Distributed.new nodes
76
- end
77
- end
78
-
79
68
  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 TestDistributedKeyTags < Test::Unit::TestCase
6
4
 
@@ -8,9 +6,9 @@ class TestDistributedKeyTags < Test::Unit::TestCase
8
6
  include Helper::Distributed
9
7
 
10
8
  def test_hashes_consistently
11
- r1 = Redis::Distributed.new ["redis://localhost:#{PORT}/15", *NODES]
12
- r2 = Redis::Distributed.new ["redis://localhost:#{PORT}/15", *NODES]
13
- r3 = Redis::Distributed.new ["redis://localhost:#{PORT}/15", *NODES]
9
+ r1 = Redis::Distributed.new ["redis://127.0.0.1:#{PORT}/15", *NODES]
10
+ r2 = Redis::Distributed.new ["redis://127.0.0.1:#{PORT}/15", *NODES]
11
+ r3 = Redis::Distributed.new ["redis://127.0.0.1:#{PORT}/15", *NODES]
14
12
 
15
13
  assert_equal r1.node_for("foo").id, r2.node_for("foo").id
16
14
  assert_equal r1.node_for("foo").id, r3.node_for("foo").id
@@ -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 TestDistributedPersistenceControlCommands < Test::Unit::TestCase
6
4
 
@@ -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 TestDistributedPublishSubscribe < Test::Unit::TestCase
6
4
 
@@ -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 TestDistributedRemoteServerControlCommands < Test::Unit::TestCase
6
4
 
@@ -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 TestDistributedScripting < Test::Unit::TestCase
6
4
 
@@ -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 TestDistributedSorting < Test::Unit::TestCase
6
4
 
@@ -1,13 +1,11 @@
1
- # encoding: UTF-8
2
-
3
- require File.expand_path("helper", File.dirname(__FILE__))
1
+ require_relative "helper"
4
2
 
5
3
  class TestDistributed < Test::Unit::TestCase
6
4
 
7
5
  include Helper::Distributed
8
6
 
9
7
  def test_handle_multiple_servers
10
- @r = Redis::Distributed.new ["redis://localhost:#{PORT}/15", *NODES]
8
+ @r = Redis::Distributed.new ["redis://127.0.0.1:#{PORT}/15", *NODES]
11
9
 
12
10
  100.times do |idx|
13
11
  @r.set(idx.to_s, "foo#{idx}")
@@ -26,19 +24,19 @@ class TestDistributed < Test::Unit::TestCase
26
24
 
27
25
  @r = Redis::Distributed.new NODES, :logger => logger, :timeout => 10
28
26
 
29
- assert_equal "127.0.0.1", @r.nodes[0].client.host
30
- assert_equal PORT, @r.nodes[0].client.port
31
- assert_equal 15, @r.nodes[0].client.db
32
- assert_equal 10, @r.nodes[0].client.timeout
33
- assert_equal logger, @r.nodes[0].client.logger
27
+ assert_equal "127.0.0.1", @r.nodes[0]._client.host
28
+ assert_equal PORT, @r.nodes[0]._client.port
29
+ assert_equal 15, @r.nodes[0]._client.db
30
+ assert_equal 10, @r.nodes[0]._client.timeout
31
+ assert_equal logger, @r.nodes[0]._client.logger
34
32
 
35
33
  @r.add_node("redis://127.0.0.1:6380/14")
36
34
 
37
- assert_equal "127.0.0.1", @r.nodes[1].client.host
38
- assert_equal 6380, @r.nodes[1].client.port
39
- assert_equal 14, @r.nodes[1].client.db
40
- assert_equal 10, @r.nodes[1].client.timeout
41
- assert_equal logger, @r.nodes[1].client.logger
35
+ assert_equal "127.0.0.1", @r.nodes[1]._client.host
36
+ assert_equal 6380, @r.nodes[1]._client.port
37
+ assert_equal 14, @r.nodes[1]._client.db
38
+ assert_equal 10, @r.nodes[1]._client.timeout
39
+ assert_equal logger, @r.nodes[1]._client.logger
42
40
  end
43
41
 
44
42
  def test_pipelining_commands_cannot_be_distributed
@@ -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 TestDistributedTransactions < Test::Unit::TestCase
6
4