moneta 0.7.11 → 0.7.12

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.
Files changed (72) hide show
  1. data/.travis.yml +2 -0
  2. data/CHANGES +5 -0
  3. data/Gemfile +5 -5
  4. data/Rakefile +2 -2
  5. data/lib/moneta.rb +1 -1
  6. data/lib/moneta/adapters/activerecord.rb +15 -5
  7. data/lib/moneta/adapters/cassandra.rb +1 -2
  8. data/lib/moneta/adapters/datamapper.rb +1 -1
  9. data/lib/moneta/adapters/file.rb +17 -17
  10. data/lib/moneta/adapters/sequel.rb +21 -16
  11. data/lib/moneta/adapters/sqlite.rb +2 -0
  12. data/lib/moneta/transformer/config.rb +1 -1
  13. data/lib/moneta/version.rb +1 -1
  14. data/script/benchmarks +9 -9
  15. data/script/generate-specs +73 -27
  16. data/script/install-bundle +1 -0
  17. data/spec/helper.rb +5 -3
  18. data/spec/moneta/adapter_activerecord_spec.rb +5 -3
  19. data/spec/moneta/adapter_client_spec.rb +2 -0
  20. data/spec/moneta/adapter_datamapper_spec.rb +6 -5
  21. data/spec/moneta/adapter_file_spec.rb +2 -0
  22. data/spec/moneta/adapter_hbase_spec.rb +1 -0
  23. data/spec/moneta/adapter_memcached_dalli_spec.rb +2 -0
  24. data/spec/moneta/adapter_memcached_dalli_with_default_expires_spec.rb +2 -0
  25. data/spec/moneta/adapter_memcached_native_spec.rb +2 -0
  26. data/spec/moneta/adapter_memcached_native_with_default_expires_spec.rb +2 -0
  27. data/spec/moneta/adapter_memcached_spec.rb +2 -0
  28. data/spec/moneta/adapter_memcached_with_default_expires_spec.rb +2 -0
  29. data/spec/moneta/adapter_mongo_spec.rb +2 -0
  30. data/spec/moneta/adapter_mongo_with_default_expires_spec.rb +2 -0
  31. data/spec/moneta/adapter_pstore_spec.rb +2 -0
  32. data/spec/moneta/adapter_redis_spec.rb +2 -0
  33. data/spec/moneta/adapter_redis_with_default_expires_spec.rb +2 -0
  34. data/spec/moneta/adapter_sequel_spec.rb +3 -1
  35. data/spec/moneta/adapter_tokyotyrant_spec.rb +2 -0
  36. data/spec/moneta/adapter_yaml_spec.rb +2 -0
  37. data/spec/moneta/cache_file_memory_spec.rb +2 -0
  38. data/spec/moneta/expires_file_spec.rb +2 -0
  39. data/spec/moneta/pool_spec.rb +2 -0
  40. data/spec/moneta/proxy_redis_spec.rb +2 -0
  41. data/spec/moneta/shared_tcp_spec.rb +2 -0
  42. data/spec/moneta/shared_unix_spec.rb +2 -0
  43. data/spec/moneta/simple_activerecord_spec.rb +3 -1
  44. data/spec/moneta/simple_activerecord_with_expires_spec.rb +3 -1
  45. data/spec/moneta/simple_client_tcp_spec.rb +2 -0
  46. data/spec/moneta/simple_client_unix_spec.rb +2 -0
  47. data/spec/moneta/simple_datamapper_spec.rb +2 -1
  48. data/spec/moneta/simple_datamapper_with_expires_spec.rb +2 -1
  49. data/spec/moneta/simple_datamapper_with_repository_spec.rb +2 -1
  50. data/spec/moneta/simple_file_spec.rb +2 -0
  51. data/spec/moneta/simple_file_with_expires_spec.rb +2 -0
  52. data/spec/moneta/simple_hashfile_spec.rb +2 -0
  53. data/spec/moneta/simple_hashfile_with_expires_spec.rb +2 -0
  54. data/spec/moneta/simple_hbase_spec.rb +1 -0
  55. data/spec/moneta/simple_hbase_with_expires_spec.rb +2 -0
  56. data/spec/moneta/simple_memcached_dalli_spec.rb +2 -0
  57. data/spec/moneta/simple_memcached_native_spec.rb +2 -0
  58. data/spec/moneta/simple_memcached_spec.rb +2 -0
  59. data/spec/moneta/simple_mongo_spec.rb +2 -0
  60. data/spec/moneta/simple_pstore_spec.rb +2 -0
  61. data/spec/moneta/simple_pstore_with_expires_spec.rb +2 -0
  62. data/spec/moneta/simple_redis_spec.rb +2 -0
  63. data/spec/moneta/simple_sequel_spec.rb +3 -1
  64. data/spec/moneta/simple_sequel_with_expires_spec.rb +3 -1
  65. data/spec/moneta/simple_tokyotyrant_spec.rb +2 -0
  66. data/spec/moneta/simple_tokyotyrant_with_expires_spec.rb +2 -0
  67. data/spec/moneta/simple_yaml_spec.rb +2 -0
  68. data/spec/moneta/simple_yaml_with_expires_spec.rb +2 -0
  69. data/spec/moneta/stack_memory_file_spec.rb +2 -0
  70. data/spec/monetaspecs.rb +50 -0
  71. data/spec/rack/moneta_cookies_spec.rb +2 -1
  72. 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,7 @@ describe_moneta "simple_hbase" do
15
15
  end
16
16
 
17
17
  include_context 'setup_store'
18
+ it_should_behave_like 'concurrent_increment'
18
19
  it_should_behave_like 'features'
19
20
  it_should_behave_like 'increment'
20
21
  it_should_behave_like 'marshallable_key'
@@ -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:sqlite:" : "sqlite:") + File.join(make_tempdir, "simple_sequel"), :logger => {:file => File.join(make_tempdir, 'simple_sequel.log')})
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:sqlite:" : "sqlite:") + File.join(make_tempdir, "simple_sequel_with_expires"), :expires => true, :logger => {:file => File.join(make_tempdir, 'simple_sequel_with_expires.log')})
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 eql('key=; max-age=0; expires=Thu, 01 Jan 1970 00:00:00 -0000')
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.11
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-03 00:00:00.000000000 Z
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: