redis 3.2.0 → 4.6.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.
- checksums.yaml +5 -5
- data/CHANGELOG.md +278 -15
- data/README.md +260 -76
- data/lib/redis/client.rb +239 -115
- data/lib/redis/cluster/command.rb +79 -0
- data/lib/redis/cluster/command_loader.rb +33 -0
- data/lib/redis/cluster/key_slot_converter.rb +72 -0
- data/lib/redis/cluster/node.rb +120 -0
- data/lib/redis/cluster/node_key.rb +31 -0
- data/lib/redis/cluster/node_loader.rb +37 -0
- data/lib/redis/cluster/option.rb +93 -0
- data/lib/redis/cluster/slot.rb +86 -0
- data/lib/redis/cluster/slot_loader.rb +49 -0
- data/lib/redis/cluster.rb +315 -0
- data/lib/redis/commands/bitmaps.rb +63 -0
- data/lib/redis/commands/cluster.rb +45 -0
- data/lib/redis/commands/connection.rb +58 -0
- data/lib/redis/commands/geo.rb +84 -0
- data/lib/redis/commands/hashes.rb +251 -0
- data/lib/redis/commands/hyper_log_log.rb +37 -0
- data/lib/redis/commands/keys.rb +411 -0
- data/lib/redis/commands/lists.rb +289 -0
- data/lib/redis/commands/pubsub.rb +72 -0
- data/lib/redis/commands/scripting.rb +114 -0
- data/lib/redis/commands/server.rb +188 -0
- data/lib/redis/commands/sets.rb +207 -0
- data/lib/redis/commands/sorted_sets.rb +804 -0
- data/lib/redis/commands/streams.rb +382 -0
- data/lib/redis/commands/strings.rb +313 -0
- data/lib/redis/commands/transactions.rb +92 -0
- data/lib/redis/commands.rb +242 -0
- data/lib/redis/connection/command_helper.rb +7 -10
- data/lib/redis/connection/hiredis.rb +11 -6
- data/lib/redis/connection/registry.rb +2 -1
- data/lib/redis/connection/ruby.rb +173 -64
- data/lib/redis/connection/synchrony.rb +32 -8
- data/lib/redis/connection.rb +3 -1
- data/lib/redis/distributed.rb +233 -74
- data/lib/redis/errors.rb +48 -0
- data/lib/redis/hash_ring.rb +30 -72
- data/lib/redis/pipeline.rb +145 -12
- data/lib/redis/subscribe.rb +20 -13
- data/lib/redis/version.rb +3 -1
- data/lib/redis.rb +171 -2476
- metadata +71 -165
- data/.gitignore +0 -15
- data/.travis/Gemfile +0 -11
- data/.travis.yml +0 -54
- data/.yardopts +0 -3
- data/Gemfile +0 -4
- data/Rakefile +0 -68
- data/benchmarking/logging.rb +0 -71
- data/benchmarking/pipeline.rb +0 -51
- data/benchmarking/speed.rb +0 -21
- data/benchmarking/suite.rb +0 -24
- data/benchmarking/worker.rb +0 -71
- data/examples/basic.rb +0 -15
- data/examples/consistency.rb +0 -114
- data/examples/dist_redis.rb +0 -43
- data/examples/incr-decr.rb +0 -17
- data/examples/list.rb +0 -26
- data/examples/pubsub.rb +0 -37
- data/examples/sentinel/sentinel.conf +0 -9
- data/examples/sentinel/start +0 -49
- data/examples/sentinel.rb +0 -41
- data/examples/sets.rb +0 -36
- data/examples/unicorn/config.ru +0 -3
- data/examples/unicorn/unicorn.rb +0 -20
- data/redis.gemspec +0 -43
- data/test/bitpos_test.rb +0 -69
- data/test/blocking_commands_test.rb +0 -42
- data/test/command_map_test.rb +0 -30
- data/test/commands_on_hashes_test.rb +0 -21
- data/test/commands_on_hyper_log_log_test.rb +0 -21
- data/test/commands_on_lists_test.rb +0 -20
- data/test/commands_on_sets_test.rb +0 -77
- data/test/commands_on_sorted_sets_test.rb +0 -123
- data/test/commands_on_strings_test.rb +0 -101
- data/test/commands_on_value_types_test.rb +0 -131
- data/test/connection_handling_test.rb +0 -189
- data/test/db/.gitkeep +0 -0
- data/test/distributed_blocking_commands_test.rb +0 -46
- data/test/distributed_commands_on_hashes_test.rb +0 -10
- data/test/distributed_commands_on_hyper_log_log_test.rb +0 -33
- data/test/distributed_commands_on_lists_test.rb +0 -22
- data/test/distributed_commands_on_sets_test.rb +0 -83
- data/test/distributed_commands_on_sorted_sets_test.rb +0 -18
- data/test/distributed_commands_on_strings_test.rb +0 -59
- data/test/distributed_commands_on_value_types_test.rb +0 -95
- data/test/distributed_commands_requiring_clustering_test.rb +0 -164
- data/test/distributed_connection_handling_test.rb +0 -23
- data/test/distributed_internals_test.rb +0 -70
- data/test/distributed_key_tags_test.rb +0 -52
- data/test/distributed_persistence_control_commands_test.rb +0 -26
- data/test/distributed_publish_subscribe_test.rb +0 -92
- data/test/distributed_remote_server_control_commands_test.rb +0 -66
- data/test/distributed_scripting_test.rb +0 -102
- data/test/distributed_sorting_test.rb +0 -20
- data/test/distributed_test.rb +0 -58
- data/test/distributed_transactions_test.rb +0 -32
- data/test/encoding_test.rb +0 -18
- data/test/error_replies_test.rb +0 -59
- data/test/fork_safety_test.rb +0 -65
- data/test/helper.rb +0 -232
- data/test/helper_test.rb +0 -24
- data/test/internals_test.rb +0 -434
- data/test/lint/blocking_commands.rb +0 -150
- data/test/lint/hashes.rb +0 -162
- data/test/lint/hyper_log_log.rb +0 -60
- data/test/lint/lists.rb +0 -143
- data/test/lint/sets.rb +0 -125
- data/test/lint/sorted_sets.rb +0 -238
- data/test/lint/strings.rb +0 -260
- data/test/lint/value_types.rb +0 -122
- data/test/persistence_control_commands_test.rb +0 -26
- data/test/pipelining_commands_test.rb +0 -242
- data/test/publish_subscribe_test.rb +0 -210
- data/test/remote_server_control_commands_test.rb +0 -117
- data/test/scanning_test.rb +0 -413
- data/test/scripting_test.rb +0 -78
- data/test/sorting_test.rb +0 -59
- data/test/support/connection/hiredis.rb +0 -1
- data/test/support/connection/ruby.rb +0 -1
- data/test/support/connection/synchrony.rb +0 -17
- data/test/support/redis_mock.rb +0 -115
- data/test/support/wire/synchrony.rb +0 -24
- data/test/support/wire/thread.rb +0 -5
- data/test/synchrony_driver.rb +0 -88
- data/test/test.conf +0 -9
- data/test/thread_safety_test.rb +0 -32
- data/test/transactions_test.rb +0 -264
- data/test/unknown_commands_test.rb +0 -14
- data/test/url_param_test.rb +0 -132
@@ -1,150 +0,0 @@
|
|
1
|
-
module Lint
|
2
|
-
|
3
|
-
module BlockingCommands
|
4
|
-
|
5
|
-
def setup
|
6
|
-
super
|
7
|
-
|
8
|
-
r.rpush("{zap}foo", "s1")
|
9
|
-
r.rpush("{zap}foo", "s2")
|
10
|
-
r.rpush("{zap}bar", "s1")
|
11
|
-
r.rpush("{zap}bar", "s2")
|
12
|
-
end
|
13
|
-
|
14
|
-
def to_protocol(obj)
|
15
|
-
case obj
|
16
|
-
when String
|
17
|
-
"$#{obj.length}\r\n#{obj}\r\n"
|
18
|
-
when Array
|
19
|
-
"*#{obj.length}\r\n" + obj.map { |e| to_protocol(e) }.join
|
20
|
-
else
|
21
|
-
fail
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
def mock(options = {}, &blk)
|
26
|
-
commands = {
|
27
|
-
:blpop => lambda do |*args|
|
28
|
-
sleep options[:delay] if options.has_key?(:delay)
|
29
|
-
to_protocol([args.first, args.last])
|
30
|
-
end,
|
31
|
-
:brpop => lambda do |*args|
|
32
|
-
sleep options[:delay] if options.has_key?(:delay)
|
33
|
-
to_protocol([args.first, args.last])
|
34
|
-
end,
|
35
|
-
:brpoplpush => lambda do |*args|
|
36
|
-
sleep options[:delay] if options.has_key?(:delay)
|
37
|
-
to_protocol(args.last)
|
38
|
-
end,
|
39
|
-
}
|
40
|
-
|
41
|
-
redis_mock(commands, &blk)
|
42
|
-
end
|
43
|
-
|
44
|
-
def test_blpop
|
45
|
-
assert_equal ["{zap}foo", "s1"], r.blpop("{zap}foo")
|
46
|
-
assert_equal ["{zap}foo", "s2"], r.blpop(["{zap}foo"])
|
47
|
-
assert_equal ["{zap}bar", "s1"], r.blpop(["{zap}bar", "{zap}foo"])
|
48
|
-
assert_equal ["{zap}bar", "s2"], r.blpop(["{zap}foo", "{zap}bar"])
|
49
|
-
end
|
50
|
-
|
51
|
-
def test_blpop_timeout
|
52
|
-
mock do |r|
|
53
|
-
assert_equal ["{zap}foo", "0"], r.blpop("{zap}foo")
|
54
|
-
assert_equal ["{zap}foo", "1"], r.blpop("{zap}foo", :timeout => 1)
|
55
|
-
end
|
56
|
-
end
|
57
|
-
|
58
|
-
def test_blpop_with_old_prototype
|
59
|
-
assert_equal ["{zap}foo", "s1"], r.blpop("{zap}foo", 0)
|
60
|
-
assert_equal ["{zap}foo", "s2"], r.blpop("{zap}foo", 0)
|
61
|
-
assert_equal ["{zap}bar", "s1"], r.blpop("{zap}bar", "{zap}foo", 0)
|
62
|
-
assert_equal ["{zap}bar", "s2"], r.blpop("{zap}foo", "{zap}bar", 0)
|
63
|
-
end
|
64
|
-
|
65
|
-
def test_blpop_timeout_with_old_prototype
|
66
|
-
mock do |r|
|
67
|
-
assert_equal ["{zap}foo", "0"], r.blpop("{zap}foo", 0)
|
68
|
-
assert_equal ["{zap}foo", "1"], r.blpop("{zap}foo", 1)
|
69
|
-
end
|
70
|
-
end
|
71
|
-
|
72
|
-
def test_brpop
|
73
|
-
assert_equal ["{zap}foo", "s2"], r.brpop("{zap}foo")
|
74
|
-
assert_equal ["{zap}foo", "s1"], r.brpop(["{zap}foo"])
|
75
|
-
assert_equal ["{zap}bar", "s2"], r.brpop(["{zap}bar", "{zap}foo"])
|
76
|
-
assert_equal ["{zap}bar", "s1"], r.brpop(["{zap}foo", "{zap}bar"])
|
77
|
-
end
|
78
|
-
|
79
|
-
def test_brpop_timeout
|
80
|
-
mock do |r|
|
81
|
-
assert_equal ["{zap}foo", "0"], r.brpop("{zap}foo")
|
82
|
-
assert_equal ["{zap}foo", "1"], r.brpop("{zap}foo", :timeout => 1)
|
83
|
-
end
|
84
|
-
end
|
85
|
-
|
86
|
-
def test_brpop_with_old_prototype
|
87
|
-
assert_equal ["{zap}foo", "s2"], r.brpop("{zap}foo", 0)
|
88
|
-
assert_equal ["{zap}foo", "s1"], r.brpop("{zap}foo", 0)
|
89
|
-
assert_equal ["{zap}bar", "s2"], r.brpop("{zap}bar", "{zap}foo", 0)
|
90
|
-
assert_equal ["{zap}bar", "s1"], r.brpop("{zap}foo", "{zap}bar", 0)
|
91
|
-
end
|
92
|
-
|
93
|
-
def test_brpop_timeout_with_old_prototype
|
94
|
-
mock do |r|
|
95
|
-
assert_equal ["{zap}foo", "0"], r.brpop("{zap}foo", 0)
|
96
|
-
assert_equal ["{zap}foo", "1"], r.brpop("{zap}foo", 1)
|
97
|
-
end
|
98
|
-
end
|
99
|
-
|
100
|
-
def test_brpoplpush
|
101
|
-
assert_equal "s2", r.brpoplpush("{zap}foo", "{zap}qux")
|
102
|
-
assert_equal ["s2"], r.lrange("{zap}qux", 0, -1)
|
103
|
-
end
|
104
|
-
|
105
|
-
def test_brpoplpush_timeout
|
106
|
-
mock do |r|
|
107
|
-
assert_equal "0", r.brpoplpush("{zap}foo", "{zap}bar")
|
108
|
-
assert_equal "1", r.brpoplpush("{zap}foo", "{zap}bar", :timeout => 1)
|
109
|
-
end
|
110
|
-
end
|
111
|
-
|
112
|
-
def test_brpoplpush_with_old_prototype
|
113
|
-
assert_equal "s2", r.brpoplpush("{zap}foo", "{zap}qux", 0)
|
114
|
-
assert_equal ["s2"], r.lrange("{zap}qux", 0, -1)
|
115
|
-
end
|
116
|
-
|
117
|
-
def test_brpoplpush_timeout_with_old_prototype
|
118
|
-
mock do |r|
|
119
|
-
assert_equal "0", r.brpoplpush("{zap}foo", "{zap}bar", 0)
|
120
|
-
assert_equal "1", r.brpoplpush("{zap}foo", "{zap}bar", 1)
|
121
|
-
end
|
122
|
-
end
|
123
|
-
|
124
|
-
driver(:ruby, :hiredis) do
|
125
|
-
def test_blpop_socket_timeout
|
126
|
-
mock(:delay => 1 + OPTIONS[:timeout] * 2) do |r|
|
127
|
-
assert_raises(Redis::TimeoutError) do
|
128
|
-
r.blpop("{zap}foo", :timeout => 1)
|
129
|
-
end
|
130
|
-
end
|
131
|
-
end
|
132
|
-
|
133
|
-
def test_brpop_socket_timeout
|
134
|
-
mock(:delay => 1 + OPTIONS[:timeout] * 2) do |r|
|
135
|
-
assert_raises(Redis::TimeoutError) do
|
136
|
-
r.brpop("{zap}foo", :timeout => 1)
|
137
|
-
end
|
138
|
-
end
|
139
|
-
end
|
140
|
-
|
141
|
-
def test_brpoplpush_socket_timeout
|
142
|
-
mock(:delay => 1 + OPTIONS[:timeout] * 2) do |r|
|
143
|
-
assert_raises(Redis::TimeoutError) do
|
144
|
-
r.brpoplpush("{zap}foo", "{zap}bar", :timeout => 1)
|
145
|
-
end
|
146
|
-
end
|
147
|
-
end
|
148
|
-
end
|
149
|
-
end
|
150
|
-
end
|
data/test/lint/hashes.rb
DELETED
@@ -1,162 +0,0 @@
|
|
1
|
-
module Lint
|
2
|
-
|
3
|
-
module Hashes
|
4
|
-
|
5
|
-
def test_hset_and_hget
|
6
|
-
r.hset("foo", "f1", "s1")
|
7
|
-
|
8
|
-
assert_equal "s1", r.hget("foo", "f1")
|
9
|
-
end
|
10
|
-
|
11
|
-
def test_hsetnx
|
12
|
-
r.hset("foo", "f1", "s1")
|
13
|
-
r.hsetnx("foo", "f1", "s2")
|
14
|
-
|
15
|
-
assert_equal "s1", r.hget("foo", "f1")
|
16
|
-
|
17
|
-
r.del("foo")
|
18
|
-
r.hsetnx("foo", "f1", "s2")
|
19
|
-
|
20
|
-
assert_equal "s2", r.hget("foo", "f1")
|
21
|
-
end
|
22
|
-
|
23
|
-
def test_hdel
|
24
|
-
r.hset("foo", "f1", "s1")
|
25
|
-
|
26
|
-
assert_equal "s1", r.hget("foo", "f1")
|
27
|
-
|
28
|
-
assert_equal 1, r.hdel("foo", "f1")
|
29
|
-
|
30
|
-
assert_equal nil, r.hget("foo", "f1")
|
31
|
-
end
|
32
|
-
|
33
|
-
def test_variadic_hdel
|
34
|
-
target_version "2.3.9" do
|
35
|
-
r.hset("foo", "f1", "s1")
|
36
|
-
r.hset("foo", "f2", "s2")
|
37
|
-
|
38
|
-
assert_equal "s1", r.hget("foo", "f1")
|
39
|
-
assert_equal "s2", r.hget("foo", "f2")
|
40
|
-
|
41
|
-
assert_equal 2, r.hdel("foo", ["f1", "f2"])
|
42
|
-
|
43
|
-
assert_equal nil, r.hget("foo", "f1")
|
44
|
-
assert_equal nil, r.hget("foo", "f2")
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
def test_hexists
|
49
|
-
assert_equal false, r.hexists("foo", "f1")
|
50
|
-
|
51
|
-
r.hset("foo", "f1", "s1")
|
52
|
-
|
53
|
-
assert r.hexists("foo", "f1")
|
54
|
-
end
|
55
|
-
|
56
|
-
def test_hlen
|
57
|
-
assert_equal 0, r.hlen("foo")
|
58
|
-
|
59
|
-
r.hset("foo", "f1", "s1")
|
60
|
-
|
61
|
-
assert_equal 1, r.hlen("foo")
|
62
|
-
|
63
|
-
r.hset("foo", "f2", "s2")
|
64
|
-
|
65
|
-
assert_equal 2, r.hlen("foo")
|
66
|
-
end
|
67
|
-
|
68
|
-
def test_hkeys
|
69
|
-
assert_equal [], r.hkeys("foo")
|
70
|
-
|
71
|
-
r.hset("foo", "f1", "s1")
|
72
|
-
r.hset("foo", "f2", "s2")
|
73
|
-
|
74
|
-
assert_equal ["f1", "f2"], r.hkeys("foo")
|
75
|
-
end
|
76
|
-
|
77
|
-
def test_hvals
|
78
|
-
assert_equal [], r.hvals("foo")
|
79
|
-
|
80
|
-
r.hset("foo", "f1", "s1")
|
81
|
-
r.hset("foo", "f2", "s2")
|
82
|
-
|
83
|
-
assert_equal ["s1", "s2"], r.hvals("foo")
|
84
|
-
end
|
85
|
-
|
86
|
-
def test_hgetall
|
87
|
-
assert({} == r.hgetall("foo"))
|
88
|
-
|
89
|
-
r.hset("foo", "f1", "s1")
|
90
|
-
r.hset("foo", "f2", "s2")
|
91
|
-
|
92
|
-
assert({"f1" => "s1", "f2" => "s2"} == r.hgetall("foo"))
|
93
|
-
end
|
94
|
-
|
95
|
-
def test_hmset
|
96
|
-
r.hmset("hash", "foo1", "bar1", "foo2", "bar2")
|
97
|
-
|
98
|
-
assert_equal "bar1", r.hget("hash", "foo1")
|
99
|
-
assert_equal "bar2", r.hget("hash", "foo2")
|
100
|
-
end
|
101
|
-
|
102
|
-
def test_hmset_with_invalid_arguments
|
103
|
-
assert_raise(Redis::CommandError) do
|
104
|
-
r.hmset("hash", "foo1", "bar1", "foo2", "bar2", "foo3")
|
105
|
-
end
|
106
|
-
end
|
107
|
-
|
108
|
-
def test_mapped_hmset
|
109
|
-
r.mapped_hmset("foo", :f1 => "s1", :f2 => "s2")
|
110
|
-
|
111
|
-
assert_equal "s1", r.hget("foo", "f1")
|
112
|
-
assert_equal "s2", r.hget("foo", "f2")
|
113
|
-
end
|
114
|
-
|
115
|
-
def test_hmget
|
116
|
-
r.hset("foo", "f1", "s1")
|
117
|
-
r.hset("foo", "f2", "s2")
|
118
|
-
r.hset("foo", "f3", "s3")
|
119
|
-
|
120
|
-
assert_equal ["s2", "s3"], r.hmget("foo", "f2", "f3")
|
121
|
-
end
|
122
|
-
|
123
|
-
def test_hmget_mapped
|
124
|
-
r.hset("foo", "f1", "s1")
|
125
|
-
r.hset("foo", "f2", "s2")
|
126
|
-
r.hset("foo", "f3", "s3")
|
127
|
-
|
128
|
-
assert({"f1" => "s1"} == r.mapped_hmget("foo", "f1"))
|
129
|
-
assert({"f1" => "s1", "f2" => "s2"} == r.mapped_hmget("foo", "f1", "f2"))
|
130
|
-
end
|
131
|
-
|
132
|
-
def test_hincrby
|
133
|
-
r.hincrby("foo", "f1", 1)
|
134
|
-
|
135
|
-
assert_equal "1", r.hget("foo", "f1")
|
136
|
-
|
137
|
-
r.hincrby("foo", "f1", 2)
|
138
|
-
|
139
|
-
assert_equal "3", r.hget("foo", "f1")
|
140
|
-
|
141
|
-
r.hincrby("foo", "f1", -1)
|
142
|
-
|
143
|
-
assert_equal "2", r.hget("foo", "f1")
|
144
|
-
end
|
145
|
-
|
146
|
-
def test_hincrbyfloat
|
147
|
-
target_version "2.5.4" do
|
148
|
-
r.hincrbyfloat("foo", "f1", 1.23)
|
149
|
-
|
150
|
-
assert_equal "1.23", r.hget("foo", "f1")
|
151
|
-
|
152
|
-
r.hincrbyfloat("foo", "f1", 0.77)
|
153
|
-
|
154
|
-
assert_equal "2", r.hget("foo", "f1")
|
155
|
-
|
156
|
-
r.hincrbyfloat("foo", "f1", -0.1)
|
157
|
-
|
158
|
-
assert_equal "1.9", r.hget("foo", "f1")
|
159
|
-
end
|
160
|
-
end
|
161
|
-
end
|
162
|
-
end
|
data/test/lint/hyper_log_log.rb
DELETED
@@ -1,60 +0,0 @@
|
|
1
|
-
module Lint
|
2
|
-
|
3
|
-
module HyperLogLog
|
4
|
-
|
5
|
-
def test_pfadd
|
6
|
-
target_version "2.8.9" do
|
7
|
-
assert_equal true, r.pfadd("foo", "s1")
|
8
|
-
assert_equal true, r.pfadd("foo", "s2")
|
9
|
-
assert_equal false, r.pfadd("foo", "s1")
|
10
|
-
|
11
|
-
assert_equal 2, r.pfcount("foo")
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
def test_variadic_pfadd
|
16
|
-
target_version "2.8.9" do
|
17
|
-
assert_equal true, r.pfadd("foo", ["s1", "s2"])
|
18
|
-
assert_equal true, r.pfadd("foo", ["s1", "s2", "s3"])
|
19
|
-
|
20
|
-
assert_equal 3, r.pfcount("foo")
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
def test_pfcount
|
25
|
-
target_version "2.8.9" do
|
26
|
-
assert_equal 0, r.pfcount("foo")
|
27
|
-
|
28
|
-
assert_equal true, r.pfadd("foo", "s1")
|
29
|
-
|
30
|
-
assert_equal 1, r.pfcount("foo")
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
def test_variadic_pfcount
|
35
|
-
target_version "2.8.9" do
|
36
|
-
assert_equal 0, r.pfcount(["{1}foo", "{1}bar"])
|
37
|
-
|
38
|
-
assert_equal true, r.pfadd("{1}foo", "s1")
|
39
|
-
assert_equal true, r.pfadd("{1}bar", "s1")
|
40
|
-
assert_equal true, r.pfadd("{1}bar", "s2")
|
41
|
-
|
42
|
-
assert_equal 2, r.pfcount("{1}foo", "{1}bar")
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
def test_variadic_pfcount_expanded
|
47
|
-
target_version "2.8.9" do
|
48
|
-
assert_equal 0, r.pfcount("{1}foo", "{1}bar")
|
49
|
-
|
50
|
-
assert_equal true, r.pfadd("{1}foo", "s1")
|
51
|
-
assert_equal true, r.pfadd("{1}bar", "s1")
|
52
|
-
assert_equal true, r.pfadd("{1}bar", "s2")
|
53
|
-
|
54
|
-
assert_equal 2, r.pfcount("{1}foo", "{1}bar")
|
55
|
-
end
|
56
|
-
end
|
57
|
-
|
58
|
-
end
|
59
|
-
|
60
|
-
end
|
data/test/lint/lists.rb
DELETED
@@ -1,143 +0,0 @@
|
|
1
|
-
module Lint
|
2
|
-
|
3
|
-
module Lists
|
4
|
-
|
5
|
-
def test_lpush
|
6
|
-
r.lpush "foo", "s1"
|
7
|
-
r.lpush "foo", "s2"
|
8
|
-
|
9
|
-
assert_equal 2, r.llen("foo")
|
10
|
-
assert_equal "s2", r.lpop("foo")
|
11
|
-
end
|
12
|
-
|
13
|
-
def test_variadic_lpush
|
14
|
-
target_version "2.3.9" do # 2.4-rc6
|
15
|
-
assert_equal 3, r.lpush("foo", ["s1", "s2", "s3"])
|
16
|
-
assert_equal 3, r.llen("foo")
|
17
|
-
assert_equal "s3", r.lpop("foo")
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
def test_lpushx
|
22
|
-
r.lpushx "foo", "s1"
|
23
|
-
r.lpush "foo", "s2"
|
24
|
-
r.lpushx "foo", "s3"
|
25
|
-
|
26
|
-
assert_equal 2, r.llen("foo")
|
27
|
-
assert_equal ["s3", "s2"], r.lrange("foo", 0, -1)
|
28
|
-
end
|
29
|
-
|
30
|
-
def test_rpush
|
31
|
-
r.rpush "foo", "s1"
|
32
|
-
r.rpush "foo", "s2"
|
33
|
-
|
34
|
-
assert_equal 2, r.llen("foo")
|
35
|
-
assert_equal "s2", r.rpop("foo")
|
36
|
-
end
|
37
|
-
|
38
|
-
def test_variadic_rpush
|
39
|
-
target_version "2.3.9" do # 2.4-rc6
|
40
|
-
assert_equal 3, r.rpush("foo", ["s1", "s2", "s3"])
|
41
|
-
assert_equal 3, r.llen("foo")
|
42
|
-
assert_equal "s3", r.rpop("foo")
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
def test_rpushx
|
47
|
-
r.rpushx "foo", "s1"
|
48
|
-
r.rpush "foo", "s2"
|
49
|
-
r.rpushx "foo", "s3"
|
50
|
-
|
51
|
-
assert_equal 2, r.llen("foo")
|
52
|
-
assert_equal ["s2", "s3"], r.lrange("foo", 0, -1)
|
53
|
-
end
|
54
|
-
|
55
|
-
def test_llen
|
56
|
-
r.rpush "foo", "s1"
|
57
|
-
r.rpush "foo", "s2"
|
58
|
-
|
59
|
-
assert_equal 2, r.llen("foo")
|
60
|
-
end
|
61
|
-
|
62
|
-
def test_lrange
|
63
|
-
r.rpush "foo", "s1"
|
64
|
-
r.rpush "foo", "s2"
|
65
|
-
r.rpush "foo", "s3"
|
66
|
-
|
67
|
-
assert_equal ["s2", "s3"], r.lrange("foo", 1, -1)
|
68
|
-
assert_equal ["s1", "s2"], r.lrange("foo", 0, 1)
|
69
|
-
|
70
|
-
assert_equal [], r.lrange("bar", 0, -1)
|
71
|
-
end
|
72
|
-
|
73
|
-
def test_ltrim
|
74
|
-
r.rpush "foo", "s1"
|
75
|
-
r.rpush "foo", "s2"
|
76
|
-
r.rpush "foo", "s3"
|
77
|
-
|
78
|
-
r.ltrim "foo", 0, 1
|
79
|
-
|
80
|
-
assert_equal 2, r.llen("foo")
|
81
|
-
assert_equal ["s1", "s2"], r.lrange("foo", 0, -1)
|
82
|
-
end
|
83
|
-
|
84
|
-
def test_lindex
|
85
|
-
r.rpush "foo", "s1"
|
86
|
-
r.rpush "foo", "s2"
|
87
|
-
|
88
|
-
assert_equal "s1", r.lindex("foo", 0)
|
89
|
-
assert_equal "s2", r.lindex("foo", 1)
|
90
|
-
end
|
91
|
-
|
92
|
-
def test_lset
|
93
|
-
r.rpush "foo", "s1"
|
94
|
-
r.rpush "foo", "s2"
|
95
|
-
|
96
|
-
assert_equal "s2", r.lindex("foo", 1)
|
97
|
-
assert r.lset("foo", 1, "s3")
|
98
|
-
assert_equal "s3", r.lindex("foo", 1)
|
99
|
-
|
100
|
-
assert_raise Redis::CommandError do
|
101
|
-
r.lset("foo", 4, "s3")
|
102
|
-
end
|
103
|
-
end
|
104
|
-
|
105
|
-
def test_lrem
|
106
|
-
r.rpush "foo", "s1"
|
107
|
-
r.rpush "foo", "s2"
|
108
|
-
|
109
|
-
assert_equal 1, r.lrem("foo", 1, "s1")
|
110
|
-
assert_equal ["s2"], r.lrange("foo", 0, -1)
|
111
|
-
end
|
112
|
-
|
113
|
-
def test_lpop
|
114
|
-
r.rpush "foo", "s1"
|
115
|
-
r.rpush "foo", "s2"
|
116
|
-
|
117
|
-
assert_equal 2, r.llen("foo")
|
118
|
-
assert_equal "s1", r.lpop("foo")
|
119
|
-
assert_equal 1, r.llen("foo")
|
120
|
-
end
|
121
|
-
|
122
|
-
def test_rpop
|
123
|
-
r.rpush "foo", "s1"
|
124
|
-
r.rpush "foo", "s2"
|
125
|
-
|
126
|
-
assert_equal 2, r.llen("foo")
|
127
|
-
assert_equal "s2", r.rpop("foo")
|
128
|
-
assert_equal 1, r.llen("foo")
|
129
|
-
end
|
130
|
-
|
131
|
-
def test_linsert
|
132
|
-
r.rpush "foo", "s1"
|
133
|
-
r.rpush "foo", "s3"
|
134
|
-
r.linsert "foo", :before, "s3", "s2"
|
135
|
-
|
136
|
-
assert_equal ["s1", "s2", "s3"], r.lrange("foo", 0, -1)
|
137
|
-
|
138
|
-
assert_raise(Redis::CommandError) do
|
139
|
-
r.linsert "foo", :anywhere, "s3", "s2"
|
140
|
-
end
|
141
|
-
end
|
142
|
-
end
|
143
|
-
end
|
data/test/lint/sets.rb
DELETED
@@ -1,125 +0,0 @@
|
|
1
|
-
module Lint
|
2
|
-
|
3
|
-
module Sets
|
4
|
-
|
5
|
-
def test_sadd
|
6
|
-
assert_equal true, r.sadd("foo", "s1")
|
7
|
-
assert_equal true, r.sadd("foo", "s2")
|
8
|
-
assert_equal false, r.sadd("foo", "s1")
|
9
|
-
|
10
|
-
assert_equal ["s1", "s2"], r.smembers("foo").sort
|
11
|
-
end
|
12
|
-
|
13
|
-
def test_variadic_sadd
|
14
|
-
target_version "2.3.9" do # 2.4-rc6
|
15
|
-
assert_equal 2, r.sadd("foo", ["s1", "s2"])
|
16
|
-
assert_equal 1, r.sadd("foo", ["s1", "s2", "s3"])
|
17
|
-
|
18
|
-
assert_equal ["s1", "s2", "s3"], r.smembers("foo").sort
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
def test_srem
|
23
|
-
r.sadd("foo", "s1")
|
24
|
-
r.sadd("foo", "s2")
|
25
|
-
|
26
|
-
assert_equal true, r.srem("foo", "s1")
|
27
|
-
assert_equal false, r.srem("foo", "s3")
|
28
|
-
|
29
|
-
assert_equal ["s2"], r.smembers("foo")
|
30
|
-
end
|
31
|
-
|
32
|
-
def test_variadic_srem
|
33
|
-
target_version "2.3.9" do # 2.4-rc6
|
34
|
-
r.sadd("foo", "s1")
|
35
|
-
r.sadd("foo", "s2")
|
36
|
-
r.sadd("foo", "s3")
|
37
|
-
|
38
|
-
assert_equal 1, r.srem("foo", ["s1", "aaa"])
|
39
|
-
assert_equal 0, r.srem("foo", ["bbb", "ccc" "ddd"])
|
40
|
-
assert_equal 1, r.srem("foo", ["eee", "s3"])
|
41
|
-
|
42
|
-
assert_equal ["s2"], r.smembers("foo")
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
def test_spop
|
47
|
-
r.sadd "foo", "s1"
|
48
|
-
r.sadd "foo", "s2"
|
49
|
-
|
50
|
-
assert ["s1", "s2"].include?(r.spop("foo"))
|
51
|
-
assert ["s1", "s2"].include?(r.spop("foo"))
|
52
|
-
assert_equal nil, r.spop("foo")
|
53
|
-
end
|
54
|
-
|
55
|
-
def test_scard
|
56
|
-
assert_equal 0, r.scard("foo")
|
57
|
-
|
58
|
-
r.sadd "foo", "s1"
|
59
|
-
|
60
|
-
assert_equal 1, r.scard("foo")
|
61
|
-
|
62
|
-
r.sadd "foo", "s2"
|
63
|
-
|
64
|
-
assert_equal 2, r.scard("foo")
|
65
|
-
end
|
66
|
-
|
67
|
-
def test_sismember
|
68
|
-
assert_equal false, r.sismember("foo", "s1")
|
69
|
-
|
70
|
-
r.sadd "foo", "s1"
|
71
|
-
|
72
|
-
assert_equal true, r.sismember("foo", "s1")
|
73
|
-
assert_equal false, r.sismember("foo", "s2")
|
74
|
-
end
|
75
|
-
|
76
|
-
def test_smembers
|
77
|
-
assert_equal [], r.smembers("foo")
|
78
|
-
|
79
|
-
r.sadd "foo", "s1"
|
80
|
-
r.sadd "foo", "s2"
|
81
|
-
|
82
|
-
assert_equal ["s1", "s2"], r.smembers("foo").sort
|
83
|
-
end
|
84
|
-
|
85
|
-
def test_srandmember
|
86
|
-
r.sadd "foo", "s1"
|
87
|
-
r.sadd "foo", "s2"
|
88
|
-
|
89
|
-
4.times do
|
90
|
-
assert ["s1", "s2"].include?(r.srandmember("foo"))
|
91
|
-
end
|
92
|
-
|
93
|
-
assert_equal 2, r.scard("foo")
|
94
|
-
end
|
95
|
-
|
96
|
-
def test_srandmember_with_positive_count
|
97
|
-
r.sadd "foo", "s1"
|
98
|
-
r.sadd "foo", "s2"
|
99
|
-
r.sadd "foo", "s3"
|
100
|
-
r.sadd "foo", "s4"
|
101
|
-
|
102
|
-
4.times do
|
103
|
-
assert !(["s1", "s2", "s3", "s4"] & r.srandmember("foo", 3)).empty?
|
104
|
-
|
105
|
-
assert_equal 3, r.srandmember("foo", 3).size
|
106
|
-
end
|
107
|
-
|
108
|
-
assert_equal 4, r.scard("foo")
|
109
|
-
end
|
110
|
-
|
111
|
-
def test_srandmember_with_negative_count
|
112
|
-
r.sadd "foo", "s1"
|
113
|
-
r.sadd "foo", "s2"
|
114
|
-
r.sadd "foo", "s3"
|
115
|
-
r.sadd "foo", "s4"
|
116
|
-
|
117
|
-
4.times do
|
118
|
-
assert !(["s1", "s2", "s3", "s4"] & r.srandmember("foo", -6)).empty?
|
119
|
-
assert_equal 6, r.srandmember("foo", -6).size
|
120
|
-
end
|
121
|
-
|
122
|
-
assert_equal 4, r.scard("foo")
|
123
|
-
end
|
124
|
-
end
|
125
|
-
end
|