xunch 0.0.6 → 0.0.9
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/xunch/cache/cache.rb +10 -2
- data/lib/xunch/cache/cache_builder.rb +3 -0
- data/lib/xunch/cache/list_field_object_cache.rb +11 -7
- data/lib/xunch/cache/list_id_cache.rb +61 -0
- data/lib/xunch/cache/list_object_cache.rb +15 -7
- data/lib/xunch/shard/redis.rb +17 -5
- data/lib/xunch/shard/shard_redis.rb +6 -5
- data/lib/xunch/utils/nginx_cache_helper.rb +1 -1
- data/lib/xunch/utils/types.rb +1 -0
- data/lib/xunch.rb +1 -0
- data/test/cache_builder_test.rb +13 -3
- data/test/cache_test.rb +57 -0
- data/test/field_object_cache_test.rb +28 -84
- data/test/hash_codec_test.rb +41 -38
- data/test/json_codec_test.rb +83 -38
- data/test/list_field_object_cache_test.rb +11 -81
- data/test/list_id_cache_test.rb +75 -0
- data/test/list_object_cache_test.rb +11 -81
- data/test/nginx_cache_helper_test.rb +4 -0
- data/test/object_cache_test.rb +15 -82
- data/test/rb_tree_test.rb +63 -20
- data/test/{redis_test.rb → redis_client_test.rb} +8 -5
- metadata +10 -19
- data/test/benchmark_test.rb +0 -68
- data/test/cache_object.rb +0 -120
- data/test/consistency_hash_test.rb +0 -31
- data/test/redis_benchmark_test.rb +0 -54
- data/test/running_test.rb +0 -212
- data/test/test.rb +0 -176
- data/test/track_record_origin.rb +0 -58
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5b731a19b58bfaa3292a7c859ff34428b219d7a5
|
4
|
+
data.tar.gz: 7feaf350a70b458efc0fa9d9b9b78c5602ee8d5c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0e842d7bfa0ee9b0c317cbed99de8e30e6fc338941f1b7a728e69a6e59ded2ad8c912dfdc6144174a0bc0cadb4bcc3488a21ef672d3784479fe0eae514741852
|
7
|
+
data.tar.gz: 4a7d6f78ca09f0f10ec83070cb63b5ec1a7e50f931ebf515688e4491c2cb6e344e3e22363da721a1cf47ca5b7570139780c2e3ef73574accc77efe4f371097c8
|
data/lib/xunch/cache/cache.rb
CHANGED
@@ -6,10 +6,12 @@ module Xunch
|
|
6
6
|
@shard_redis = ShardRedis.new(@options[:regex],shard_infos)
|
7
7
|
end
|
8
8
|
|
9
|
+
# 从缓存中删除指定的key
|
9
10
|
def evict(key)
|
10
11
|
@shard_redis.del(assembleKey(key))
|
11
12
|
end
|
12
|
-
|
13
|
+
|
14
|
+
# 从缓存中删除指定的一组key
|
13
15
|
def batch_evict(keys)
|
14
16
|
new_keys = []
|
15
17
|
keys.each { |key|
|
@@ -18,6 +20,12 @@ module Xunch
|
|
18
20
|
@shard_redis.batch_del(new_keys)
|
19
21
|
end
|
20
22
|
|
23
|
+
# 获取某个key的过期时间,单位秒
|
24
|
+
def ttl(key)
|
25
|
+
new_key = assembleKey(key)
|
26
|
+
@shard_redis.ttl(new_key)
|
27
|
+
end
|
28
|
+
|
21
29
|
def destroy
|
22
30
|
@shard_redis.destroy
|
23
31
|
end
|
@@ -49,7 +57,7 @@ module Xunch
|
|
49
57
|
|
50
58
|
if(options["cache_class"] != nil)
|
51
59
|
cache_class = eval(options["cache_class"])
|
52
|
-
elsif options["type"] != CacheType::LISTOBJECT && options["type"] != CacheType::LISTFIELDOBJECT
|
60
|
+
elsif options["type"] != CacheType::LISTID && options["type"] != CacheType::LISTOBJECT && options["type"] != CacheType::LISTFIELDOBJECT
|
53
61
|
raise ArgumentError, "cache_class is nil"
|
54
62
|
end
|
55
63
|
use_options.store(:cache_class, cache_class)
|
@@ -39,6 +39,9 @@ module Xunch
|
|
39
39
|
when CacheType::FIELDOBJECT
|
40
40
|
cache = Xunch::FieldObjectCache.new(cache_config,shard_infos)
|
41
41
|
caches[cache_config["name"]] = cache
|
42
|
+
when CacheType::LISTID
|
43
|
+
cache = Xunch::ListIdCache.new(cache_config,shard_infos)
|
44
|
+
caches[cache_config["name"]] = cache
|
42
45
|
when CacheType::LISTOBJECT
|
43
46
|
lazy_caches[cache_config] = shard_infos
|
44
47
|
when CacheType::LISTFIELDOBJECT
|
@@ -16,8 +16,8 @@ module Xunch
|
|
16
16
|
#
|
17
17
|
def get(key, page, size)
|
18
18
|
raise "key can not be nil." unless key != nil
|
19
|
-
raise "page must be a positive number." unless page > 0
|
20
|
-
raise "size must be a positive number and less than 100." unless
|
19
|
+
raise "page must be a positive number." unless page != nil and page > 0
|
20
|
+
raise "size must be a positive number and less than 100." unless size != nil and size > 0 and size <= 100
|
21
21
|
start = (page - 1) * size;
|
22
22
|
stop = page * size - 1;
|
23
23
|
new_key = assembleKey(key)
|
@@ -29,6 +29,10 @@ module Xunch
|
|
29
29
|
end
|
30
30
|
|
31
31
|
def put(key, values)
|
32
|
+
putex(key, values, @options[:expire_time])
|
33
|
+
end
|
34
|
+
|
35
|
+
def putex(key, values, ttl)
|
32
36
|
raise "key can not be nil." unless key != nil
|
33
37
|
raise "values can not be nil." unless values != nil
|
34
38
|
sub_keys = []
|
@@ -38,15 +42,15 @@ module Xunch
|
|
38
42
|
}
|
39
43
|
temp_key = assembleTempKey(key)
|
40
44
|
new_key = assembleKey(key)
|
41
|
-
@delegate.multi_putex(values
|
42
|
-
@shard_redis.lset(temp_key,new_key,sub_keys
|
45
|
+
@delegate.multi_putex(values,ttl)
|
46
|
+
@shard_redis.lset(temp_key,new_key,sub_keys,ttl)
|
43
47
|
end
|
44
48
|
|
45
|
-
def remove(key,
|
49
|
+
def remove(key, *sub_keys)
|
46
50
|
raise "key can not be nil." unless key != nil
|
47
|
-
raise "sub_key can not be nil." unless
|
51
|
+
raise "sub_key can not be nil." unless sub_keys != nil
|
48
52
|
new_key = assembleKey(key)
|
49
|
-
@shard_redis.lremove(new_key
|
53
|
+
@shard_redis.lremove(new_key,*sub_keys)
|
50
54
|
end
|
51
55
|
|
52
56
|
def size(key)
|
@@ -0,0 +1,61 @@
|
|
1
|
+
module Xunch
|
2
|
+
#列表缓存目前不支持并发写入,未来也不打算支持并发
|
3
|
+
#主要的使用场景是发现页热门的单线程写入和并发的读取
|
4
|
+
#并且提供remove接口,帮助从列表中移除已经不存在的声音,用户,专辑
|
5
|
+
class ListIdCache < Cache
|
6
|
+
|
7
|
+
def initialize(options, shard_infos)
|
8
|
+
super(options,shard_infos)
|
9
|
+
end
|
10
|
+
|
11
|
+
# 查询接口
|
12
|
+
# @key 列表的key
|
13
|
+
# @page 页码
|
14
|
+
# @size 页大小
|
15
|
+
#
|
16
|
+
def get(key, page, size)
|
17
|
+
raise "key can not be nil." unless key != nil
|
18
|
+
raise "page must be a positive number." unless page != nil and page > 0
|
19
|
+
raise "size must be a positive number and less than 100." unless size != nil and size > 0 and size <= 100
|
20
|
+
start = (page - 1) * size;
|
21
|
+
stop = page * size - 1;
|
22
|
+
new_key = assembleKey(key)
|
23
|
+
ids = @shard_redis.lrange(new_key,start,stop)
|
24
|
+
ids
|
25
|
+
end
|
26
|
+
|
27
|
+
def put(key, ids)
|
28
|
+
putex(key, ids, @options[:expire_time])
|
29
|
+
end
|
30
|
+
|
31
|
+
def putex(key, ids, ttl)
|
32
|
+
raise "key can not be nil." unless key != nil
|
33
|
+
raise "ids can not be nil." unless ids != nil
|
34
|
+
sub_keys = []
|
35
|
+
ids.each { | id |
|
36
|
+
raise "id in ids can not be nil." unless ids != nil
|
37
|
+
sub_keys.push(id.to_s)
|
38
|
+
}
|
39
|
+
if sub_keys.length == 0
|
40
|
+
return nil
|
41
|
+
end
|
42
|
+
temp_key = assembleTempKey(key)
|
43
|
+
new_key = assembleKey(key)
|
44
|
+
@shard_redis.lset(temp_key,new_key,sub_keys,ttl)
|
45
|
+
end
|
46
|
+
|
47
|
+
def remove(key, *sub_keys)
|
48
|
+
raise "key can not be nil." unless key != nil
|
49
|
+
raise "sub_key can not be nil." unless sub_keys != nil
|
50
|
+
new_key = assembleKey(key)
|
51
|
+
@shard_redis.lremove(new_key,*sub_keys)
|
52
|
+
end
|
53
|
+
|
54
|
+
def size(key)
|
55
|
+
raise "key can not be nil." unless key != nil
|
56
|
+
new_key = assembleKey(key)
|
57
|
+
@shard_redis.llen(new_key)
|
58
|
+
end
|
59
|
+
|
60
|
+
end
|
61
|
+
end
|
@@ -16,8 +16,8 @@ module Xunch
|
|
16
16
|
#
|
17
17
|
def get(key, page, size)
|
18
18
|
raise "key can not be nil." unless key != nil
|
19
|
-
raise "page must be a positive number." unless page > 0
|
20
|
-
raise "size must be a positive number and less than 100." unless
|
19
|
+
raise "page must be a positive number." unless page != nil and page > 0
|
20
|
+
raise "size must be a positive number and less than 100." unless size != nil and size > 0 and size <= 100
|
21
21
|
start = (page - 1) * size;
|
22
22
|
stop = page * size - 1;
|
23
23
|
new_key = assembleKey(key)
|
@@ -29,6 +29,10 @@ module Xunch
|
|
29
29
|
end
|
30
30
|
|
31
31
|
def put(key, values)
|
32
|
+
putex(key, values, @options[:expire_time])
|
33
|
+
end
|
34
|
+
|
35
|
+
def putex(key, values, ttl)
|
32
36
|
raise "key can not be nil." unless key != nil
|
33
37
|
raise "values can not be nil." unless values != nil
|
34
38
|
sub_keys = []
|
@@ -38,15 +42,15 @@ module Xunch
|
|
38
42
|
}
|
39
43
|
temp_key = assembleTempKey(key)
|
40
44
|
new_key = assembleKey(key)
|
41
|
-
@delegate.multi_putex(values
|
42
|
-
@shard_redis.lset(temp_key,new_key,sub_keys
|
45
|
+
@delegate.multi_putex(values,ttl)
|
46
|
+
@shard_redis.lset(temp_key,new_key,sub_keys,ttl)
|
43
47
|
end
|
44
48
|
|
45
|
-
def remove(key,
|
49
|
+
def remove(key, *sub_keys)
|
46
50
|
raise "key can not be nil." unless key != nil
|
47
|
-
raise "sub_key can not be nil." unless
|
51
|
+
raise "sub_key can not be nil." unless sub_keys != nil
|
48
52
|
new_key = assembleKey(key)
|
49
|
-
@shard_redis.lremove(new_key
|
53
|
+
@shard_redis.lremove(new_key,*sub_keys)
|
50
54
|
end
|
51
55
|
|
52
56
|
def size(key)
|
@@ -55,5 +59,9 @@ module Xunch
|
|
55
59
|
@shard_redis.llen(new_key)
|
56
60
|
end
|
57
61
|
|
62
|
+
def delegate
|
63
|
+
@delegate
|
64
|
+
end
|
65
|
+
|
58
66
|
end
|
59
67
|
end
|
data/lib/xunch/shard/redis.rb
CHANGED
@@ -104,7 +104,7 @@ module Xunch
|
|
104
104
|
}
|
105
105
|
end
|
106
106
|
else
|
107
|
-
redis.
|
107
|
+
redis.mapped_mset(hash)
|
108
108
|
end
|
109
109
|
end
|
110
110
|
end
|
@@ -187,9 +187,21 @@ module Xunch
|
|
187
187
|
end
|
188
188
|
end
|
189
189
|
|
190
|
-
def lrem(key
|
191
|
-
|
192
|
-
redis
|
190
|
+
def lrem(key,*value)
|
191
|
+
if(value.length > 3)
|
192
|
+
with do | redis |
|
193
|
+
redis.pipelined do
|
194
|
+
value.each{ |v|
|
195
|
+
redis.lrem(key,1,v)
|
196
|
+
}
|
197
|
+
end
|
198
|
+
end
|
199
|
+
else
|
200
|
+
with do | redis |
|
201
|
+
value.each{ |v|
|
202
|
+
redis.lrem(key,1,v)
|
203
|
+
}
|
204
|
+
end
|
193
205
|
end
|
194
206
|
end
|
195
207
|
|
@@ -203,7 +215,7 @@ module Xunch
|
|
203
215
|
}
|
204
216
|
result = redis.rename(temp_key,new_key)
|
205
217
|
if(ttl > 0)
|
206
|
-
|
218
|
+
redis.expire(new_key,ttl)
|
207
219
|
end
|
208
220
|
end
|
209
221
|
end
|
@@ -46,12 +46,12 @@ module Xunch
|
|
46
46
|
|
47
47
|
def expire(key, ttl)
|
48
48
|
redis = get_shard(key)
|
49
|
-
redis.
|
49
|
+
redis.expire(key, ttl)
|
50
50
|
end
|
51
51
|
|
52
|
-
def
|
52
|
+
def ttl(key)
|
53
53
|
redis = get_shard(key)
|
54
|
-
redis.
|
54
|
+
redis.ttl(key)
|
55
55
|
end
|
56
56
|
|
57
57
|
def get(key)
|
@@ -240,12 +240,13 @@ module Xunch
|
|
240
240
|
|
241
241
|
def lremove(key,value)
|
242
242
|
redis = get_shard(key)
|
243
|
-
redis.lrem(key)
|
243
|
+
redis.lrem(key,*value)
|
244
244
|
end
|
245
245
|
|
246
246
|
def lset(temp_key, new_key, sub_keys, ttl)
|
247
247
|
redis = get_shard(new_key)
|
248
|
-
redis.lset(temp_key,new_key,sub_keys,ttl)
|
248
|
+
result = redis.lset(temp_key,new_key,sub_keys,ttl)
|
249
|
+
result[result.length - 2]
|
249
250
|
end
|
250
251
|
|
251
252
|
def lrange(key, start, stop)
|
data/lib/xunch/utils/types.rb
CHANGED
data/lib/xunch.rb
CHANGED
data/test/cache_builder_test.rb
CHANGED
@@ -11,14 +11,24 @@ class CacheBuilderTest < Test::Unit::TestCase
|
|
11
11
|
puts "setup"
|
12
12
|
end
|
13
13
|
|
14
|
-
def
|
14
|
+
def test_build_type
|
15
|
+
puts "CacheBuilderTest test_build_type start."
|
15
16
|
root = File.expand_path("../..", __FILE__)
|
16
17
|
file = File.join(root, 'test/xunch.yaml')
|
17
18
|
caches = Xunch::CacheBuilder.build(file)
|
18
19
|
caches.each { |key ,value|
|
19
|
-
|
20
|
-
|
20
|
+
case key
|
21
|
+
when "track"
|
22
|
+
assert(value.class.name == Xunch::ObjectCache.name,"track cache type is not Xunch::ObjectCache")
|
23
|
+
when "trackfield"
|
24
|
+
assert(value.class.name == Xunch::FieldObjectCache.name,"track cache type is not Xunch::FieldObjectCache")
|
25
|
+
when "tracklist"
|
26
|
+
assert(value.class.name == Xunch::ListObjectCache.name,"track cache type is not Xunch::ListObjectCache")
|
27
|
+
when "fieldtracklist"
|
28
|
+
assert(value.class.name == Xunch::ListFieldObjectCache.name,"track cache type is not Xunch::ListFieldObjectCache")
|
29
|
+
end
|
21
30
|
}
|
31
|
+
puts "CacheBuilderTest test_build_type stop."
|
22
32
|
end
|
23
33
|
|
24
34
|
def teardown
|
data/test/cache_test.rb
ADDED
@@ -0,0 +1,57 @@
|
|
1
|
+
$:.unshift File.expand_path("../../lib", __FILE__)
|
2
|
+
$:.unshift File.expand_path("../../test", __FILE__)
|
3
|
+
require "test/unit"
|
4
|
+
require 'xunch'
|
5
|
+
require 'yaml'
|
6
|
+
require 'test_helper'
|
7
|
+
|
8
|
+
class CacheTest < Test::Unit::TestCase
|
9
|
+
include Test::Unit::Assertions
|
10
|
+
def setup
|
11
|
+
root = File.expand_path("../..", __FILE__)
|
12
|
+
file = File.join(root, 'test/xunch.yaml')
|
13
|
+
caches = Xunch::CacheBuilder.build(file)
|
14
|
+
@object_cache = caches["track"]
|
15
|
+
hash = TestHelper.build_objects
|
16
|
+
@cache_object = hash["object"]
|
17
|
+
@cache_objects = hash["objects"]
|
18
|
+
@key = hash["key"]
|
19
|
+
puts "setup"
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_evict
|
23
|
+
puts "CacheTest test_evict method start"
|
24
|
+
@object_cache.putex(@cache_object,3000)
|
25
|
+
@object_cache.get(@cache_object.id)
|
26
|
+
@object_cache.evict(@cache_object.id)
|
27
|
+
object = @object_cache.get(@cache_object.id)
|
28
|
+
assert_equal(nil,object)
|
29
|
+
puts "CacheTest test_evict method stop"
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_batch_evict
|
33
|
+
puts "CacheTest test_batch_evict method start"
|
34
|
+
@object_cache.putex(@cache_object,3000)
|
35
|
+
@object_cache.get(@cache_object.id)
|
36
|
+
@object_cache.evict(@cache_object.id)
|
37
|
+
object = @object_cache.get(@cache_object.id)
|
38
|
+
assert_equal(nil,object)
|
39
|
+
puts "CacheTest test_batch_evict method stop"
|
40
|
+
end
|
41
|
+
|
42
|
+
def test_ttl
|
43
|
+
puts "CacheTest test_ttl method start"
|
44
|
+
@object_cache.putex(@cache_object,3000)
|
45
|
+
ttl = @object_cache.ttl(@cache_object.id)
|
46
|
+
@object_cache.evict(@cache_object.id)
|
47
|
+
assert_equal(3000,ttl)
|
48
|
+
ttl = @object_cache.ttl(@cache_object.id)
|
49
|
+
assert_equal(-1,ttl)
|
50
|
+
puts "CacheTest test_ttl method stop"
|
51
|
+
end
|
52
|
+
|
53
|
+
def teardown
|
54
|
+
super
|
55
|
+
puts "CacheTest teardown"
|
56
|
+
end
|
57
|
+
end
|
@@ -3,99 +3,26 @@ $:.unshift File.expand_path("../../test", __FILE__)
|
|
3
3
|
require "test/unit"
|
4
4
|
require "xunch"
|
5
5
|
require 'yaml'
|
6
|
-
require '
|
7
|
-
require 'bigdecimal'
|
8
|
-
|
6
|
+
require 'test_helper'
|
9
7
|
|
10
8
|
class FieldObjectCacheTest < Test::Unit::TestCase
|
11
9
|
include Test::Unit::Assertions
|
12
10
|
def setup
|
11
|
+
super
|
13
12
|
root = File.expand_path("../..", __FILE__)
|
14
13
|
file = File.join(root, 'test/xunch.yaml')
|
15
14
|
caches = Xunch::CacheBuilder.build(file)
|
16
15
|
@field_object_cache = caches["trackfield"]
|
17
16
|
@fields = ["createdAt","updatedAt","approvedAt","isCrawler","isPublic","mp3size","longitude","trackId","playPath"]
|
18
|
-
|
19
|
-
@
|
20
|
-
@
|
21
|
-
|
22
|
-
new_cache_object = TrackRecordOrigin.new
|
23
|
-
new_cache_object.track_id = @cache_object.track_id
|
24
|
-
new_cache_object.track_uid = @cache_object.track_uid
|
25
|
-
new_cache_object.track_upload_source = @cache_object.track_upload_source
|
26
|
-
new_cache_object.op_type = @cache_object.op_type
|
27
|
-
new_cache_object.is_publish = @cache_object.is_publish
|
28
|
-
new_cache_object.upload_source = @cache_object.upload_source
|
29
|
-
new_cache_object.uid = @cache_object.uid
|
30
|
-
new_cache_object.nickname = @cache_object.nickname
|
31
|
-
new_cache_object.avatar_path = @cache_object.avatar_path
|
32
|
-
new_cache_object.is_v = @cache_object.is_v
|
33
|
-
new_cache_object.human_category_id = @cache_object.human_category_id
|
34
|
-
new_cache_object.title = @cache_object.title
|
35
|
-
new_cache_object.intro = @cache_object.intro
|
36
|
-
new_cache_object.user_source = @cache_object.user_source
|
37
|
-
new_cache_object.category_id = @cache_object.category_id
|
38
|
-
new_cache_object.duration = @cache_object.duration
|
39
|
-
new_cache_object.play_path = @cache_object.play_path
|
40
|
-
new_cache_object.play_path_32 = @cache_object.play_path_32
|
41
|
-
new_cache_object.play_path_64 = @cache_object.play_path_64
|
42
|
-
new_cache_object.play_path_128 = @cache_object.play_path_128
|
43
|
-
new_cache_object.transcode_state = @cache_object.transcode_state
|
44
|
-
new_cache_object.download_path = @cache_object.download_path
|
45
|
-
new_cache_object.cover_path = @cache_object.cover_path
|
46
|
-
new_cache_object.album_id = @cache_object.album_id
|
47
|
-
new_cache_object.album_title = @cache_object.album_title
|
48
|
-
new_cache_object.album_cover_path = @cache_object.album_cover_path
|
49
|
-
new_cache_object.tags = @cache_object.tags
|
50
|
-
new_cache_object.ignore_tags = @cache_object.ignore_tags
|
51
|
-
new_cache_object.extra_tags = @cache_object.extra_tags
|
52
|
-
new_cache_object.singer = @cache_object.singer
|
53
|
-
new_cache_object.singer_category = @cache_object.singer_category
|
54
|
-
new_cache_object.author = @cache_object.author
|
55
|
-
new_cache_object.composer = @cache_object.composer
|
56
|
-
new_cache_object.arrangement = @cache_object.arrangement
|
57
|
-
new_cache_object.post_production = @cache_object.post_production
|
58
|
-
new_cache_object.lyric_path = @cache_object.lyric_path
|
59
|
-
new_cache_object.lyric = @cache_object.lyric
|
60
|
-
new_cache_object.language = @cache_object.language
|
61
|
-
new_cache_object.resinger = @cache_object.resinger
|
62
|
-
new_cache_object.announcer = @cache_object.announcer
|
63
|
-
new_cache_object.is_public = @cache_object.is_public
|
64
|
-
new_cache_object.access_password = @cache_object.access_password
|
65
|
-
new_cache_object.allow_download = @cache_object.allow_download
|
66
|
-
new_cache_object.allow_comment = @cache_object.allow_comment
|
67
|
-
new_cache_object.is_crawler = @cache_object.is_crawler
|
68
|
-
new_cache_object.inet_aton_ip = @cache_object.inet_aton_ip
|
69
|
-
new_cache_object.longitude = @cache_object.longitude
|
70
|
-
new_cache_object.latitude = @cache_object.latitude
|
71
|
-
new_cache_object.music_category = @cache_object.music_category
|
72
|
-
new_cache_object.order_num = @cache_object.order_num
|
73
|
-
new_cache_object.is_pick = @cache_object.is_pick
|
74
|
-
new_cache_object.rich_intro = @cache_object.rich_intro
|
75
|
-
new_cache_object.short_intro = @cache_object.short_intro
|
76
|
-
new_cache_object.comment_content = @cache_object.comment_content
|
77
|
-
new_cache_object.comment_id = @cache_object.comment_id
|
78
|
-
new_cache_object.dig_status = @cache_object.dig_status
|
79
|
-
new_cache_object.approved_at = @cache_object.approved_at
|
80
|
-
new_cache_object.is_deleted = @cache_object.is_deleted
|
81
|
-
new_cache_object.mp3size = @cache_object.mp3size
|
82
|
-
new_cache_object.mp3size_32 = @cache_object.mp3size_32
|
83
|
-
new_cache_object.mp3size_64 = @cache_object.mp3size_64
|
84
|
-
new_cache_object.waveform = @cache_object.waveform
|
85
|
-
new_cache_object.upload_id = @cache_object.upload_id
|
86
|
-
new_cache_object.updated_at = @cache_object.updated_at
|
87
|
-
new_cache_object.created_at = @cache_object.created_at
|
88
|
-
new_cache_object.source_url = @cache_object.source_url
|
89
|
-
new_cache_object.status = @cache_object.status
|
90
|
-
new_cache_object.explore_height = @cache_object.explore_height
|
91
|
-
new_cache_object.id = i
|
92
|
-
@cache_objects.push new_cache_object
|
93
|
-
@keys.push new_cache_object.id
|
94
|
-
end
|
17
|
+
hash = TestHelper.build_objects
|
18
|
+
@cache_object = hash["object"]
|
19
|
+
@cache_objects = hash["objects"]
|
20
|
+
@keys = hash["keys"]
|
95
21
|
puts "setup"
|
96
22
|
end
|
97
23
|
|
98
24
|
def test_get_set
|
25
|
+
puts "FieldObjectCacheTest test_get_set method start"
|
99
26
|
@field_object_cache.evict(1)
|
100
27
|
object = @field_object_cache.get(1)
|
101
28
|
assert_equal(nil,object)
|
@@ -182,11 +109,13 @@ class FieldObjectCacheTest < Test::Unit::TestCase
|
|
182
109
|
# assert_equal(@cache_object.source_url,object.source_url)
|
183
110
|
# assert_equal(@cache_object.status,object.status)
|
184
111
|
# assert_equal(@cache_object.explore_height,object.explore_height)
|
112
|
+
puts "FieldObjectCacheTest test_get_set method stop"
|
185
113
|
end
|
186
114
|
|
187
115
|
def test_get_set_benchmark
|
116
|
+
puts "FieldObjectCacheTest test_get_set_benchmark method start"
|
188
117
|
@field_object_cache.evict(1)
|
189
|
-
times =
|
118
|
+
times = TestHelper::TIMES
|
190
119
|
start = Time.now
|
191
120
|
for i in 1 .. times do
|
192
121
|
@field_object_cache.put(@cache_object)
|
@@ -200,9 +129,11 @@ class FieldObjectCacheTest < Test::Unit::TestCase
|
|
200
129
|
end
|
201
130
|
stop = Time.now
|
202
131
|
puts "#{times} times get operation total use #{stop-start} seconds"
|
132
|
+
puts "FieldObjectCacheTest test_get_set_benchmark method stop"
|
203
133
|
end
|
204
134
|
|
205
135
|
def test_mget_mset
|
136
|
+
puts "FieldObjectCacheTest test_mget_mset method start"
|
206
137
|
@field_object_cache.batch_evict @keys
|
207
138
|
result = @field_object_cache.multi_put(@cache_objects)
|
208
139
|
for i in 0 .. result.length / 2 - 1 do
|
@@ -295,12 +226,14 @@ class FieldObjectCacheTest < Test::Unit::TestCase
|
|
295
226
|
# assert_equal(@cache_objects[i].status,objects[i].status)
|
296
227
|
# assert_equal(@cache_objects[i].explore_height,objects[i].explore_height)
|
297
228
|
end
|
229
|
+
puts "FieldObjectCacheTest test_mget_mset method stop"
|
298
230
|
end
|
299
231
|
|
300
232
|
def test_mget_mset_benchmark
|
233
|
+
puts "FieldObjectCacheTest test_mget_mset_benchmark method start"
|
301
234
|
@field_object_cache.batch_evict @keys
|
302
235
|
|
303
|
-
times =
|
236
|
+
times = TestHelper::TIMES
|
304
237
|
start = Time.now
|
305
238
|
for i in 1 .. times do
|
306
239
|
@field_object_cache.multi_put(@cache_objects)
|
@@ -314,13 +247,17 @@ class FieldObjectCacheTest < Test::Unit::TestCase
|
|
314
247
|
end
|
315
248
|
stop = Time.now
|
316
249
|
puts "#{times} times multi_get operation total use #{stop-start} seconds"
|
250
|
+
puts "FieldObjectCacheTest test_mget_mset_benchmark method stop"
|
317
251
|
end
|
318
252
|
|
319
253
|
def test_evict
|
254
|
+
puts "FieldObjectCacheTest test_evict method start"
|
320
255
|
@field_object_cache.batch_evict(@keys)
|
256
|
+
puts "FieldObjectCacheTest test_evict method stop"
|
321
257
|
end
|
322
258
|
|
323
259
|
def test_get_set_with_field
|
260
|
+
puts "FieldObjectCacheTest test_get_set_with_field method start"
|
324
261
|
# you must convert fields first
|
325
262
|
|
326
263
|
@field_object_cache.evict(1)
|
@@ -348,11 +285,13 @@ class FieldObjectCacheTest < Test::Unit::TestCase
|
|
348
285
|
assert_equal(@cache_object.mp3size,object.mp3size)
|
349
286
|
assert_equal(@cache_object.updated_at,object.updated_at)
|
350
287
|
assert_equal(@cache_object.created_at,object.created_at)
|
288
|
+
puts "FieldObjectCacheTest test_get_set_with_field method stop"
|
351
289
|
end
|
352
290
|
|
353
291
|
def test_get_set_with_field_benchmark
|
292
|
+
puts "FieldObjectCacheTest test_get_set_with_field_benchmark method start"
|
354
293
|
@field_object_cache.evict(1)
|
355
|
-
times =
|
294
|
+
times = TestHelper::TIMES
|
356
295
|
start = Time.now
|
357
296
|
for i in 1 .. times do
|
358
297
|
@field_object_cache.put_with_field(@cache_object,@fields)
|
@@ -366,9 +305,11 @@ class FieldObjectCacheTest < Test::Unit::TestCase
|
|
366
305
|
end
|
367
306
|
stop = Time.now
|
368
307
|
puts "#{times} times get_with_field operation total use #{stop-start} seconds"
|
308
|
+
puts "FieldObjectCacheTest test_get_set_with_field_benchmark method stop"
|
369
309
|
end
|
370
310
|
|
371
311
|
def test_mget_mset_with_field
|
312
|
+
puts "FieldObjectCacheTest test_mget_mset_with_field method start"
|
372
313
|
@field_object_cache.batch_evict @keys
|
373
314
|
result = @field_object_cache.multi_put_with_field(@cache_objects,@fields)
|
374
315
|
for i in 0 .. result.length / 2 - 1 do
|
@@ -401,11 +342,13 @@ class FieldObjectCacheTest < Test::Unit::TestCase
|
|
401
342
|
assert_equal(@cache_objects[i].updated_at,objects[i].updated_at)
|
402
343
|
assert_equal(@cache_objects[i].created_at,objects[i].created_at)
|
403
344
|
end
|
345
|
+
puts "FieldObjectCacheTest test_mget_mset_with_field method stop"
|
404
346
|
end
|
405
347
|
|
406
348
|
def test_mget_mset_with_field_benchmark
|
349
|
+
puts "FieldObjectCacheTest test_mget_mset_with_field_benchmark method start"
|
407
350
|
@field_object_cache.batch_evict @keys
|
408
|
-
times =
|
351
|
+
times = TestHelper::TIMES
|
409
352
|
start = Time.now
|
410
353
|
for i in 1 .. times do
|
411
354
|
@field_object_cache.multi_put_with_field(@cache_objects,@fields)
|
@@ -419,6 +362,7 @@ class FieldObjectCacheTest < Test::Unit::TestCase
|
|
419
362
|
end
|
420
363
|
stop = Time.now
|
421
364
|
puts "#{times} times multi_get_with_field operation total use #{stop-start} seconds"
|
365
|
+
puts "FieldObjectCacheTest test_mget_mset_with_field_benchmark method stop"
|
422
366
|
end
|
423
367
|
|
424
368
|
def teardown
|