moneta 0.7.11 → 0.7.12
Sign up to get free protection for your applications and to get access to all the features.
- data/.travis.yml +2 -0
- data/CHANGES +5 -0
- data/Gemfile +5 -5
- data/Rakefile +2 -2
- data/lib/moneta.rb +1 -1
- data/lib/moneta/adapters/activerecord.rb +15 -5
- data/lib/moneta/adapters/cassandra.rb +1 -2
- data/lib/moneta/adapters/datamapper.rb +1 -1
- data/lib/moneta/adapters/file.rb +17 -17
- data/lib/moneta/adapters/sequel.rb +21 -16
- data/lib/moneta/adapters/sqlite.rb +2 -0
- data/lib/moneta/transformer/config.rb +1 -1
- data/lib/moneta/version.rb +1 -1
- data/script/benchmarks +9 -9
- data/script/generate-specs +73 -27
- data/script/install-bundle +1 -0
- data/spec/helper.rb +5 -3
- data/spec/moneta/adapter_activerecord_spec.rb +5 -3
- data/spec/moneta/adapter_client_spec.rb +2 -0
- data/spec/moneta/adapter_datamapper_spec.rb +6 -5
- data/spec/moneta/adapter_file_spec.rb +2 -0
- data/spec/moneta/adapter_hbase_spec.rb +1 -0
- data/spec/moneta/adapter_memcached_dalli_spec.rb +2 -0
- data/spec/moneta/adapter_memcached_dalli_with_default_expires_spec.rb +2 -0
- data/spec/moneta/adapter_memcached_native_spec.rb +2 -0
- data/spec/moneta/adapter_memcached_native_with_default_expires_spec.rb +2 -0
- data/spec/moneta/adapter_memcached_spec.rb +2 -0
- data/spec/moneta/adapter_memcached_with_default_expires_spec.rb +2 -0
- data/spec/moneta/adapter_mongo_spec.rb +2 -0
- data/spec/moneta/adapter_mongo_with_default_expires_spec.rb +2 -0
- data/spec/moneta/adapter_pstore_spec.rb +2 -0
- data/spec/moneta/adapter_redis_spec.rb +2 -0
- data/spec/moneta/adapter_redis_with_default_expires_spec.rb +2 -0
- data/spec/moneta/adapter_sequel_spec.rb +3 -1
- data/spec/moneta/adapter_tokyotyrant_spec.rb +2 -0
- data/spec/moneta/adapter_yaml_spec.rb +2 -0
- data/spec/moneta/cache_file_memory_spec.rb +2 -0
- data/spec/moneta/expires_file_spec.rb +2 -0
- data/spec/moneta/pool_spec.rb +2 -0
- data/spec/moneta/proxy_redis_spec.rb +2 -0
- data/spec/moneta/shared_tcp_spec.rb +2 -0
- data/spec/moneta/shared_unix_spec.rb +2 -0
- data/spec/moneta/simple_activerecord_spec.rb +3 -1
- data/spec/moneta/simple_activerecord_with_expires_spec.rb +3 -1
- data/spec/moneta/simple_client_tcp_spec.rb +2 -0
- data/spec/moneta/simple_client_unix_spec.rb +2 -0
- data/spec/moneta/simple_datamapper_spec.rb +2 -1
- data/spec/moneta/simple_datamapper_with_expires_spec.rb +2 -1
- data/spec/moneta/simple_datamapper_with_repository_spec.rb +2 -1
- data/spec/moneta/simple_file_spec.rb +2 -0
- data/spec/moneta/simple_file_with_expires_spec.rb +2 -0
- data/spec/moneta/simple_hashfile_spec.rb +2 -0
- data/spec/moneta/simple_hashfile_with_expires_spec.rb +2 -0
- data/spec/moneta/simple_hbase_spec.rb +1 -0
- data/spec/moneta/simple_hbase_with_expires_spec.rb +2 -0
- data/spec/moneta/simple_memcached_dalli_spec.rb +2 -0
- data/spec/moneta/simple_memcached_native_spec.rb +2 -0
- data/spec/moneta/simple_memcached_spec.rb +2 -0
- data/spec/moneta/simple_mongo_spec.rb +2 -0
- data/spec/moneta/simple_pstore_spec.rb +2 -0
- data/spec/moneta/simple_pstore_with_expires_spec.rb +2 -0
- data/spec/moneta/simple_redis_spec.rb +2 -0
- data/spec/moneta/simple_sequel_spec.rb +3 -1
- data/spec/moneta/simple_sequel_with_expires_spec.rb +3 -1
- data/spec/moneta/simple_tokyotyrant_spec.rb +2 -0
- data/spec/moneta/simple_tokyotyrant_with_expires_spec.rb +2 -0
- data/spec/moneta/simple_yaml_spec.rb +2 -0
- data/spec/moneta/simple_yaml_with_expires_spec.rb +2 -0
- data/spec/moneta/stack_memory_file_spec.rb +2 -0
- data/spec/monetaspecs.rb +50 -0
- data/spec/rack/moneta_cookies_spec.rb +2 -1
- metadata +2 -2
@@ -15,6 +15,8 @@ describe_moneta "simple_file" do
|
|
15
15
|
end
|
16
16
|
|
17
17
|
include_context 'setup_store'
|
18
|
+
it_should_behave_like 'concurrent_create'
|
19
|
+
it_should_behave_like 'concurrent_increment'
|
18
20
|
it_should_behave_like 'create'
|
19
21
|
it_should_behave_like 'features'
|
20
22
|
it_should_behave_like 'increment'
|
@@ -15,6 +15,8 @@ describe_moneta "simple_file_with_expires" do
|
|
15
15
|
end
|
16
16
|
|
17
17
|
include_context 'setup_store'
|
18
|
+
it_should_behave_like 'concurrent_create'
|
19
|
+
it_should_behave_like 'concurrent_increment'
|
18
20
|
it_should_behave_like 'create'
|
19
21
|
it_should_behave_like 'create_expires'
|
20
22
|
it_should_behave_like 'expires'
|
@@ -15,6 +15,8 @@ describe_moneta "simple_hashfile" do
|
|
15
15
|
end
|
16
16
|
|
17
17
|
include_context 'setup_store'
|
18
|
+
it_should_behave_like 'concurrent_create'
|
19
|
+
it_should_behave_like 'concurrent_increment'
|
18
20
|
it_should_behave_like 'create'
|
19
21
|
it_should_behave_like 'features'
|
20
22
|
it_should_behave_like 'increment'
|
@@ -15,6 +15,8 @@ describe_moneta "simple_hashfile_with_expires" do
|
|
15
15
|
end
|
16
16
|
|
17
17
|
include_context 'setup_store'
|
18
|
+
it_should_behave_like 'concurrent_create'
|
19
|
+
it_should_behave_like 'concurrent_increment'
|
18
20
|
it_should_behave_like 'create'
|
19
21
|
it_should_behave_like 'create_expires'
|
20
22
|
it_should_behave_like 'expires'
|
@@ -15,6 +15,8 @@ describe_moneta "simple_hbase_with_expires" do
|
|
15
15
|
end
|
16
16
|
|
17
17
|
include_context 'setup_store'
|
18
|
+
it_should_behave_like 'concurrent_create'
|
19
|
+
it_should_behave_like 'concurrent_increment'
|
18
20
|
it_should_behave_like 'create'
|
19
21
|
it_should_behave_like 'create_expires'
|
20
22
|
it_should_behave_like 'expires'
|
@@ -15,6 +15,8 @@ describe_moneta "simple_memcached_dalli" do
|
|
15
15
|
end
|
16
16
|
|
17
17
|
include_context 'setup_store'
|
18
|
+
it_should_behave_like 'concurrent_create'
|
19
|
+
it_should_behave_like 'concurrent_increment'
|
18
20
|
it_should_behave_like 'create'
|
19
21
|
it_should_behave_like 'create_expires'
|
20
22
|
it_should_behave_like 'expires'
|
@@ -15,6 +15,8 @@ describe_moneta "simple_memcached_native" do
|
|
15
15
|
end
|
16
16
|
|
17
17
|
include_context 'setup_store'
|
18
|
+
it_should_behave_like 'concurrent_create'
|
19
|
+
it_should_behave_like 'concurrent_increment'
|
18
20
|
it_should_behave_like 'create'
|
19
21
|
it_should_behave_like 'create_expires'
|
20
22
|
it_should_behave_like 'expires'
|
@@ -15,6 +15,8 @@ describe_moneta "simple_memcached" do
|
|
15
15
|
end
|
16
16
|
|
17
17
|
include_context 'setup_store'
|
18
|
+
it_should_behave_like 'concurrent_create'
|
19
|
+
it_should_behave_like 'concurrent_increment'
|
18
20
|
it_should_behave_like 'create'
|
19
21
|
it_should_behave_like 'create_expires'
|
20
22
|
it_should_behave_like 'expires'
|
@@ -15,6 +15,8 @@ describe_moneta "simple_mongo" do
|
|
15
15
|
end
|
16
16
|
|
17
17
|
include_context 'setup_store'
|
18
|
+
it_should_behave_like 'concurrent_create'
|
19
|
+
it_should_behave_like 'concurrent_increment'
|
18
20
|
it_should_behave_like 'create'
|
19
21
|
it_should_behave_like 'create_expires'
|
20
22
|
it_should_behave_like 'expires'
|
@@ -15,6 +15,8 @@ describe_moneta "simple_pstore" do
|
|
15
15
|
end
|
16
16
|
|
17
17
|
include_context 'setup_store'
|
18
|
+
it_should_behave_like 'concurrent_create'
|
19
|
+
it_should_behave_like 'concurrent_increment'
|
18
20
|
it_should_behave_like 'create'
|
19
21
|
it_should_behave_like 'features'
|
20
22
|
it_should_behave_like 'increment'
|
@@ -15,6 +15,8 @@ describe_moneta "simple_pstore_with_expires" do
|
|
15
15
|
end
|
16
16
|
|
17
17
|
include_context 'setup_store'
|
18
|
+
it_should_behave_like 'concurrent_create'
|
19
|
+
it_should_behave_like 'concurrent_increment'
|
18
20
|
it_should_behave_like 'create'
|
19
21
|
it_should_behave_like 'create_expires'
|
20
22
|
it_should_behave_like 'expires'
|
@@ -15,6 +15,8 @@ describe_moneta "simple_redis" do
|
|
15
15
|
end
|
16
16
|
|
17
17
|
include_context 'setup_store'
|
18
|
+
it_should_behave_like 'concurrent_create'
|
19
|
+
it_should_behave_like 'concurrent_increment'
|
18
20
|
it_should_behave_like 'create'
|
19
21
|
it_should_behave_like 'create_expires'
|
20
22
|
it_should_behave_like 'expires'
|
@@ -7,7 +7,7 @@ describe_moneta "simple_sequel" do
|
|
7
7
|
end
|
8
8
|
|
9
9
|
def new_store
|
10
|
-
Moneta.new(:Sequel, :db => (defined?(JRUBY_VERSION) ? "jdbc:
|
10
|
+
Moneta.new(:Sequel, :db => (defined?(JRUBY_VERSION) ? "jdbc:mysql" : "mysql2") + "://root:@localhost/moneta", :table => "simple_sequel", :logger => {:file => File.join(make_tempdir, 'simple_sequel.log')})
|
11
11
|
end
|
12
12
|
|
13
13
|
def load_value(value)
|
@@ -15,6 +15,8 @@ describe_moneta "simple_sequel" do
|
|
15
15
|
end
|
16
16
|
|
17
17
|
include_context 'setup_store'
|
18
|
+
it_should_behave_like 'concurrent_create'
|
19
|
+
it_should_behave_like 'concurrent_increment'
|
18
20
|
it_should_behave_like 'create'
|
19
21
|
it_should_behave_like 'features'
|
20
22
|
it_should_behave_like 'increment'
|
@@ -7,7 +7,7 @@ describe_moneta "simple_sequel_with_expires" do
|
|
7
7
|
end
|
8
8
|
|
9
9
|
def new_store
|
10
|
-
Moneta.new(:Sequel, :db => (defined?(JRUBY_VERSION) ? "jdbc:
|
10
|
+
Moneta.new(:Sequel, :db => (defined?(JRUBY_VERSION) ? "jdbc:mysql" : "mysql2") + "://root:@localhost/moneta", :table => "simple_sequel_with_expires", :expires => true, :logger => {:file => File.join(make_tempdir, 'simple_sequel_with_expires.log')})
|
11
11
|
end
|
12
12
|
|
13
13
|
def load_value(value)
|
@@ -15,6 +15,8 @@ describe_moneta "simple_sequel_with_expires" do
|
|
15
15
|
end
|
16
16
|
|
17
17
|
include_context 'setup_store'
|
18
|
+
it_should_behave_like 'concurrent_create'
|
19
|
+
it_should_behave_like 'concurrent_increment'
|
18
20
|
it_should_behave_like 'create'
|
19
21
|
it_should_behave_like 'create_expires'
|
20
22
|
it_should_behave_like 'expires'
|
@@ -15,6 +15,8 @@ describe_moneta "simple_tokyotyrant" do
|
|
15
15
|
end
|
16
16
|
|
17
17
|
include_context 'setup_store'
|
18
|
+
it_should_behave_like 'concurrent_create'
|
19
|
+
it_should_behave_like 'concurrent_increment'
|
18
20
|
it_should_behave_like 'create'
|
19
21
|
it_should_behave_like 'features'
|
20
22
|
it_should_behave_like 'increment'
|
@@ -15,6 +15,8 @@ describe_moneta "simple_tokyotyrant_with_expires" do
|
|
15
15
|
end
|
16
16
|
|
17
17
|
include_context 'setup_store'
|
18
|
+
it_should_behave_like 'concurrent_create'
|
19
|
+
it_should_behave_like 'concurrent_increment'
|
18
20
|
it_should_behave_like 'create'
|
19
21
|
it_should_behave_like 'create_expires'
|
20
22
|
it_should_behave_like 'expires'
|
@@ -15,6 +15,8 @@ describe_moneta "simple_yaml" do
|
|
15
15
|
end
|
16
16
|
|
17
17
|
include_context 'setup_store'
|
18
|
+
it_should_behave_like 'concurrent_create'
|
19
|
+
it_should_behave_like 'concurrent_increment'
|
18
20
|
it_should_behave_like 'create'
|
19
21
|
it_should_behave_like 'features'
|
20
22
|
it_should_behave_like 'increment'
|
@@ -15,6 +15,8 @@ describe_moneta "simple_yaml_with_expires" do
|
|
15
15
|
end
|
16
16
|
|
17
17
|
include_context 'setup_store'
|
18
|
+
it_should_behave_like 'concurrent_create'
|
19
|
+
it_should_behave_like 'concurrent_increment'
|
18
20
|
it_should_behave_like 'create'
|
19
21
|
it_should_behave_like 'create_expires'
|
20
22
|
it_should_behave_like 'expires'
|
@@ -20,6 +20,8 @@ describe_moneta "stack_memory_file" do
|
|
20
20
|
end
|
21
21
|
|
22
22
|
include_context 'setup_store'
|
23
|
+
it_should_behave_like 'concurrent_create'
|
24
|
+
it_should_behave_like 'concurrent_increment'
|
23
25
|
it_should_behave_like 'create'
|
24
26
|
it_should_behave_like 'features'
|
25
27
|
it_should_behave_like 'increment'
|
data/spec/monetaspecs.rb
CHANGED
@@ -17142,6 +17142,56 @@ shared_examples_for 'not_increment' do
|
|
17142
17142
|
end
|
17143
17143
|
end
|
17144
17144
|
|
17145
|
+
#################### concurrent_increment ####################
|
17146
|
+
|
17147
|
+
shared_examples_for 'concurrent_increment' do
|
17148
|
+
def increment_thread(name)
|
17149
|
+
Thread.new do
|
17150
|
+
s = new_store
|
17151
|
+
1000.times do |i|
|
17152
|
+
s.increment('counter')
|
17153
|
+
s.store("#{name}#{i}", i.to_s, :expires => false)
|
17154
|
+
sleep 0.01 if i % 100 == 0
|
17155
|
+
end
|
17156
|
+
s.close
|
17157
|
+
end
|
17158
|
+
end
|
17159
|
+
|
17160
|
+
it 'have atomic increment across multiple processes' do
|
17161
|
+
a = increment_thread('a')
|
17162
|
+
b = increment_thread('b')
|
17163
|
+
a.join
|
17164
|
+
b.join
|
17165
|
+
1000.times do |i|
|
17166
|
+
store["a#{i}"].should == i.to_s
|
17167
|
+
store["b#{i}"].should == i.to_s
|
17168
|
+
end
|
17169
|
+
store.raw['counter'].should == 2000.to_s
|
17170
|
+
end
|
17171
|
+
end
|
17172
|
+
|
17173
|
+
#################### concurrent_create ####################
|
17174
|
+
|
17175
|
+
shared_examples_for 'concurrent_create' do
|
17176
|
+
def create_thread(name)
|
17177
|
+
a = Thread.new do
|
17178
|
+
s = new_store
|
17179
|
+
1000.times do |i|
|
17180
|
+
s[i.to_s].should == name if s.create(i.to_s, name, :expires => false)
|
17181
|
+
sleep 0.01 if i % 100 == 0
|
17182
|
+
end
|
17183
|
+
s.close
|
17184
|
+
end
|
17185
|
+
end
|
17186
|
+
|
17187
|
+
it 'have atomic create across multiple processes' do
|
17188
|
+
a = create_thread('a')
|
17189
|
+
b = create_thread('b')
|
17190
|
+
a.join
|
17191
|
+
b.join
|
17192
|
+
end
|
17193
|
+
end
|
17194
|
+
|
17145
17195
|
#################### increment ####################
|
17146
17196
|
|
17147
17197
|
shared_examples_for 'increment' do
|
@@ -43,7 +43,8 @@ describe Rack::MonetaCookies do
|
|
43
43
|
get 'key' => 'value' do
|
44
44
|
@store.delete('key')
|
45
45
|
end
|
46
|
-
expect( @response['Set-Cookie'] ).to
|
46
|
+
expect( @response['Set-Cookie'] ).to match(/key=;/)
|
47
|
+
expect( @response['Set-Cookie'] ).to match(/\s+expires=.*?1970/)
|
47
48
|
end
|
48
49
|
|
49
50
|
it 'should accept a config block' do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: moneta
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.7.
|
4
|
+
version: 0.7.12
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2013-02-
|
14
|
+
date: 2013-02-04 00:00:00.000000000 Z
|
15
15
|
dependencies: []
|
16
16
|
description: A unified interface to key/value stores
|
17
17
|
email:
|