redis_migrator 0.0.1 → 0.1.1
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 +7 -0
- data/.gitignore +1 -0
- data/Gemfile +3 -0
- data/README.md +13 -1
- data/Rakefile +6 -0
- data/lib/redis_migrator/redis_helper.rb +5 -36
- data/lib/redis_migrator/redis_native_migrator.rb +27 -0
- data/lib/redis_migrator/redis_pipe_migrator.rb +66 -0
- data/lib/redis_migrator/redis_populator.rb +1 -1
- data/lib/redis_migrator.rb +19 -20
- data/migrator_benchmark.rb +1 -2
- data/redis_migrator.gemspec +8 -4
- data/spec/different_redis_type_migrator.rb +67 -0
- data/spec/pretested_migrator.rb +47 -0
- data/spec/redis_migrator_spec.rb +41 -0
- data/spec/redis_native_migrator_spec.rb +44 -0
- data/spec/redis_pipe_migrator_spec.rb +51 -0
- data/spec/shared_hosts_context.rb +10 -0
- data/spec/spec_helper.rb +9 -7
- metadata +85 -49
- data/spec/migrator_spec.rb +0 -63
- data/spec/mock_redis/lib/mock_redis/assertions.rb +0 -13
- data/spec/mock_redis/lib/mock_redis/database.rb +0 -432
- data/spec/mock_redis/lib/mock_redis/distributed.rb +0 -6
- data/spec/mock_redis/lib/mock_redis/exceptions.rb +0 -3
- data/spec/mock_redis/lib/mock_redis/expire_wrapper.rb +0 -25
- data/spec/mock_redis/lib/mock_redis/hash_methods.rb +0 -118
- data/spec/mock_redis/lib/mock_redis/list_methods.rb +0 -187
- data/spec/mock_redis/lib/mock_redis/multi_db_wrapper.rb +0 -86
- data/spec/mock_redis/lib/mock_redis/set_methods.rb +0 -126
- data/spec/mock_redis/lib/mock_redis/string_methods.rb +0 -203
- data/spec/mock_redis/lib/mock_redis/transaction_wrapper.rb +0 -80
- data/spec/mock_redis/lib/mock_redis/undef_redis_methods.rb +0 -11
- data/spec/mock_redis/lib/mock_redis/utility_methods.rb +0 -25
- data/spec/mock_redis/lib/mock_redis/version.rb +0 -3
- data/spec/mock_redis/lib/mock_redis/zset.rb +0 -110
- data/spec/mock_redis/lib/mock_redis/zset_methods.rb +0 -210
- data/spec/mock_redis/lib/mock_redis.rb +0 -119
- data/spec/redis_helper_spec.rb +0 -58
@@ -1,119 +0,0 @@
|
|
1
|
-
require 'set'
|
2
|
-
|
3
|
-
require 'mock_redis/assertions'
|
4
|
-
require 'mock_redis/database'
|
5
|
-
require 'mock_redis/distributed'
|
6
|
-
require 'mock_redis/expire_wrapper'
|
7
|
-
require 'mock_redis/multi_db_wrapper'
|
8
|
-
require 'mock_redis/transaction_wrapper'
|
9
|
-
require 'mock_redis/undef_redis_methods'
|
10
|
-
|
11
|
-
class MockRedis
|
12
|
-
include UndefRedisMethods
|
13
|
-
|
14
|
-
attr_reader :options
|
15
|
-
|
16
|
-
DEFAULTS = {
|
17
|
-
:scheme => "redis",
|
18
|
-
:host => "127.0.0.1",
|
19
|
-
:port => 6379,
|
20
|
-
:path => nil,
|
21
|
-
:timeout => 5.0,
|
22
|
-
:password => nil,
|
23
|
-
:db => 0,
|
24
|
-
}
|
25
|
-
|
26
|
-
def initialize(*args)
|
27
|
-
@options = _parse_options(args.first)
|
28
|
-
|
29
|
-
@db = TransactionWrapper.new(
|
30
|
-
ExpireWrapper.new(
|
31
|
-
MultiDbWrapper.new(
|
32
|
-
Database.new(*args))))
|
33
|
-
end
|
34
|
-
|
35
|
-
def id
|
36
|
-
"redis://#{self.host}:#{self.port}/#{self.db}"
|
37
|
-
end
|
38
|
-
|
39
|
-
def call(command, &block)
|
40
|
-
self.send(*command)
|
41
|
-
end
|
42
|
-
|
43
|
-
def host
|
44
|
-
self.options[:host]
|
45
|
-
end
|
46
|
-
|
47
|
-
def port
|
48
|
-
self.options[:port]
|
49
|
-
end
|
50
|
-
|
51
|
-
def db
|
52
|
-
self.options[:db]
|
53
|
-
end
|
54
|
-
|
55
|
-
def client
|
56
|
-
self
|
57
|
-
end
|
58
|
-
|
59
|
-
def respond_to?(method, include_private=false)
|
60
|
-
super || @db.respond_to?(method, include_private)
|
61
|
-
end
|
62
|
-
|
63
|
-
def method_missing(method, *args, &block)
|
64
|
-
@db.send(method, *args, &block)
|
65
|
-
end
|
66
|
-
|
67
|
-
def initialize_copy(source)
|
68
|
-
super
|
69
|
-
@db = @db.clone
|
70
|
-
end
|
71
|
-
|
72
|
-
|
73
|
-
protected
|
74
|
-
|
75
|
-
def _parse_options(options)
|
76
|
-
return {} if options.nil?
|
77
|
-
|
78
|
-
defaults = DEFAULTS.dup
|
79
|
-
|
80
|
-
url = options[:url] || ENV["REDIS_URL"]
|
81
|
-
|
82
|
-
# Override defaults from URL if given
|
83
|
-
if url
|
84
|
-
require "uri"
|
85
|
-
|
86
|
-
uri = URI(url)
|
87
|
-
|
88
|
-
if uri.scheme == "unix"
|
89
|
-
defaults[:path] = uri.path
|
90
|
-
else
|
91
|
-
# Require the URL to have at least a host
|
92
|
-
raise ArgumentError, "invalid url" unless uri.host
|
93
|
-
|
94
|
-
defaults[:scheme] = uri.scheme
|
95
|
-
defaults[:host] = uri.host
|
96
|
-
defaults[:port] = uri.port if uri.port
|
97
|
-
defaults[:password] = uri.password if uri.password
|
98
|
-
defaults[:db] = uri.path[1..-1].to_i if uri.path
|
99
|
-
end
|
100
|
-
end
|
101
|
-
|
102
|
-
options = defaults.merge(options)
|
103
|
-
|
104
|
-
if options[:path]
|
105
|
-
options[:scheme] = "unix"
|
106
|
-
options.delete(:host)
|
107
|
-
options.delete(:port)
|
108
|
-
else
|
109
|
-
options[:host] = options[:host].to_s
|
110
|
-
options[:port] = options[:port].to_i
|
111
|
-
end
|
112
|
-
|
113
|
-
options[:timeout] = options[:timeout].to_f
|
114
|
-
options[:db] = options[:db].to_i
|
115
|
-
|
116
|
-
options
|
117
|
-
end
|
118
|
-
|
119
|
-
end
|
data/spec/redis_helper_spec.rb
DELETED
@@ -1,58 +0,0 @@
|
|
1
|
-
describe Redis::Helper do
|
2
|
-
before do
|
3
|
-
Redis.should_receive(:new).any_number_of_times {|options|
|
4
|
-
MockRedis.new(options)
|
5
|
-
}
|
6
|
-
|
7
|
-
@migrator = Redis::Migrator.new(["redis://localhost:6379"],
|
8
|
-
["redis://localhost:6377"])
|
9
|
-
|
10
|
-
@r1 = @migrator.old_cluster
|
11
|
-
@r2 = @migrator.new_cluster
|
12
|
-
@migrator.stub!(:redis).and_return(@r1)
|
13
|
-
@pipe = PipeMock.new(@r2)
|
14
|
-
end
|
15
|
-
|
16
|
-
it "should copy a string" do
|
17
|
-
@r1.set("a", "some_string")
|
18
|
-
@migrator.copy_string(@pipe, "a")
|
19
|
-
|
20
|
-
@r2.get("a").should == "some_string"
|
21
|
-
end
|
22
|
-
|
23
|
-
it "should copy a hash" do
|
24
|
-
@r1.hmset("myhash",
|
25
|
-
"first_name", "James",
|
26
|
-
"last_name", "Randi",
|
27
|
-
"age", "83")
|
28
|
-
|
29
|
-
@migrator.copy_hash(@pipe, "myhash")
|
30
|
-
|
31
|
-
@r2.hgetall("myhash").should == {"first_name" => "James", "last_name" => "Randi", "age" => "83"}
|
32
|
-
end
|
33
|
-
|
34
|
-
it "should copy a list" do
|
35
|
-
('a'..'z').to_a.each { |val| @r1.lpush("mylist", val) }
|
36
|
-
|
37
|
-
@migrator.copy_list(@pipe, "mylist")
|
38
|
-
|
39
|
-
@r2.lrange("mylist", 0, -1).should == ('a'..'z').to_a
|
40
|
-
end
|
41
|
-
|
42
|
-
it "should copy a set" do
|
43
|
-
('a'..'z').to_a.each { |val| @r1.sadd("myset", val) }
|
44
|
-
|
45
|
-
@migrator.copy_set(@pipe, "myset")
|
46
|
-
|
47
|
-
@r2.smembers("myset").should == ('a'..'z').to_a
|
48
|
-
end
|
49
|
-
|
50
|
-
it "should copy zset" do
|
51
|
-
('a'..'z').to_a.each { |val| @r1.zadd("myzset", rand(100), val) }
|
52
|
-
|
53
|
-
@migrator.copy_zset(@pipe, "myzset")
|
54
|
-
|
55
|
-
@r2.zrange("myzset", 0, -1, :with_scores => true).sort.should == @r1.zrange("myzset", 0, -1, :with_scores => true).sort
|
56
|
-
end
|
57
|
-
|
58
|
-
end
|