xunch 0.0.9.5 → 0.0.10

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 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