moneta 0.7.9 → 0.7.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.
Files changed (52) hide show
  1. data/.travis.yml +2 -2
  2. data/CHANGES +6 -0
  3. data/Gemfile +2 -0
  4. data/README.md +7 -4
  5. data/Rakefile +2 -2
  6. data/lib/moneta.rb +1 -0
  7. data/lib/moneta/adapters/activerecord.rb +1 -2
  8. data/lib/moneta/adapters/cassandra.rb +31 -26
  9. data/lib/moneta/adapters/cookie.rb +2 -2
  10. data/lib/moneta/adapters/couch.rb +5 -3
  11. data/lib/moneta/adapters/daybreak.rb +13 -9
  12. data/lib/moneta/adapters/dbm.rb +7 -3
  13. data/lib/moneta/adapters/file.rb +4 -3
  14. data/lib/moneta/adapters/fog.rb +5 -2
  15. data/lib/moneta/adapters/gdbm.rb +7 -3
  16. data/lib/moneta/adapters/hbase.rb +11 -9
  17. data/lib/moneta/adapters/kyotocabinet.rb +13 -8
  18. data/lib/moneta/adapters/leveldb.rb +9 -5
  19. data/lib/moneta/adapters/localmemcache.rb +7 -3
  20. data/lib/moneta/adapters/memcached/dalli.rb +16 -11
  21. data/lib/moneta/adapters/memcached/native.rb +20 -15
  22. data/lib/moneta/adapters/memory.rb +2 -1
  23. data/lib/moneta/adapters/mongo.rb +13 -8
  24. data/lib/moneta/adapters/pstore.rb +24 -21
  25. data/lib/moneta/adapters/redis.rb +14 -12
  26. data/lib/moneta/adapters/restclient.rb +10 -7
  27. data/lib/moneta/adapters/riak.rb +5 -1
  28. data/lib/moneta/adapters/sdbm.rb +7 -3
  29. data/lib/moneta/adapters/sequel.rb +13 -8
  30. data/lib/moneta/adapters/sqlite.rb +15 -10
  31. data/lib/moneta/adapters/tdb.rb +8 -4
  32. data/lib/moneta/adapters/tokyocabinet.rb +15 -10
  33. data/lib/moneta/adapters/tokyotyrant.rb +107 -0
  34. data/lib/moneta/cache.rb +17 -17
  35. data/lib/moneta/mixins.rb +7 -5
  36. data/lib/moneta/version.rb +1 -1
  37. data/lib/rack/moneta_store.rb +1 -1
  38. data/lib/rack/session/moneta.rb +6 -3
  39. data/script/benchmarks +28 -28
  40. data/script/generate-specs +96 -41
  41. data/script/memusage +40 -0
  42. data/script/start-services +1 -0
  43. data/spec/helper.rb +4 -1
  44. data/spec/moneta/adapter_tokyotyrant_spec.rb +30 -0
  45. data/spec/moneta/cache_file_memory_spec.rb +3 -3
  46. data/spec/moneta/cache_memory_null_spec.rb +1 -1
  47. data/spec/moneta/simple_tokyotyrant_spec.rb +155 -0
  48. data/spec/moneta/simple_tokyotyrant_with_expires_spec.rb +157 -0
  49. data/spec/monetaspecs.rb +79 -37
  50. data/spec/rack/moneta_store_spec.rb +1 -1
  51. data/spec/rack/session_moneta_spec.rb +27 -0
  52. metadata +10 -3
@@ -5,4 +5,5 @@ sudo service redis-server start
5
5
  sudo service cassandra start
6
6
  sudo service memcached start
7
7
  sudo service mongodb start
8
+ /usr/sbin/ttserver -dmn
8
9
  sleep 3
@@ -1,7 +1,9 @@
1
+ require 'rspec'
2
+ require 'rspec/core/formatters/progress_formatter'
3
+ require 'rspec/retry'
1
4
  require 'moneta'
2
5
  require 'fileutils'
3
6
  require 'monetaspecs'
4
- require 'rspec/core/formatters/progress_formatter'
5
7
 
6
8
  RSpec::Core::Formatters::ProgressFormatter.class_eval do
7
9
  def example_passed(example)
@@ -10,6 +12,7 @@ RSpec::Core::Formatters::ProgressFormatter.class_eval do
10
12
  end
11
13
 
12
14
  RSpec.configure do |config|
15
+ config.verbose_retry = true
13
16
  config.color_enabled = true
14
17
  config.tty = true
15
18
  config.formatter = :progress
@@ -0,0 +1,30 @@
1
+ # Generated by generate-specs
2
+ require 'helper'
3
+
4
+ describe_moneta "adapter_tokyotyrant" do
5
+ def log
6
+ @log ||= File.open(File.join(make_tempdir, 'adapter_tokyotyrant.log'), 'a')
7
+ end
8
+
9
+ def features
10
+ [:create, :increment]
11
+ end
12
+
13
+ def new_store
14
+ Moneta::Adapters::TokyoTyrant.new
15
+ end
16
+
17
+ def load_value(value)
18
+ Marshal.load(value)
19
+ end
20
+
21
+ include_context 'setup_store'
22
+ it_should_behave_like 'create'
23
+ it_should_behave_like 'features'
24
+ it_should_behave_like 'increment'
25
+ it_should_behave_like 'multiprocess'
26
+ it_should_behave_like 'null_stringkey_stringvalue'
27
+ it_should_behave_like 'persist_stringkey_stringvalue'
28
+ it_should_behave_like 'returndifferent_stringkey_stringvalue'
29
+ it_should_behave_like 'store_stringkey_stringvalue'
30
+ end
@@ -13,7 +13,7 @@ describe_moneta "cache_file_memory" do
13
13
  def new_store
14
14
  Moneta.build do
15
15
  use(:Cache) do
16
- backend { adapter :File, :dir => File.join(make_tempdir, "cache_file_memory") }
16
+ adapter { adapter :File, :dir => File.join(make_tempdir, "cache_file_memory") }
17
17
  cache { adapter :Memory }
18
18
  end
19
19
  end
@@ -33,11 +33,11 @@ describe_moneta "cache_file_memory" do
33
33
  it_should_behave_like 'returnsame_stringkey_stringvalue'
34
34
  it_should_behave_like 'store_stringkey_stringvalue'
35
35
  it 'stores loaded values in cache' do
36
- store.backend['foo'] = 'bar'
36
+ store.adapter['foo'] = 'bar'
37
37
  store.cache['foo'].should be_nil
38
38
  store['foo'].should == 'bar'
39
39
  store.cache['foo'].should == 'bar'
40
- store.backend.delete('foo')
40
+ store.adapter.delete('foo')
41
41
  store['foo'].should == 'bar'
42
42
  store.delete('foo')
43
43
  store['foo'].should be_nil
@@ -13,7 +13,7 @@ describe_moneta "cache_memory_null" do
13
13
  def new_store
14
14
  Moneta.build do
15
15
  use(:Cache) do
16
- backend(Moneta::Adapters::Memory.new)
16
+ adapter(Moneta::Adapters::Memory.new)
17
17
  cache(Moneta::Adapters::Null.new)
18
18
  end
19
19
  end
@@ -0,0 +1,155 @@
1
+ # Generated by generate-specs
2
+ require 'helper'
3
+
4
+ describe_moneta "simple_tokyotyrant" do
5
+ def log
6
+ @log ||= File.open(File.join(make_tempdir, 'simple_tokyotyrant.log'), 'a')
7
+ end
8
+
9
+ def features
10
+ [:create, :increment]
11
+ end
12
+
13
+ def new_store
14
+ Moneta.new(:TokyoTyrant, :logger => {:out => log})
15
+ end
16
+
17
+ def load_value(value)
18
+ Marshal.load(value)
19
+ end
20
+
21
+ include_context 'setup_store'
22
+ it_should_behave_like 'create'
23
+ it_should_behave_like 'features'
24
+ it_should_behave_like 'increment'
25
+ it_should_behave_like 'marshallable_key'
26
+ it_should_behave_like 'marshallable_value'
27
+ it_should_behave_like 'multiprocess'
28
+ it_should_behave_like 'null_objectkey_objectvalue'
29
+ it_should_behave_like 'null_objectkey_stringvalue'
30
+ it_should_behave_like 'null_objectkey_hashvalue'
31
+ it_should_behave_like 'null_objectkey_booleanvalue'
32
+ it_should_behave_like 'null_objectkey_nilvalue'
33
+ it_should_behave_like 'null_objectkey_integervalue'
34
+ it_should_behave_like 'null_stringkey_objectvalue'
35
+ it_should_behave_like 'null_stringkey_stringvalue'
36
+ it_should_behave_like 'null_stringkey_hashvalue'
37
+ it_should_behave_like 'null_stringkey_booleanvalue'
38
+ it_should_behave_like 'null_stringkey_nilvalue'
39
+ it_should_behave_like 'null_stringkey_integervalue'
40
+ it_should_behave_like 'null_hashkey_objectvalue'
41
+ it_should_behave_like 'null_hashkey_stringvalue'
42
+ it_should_behave_like 'null_hashkey_hashvalue'
43
+ it_should_behave_like 'null_hashkey_booleanvalue'
44
+ it_should_behave_like 'null_hashkey_nilvalue'
45
+ it_should_behave_like 'null_hashkey_integervalue'
46
+ it_should_behave_like 'null_booleankey_objectvalue'
47
+ it_should_behave_like 'null_booleankey_stringvalue'
48
+ it_should_behave_like 'null_booleankey_hashvalue'
49
+ it_should_behave_like 'null_booleankey_booleanvalue'
50
+ it_should_behave_like 'null_booleankey_nilvalue'
51
+ it_should_behave_like 'null_booleankey_integervalue'
52
+ it_should_behave_like 'null_nilkey_objectvalue'
53
+ it_should_behave_like 'null_nilkey_stringvalue'
54
+ it_should_behave_like 'null_nilkey_hashvalue'
55
+ it_should_behave_like 'null_nilkey_booleanvalue'
56
+ it_should_behave_like 'null_nilkey_nilvalue'
57
+ it_should_behave_like 'null_nilkey_integervalue'
58
+ it_should_behave_like 'null_integerkey_objectvalue'
59
+ it_should_behave_like 'null_integerkey_stringvalue'
60
+ it_should_behave_like 'null_integerkey_hashvalue'
61
+ it_should_behave_like 'null_integerkey_booleanvalue'
62
+ it_should_behave_like 'null_integerkey_nilvalue'
63
+ it_should_behave_like 'null_integerkey_integervalue'
64
+ it_should_behave_like 'persist_objectkey_objectvalue'
65
+ it_should_behave_like 'persist_objectkey_stringvalue'
66
+ it_should_behave_like 'persist_objectkey_hashvalue'
67
+ it_should_behave_like 'persist_objectkey_booleanvalue'
68
+ it_should_behave_like 'persist_objectkey_nilvalue'
69
+ it_should_behave_like 'persist_objectkey_integervalue'
70
+ it_should_behave_like 'persist_stringkey_objectvalue'
71
+ it_should_behave_like 'persist_stringkey_stringvalue'
72
+ it_should_behave_like 'persist_stringkey_hashvalue'
73
+ it_should_behave_like 'persist_stringkey_booleanvalue'
74
+ it_should_behave_like 'persist_stringkey_nilvalue'
75
+ it_should_behave_like 'persist_stringkey_integervalue'
76
+ it_should_behave_like 'persist_hashkey_objectvalue'
77
+ it_should_behave_like 'persist_hashkey_stringvalue'
78
+ it_should_behave_like 'persist_hashkey_hashvalue'
79
+ it_should_behave_like 'persist_hashkey_booleanvalue'
80
+ it_should_behave_like 'persist_hashkey_nilvalue'
81
+ it_should_behave_like 'persist_hashkey_integervalue'
82
+ it_should_behave_like 'persist_booleankey_objectvalue'
83
+ it_should_behave_like 'persist_booleankey_stringvalue'
84
+ it_should_behave_like 'persist_booleankey_hashvalue'
85
+ it_should_behave_like 'persist_booleankey_booleanvalue'
86
+ it_should_behave_like 'persist_booleankey_nilvalue'
87
+ it_should_behave_like 'persist_booleankey_integervalue'
88
+ it_should_behave_like 'persist_nilkey_objectvalue'
89
+ it_should_behave_like 'persist_nilkey_stringvalue'
90
+ it_should_behave_like 'persist_nilkey_hashvalue'
91
+ it_should_behave_like 'persist_nilkey_booleanvalue'
92
+ it_should_behave_like 'persist_nilkey_nilvalue'
93
+ it_should_behave_like 'persist_nilkey_integervalue'
94
+ it_should_behave_like 'persist_integerkey_objectvalue'
95
+ it_should_behave_like 'persist_integerkey_stringvalue'
96
+ it_should_behave_like 'persist_integerkey_hashvalue'
97
+ it_should_behave_like 'persist_integerkey_booleanvalue'
98
+ it_should_behave_like 'persist_integerkey_nilvalue'
99
+ it_should_behave_like 'persist_integerkey_integervalue'
100
+ it_should_behave_like 'returndifferent_objectkey_objectvalue'
101
+ it_should_behave_like 'returndifferent_objectkey_stringvalue'
102
+ it_should_behave_like 'returndifferent_objectkey_hashvalue'
103
+ it_should_behave_like 'returndifferent_stringkey_objectvalue'
104
+ it_should_behave_like 'returndifferent_stringkey_stringvalue'
105
+ it_should_behave_like 'returndifferent_stringkey_hashvalue'
106
+ it_should_behave_like 'returndifferent_hashkey_objectvalue'
107
+ it_should_behave_like 'returndifferent_hashkey_stringvalue'
108
+ it_should_behave_like 'returndifferent_hashkey_hashvalue'
109
+ it_should_behave_like 'returndifferent_booleankey_objectvalue'
110
+ it_should_behave_like 'returndifferent_booleankey_stringvalue'
111
+ it_should_behave_like 'returndifferent_booleankey_hashvalue'
112
+ it_should_behave_like 'returndifferent_nilkey_objectvalue'
113
+ it_should_behave_like 'returndifferent_nilkey_stringvalue'
114
+ it_should_behave_like 'returndifferent_nilkey_hashvalue'
115
+ it_should_behave_like 'returndifferent_integerkey_objectvalue'
116
+ it_should_behave_like 'returndifferent_integerkey_stringvalue'
117
+ it_should_behave_like 'returndifferent_integerkey_hashvalue'
118
+ it_should_behave_like 'store_objectkey_objectvalue'
119
+ it_should_behave_like 'store_objectkey_stringvalue'
120
+ it_should_behave_like 'store_objectkey_hashvalue'
121
+ it_should_behave_like 'store_objectkey_booleanvalue'
122
+ it_should_behave_like 'store_objectkey_nilvalue'
123
+ it_should_behave_like 'store_objectkey_integervalue'
124
+ it_should_behave_like 'store_stringkey_objectvalue'
125
+ it_should_behave_like 'store_stringkey_stringvalue'
126
+ it_should_behave_like 'store_stringkey_hashvalue'
127
+ it_should_behave_like 'store_stringkey_booleanvalue'
128
+ it_should_behave_like 'store_stringkey_nilvalue'
129
+ it_should_behave_like 'store_stringkey_integervalue'
130
+ it_should_behave_like 'store_hashkey_objectvalue'
131
+ it_should_behave_like 'store_hashkey_stringvalue'
132
+ it_should_behave_like 'store_hashkey_hashvalue'
133
+ it_should_behave_like 'store_hashkey_booleanvalue'
134
+ it_should_behave_like 'store_hashkey_nilvalue'
135
+ it_should_behave_like 'store_hashkey_integervalue'
136
+ it_should_behave_like 'store_booleankey_objectvalue'
137
+ it_should_behave_like 'store_booleankey_stringvalue'
138
+ it_should_behave_like 'store_booleankey_hashvalue'
139
+ it_should_behave_like 'store_booleankey_booleanvalue'
140
+ it_should_behave_like 'store_booleankey_nilvalue'
141
+ it_should_behave_like 'store_booleankey_integervalue'
142
+ it_should_behave_like 'store_nilkey_objectvalue'
143
+ it_should_behave_like 'store_nilkey_stringvalue'
144
+ it_should_behave_like 'store_nilkey_hashvalue'
145
+ it_should_behave_like 'store_nilkey_booleanvalue'
146
+ it_should_behave_like 'store_nilkey_nilvalue'
147
+ it_should_behave_like 'store_nilkey_integervalue'
148
+ it_should_behave_like 'store_integerkey_objectvalue'
149
+ it_should_behave_like 'store_integerkey_stringvalue'
150
+ it_should_behave_like 'store_integerkey_hashvalue'
151
+ it_should_behave_like 'store_integerkey_booleanvalue'
152
+ it_should_behave_like 'store_integerkey_nilvalue'
153
+ it_should_behave_like 'store_integerkey_integervalue'
154
+ it_should_behave_like 'transform_value'
155
+ end
@@ -0,0 +1,157 @@
1
+ # Generated by generate-specs
2
+ require 'helper'
3
+
4
+ describe_moneta "simple_tokyotyrant_with_expires" do
5
+ def log
6
+ @log ||= File.open(File.join(make_tempdir, 'simple_tokyotyrant_with_expires.log'), 'a')
7
+ end
8
+
9
+ def features
10
+ [:create, :expires, :increment]
11
+ end
12
+
13
+ def new_store
14
+ Moneta.new(:TokyoTyrant, :expires => true, :logger => {:out => log})
15
+ end
16
+
17
+ def load_value(value)
18
+ Marshal.load(value)
19
+ end
20
+
21
+ include_context 'setup_store'
22
+ it_should_behave_like 'create'
23
+ it_should_behave_like 'create_expires'
24
+ it_should_behave_like 'expires'
25
+ it_should_behave_like 'features'
26
+ it_should_behave_like 'increment'
27
+ it_should_behave_like 'marshallable_key'
28
+ it_should_behave_like 'marshallable_value'
29
+ it_should_behave_like 'multiprocess'
30
+ it_should_behave_like 'null_objectkey_objectvalue'
31
+ it_should_behave_like 'null_objectkey_stringvalue'
32
+ it_should_behave_like 'null_objectkey_hashvalue'
33
+ it_should_behave_like 'null_objectkey_booleanvalue'
34
+ it_should_behave_like 'null_objectkey_nilvalue'
35
+ it_should_behave_like 'null_objectkey_integervalue'
36
+ it_should_behave_like 'null_stringkey_objectvalue'
37
+ it_should_behave_like 'null_stringkey_stringvalue'
38
+ it_should_behave_like 'null_stringkey_hashvalue'
39
+ it_should_behave_like 'null_stringkey_booleanvalue'
40
+ it_should_behave_like 'null_stringkey_nilvalue'
41
+ it_should_behave_like 'null_stringkey_integervalue'
42
+ it_should_behave_like 'null_hashkey_objectvalue'
43
+ it_should_behave_like 'null_hashkey_stringvalue'
44
+ it_should_behave_like 'null_hashkey_hashvalue'
45
+ it_should_behave_like 'null_hashkey_booleanvalue'
46
+ it_should_behave_like 'null_hashkey_nilvalue'
47
+ it_should_behave_like 'null_hashkey_integervalue'
48
+ it_should_behave_like 'null_booleankey_objectvalue'
49
+ it_should_behave_like 'null_booleankey_stringvalue'
50
+ it_should_behave_like 'null_booleankey_hashvalue'
51
+ it_should_behave_like 'null_booleankey_booleanvalue'
52
+ it_should_behave_like 'null_booleankey_nilvalue'
53
+ it_should_behave_like 'null_booleankey_integervalue'
54
+ it_should_behave_like 'null_nilkey_objectvalue'
55
+ it_should_behave_like 'null_nilkey_stringvalue'
56
+ it_should_behave_like 'null_nilkey_hashvalue'
57
+ it_should_behave_like 'null_nilkey_booleanvalue'
58
+ it_should_behave_like 'null_nilkey_nilvalue'
59
+ it_should_behave_like 'null_nilkey_integervalue'
60
+ it_should_behave_like 'null_integerkey_objectvalue'
61
+ it_should_behave_like 'null_integerkey_stringvalue'
62
+ it_should_behave_like 'null_integerkey_hashvalue'
63
+ it_should_behave_like 'null_integerkey_booleanvalue'
64
+ it_should_behave_like 'null_integerkey_nilvalue'
65
+ it_should_behave_like 'null_integerkey_integervalue'
66
+ it_should_behave_like 'persist_objectkey_objectvalue'
67
+ it_should_behave_like 'persist_objectkey_stringvalue'
68
+ it_should_behave_like 'persist_objectkey_hashvalue'
69
+ it_should_behave_like 'persist_objectkey_booleanvalue'
70
+ it_should_behave_like 'persist_objectkey_nilvalue'
71
+ it_should_behave_like 'persist_objectkey_integervalue'
72
+ it_should_behave_like 'persist_stringkey_objectvalue'
73
+ it_should_behave_like 'persist_stringkey_stringvalue'
74
+ it_should_behave_like 'persist_stringkey_hashvalue'
75
+ it_should_behave_like 'persist_stringkey_booleanvalue'
76
+ it_should_behave_like 'persist_stringkey_nilvalue'
77
+ it_should_behave_like 'persist_stringkey_integervalue'
78
+ it_should_behave_like 'persist_hashkey_objectvalue'
79
+ it_should_behave_like 'persist_hashkey_stringvalue'
80
+ it_should_behave_like 'persist_hashkey_hashvalue'
81
+ it_should_behave_like 'persist_hashkey_booleanvalue'
82
+ it_should_behave_like 'persist_hashkey_nilvalue'
83
+ it_should_behave_like 'persist_hashkey_integervalue'
84
+ it_should_behave_like 'persist_booleankey_objectvalue'
85
+ it_should_behave_like 'persist_booleankey_stringvalue'
86
+ it_should_behave_like 'persist_booleankey_hashvalue'
87
+ it_should_behave_like 'persist_booleankey_booleanvalue'
88
+ it_should_behave_like 'persist_booleankey_nilvalue'
89
+ it_should_behave_like 'persist_booleankey_integervalue'
90
+ it_should_behave_like 'persist_nilkey_objectvalue'
91
+ it_should_behave_like 'persist_nilkey_stringvalue'
92
+ it_should_behave_like 'persist_nilkey_hashvalue'
93
+ it_should_behave_like 'persist_nilkey_booleanvalue'
94
+ it_should_behave_like 'persist_nilkey_nilvalue'
95
+ it_should_behave_like 'persist_nilkey_integervalue'
96
+ it_should_behave_like 'persist_integerkey_objectvalue'
97
+ it_should_behave_like 'persist_integerkey_stringvalue'
98
+ it_should_behave_like 'persist_integerkey_hashvalue'
99
+ it_should_behave_like 'persist_integerkey_booleanvalue'
100
+ it_should_behave_like 'persist_integerkey_nilvalue'
101
+ it_should_behave_like 'persist_integerkey_integervalue'
102
+ it_should_behave_like 'returndifferent_objectkey_objectvalue'
103
+ it_should_behave_like 'returndifferent_objectkey_stringvalue'
104
+ it_should_behave_like 'returndifferent_objectkey_hashvalue'
105
+ it_should_behave_like 'returndifferent_stringkey_objectvalue'
106
+ it_should_behave_like 'returndifferent_stringkey_stringvalue'
107
+ it_should_behave_like 'returndifferent_stringkey_hashvalue'
108
+ it_should_behave_like 'returndifferent_hashkey_objectvalue'
109
+ it_should_behave_like 'returndifferent_hashkey_stringvalue'
110
+ it_should_behave_like 'returndifferent_hashkey_hashvalue'
111
+ it_should_behave_like 'returndifferent_booleankey_objectvalue'
112
+ it_should_behave_like 'returndifferent_booleankey_stringvalue'
113
+ it_should_behave_like 'returndifferent_booleankey_hashvalue'
114
+ it_should_behave_like 'returndifferent_nilkey_objectvalue'
115
+ it_should_behave_like 'returndifferent_nilkey_stringvalue'
116
+ it_should_behave_like 'returndifferent_nilkey_hashvalue'
117
+ it_should_behave_like 'returndifferent_integerkey_objectvalue'
118
+ it_should_behave_like 'returndifferent_integerkey_stringvalue'
119
+ it_should_behave_like 'returndifferent_integerkey_hashvalue'
120
+ it_should_behave_like 'store_objectkey_objectvalue'
121
+ it_should_behave_like 'store_objectkey_stringvalue'
122
+ it_should_behave_like 'store_objectkey_hashvalue'
123
+ it_should_behave_like 'store_objectkey_booleanvalue'
124
+ it_should_behave_like 'store_objectkey_nilvalue'
125
+ it_should_behave_like 'store_objectkey_integervalue'
126
+ it_should_behave_like 'store_stringkey_objectvalue'
127
+ it_should_behave_like 'store_stringkey_stringvalue'
128
+ it_should_behave_like 'store_stringkey_hashvalue'
129
+ it_should_behave_like 'store_stringkey_booleanvalue'
130
+ it_should_behave_like 'store_stringkey_nilvalue'
131
+ it_should_behave_like 'store_stringkey_integervalue'
132
+ it_should_behave_like 'store_hashkey_objectvalue'
133
+ it_should_behave_like 'store_hashkey_stringvalue'
134
+ it_should_behave_like 'store_hashkey_hashvalue'
135
+ it_should_behave_like 'store_hashkey_booleanvalue'
136
+ it_should_behave_like 'store_hashkey_nilvalue'
137
+ it_should_behave_like 'store_hashkey_integervalue'
138
+ it_should_behave_like 'store_booleankey_objectvalue'
139
+ it_should_behave_like 'store_booleankey_stringvalue'
140
+ it_should_behave_like 'store_booleankey_hashvalue'
141
+ it_should_behave_like 'store_booleankey_booleanvalue'
142
+ it_should_behave_like 'store_booleankey_nilvalue'
143
+ it_should_behave_like 'store_booleankey_integervalue'
144
+ it_should_behave_like 'store_nilkey_objectvalue'
145
+ it_should_behave_like 'store_nilkey_stringvalue'
146
+ it_should_behave_like 'store_nilkey_hashvalue'
147
+ it_should_behave_like 'store_nilkey_booleanvalue'
148
+ it_should_behave_like 'store_nilkey_nilvalue'
149
+ it_should_behave_like 'store_nilkey_integervalue'
150
+ it_should_behave_like 'store_integerkey_objectvalue'
151
+ it_should_behave_like 'store_integerkey_stringvalue'
152
+ it_should_behave_like 'store_integerkey_hashvalue'
153
+ it_should_behave_like 'store_integerkey_booleanvalue'
154
+ it_should_behave_like 'store_integerkey_nilvalue'
155
+ it_should_behave_like 'store_integerkey_integervalue'
156
+ it_should_behave_like 'transform_value_expires'
157
+ end
@@ -16898,146 +16898,188 @@ end
16898
16898
  #################### expires ####################
16899
16899
 
16900
16900
  shared_examples_for 'expires' do
16901
- it 'supports expires on store and #[]' do
16902
- store.store('key1', 'val1', :expires => 2)
16901
+ it 'supports expires on store and []', :retry => 3 do
16902
+ store.store('key1', 'val1', :expires => 3)
16903
16903
  store['key1'].should == 'val1'
16904
16904
  sleep 1
16905
16905
  store['key1'].should == 'val1'
16906
- sleep 2
16906
+ sleep 3
16907
+ store['key1'].should be_nil
16908
+ end
16909
+
16910
+ it 'supports strict expires on store and []' do
16911
+ store.store('key1', 'val1', :expires => 2)
16912
+ store['key1'].should == 'val1'
16913
+ sleep 3 # Sleep 3 seconds because after 2 seconds the value can still exist!
16907
16914
  store['key1'].should be_nil
16908
16915
  end
16909
16916
 
16910
- it 'supports 0 as no-expires on store and #[]' do
16917
+ it 'supports expires on store and fetch', :retry => 3 do
16918
+ store.store('key1', 'val1', :expires => 3)
16919
+ store.fetch('key1').should == 'val1'
16920
+ sleep 1
16921
+ store.fetch('key1').should == 'val1'
16922
+ sleep 3
16923
+ store.fetch('key1').should be_nil
16924
+ end
16925
+
16926
+ it 'supports strict expires on store and fetch' do
16927
+ store.store('key1', 'val1', :expires => 2)
16928
+ store.fetch('key1').should == 'val1'
16929
+ sleep 3 # Sleep 3 seconds because after 2 seconds the value can still exist!
16930
+ store.fetch('key1').should be_nil
16931
+ end
16932
+
16933
+ it 'supports 0 as no-expires on store and []' do
16911
16934
  store.store('key1', 'val1', :expires => 0)
16912
16935
  store['key1'].should == 'val1'
16913
16936
  sleep 2
16914
16937
  store['key1'].should == 'val1'
16915
16938
  end
16916
16939
 
16917
- it 'supports false as no-expires on store and #[]' do
16940
+ it 'supports false as no-expires on store and []' do
16918
16941
  store.store('key1', 'val1', :expires => false)
16919
16942
  store['key1'].should == 'val1'
16920
16943
  sleep 2
16921
16944
  store['key1'].should == 'val1'
16922
16945
  end
16923
16946
 
16924
- it 'supports expires on store and load' do
16925
- store.store('key1', 'val1', :expires => 2)
16947
+ it 'supports expires on store and load', :retry => 3 do
16948
+ store.store('key1', 'val1', :expires => 3)
16926
16949
  store.load('key1').should == 'val1'
16927
16950
  sleep 1
16928
16951
  store.load('key1').should == 'val1'
16929
- sleep 2
16952
+ sleep 3
16930
16953
  store.load('key1').should be_nil
16931
16954
  end
16932
16955
 
16933
- it 'supports expires on store and key?' do
16956
+ it 'supports strict expires on store and load' do
16934
16957
  store.store('key1', 'val1', :expires => 2)
16958
+ store.load('key1').should == 'val1'
16959
+ sleep 3 # Sleep 3 seconds because after 2 seconds the value can still exist!
16960
+ store.load('key1').should be_nil
16961
+ end
16962
+
16963
+ it 'supports expires on store and key?', :retry => 3 do
16964
+ store.store('key1', 'val1', :expires => 3)
16935
16965
  store.key?('key1').should be_true
16936
16966
  sleep 1
16937
16967
  store.key?('key1').should be_true
16938
- sleep 2
16968
+ sleep 3
16939
16969
  store.key?('key1').should be_false
16940
16970
  end
16941
16971
 
16942
- it 'supports updating the expiration time in load' do
16943
- store.store('key2', 'val2', :expires => 2)
16972
+ it 'supports strict expires on store and key?' do
16973
+ store.store('key1', 'val1', :expires => 2)
16974
+ store.key?('key1').should be_true
16975
+ sleep 3 # Sleep 3 seconds because after 2 seconds the value can still exist!
16976
+ store.key?('key1').should be_false
16977
+ end
16978
+
16979
+ it 'supports updating the expiration time in load', :retry => 3 do
16980
+ store.store('key2', 'val2', :expires => 3)
16944
16981
  store['key2'].should == 'val2'
16945
16982
  sleep 1
16946
- store.load('key2', :expires => 3).should == 'val2'
16983
+ store.load('key2', :expires => 5).should == 'val2'
16947
16984
  store['key2'].should == 'val2'
16948
- sleep 2
16985
+ sleep 3
16949
16986
  store['key2'].should == 'val2'
16950
- sleep 2
16987
+ sleep 3
16951
16988
  store['key2'].should be_nil
16952
16989
  end
16953
16990
 
16954
16991
  it 'supports 0 as no-expires in load' do
16955
16992
  store.store('key1', 'val1', :expires => 2)
16956
16993
  store.load('key1', :expires => 0).should == 'val1'
16957
- sleep 2
16994
+ sleep 3
16958
16995
  store.load('key1').should == 'val1'
16959
16996
  end
16960
16997
 
16961
16998
  it 'supports false as no-expires in load' do
16962
16999
  store.store('key1', 'val1', :expires => 2)
16963
17000
  store.load('key1', :expires => false).should == 'val1'
16964
- sleep 2
17001
+ sleep 3
16965
17002
  store.load('key1').should == 'val1'
16966
17003
  end
16967
17004
 
16968
- it 'supports updating the expiration time in key?' do
16969
- store.store('key2', 'val2', :expires => 2)
17005
+ it 'supports updating the expiration time in key?', :retry => 3 do
17006
+ store.store('key2', 'val2', :expires => 3)
16970
17007
  store['key2'].should == 'val2'
16971
17008
  sleep 1
16972
- store.key?('key2', :expires => 3).should be_true
17009
+ store.key?('key2', :expires => 5).should be_true
16973
17010
  store['key2'].should == 'val2'
16974
- sleep 2
17011
+ sleep 3
16975
17012
  store['key2'].should == 'val2'
16976
- sleep 2
17013
+ sleep 3
16977
17014
  store['key2'].should be_nil
16978
17015
  end
16979
17016
 
16980
17017
  it 'supports 0 as no-expires in key?' do
16981
17018
  store.store('key1', 'val1', :expires => 2)
16982
17019
  store.key?('key1', :expires => 0).should be_true
16983
- sleep 2
17020
+ sleep 3
16984
17021
  store['key1'].should == 'val1'
16985
17022
  end
16986
17023
 
16987
17024
  it 'supports false as no-expires in key?' do
16988
17025
  store.store('key1', 'val1', :expires => 2)
16989
17026
  store.key?('key1', :expires => false ).should be_true
16990
- sleep 2
17027
+ sleep 3
16991
17028
  store['key1'].should == 'val1'
16992
17029
  end
16993
17030
 
16994
- it 'supports updating the expiration time in fetch' do
16995
- store.store('key1', 'val1', :expires => 2)
17031
+ it 'supports updating the expiration time in fetch', :retry => 3 do
17032
+ store.store('key1', 'val1', :expires => 3)
16996
17033
  store['key1'].should == 'val1'
16997
17034
  sleep 1
16998
- store.fetch('key1', nil, :expires => 3).should == 'val1'
17035
+ store.fetch('key1', nil, :expires => 5).should == 'val1'
16999
17036
  store['key1'].should == 'val1'
17000
- sleep 2
17037
+ sleep 3
17001
17038
  store['key1'].should == 'val1'
17002
- sleep 2
17039
+ sleep 3
17003
17040
  store['key1'].should be_nil
17004
17041
  end
17005
17042
 
17006
17043
  it 'supports 0 as no-expires in fetch' do
17007
17044
  store.store('key1', 'val1', :expires => 2)
17008
17045
  store.fetch('key1', nil, :expires => 0).should == 'val1'
17009
- sleep 2
17046
+ sleep 3
17010
17047
  store.load('key1').should == 'val1'
17011
17048
  end
17012
17049
 
17013
17050
  it 'supports false as no-expires in fetch' do
17014
17051
  store.store('key1', 'val1', :expires => 2)
17015
17052
  store.fetch('key1', nil, :expires => false).should == 'val1'
17016
- sleep 2
17053
+ sleep 3
17017
17054
  store.load('key1').should == 'val1'
17018
17055
  end
17019
17056
 
17020
- it 'respects expires in delete' do
17057
+ it 'strictly respects expires in delete' do
17021
17058
  store.store('key2', 'val2', :expires => 2)
17022
17059
  store['key2'].should == 'val2'
17060
+ sleep 3 # Sleep 3 seconds because after 2 seconds the value can still exist!
17061
+ store.delete('key2').should be_nil
17062
+ end
17063
+
17064
+ it 'respects expires in delete', :retry => 3 do
17065
+ store.store('key2', 'val2', :expires => 3)
17066
+ store['key2'].should == 'val2'
17023
17067
  sleep 1
17024
17068
  store['key2'].should == 'val2'
17025
- sleep 2
17069
+ sleep 3
17026
17070
  store.delete('key2').should be_nil
17027
17071
  end
17028
17072
 
17029
17073
  it 'supports the #expires syntactic sugar' do
17030
17074
  store.store('persistent_key', 'persistent_value', :expires => 0)
17031
- store.expires(2).store('key2', 'val2')
17032
- store['key2'].should == 'val2'
17033
- sleep 1
17075
+ store.expires(1).store('key2', 'val2')
17034
17076
  store['key2'].should == 'val2'
17035
17077
  sleep 2
17036
17078
  store.delete('key2').should be_nil
17037
17079
  store['persistent_key'].should == 'persistent_value'
17038
17080
  end
17039
17081
 
17040
- it 'supports false as no-expires on store and #[]' do
17082
+ it 'supports false as no-expires on store and []' do
17041
17083
  store.store('key1', 'val1', :expires => false)
17042
17084
  store['key1'].should == 'val1'
17043
17085
  sleep 2