redis 2.1.1 → 2.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (79) hide show
  1. data/.gitignore +8 -0
  2. data/CHANGELOG.md +34 -0
  3. data/README.md +190 -0
  4. data/Rakefile +194 -79
  5. data/benchmarking/logging.rb +62 -0
  6. data/benchmarking/pipeline.rb +51 -0
  7. data/benchmarking/speed.rb +21 -0
  8. data/benchmarking/suite.rb +24 -0
  9. data/benchmarking/thread_safety.rb +38 -0
  10. data/benchmarking/worker.rb +71 -0
  11. data/examples/basic.rb +15 -0
  12. data/examples/dist_redis.rb +43 -0
  13. data/examples/incr-decr.rb +17 -0
  14. data/examples/list.rb +26 -0
  15. data/examples/pubsub.rb +31 -0
  16. data/examples/sets.rb +36 -0
  17. data/examples/unicorn/config.ru +3 -0
  18. data/examples/unicorn/unicorn.rb +20 -0
  19. data/lib/redis.rb +612 -156
  20. data/lib/redis/client.rb +98 -57
  21. data/lib/redis/connection.rb +9 -134
  22. data/lib/redis/connection/command_helper.rb +45 -0
  23. data/lib/redis/connection/hiredis.rb +49 -0
  24. data/lib/redis/connection/registry.rb +12 -0
  25. data/lib/redis/connection/ruby.rb +131 -0
  26. data/lib/redis/connection/synchrony.rb +125 -0
  27. data/lib/redis/distributed.rb +161 -5
  28. data/lib/redis/pipeline.rb +6 -0
  29. data/lib/redis/version.rb +3 -0
  30. data/redis.gemspec +24 -0
  31. data/test/commands_on_hashes_test.rb +32 -0
  32. data/test/commands_on_lists_test.rb +60 -0
  33. data/test/commands_on_sets_test.rb +78 -0
  34. data/test/commands_on_sorted_sets_test.rb +109 -0
  35. data/test/commands_on_strings_test.rb +80 -0
  36. data/test/commands_on_value_types_test.rb +88 -0
  37. data/test/connection_handling_test.rb +87 -0
  38. data/test/db/.gitignore +1 -0
  39. data/test/distributed_blocking_commands_test.rb +53 -0
  40. data/test/distributed_commands_on_hashes_test.rb +12 -0
  41. data/test/distributed_commands_on_lists_test.rb +24 -0
  42. data/test/distributed_commands_on_sets_test.rb +85 -0
  43. data/test/distributed_commands_on_strings_test.rb +50 -0
  44. data/test/distributed_commands_on_value_types_test.rb +73 -0
  45. data/test/distributed_commands_requiring_clustering_test.rb +148 -0
  46. data/test/distributed_connection_handling_test.rb +25 -0
  47. data/test/distributed_internals_test.rb +18 -0
  48. data/test/distributed_key_tags_test.rb +53 -0
  49. data/test/distributed_persistence_control_commands_test.rb +24 -0
  50. data/test/distributed_publish_subscribe_test.rb +101 -0
  51. data/test/distributed_remote_server_control_commands_test.rb +31 -0
  52. data/test/distributed_sorting_test.rb +21 -0
  53. data/test/distributed_test.rb +60 -0
  54. data/test/distributed_transactions_test.rb +34 -0
  55. data/test/encoding_test.rb +16 -0
  56. data/test/error_replies_test.rb +53 -0
  57. data/test/helper.rb +145 -0
  58. data/test/internals_test.rb +157 -0
  59. data/test/lint/hashes.rb +114 -0
  60. data/test/lint/internals.rb +41 -0
  61. data/test/lint/lists.rb +93 -0
  62. data/test/lint/sets.rb +66 -0
  63. data/test/lint/sorted_sets.rb +167 -0
  64. data/test/lint/strings.rb +137 -0
  65. data/test/lint/value_types.rb +84 -0
  66. data/test/persistence_control_commands_test.rb +22 -0
  67. data/test/pipelining_commands_test.rb +123 -0
  68. data/test/publish_subscribe_test.rb +158 -0
  69. data/test/redis_mock.rb +80 -0
  70. data/test/remote_server_control_commands_test.rb +63 -0
  71. data/test/sorting_test.rb +44 -0
  72. data/test/synchrony_driver.rb +57 -0
  73. data/test/test.conf +8 -0
  74. data/test/thread_safety_test.rb +30 -0
  75. data/test/transactions_test.rb +100 -0
  76. data/test/unknown_commands_test.rb +14 -0
  77. data/test/url_param_test.rb +60 -0
  78. metadata +128 -19
  79. data/README.markdown +0 -129
@@ -0,0 +1,63 @@
1
+ # encoding: UTF-8
2
+
3
+ require File.expand_path("./helper", File.dirname(__FILE__))
4
+ require File.expand_path("./redis_mock", File.dirname(__FILE__))
5
+
6
+ include RedisMock::Helper
7
+
8
+ setup do
9
+ init Redis.new(OPTIONS)
10
+ end
11
+
12
+ test "INFO" do |r|
13
+ %w(last_save_time redis_version total_connections_received connected_clients total_commands_processed connected_slaves uptime_in_seconds used_memory uptime_in_days changes_since_last_save).each do |x|
14
+ assert r.info.keys.include?(x)
15
+ end
16
+ end
17
+
18
+ test "MONITOR" do |r|
19
+ log = []
20
+
21
+ wire = Wire.new do
22
+ Redis.new(OPTIONS).monitor do |line|
23
+ log << line
24
+ break if log.size == 3
25
+ end
26
+ end
27
+
28
+ Wire.pass while log.empty? # Faster than sleep
29
+
30
+ r.set "foo", "s1"
31
+
32
+ wire.join
33
+
34
+ assert log[-1][%q{(db 15) "set" "foo" "s1"}]
35
+ end
36
+
37
+ test "MONITOR returns value for break" do |r|
38
+ result = r.monitor do |line|
39
+ break line
40
+ end
41
+
42
+ assert result == "OK"
43
+ end
44
+
45
+ test "ECHO" do |r|
46
+ assert "foo bar baz\n" == r.echo("foo bar baz\n")
47
+ end
48
+
49
+ test "DEBUG" do |r|
50
+ r.set "foo", "s1"
51
+
52
+ assert r.debug(:object, "foo").kind_of?(String)
53
+ end
54
+
55
+ test "SYNC" do |r|
56
+ replies = {:sync => lambda { "+OK" }}
57
+
58
+ redis_mock(replies) do
59
+ redis = Redis.new(OPTIONS.merge(:port => 6380))
60
+
61
+ assert "OK" == redis.sync
62
+ end
63
+ end
@@ -0,0 +1,44 @@
1
+ # encoding: UTF-8
2
+
3
+ require File.expand_path("./helper", File.dirname(__FILE__))
4
+
5
+ setup do
6
+ init Redis.new(OPTIONS)
7
+ end
8
+
9
+ test "SORT" do |r|
10
+ r.set("foo:1", "s1")
11
+ r.set("foo:2", "s2")
12
+
13
+ r.rpush("bar", "1")
14
+ r.rpush("bar", "2")
15
+
16
+ assert ["s1"] == r.sort("bar", :get => "foo:*", :limit => [0, 1])
17
+ assert ["s2"] == r.sort("bar", :get => "foo:*", :limit => [0, 1], :order => "desc alpha")
18
+ end
19
+
20
+ test "SORT with an array of GETs" do |r|
21
+ r.set("foo:1:a", "s1a")
22
+ r.set("foo:1:b", "s1b")
23
+
24
+ r.set("foo:2:a", "s2a")
25
+ r.set("foo:2:b", "s2b")
26
+
27
+ r.rpush("bar", "1")
28
+ r.rpush("bar", "2")
29
+
30
+ assert ["s1a", "s1b"] == r.sort("bar", :get => ["foo:*:a", "foo:*:b"], :limit => [0, 1])
31
+ assert ["s2a", "s2b"] == r.sort("bar", :get => ["foo:*:a", "foo:*:b"], :limit => [0, 1], :order => "desc alpha")
32
+ end
33
+
34
+ test "SORT with STORE" do |r|
35
+ r.set("foo:1", "s1")
36
+ r.set("foo:2", "s2")
37
+
38
+ r.rpush("bar", "1")
39
+ r.rpush("bar", "2")
40
+
41
+ r.sort("bar", :get => "foo:*", :store => "baz")
42
+ assert ["s1", "s2"] == r.lrange("baz", 0, -1)
43
+ end
44
+
@@ -0,0 +1,57 @@
1
+ # encoding: UTF-8
2
+
3
+ require 'em-synchrony'
4
+
5
+ require 'redis'
6
+ require 'redis/connection/synchrony'
7
+
8
+ require File.expand_path("./helper", File.dirname(__FILE__))
9
+
10
+ #
11
+ # if running under Eventmachine + Synchrony (Ruby 1.9+), then
12
+ # we can simulate the blocking API while performing the network
13
+ # IO via the EM reactor.
14
+ #
15
+
16
+ EM.synchrony do
17
+ r = Redis.new
18
+ r.flushdb
19
+
20
+ r.rpush "foo", "s1"
21
+ r.rpush "foo", "s2"
22
+
23
+ assert 2 == r.llen("foo")
24
+ assert "s2" == r.rpop("foo")
25
+
26
+ r.set("foo", "bar")
27
+
28
+ assert "bar" == r.getset("foo", "baz")
29
+ assert "baz" == r.get("foo")
30
+
31
+ r.set("foo", "a")
32
+
33
+ assert_equal 1, r.getbit("foo", 1)
34
+ assert_equal 1, r.getbit("foo", 2)
35
+ assert_equal 0, r.getbit("foo", 3)
36
+ assert_equal 0, r.getbit("foo", 4)
37
+ assert_equal 0, r.getbit("foo", 5)
38
+ assert_equal 0, r.getbit("foo", 6)
39
+ assert_equal 1, r.getbit("foo", 7)
40
+
41
+ r.flushdb
42
+
43
+ # command pipelining
44
+ r.pipelined do
45
+ r.lpush "foo", "s1"
46
+ r.lpush "foo", "s2"
47
+ end
48
+
49
+ assert 2 == r.llen("foo")
50
+ assert "s2" == r.lpop("foo")
51
+ assert "s1" == r.lpop("foo")
52
+
53
+ assert "OK" == r.client.call(:quit)
54
+ assert "PONG" == r.ping
55
+
56
+ EM.stop
57
+ end
@@ -0,0 +1,8 @@
1
+ dir ./test/db
2
+ pidfile ./redis.pid
3
+ port 6379
4
+ timeout 300
5
+ loglevel debug
6
+ logfile stdout
7
+ databases 16
8
+ daemonize yes
@@ -0,0 +1,30 @@
1
+ # encoding: UTF-8
2
+
3
+ require File.expand_path("./helper", File.dirname(__FILE__))
4
+
5
+ setup do
6
+ init Redis.new(OPTIONS)
7
+ end
8
+
9
+ test "thread safety" do
10
+ redis = Redis.connect(OPTIONS.merge(:thread_safe => true))
11
+
12
+ redis.set "foo", 1
13
+ redis.set "bar", 2
14
+
15
+ sample = 100
16
+
17
+ t1 = Thread.new do
18
+ $foos = Array.new(sample) { redis.get "foo" }
19
+ end
20
+
21
+ t2 = Thread.new do
22
+ $bars = Array.new(sample) { redis.get "bar" }
23
+ end
24
+
25
+ t1.join
26
+ t2.join
27
+
28
+ assert_equal ["1"], $foos.uniq
29
+ assert_equal ["2"], $bars.uniq
30
+ end
@@ -0,0 +1,100 @@
1
+ # encoding: UTF-8
2
+
3
+ require File.expand_path("./helper", File.dirname(__FILE__))
4
+
5
+ setup do
6
+ init Redis.new(OPTIONS)
7
+ end
8
+
9
+ test "MULTI/DISCARD" do |r|
10
+ r.multi
11
+
12
+ assert "QUEUED" == r.set("foo", "1")
13
+ assert "QUEUED" == r.get("foo")
14
+
15
+ r.discard
16
+
17
+ assert nil == r.get("foo")
18
+ end
19
+
20
+ test "MULTI/EXEC with a block" do |r|
21
+ r.multi do |multi|
22
+ multi.set "foo", "s1"
23
+ end
24
+
25
+ assert "s1" == r.get("foo")
26
+
27
+ assert_raise(RuntimeError) do
28
+ r.multi do |multi|
29
+ multi.set "bar", "s2"
30
+ raise "Some error"
31
+ multi.set "baz", "s3"
32
+ end
33
+ end
34
+
35
+ assert nil == r.get("bar")
36
+ assert nil == r.get("baz")
37
+ end
38
+
39
+ test "Don't raise (and ignore) immediate error in MULTI/EXEC" do |r|
40
+ result = r.multi do |m|
41
+ m.set("foo", "s1")
42
+ m.unknown_command
43
+ end
44
+
45
+ assert 1 == result.size
46
+ assert "OK" == result.first
47
+ assert "s1" == r.get("foo")
48
+ end
49
+
50
+ test "Don't raise delayed error in MULTI/EXEC" do |r|
51
+ result = r.multi do |m|
52
+ m.set("foo", "s1")
53
+ m.incr("foo") # not an integer
54
+ m.lpush("foo", "value") # wrong kind of value
55
+ end
56
+
57
+ assert result[1].message =~ /not an integer/i
58
+ assert result[2].message =~ /wrong kind of value/i
59
+ assert "s1" == r.get("foo")
60
+ end
61
+
62
+ test "MULTI with a block yielding the client" do |r|
63
+ r.multi do |multi|
64
+ multi.set "foo", "s1"
65
+ end
66
+
67
+ assert "s1" == r.get("foo")
68
+ end
69
+
70
+ test "WATCH with an unmodified key" do |r|
71
+ r.watch "foo"
72
+ r.multi do |multi|
73
+ multi.set "foo", "s1"
74
+ end
75
+
76
+ assert "s1" == r.get("foo")
77
+ end
78
+
79
+ test "WATCH with a modified key" do |r|
80
+ r.watch "foo"
81
+ r.set "foo", "s1"
82
+ res = r.multi do |multi|
83
+ multi.set "foo", "s2"
84
+ end
85
+
86
+ assert nil == res
87
+ assert "s1" == r.get("foo")
88
+ end
89
+
90
+ test "UNWATCH with a modified key" do |r|
91
+ r.watch "foo"
92
+ r.set "foo", "s1"
93
+ r.unwatch
94
+ r.multi do |multi|
95
+ multi.set "foo", "s2"
96
+ end
97
+
98
+ assert "s2" == r.get("foo")
99
+ end
100
+
@@ -0,0 +1,14 @@
1
+ # encoding: UTF-8
2
+
3
+ require File.expand_path("./helper", File.dirname(__FILE__))
4
+
5
+ setup do
6
+ init Redis.new(OPTIONS)
7
+ end
8
+
9
+ test "should try to work" do |r|
10
+ assert_raise RuntimeError do
11
+ r.not_yet_implemented_command
12
+ end
13
+ end
14
+
@@ -0,0 +1,60 @@
1
+ # encoding: UTF-8
2
+
3
+ require File.expand_path("./helper", File.dirname(__FILE__))
4
+
5
+ test "URL defaults to 127.0.0.1:6379" do
6
+ redis = Redis.connect
7
+
8
+ assert "127.0.0.1" == redis.client.host
9
+ assert 6379 == redis.client.port
10
+ assert 0 == redis.client.db
11
+ assert nil == redis.client.password
12
+ end
13
+
14
+ test "allows to pass in a URL" do
15
+ redis = Redis.connect :url => "redis://:secr3t@foo.com:999/2"
16
+
17
+ assert "foo.com" == redis.client.host
18
+ assert 999 == redis.client.port
19
+ assert 2 == redis.client.db
20
+ assert "secr3t" == redis.client.password
21
+ end
22
+
23
+ test "override URL if path option is passed" do
24
+ redis = Redis.connect :url => "redis://:secr3t@foo.com/foo:999/2", :path => "/tmp/redis.sock"
25
+
26
+ assert "/tmp/redis.sock" == redis.client.path
27
+ assert nil == redis.client.host
28
+ assert nil == redis.client.port
29
+ end
30
+
31
+ test "overrides URL if another connection option is passed" do
32
+ redis = Redis.connect :url => "redis://:secr3t@foo.com:999/2", :port => 1000
33
+
34
+ assert "foo.com" == redis.client.host
35
+ assert 1000 == redis.client.port
36
+ assert 2 == redis.client.db
37
+ assert "secr3t" == redis.client.password
38
+ end
39
+
40
+ test "does not modify the passed options" do
41
+ options = { :url => "redis://:secr3t@foo.com:999/2" }
42
+
43
+ redis = Redis.connect(options)
44
+
45
+ assert({ :url => "redis://:secr3t@foo.com:999/2" } == options)
46
+ end
47
+
48
+ test "uses REDIS_URL over default if available" do
49
+ ENV["REDIS_URL"] = "redis://:secr3t@foo.com:999/2"
50
+
51
+ redis = Redis.connect
52
+
53
+ assert "foo.com" == redis.client.host
54
+ assert 999 == redis.client.port
55
+ assert 2 == redis.client.db
56
+ assert "secr3t" == redis.client.password
57
+
58
+ ENV.delete("REDIS_URL")
59
+ end
60
+
metadata CHANGED
@@ -1,12 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: redis
3
3
  version: !ruby/object:Gem::Version
4
- prerelease: false
5
- segments:
6
- - 2
7
- - 1
8
- - 1
9
- version: 2.1.1
4
+ prerelease:
5
+ version: 2.2.0
10
6
  platform: ruby
11
7
  authors:
12
8
  - Ezra Zygmuntowicz
@@ -17,11 +13,12 @@ authors:
17
13
  - Luca Guidi
18
14
  - Michel Martens
19
15
  - Damian Janowski
16
+ - Pieter Noordhuis
20
17
  autorequire: redis
21
18
  bindir: bin
22
19
  cert_chain: []
23
20
 
24
- date: 2010-11-05 00:00:00 -03:00
21
+ date: 2011-03-29 00:00:00 -03:00
25
22
  default_executable:
26
23
  dependencies: []
27
24
 
@@ -31,20 +28,90 @@ executables: []
31
28
 
32
29
  extensions: []
33
30
 
34
- extra_rdoc_files:
35
- - LICENSE
31
+ extra_rdoc_files: []
32
+
36
33
  files:
34
+ - .gitignore
35
+ - CHANGELOG.md
37
36
  - LICENSE
38
- - README.markdown
37
+ - README.md
39
38
  - Rakefile
39
+ - benchmarking/logging.rb
40
+ - benchmarking/pipeline.rb
41
+ - benchmarking/speed.rb
42
+ - benchmarking/suite.rb
43
+ - benchmarking/thread_safety.rb
44
+ - benchmarking/worker.rb
45
+ - examples/basic.rb
46
+ - examples/dist_redis.rb
47
+ - examples/incr-decr.rb
48
+ - examples/list.rb
49
+ - examples/pubsub.rb
50
+ - examples/sets.rb
51
+ - examples/unicorn/config.ru
52
+ - examples/unicorn/unicorn.rb
53
+ - lib/redis.rb
40
54
  - lib/redis/client.rb
41
55
  - lib/redis/compat.rb
42
56
  - lib/redis/connection.rb
57
+ - lib/redis/connection/command_helper.rb
58
+ - lib/redis/connection/hiredis.rb
59
+ - lib/redis/connection/registry.rb
60
+ - lib/redis/connection/ruby.rb
61
+ - lib/redis/connection/synchrony.rb
43
62
  - lib/redis/distributed.rb
44
63
  - lib/redis/hash_ring.rb
45
64
  - lib/redis/pipeline.rb
46
65
  - lib/redis/subscribe.rb
47
- - lib/redis.rb
66
+ - lib/redis/version.rb
67
+ - redis.gemspec
68
+ - test/commands_on_hashes_test.rb
69
+ - test/commands_on_lists_test.rb
70
+ - test/commands_on_sets_test.rb
71
+ - test/commands_on_sorted_sets_test.rb
72
+ - test/commands_on_strings_test.rb
73
+ - test/commands_on_value_types_test.rb
74
+ - test/connection_handling_test.rb
75
+ - test/db/.gitignore
76
+ - test/distributed_blocking_commands_test.rb
77
+ - test/distributed_commands_on_hashes_test.rb
78
+ - test/distributed_commands_on_lists_test.rb
79
+ - test/distributed_commands_on_sets_test.rb
80
+ - test/distributed_commands_on_strings_test.rb
81
+ - test/distributed_commands_on_value_types_test.rb
82
+ - test/distributed_commands_requiring_clustering_test.rb
83
+ - test/distributed_connection_handling_test.rb
84
+ - test/distributed_internals_test.rb
85
+ - test/distributed_key_tags_test.rb
86
+ - test/distributed_persistence_control_commands_test.rb
87
+ - test/distributed_publish_subscribe_test.rb
88
+ - test/distributed_remote_server_control_commands_test.rb
89
+ - test/distributed_sorting_test.rb
90
+ - test/distributed_test.rb
91
+ - test/distributed_transactions_test.rb
92
+ - test/encoding_test.rb
93
+ - test/error_replies_test.rb
94
+ - test/helper.rb
95
+ - test/internals_test.rb
96
+ - test/lint/hashes.rb
97
+ - test/lint/internals.rb
98
+ - test/lint/lists.rb
99
+ - test/lint/sets.rb
100
+ - test/lint/sorted_sets.rb
101
+ - test/lint/strings.rb
102
+ - test/lint/value_types.rb
103
+ - test/persistence_control_commands_test.rb
104
+ - test/pipelining_commands_test.rb
105
+ - test/publish_subscribe_test.rb
106
+ - test/redis_mock.rb
107
+ - test/remote_server_control_commands_test.rb
108
+ - test/sorting_test.rb
109
+ - test/synchrony_driver.rb
110
+ - test/test.conf
111
+ - test/thread_safety_test.rb
112
+ - test/transactions_test.rb
113
+ - test/unknown_commands_test.rb
114
+ - test/url_param_test.rb
48
115
  has_rdoc: true
49
116
  homepage: http://github.com/ezmobius/redis-rb
50
117
  licenses: []
@@ -59,23 +126,65 @@ required_ruby_version: !ruby/object:Gem::Requirement
59
126
  requirements:
60
127
  - - ">="
61
128
  - !ruby/object:Gem::Version
62
- segments:
63
- - 0
64
129
  version: "0"
65
130
  required_rubygems_version: !ruby/object:Gem::Requirement
66
131
  none: false
67
132
  requirements:
68
133
  - - ">="
69
134
  - !ruby/object:Gem::Version
70
- segments:
71
- - 0
72
135
  version: "0"
73
136
  requirements: []
74
137
 
75
- rubyforge_project:
76
- rubygems_version: 1.3.7
138
+ rubyforge_project: redis-rb
139
+ rubygems_version: 1.5.2
77
140
  signing_key:
78
141
  specification_version: 3
79
142
  summary: Ruby client library for Redis, the key value storage server
80
- test_files: []
81
-
143
+ test_files:
144
+ - test/commands_on_hashes_test.rb
145
+ - test/commands_on_lists_test.rb
146
+ - test/commands_on_sets_test.rb
147
+ - test/commands_on_sorted_sets_test.rb
148
+ - test/commands_on_strings_test.rb
149
+ - test/commands_on_value_types_test.rb
150
+ - test/connection_handling_test.rb
151
+ - test/db/.gitignore
152
+ - test/distributed_blocking_commands_test.rb
153
+ - test/distributed_commands_on_hashes_test.rb
154
+ - test/distributed_commands_on_lists_test.rb
155
+ - test/distributed_commands_on_sets_test.rb
156
+ - test/distributed_commands_on_strings_test.rb
157
+ - test/distributed_commands_on_value_types_test.rb
158
+ - test/distributed_commands_requiring_clustering_test.rb
159
+ - test/distributed_connection_handling_test.rb
160
+ - test/distributed_internals_test.rb
161
+ - test/distributed_key_tags_test.rb
162
+ - test/distributed_persistence_control_commands_test.rb
163
+ - test/distributed_publish_subscribe_test.rb
164
+ - test/distributed_remote_server_control_commands_test.rb
165
+ - test/distributed_sorting_test.rb
166
+ - test/distributed_test.rb
167
+ - test/distributed_transactions_test.rb
168
+ - test/encoding_test.rb
169
+ - test/error_replies_test.rb
170
+ - test/helper.rb
171
+ - test/internals_test.rb
172
+ - test/lint/hashes.rb
173
+ - test/lint/internals.rb
174
+ - test/lint/lists.rb
175
+ - test/lint/sets.rb
176
+ - test/lint/sorted_sets.rb
177
+ - test/lint/strings.rb
178
+ - test/lint/value_types.rb
179
+ - test/persistence_control_commands_test.rb
180
+ - test/pipelining_commands_test.rb
181
+ - test/publish_subscribe_test.rb
182
+ - test/redis_mock.rb
183
+ - test/remote_server_control_commands_test.rb
184
+ - test/sorting_test.rb
185
+ - test/synchrony_driver.rb
186
+ - test/test.conf
187
+ - test/thread_safety_test.rb
188
+ - test/transactions_test.rb
189
+ - test/unknown_commands_test.rb
190
+ - test/url_param_test.rb