xunch 0.0.9.5 → 0.0.10

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7d71ea4d65a535bdd4cf5d68b525113447115087
4
- data.tar.gz: 9c09bf49f8c5052747ef5e3a4e8e449c0369f73f
3
+ metadata.gz: 2b9efd0dbc507a067990707959bf7040723501b2
4
+ data.tar.gz: 6db627302cd36ebb8c6920aeaef910c1bb3058ef
5
5
  SHA512:
6
- metadata.gz: 8a6b4f50eece01da3f957083deb7f46bdc641fbafdcc9a6e6867959e230750a649619acdce89a849094a739f1b79a3788df13119438b87ef1e57322512e891b3
7
- data.tar.gz: fd6e3390912bc8e8b9be1bc4371bd4341a1748ade6814c0d205a2979ff074414f33b4b031fb799b0f2ace20d2473ae992f5abcc79f1460871dca4c83a27de454
6
+ metadata.gz: 2c0446b02a16207ac5fce8dc943052b5bfa6475eea11d45bb656e6cea6a72db7b624c506f3e39615ae9dfbd89501b98844955539c6d7ddf29a7632d6d9665303
7
+ data.tar.gz: d5b99e32c4a5e9551983d80b6c4462115bdd0efed10bab866fa8fa8cf1e360daea095e080df87b8df001f786f0ce3dd03cdcb6c483f1dce4b839f2f5ba727a42
@@ -15,23 +15,34 @@ module Xunch
15
15
  configs = YAML.load_file(file)
16
16
  shard_info_configs = configs["shard_infos"]
17
17
  cache_configs = configs["caches"]
18
- driver = configs["driver"].to_sym if configs["driver"]
19
18
  shards = {}
20
19
  shard_info_configs.each_value { |shard_info_config|
21
20
  options = {}
22
21
  shard_info_config.each { |k,v|
23
22
  options[k.to_sym] = v
24
23
  }
25
- options[:driver] = driver if driver
26
- shards[options[:name]] = ShardInfo.new(options)
24
+ shards[options[:name]] = options
27
25
  }
28
26
  caches = {}
29
27
  lazy_caches = {}
30
28
  cache_configs.each_value { |cache_config|
31
29
  shard_names = cache_config["shards"].split(",")
30
+ driver = cache_config["driver"].to_sym if cache_config["driver"]
32
31
  shard_infos = []
33
- shard_names.each { |shard_name|
34
- shard_infos.push(shards[shard_name])
32
+ shard_size = shard_names.size
33
+ shard_names.each { |shard|
34
+ split = shard.split(":")
35
+ shard_name = split[0]
36
+ weight = split[1]
37
+ shard_options = {}
38
+ shard_options[:driver] = driver
39
+ shard_options[:timeout] = cache_config["timeout"]
40
+ shard_options[:size] = cache_config["size"] / shard_size
41
+ if weight
42
+ shard_options[:weight] = weight.to_i
43
+ end
44
+ shard_options.merge!(shards[shard_name])
45
+ shard_infos.push(ShardInfo.new(shard_options))
35
46
  }
36
47
  case cache_config["type"]
37
48
  when CacheType::OBJECT
@@ -63,7 +74,7 @@ module Xunch
63
74
  else
64
75
  raise XunchConfigError.new("Unknown cache type #{cache_config["type"]}.")
65
76
  end
66
-
77
+
67
78
  caches[cache_config["name"]] = cache
68
79
  }
69
80
  caches
@@ -9,8 +9,8 @@ module Xunch
9
9
 
10
10
  def encode(value)
11
11
  unless value.class.name == @klass.name
12
- raise XunchCodecError.new("Codec error. Codec class is #{@klass}," <<
13
- "object_id is #{@klass.object_id}, but value class is #{value.class}," <<
12
+ raise XunchCodecError.new("Codec error. Codec class is #{@klass}," <<
13
+ "object_id is #{@klass.object_id}, but value class is #{value.class}," <<
14
14
  "object_id is #{value.class.object_id}.
15
15
  value class = #{value.class.inspect} vs config class = #{@klass.inspect} ")
16
16
  end
@@ -1,7 +1,7 @@
1
1
  module Xunch
2
2
  class ShardInfo
3
3
  attr_accessor :host, :port, :name, :password, :timeout, :database, :weight
4
-
4
+
5
5
  DEFAULT_OPTIONS = {
6
6
  :host => "127.0.0.1",
7
7
  :port => 6379,
@@ -9,7 +9,7 @@ module Xunch
9
9
  :password => nil,
10
10
  :timeout => nil,
11
11
  :db => 0,
12
- :weight => 1,
12
+ :weight => 40,
13
13
  :size => 1
14
14
  }
15
15
 
@@ -17,13 +17,13 @@ module Xunch
17
17
  raise "initialize ShardInfo error, options can not be nil." if options == nil
18
18
  @options = DEFAULT_OPTIONS.merge(options)
19
19
 
20
- @host = options[:host]
21
- @port = options[:port]
22
- @name = options[:name]
23
- @password = options[:password]
24
- @timeout = options[:timeout]
25
- @db = options[:db]
26
- @weight = options[:weight]
20
+ @host = @options[:host]
21
+ @port = @options[:port]
22
+ @name = @options[:name]
23
+ @password = @options[:password]
24
+ @timeout = @options[:timeout]
25
+ @db = @options[:db]
26
+ @weight = @options[:weight]
27
27
  end
28
28
 
29
29
  def create_resource
@@ -37,7 +37,7 @@ class FieldObjectCacheTest < Test::Unit::TestCase
37
37
  assert_equal(TrueClass.name,object.is_public.class.name)
38
38
  assert_equal(Fixnum.name,object.mp3size.class.name)
39
39
  assert_equal(BigDecimal.name,object.longitude.class.name)
40
- assert_equal(Bignum.name,object.track_id.class.name)
40
+ # assert_equal(Bignum.name,object.track_id.class.name)
41
41
  assert_equal(String.name,object.play_path.class.name)
42
42
 
43
43
  #value assert
@@ -161,7 +161,7 @@ class FieldObjectCacheTest < Test::Unit::TestCase
161
161
  assert_equal(TrueClass.name,objects[i].is_public.class.name)
162
162
  assert_equal(Fixnum.name,objects[i].mp3size.class.name)
163
163
  assert_equal(BigDecimal.name,objects[i].longitude.class.name)
164
- assert_equal(Bignum.name,objects[i].track_id.class.name)
164
+ # assert_equal(Bignum.name,objects[i].track_id.class.name)
165
165
  assert_equal(String.name,objects[i].play_path.class.name)
166
166
 
167
167
  #VALUE assert
@@ -280,7 +280,7 @@ class FieldObjectCacheTest < Test::Unit::TestCase
280
280
  EM.synchrony do
281
281
  puts "FieldObjectCacheTest test_get_set_with_field method start"
282
282
  # you must convert fields first
283
-
283
+
284
284
  @field_object_cache.evict(1)
285
285
  object = @field_object_cache.get_with_field(1,@fields)
286
286
  assert_equal(nil,object)
@@ -35,7 +35,7 @@ class EMObjectCacheTest < Test::Unit::TestCase
35
35
  assert_equal(TrueClass.name,object.is_public.class.name)
36
36
  assert_equal(Fixnum.name,object.mp3size.class.name)
37
37
  assert_equal(BigDecimal.name,object.longitude.class.name)
38
- assert_equal(Bignum.name,object.track_id.class.name)
38
+ # assert_equal(Bignum.name,object.track_id.class.name)
39
39
  assert_equal(String.name,object.play_path.class.name)
40
40
 
41
41
  #value assert
@@ -158,7 +158,7 @@ class EMObjectCacheTest < Test::Unit::TestCase
158
158
  assert_equal(TrueClass.name,objects[i].is_public.class.name)
159
159
  assert_equal(Fixnum.name,objects[i].mp3size.class.name)
160
160
  assert_equal(BigDecimal.name,objects[i].longitude.class.name)
161
- assert_equal(Bignum.name,objects[i].track_id.class.name)
161
+ # assert_equal(Bignum.name,objects[i].track_id.class.name)
162
162
  assert_equal(String.name,objects[i].play_path.class.name)
163
163
 
164
164
  #VALUE assert
@@ -36,7 +36,7 @@ class FieldObjectCacheTest < Test::Unit::TestCase
36
36
  assert_equal(TrueClass.name,object.is_public.class.name)
37
37
  assert_equal(Fixnum.name,object.mp3size.class.name)
38
38
  assert_equal(BigDecimal.name,object.longitude.class.name)
39
- assert_equal(Bignum.name,object.track_id.class.name)
39
+ # assert_equal(Bignum.name,object.track_id.class.name)
40
40
  assert_equal(String.name,object.play_path.class.name)
41
41
 
42
42
  #value assert
@@ -152,7 +152,7 @@ class FieldObjectCacheTest < Test::Unit::TestCase
152
152
  assert_equal(TrueClass.name,objects[i].is_public.class.name)
153
153
  assert_equal(Fixnum.name,objects[i].mp3size.class.name)
154
154
  assert_equal(BigDecimal.name,objects[i].longitude.class.name)
155
- assert_equal(Bignum.name,objects[i].track_id.class.name)
155
+ # assert_equal(Bignum.name,objects[i].track_id.class.name)
156
156
  assert_equal(String.name,objects[i].play_path.class.name)
157
157
 
158
158
  #VALUE assert
@@ -259,7 +259,7 @@ class FieldObjectCacheTest < Test::Unit::TestCase
259
259
  def test_get_set_with_field
260
260
  puts "FieldObjectCacheTest test_get_set_with_field method start"
261
261
  # you must convert fields first
262
-
262
+
263
263
  @field_object_cache.evict(1)
264
264
  object = @field_object_cache.get_with_field(1,@fields)
265
265
  assert_equal(nil,object)
@@ -272,7 +272,7 @@ class FieldObjectCacheTest < Test::Unit::TestCase
272
272
  assert_equal(TrueClass.name,object.is_public.class.name)
273
273
  assert_equal(Fixnum.name,object.mp3size.class.name)
274
274
  assert_equal(BigDecimal.name,object.longitude.class.name)
275
- assert_equal(Bignum.name,object.track_id.class.name)
275
+ # assert_equal(Bignum.name,object.track_id.class.name)
276
276
  assert_equal(String.name,object.play_path.class.name)
277
277
 
278
278
  #value assert
@@ -328,7 +328,7 @@ class FieldObjectCacheTest < Test::Unit::TestCase
328
328
  assert_equal(TrueClass.name,objects[i].is_public.class.name)
329
329
  assert_equal(Fixnum.name,objects[i].mp3size.class.name)
330
330
  assert_equal(BigDecimal.name,objects[i].longitude.class.name)
331
- assert_equal(Bignum.name,objects[i].track_id.class.name)
331
+ # assert_equal(Bignum.name,objects[i].track_id.class.name)
332
332
  assert_equal(String.name,objects[i].play_path.class.name)
333
333
 
334
334
  #VALUE assert
@@ -18,6 +18,7 @@ class JsonCodecTest < Test::Unit::TestCase
18
18
  root = File.expand_path("../..", __FILE__)
19
19
  object_file = File.join(root, 'test/object')
20
20
  expect_json_object = Marshal.load(IO.read(object_file))
21
+ expect_json_object.download_size = 1000
21
22
  json_string = @codec.encode(expect_json_object)
22
23
  test_resource_file = File.join(root, 'test/json_codec_test_resource')
23
24
  expect_json_string = IO.read(test_resource_file)
@@ -36,7 +36,7 @@ class ListFieldObjectCacheTest < Test::Unit::TestCase
36
36
  assert_equal(TrueClass.name,objects[i].is_public.class.name)
37
37
  assert_equal(Fixnum.name,objects[i].mp3size.class.name)
38
38
  assert_equal(BigDecimal.name,objects[i].longitude.class.name)
39
- assert_equal(Bignum.name,objects[i].track_id.class.name)
39
+ # assert_equal(Bignum.name,objects[i].track_id.class.name)
40
40
  assert_equal(String.name,objects[i].play_path.class.name)
41
41
 
42
42
  #VALUE assert
@@ -26,12 +26,12 @@ class ListIdCacheTest < Test::Unit::TestCase
26
26
  puts result
27
27
  keys = @list_id_cache.get("idlist",1,100)
28
28
  assert_equal(@keys.length, keys.length)
29
- assert_raise{
29
+ assert_raise(RuntimeError) do
30
30
  @list_id_cache.get("idlist",1,101)
31
- }
32
- assert_raise{
31
+ end
32
+ assert_raise(RuntimeError) do
33
33
  @list_id_cache.get("idlist",nil,31)
34
- }
34
+ end
35
35
  size = @list_id_cache.size("idlist");
36
36
  assert_equal(100,size)
37
37
  flags = @list_id_cache.remove("idlist",["1","2","99","100","101"])
@@ -36,7 +36,7 @@ class ListObjectCacheTest < Test::Unit::TestCase
36
36
  assert_equal(TrueClass.name,objects[i].is_public.class.name)
37
37
  assert_equal(Fixnum.name,objects[i].mp3size.class.name)
38
38
  assert_equal(BigDecimal.name,objects[i].longitude.class.name)
39
- assert_equal(Bignum.name,objects[i].track_id.class.name)
39
+ # assert_equal(Bignum.name,objects[i].track_id.class.name)
40
40
  assert_equal(String.name,objects[i].play_path.class.name)
41
41
 
42
42
  #VALUE assert
@@ -12,33 +12,33 @@ class NginxCacheHelperTest < Test::Unit::TestCase
12
12
 
13
13
  def test_evict
14
14
  puts "NginxCacheHelperTest test_evict method start"
15
- assert_true(@helper.evict("/1000001/"))
16
- assert_true(@helper.evict("/1000002/"))
17
- assert_true(@helper.evict("/1000003/"))
18
- assert_true(@helper.evict("/1000004/"))
19
- assert_true(@helper.evict("/1000005/"))
20
- assert_true(@helper.evict("/1000006/"))
21
- assert_true(@helper.evict("/1000007/"))
22
- assert_true(@helper.evict("/1000008/"))
23
- assert_true(@helper.evict("/1000009/"))
24
- assert_true(@helper.evict("/1000010/"))
25
- assert_false(@helper.cache("/1000010"))
15
+ assert(@helper.evict("/1000001/"))
16
+ assert(@helper.evict("/1000002/"))
17
+ assert(@helper.evict("/1000003/"))
18
+ assert(@helper.evict("/1000004/"))
19
+ assert(@helper.evict("/1000005/"))
20
+ assert(@helper.evict("/1000006/"))
21
+ assert(@helper.evict("/1000007/"))
22
+ assert(@helper.evict("/1000008/"))
23
+ assert(@helper.evict("/1000009/"))
24
+ assert(@helper.evict("/1000010/"))
25
+ assert(@helper.cache("/1000010") == false)
26
26
  puts "NginxCacheHelperTest test_evict method stop"
27
27
  end
28
28
 
29
29
  def test_cache
30
30
  puts "NginxCacheHelperTest test_cache method start"
31
- assert_true(@helper.cache("/1000001/"))
32
- assert_true(@helper.cache("/1000002/"))
33
- assert_true(@helper.cache("/1000003/"))
34
- assert_true(@helper.cache("/1000004/"))
35
- assert_true(@helper.cache("/1000005/"))
36
- assert_true(@helper.cache("/1000006/"))
37
- assert_true(@helper.cache("/1000007/"))
38
- assert_true(@helper.cache("/1000008/"))
39
- assert_true(@helper.cache("/1000009/"))
40
- assert_true(@helper.cache("/1000010/"))
41
- assert_false(@helper.cache("/1000010"))
31
+ assert(@helper.cache("/1000001/"))
32
+ assert(@helper.cache("/1000002/"))
33
+ assert(@helper.cache("/1000003/"))
34
+ assert(@helper.cache("/1000004/"))
35
+ assert(@helper.cache("/1000005/"))
36
+ assert(@helper.cache("/1000006/"))
37
+ assert(@helper.cache("/1000007/"))
38
+ assert(@helper.cache("/1000008/"))
39
+ assert(@helper.cache("/1000009/"))
40
+ assert(@helper.cache("/1000010/"))
41
+ assert(@helper.cache("/1000010") == false)
42
42
  puts "NginxCacheHelperTest test_cache method stop"
43
43
  end
44
44
 
@@ -22,6 +22,7 @@ class ObjectCacheTest < Test::Unit::TestCase
22
22
 
23
23
  def test_get_set
24
24
  puts "ObjectCacheTest test_get_set method start"
25
+ puts @cache_object.track_id.class.name
25
26
  assert_equal('OK',@object_cache.put(@cache_object))
26
27
  object = @object_cache.get(1)
27
28
 
@@ -33,7 +34,7 @@ class ObjectCacheTest < Test::Unit::TestCase
33
34
  assert_equal(TrueClass.name,object.is_public.class.name)
34
35
  assert_equal(Fixnum.name,object.mp3size.class.name)
35
36
  assert_equal(BigDecimal.name,object.longitude.class.name)
36
- assert_equal(Bignum.name,object.track_id.class.name)
37
+ assert_equal(Fixnum.name,object.track_id.class.name)
37
38
  assert_equal(String.name,object.play_path.class.name)
38
39
 
39
40
  #value assert
@@ -149,7 +150,7 @@ class ObjectCacheTest < Test::Unit::TestCase
149
150
  assert_equal(TrueClass.name,objects[i].is_public.class.name)
150
151
  assert_equal(Fixnum.name,objects[i].mp3size.class.name)
151
152
  assert_equal(BigDecimal.name,objects[i].longitude.class.name)
152
- assert_equal(Bignum.name,objects[i].track_id.class.name)
153
+ assert_equal(Fixnum.name,objects[i].track_id.class.name)
153
154
  assert_equal(String.name,objects[i].play_path.class.name)
154
155
 
155
156
  #VALUE assert
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: xunch
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.9.5
4
+ version: 0.0.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ted Wang
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-02-20 00:00:00.000000000 Z
11
+ date: 2014-03-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: redis
@@ -44,45 +44,45 @@ executables: []
44
44
  extensions: []
45
45
  extra_rdoc_files: []
46
46
  files:
47
- - lib/xunch/shard/sharded.rb
48
- - lib/xunch/shard/redis.rb
49
- - lib/xunch/shard/shard_info.rb
50
- - lib/xunch/shard/shard_redis.rb
51
- - lib/xunch/shard/ThreadedRedisPool.rb
47
+ - lib/xunch/cache/cache.rb
52
48
  - lib/xunch/cache/cache_builder.rb
49
+ - lib/xunch/cache/field_object_cache.rb
53
50
  - lib/xunch/cache/list_field_object_cache.rb
51
+ - lib/xunch/cache/list_id_cache.rb
54
52
  - lib/xunch/cache/list_object_cache.rb
55
53
  - lib/xunch/cache/object_cache.rb
56
- - lib/xunch/cache/cache.rb
57
- - lib/xunch/cache/field_object_cache.rb
58
- - lib/xunch/cache/list_id_cache.rb
54
+ - lib/xunch/codec/codec.rb
55
+ - lib/xunch/codec/hash_codec.rb
56
+ - lib/xunch/codec/json_codec.rb
59
57
  - lib/xunch/connection/fiber_redis_pool.rb
60
58
  - lib/xunch/connection/threaded_redis_pool.rb
61
- - lib/xunch/utils/rb_tree.rb
62
- - lib/xunch/utils/utils.rb
63
- - lib/xunch/utils/types.rb
64
- - lib/xunch/utils/nginx_cache_helper.rb
59
+ - lib/xunch/shard/redis.rb
60
+ - lib/xunch/shard/shard_info.rb
61
+ - lib/xunch/shard/shard_redis.rb
62
+ - lib/xunch/shard/sharded.rb
63
+ - lib/xunch/shard/ThreadedRedisPool.rb
65
64
  - lib/xunch/utils/exceptions.rb
65
+ - lib/xunch/utils/nginx_cache_helper.rb
66
+ - lib/xunch/utils/rb_tree.rb
66
67
  - lib/xunch/utils/rb_tree_node.rb
67
- - lib/xunch/codec/codec.rb
68
- - lib/xunch/codec/hash_codec.rb
69
- - lib/xunch/codec/json_codec.rb
68
+ - lib/xunch/utils/types.rb
69
+ - lib/xunch/utils/utils.rb
70
70
  - lib/xunch.rb
71
- - test/json_codec_test.rb
72
- - test/cache_test.rb
73
71
  - test/cache_builder_test.rb
74
- - test/rb_tree_test.rb
75
- - test/redis_client_test.rb
72
+ - test/cache_test.rb
73
+ - test/em_cache_test.rb
74
+ - test/em_field_object_cache_test.rb
76
75
  - test/em_object_cache_test.rb
76
+ - test/field_object_cache_test.rb
77
+ - test/hash_codec_test.rb
78
+ - test/json_codec_test.rb
77
79
  - test/list_field_object_cache_test.rb
78
- - test/em_field_object_cache_test.rb
79
80
  - test/list_id_cache_test.rb
80
- - test/em_cache_test.rb
81
- - test/hash_codec_test.rb
81
+ - test/list_object_cache_test.rb
82
82
  - test/nginx_cache_helper_test.rb
83
83
  - test/object_cache_test.rb
84
- - test/list_object_cache_test.rb
85
- - test/field_object_cache_test.rb
84
+ - test/rb_tree_test.rb
85
+ - test/redis_client_test.rb
86
86
  homepage: http://www.ximalaya.com
87
87
  licenses:
88
88
  - Apache License Version 2.0
@@ -108,18 +108,18 @@ signing_key:
108
108
  specification_version: 4
109
109
  summary: A distribute cache client library based on redis.
110
110
  test_files:
111
- - test/json_codec_test.rb
112
- - test/cache_test.rb
113
111
  - test/cache_builder_test.rb
114
- - test/rb_tree_test.rb
115
- - test/redis_client_test.rb
112
+ - test/cache_test.rb
113
+ - test/em_cache_test.rb
114
+ - test/em_field_object_cache_test.rb
116
115
  - test/em_object_cache_test.rb
116
+ - test/field_object_cache_test.rb
117
+ - test/hash_codec_test.rb
118
+ - test/json_codec_test.rb
117
119
  - test/list_field_object_cache_test.rb
118
- - test/em_field_object_cache_test.rb
119
120
  - test/list_id_cache_test.rb
120
- - test/em_cache_test.rb
121
- - test/hash_codec_test.rb
121
+ - test/list_object_cache_test.rb
122
122
  - test/nginx_cache_helper_test.rb
123
123
  - test/object_cache_test.rb
124
- - test/list_object_cache_test.rb
125
- - test/field_object_cache_test.rb
124
+ - test/rb_tree_test.rb
125
+ - test/redis_client_test.rb