moneta 1.5.2 → 1.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (254) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGES +12 -0
  3. data/CONTRIBUTORS +1 -0
  4. data/LICENSE +1 -1
  5. data/lib/active_support/cache/moneta_store.rb +32 -6
  6. data/lib/moneta/adapters/activerecord/backend.rb +50 -0
  7. data/lib/moneta/adapters/activerecord/v5_backend.rb +80 -0
  8. data/lib/moneta/adapters/activerecord.rb +50 -95
  9. data/lib/moneta/adapters/activesupportcache.rb +69 -14
  10. data/lib/moneta/adapters/client.rb +1 -1
  11. data/lib/moneta/adapters/hbase.rb +1 -1
  12. data/lib/moneta/adapters/redis.rb +2 -1
  13. data/lib/moneta/adapters/sequel/mysql.rb +6 -18
  14. data/lib/moneta/adapters/sequel/postgres_hstore.rb +8 -1
  15. data/lib/moneta/adapters/sqlite.rb +4 -2
  16. data/lib/moneta/adapters/tokyotyrant.rb +1 -1
  17. data/lib/moneta/adapters/yaml.rb +7 -1
  18. data/lib/moneta/pool.rb +16 -18
  19. data/lib/moneta/server.rb +9 -11
  20. data/lib/moneta/transformer/config.rb +4 -4
  21. data/lib/moneta/transformer.rb +4 -0
  22. data/lib/moneta/version.rb +1 -1
  23. metadata +9 -452
  24. data/.github/workflows/ruby.yml +0 -425
  25. data/.gitignore +0 -15
  26. data/.rspec +0 -4
  27. data/.rubocop.yml +0 -194
  28. data/.yardopts +0 -6
  29. data/Gemfile +0 -206
  30. data/feature_matrix.yaml +0 -227
  31. data/moneta.gemspec +0 -36
  32. data/script/benchmarks +0 -605
  33. data/script/contributors +0 -12
  34. data/script/memusage +0 -40
  35. data/script/parallel-tests +0 -82
  36. data/script/start-couchdb +0 -27
  37. data/script/start-hbase +0 -47
  38. data/script/start-services +0 -10
  39. data/script/travis-logs +0 -14
  40. data/script/update-feature-matrix +0 -148
  41. data/spec/active_support/cache_moneta_store_spec.rb +0 -282
  42. data/spec/features/concurrent_create.rb +0 -42
  43. data/spec/features/concurrent_increment.rb +0 -39
  44. data/spec/features/create.rb +0 -25
  45. data/spec/features/create_expires.rb +0 -19
  46. data/spec/features/default_expires.rb +0 -14
  47. data/spec/features/each_key.rb +0 -119
  48. data/spec/features/expires.rb +0 -296
  49. data/spec/features/features.rb +0 -16
  50. data/spec/features/increment.rb +0 -98
  51. data/spec/features/marshallable_key.rb +0 -43
  52. data/spec/features/marshallable_value.rb +0 -7
  53. data/spec/features/multiprocess.rb +0 -8
  54. data/spec/features/not_create.rb +0 -7
  55. data/spec/features/not_each_key.rb +0 -7
  56. data/spec/features/not_increment.rb +0 -13
  57. data/spec/features/not_persist.rb +0 -9
  58. data/spec/features/null.rb +0 -66
  59. data/spec/features/persist.rb +0 -14
  60. data/spec/features/returndifferent.rb +0 -9
  61. data/spec/features/returnsame.rb +0 -9
  62. data/spec/features/store.rb +0 -261
  63. data/spec/features/store_large.rb +0 -13
  64. data/spec/features/transform_value.rb +0 -44
  65. data/spec/features/transform_value_expires.rb +0 -41
  66. data/spec/helper.rb +0 -445
  67. data/spec/moneta/adapters/activerecord/adapter_activerecord_existing_connection_spec.rb +0 -62
  68. data/spec/moneta/adapters/activerecord/adapter_activerecord_spec.rb +0 -128
  69. data/spec/moneta/adapters/activerecord/standard_activerecord_spec.rb +0 -22
  70. data/spec/moneta/adapters/activerecord/standard_activerecord_with_expires_spec.rb +0 -28
  71. data/spec/moneta/adapters/activesupportcache/adapter_activesupportcache_spec.rb +0 -54
  72. data/spec/moneta/adapters/activesupportcache/adapter_activesupportcache_with_default_expires_spec.rb +0 -54
  73. data/spec/moneta/adapters/activesupportcache/standard_activesupportcache_spec.rb +0 -14
  74. data/spec/moneta/adapters/cassandra/adapter_cassandra_spec.rb +0 -17
  75. data/spec/moneta/adapters/cassandra/adapter_cassandra_with_default_expires_spec.rb +0 -18
  76. data/spec/moneta/adapters/cassandra/helper.rb +0 -18
  77. data/spec/moneta/adapters/cassandra/standard_cassandra_spec.rb +0 -18
  78. data/spec/moneta/adapters/client/adapter_client_spec.rb +0 -11
  79. data/spec/moneta/adapters/client/client_helper.rb +0 -25
  80. data/spec/moneta/adapters/client/standard_client_tcp_spec.rb +0 -23
  81. data/spec/moneta/adapters/client/standard_client_unix_spec.rb +0 -28
  82. data/spec/moneta/adapters/cookie/adapter_cookie_spec.rb +0 -7
  83. data/spec/moneta/adapters/couch/adapter_couch_spec.rb +0 -204
  84. data/spec/moneta/adapters/couch/standard_couch_spec.rb +0 -15
  85. data/spec/moneta/adapters/couch/standard_couch_with_expires_spec.rb +0 -19
  86. data/spec/moneta/adapters/datamapper/adapter_datamapper_spec.rb +0 -64
  87. data/spec/moneta/adapters/datamapper/standard_datamapper_spec.rb +0 -21
  88. data/spec/moneta/adapters/datamapper/standard_datamapper_with_expires_spec.rb +0 -26
  89. data/spec/moneta/adapters/datamapper/standard_datamapper_with_repository_spec.rb +0 -22
  90. data/spec/moneta/adapters/daybreak/adapter_daybreak_spec.rb +0 -7
  91. data/spec/moneta/adapters/daybreak/standard_daybreak_spec.rb +0 -7
  92. data/spec/moneta/adapters/daybreak/standard_daybreak_with_expires_spec.rb +0 -11
  93. data/spec/moneta/adapters/dbm/adapter_dbm_spec.rb +0 -7
  94. data/spec/moneta/adapters/dbm/standard_dbm_spec.rb +0 -7
  95. data/spec/moneta/adapters/dbm/standard_dbm_with_expires_spec.rb +0 -12
  96. data/spec/moneta/adapters/faraday_helper.rb +0 -10
  97. data/spec/moneta/adapters/file/adapter_file_spec.rb +0 -7
  98. data/spec/moneta/adapters/file/standard_file_spec.rb +0 -7
  99. data/spec/moneta/adapters/file/standard_file_with_expires_spec.rb +0 -11
  100. data/spec/moneta/adapters/fog/adapter_fog_spec.rb +0 -16
  101. data/spec/moneta/adapters/fog/standard_fog_spec.rb +0 -15
  102. data/spec/moneta/adapters/fog/standard_fog_with_expires_spec.rb +0 -20
  103. data/spec/moneta/adapters/gdbm/adapter_gdbm_spec.rb +0 -7
  104. data/spec/moneta/adapters/gdbm/standard_gdbm_spec.rb +0 -7
  105. data/spec/moneta/adapters/gdbm/standard_gdbm_with_expires_spec.rb +0 -11
  106. data/spec/moneta/adapters/hashfile/standard_hashfile_spec.rb +0 -7
  107. data/spec/moneta/adapters/hashfile/standard_hashfile_with_expires_spec.rb +0 -12
  108. data/spec/moneta/adapters/hbase/adapter_hbase_spec.rb +0 -7
  109. data/spec/moneta/adapters/hbase/standard_hbase_spec.rb +0 -4
  110. data/spec/moneta/adapters/hbase/standard_hbase_with_expires_spec.rb +0 -8
  111. data/spec/moneta/adapters/kyotocabinet/adapter_kyotocabinet_spec.rb +0 -7
  112. data/spec/moneta/adapters/kyotocabinet/standard_kyotocabinet_spec.rb +0 -7
  113. data/spec/moneta/adapters/kyotocabinet/standard_kyotocabinet_with_expires_spec.rb +0 -14
  114. data/spec/moneta/adapters/leveldb/adapter_leveldb_spec.rb +0 -7
  115. data/spec/moneta/adapters/leveldb/standard_leveldb_spec.rb +0 -7
  116. data/spec/moneta/adapters/leveldb/standard_leveldb_with_expires_spec.rb +0 -11
  117. data/spec/moneta/adapters/lmdb/adapter_lmdb_spec.rb +0 -7
  118. data/spec/moneta/adapters/lmdb/adapter_lmdb_with_db_spec.rb +0 -7
  119. data/spec/moneta/adapters/lmdb/standard_lmdb_spec.rb +0 -7
  120. data/spec/moneta/adapters/lmdb/standard_lmdb_with_expires_spec.rb +0 -11
  121. data/spec/moneta/adapters/localmemcache/adapter_localmemcache_spec.rb +0 -7
  122. data/spec/moneta/adapters/localmemcache/standard_localmemcache_spec.rb +0 -7
  123. data/spec/moneta/adapters/localmemcache/standard_localmemcache_with_expires_spec.rb +0 -11
  124. data/spec/moneta/adapters/lruhash/adapter_lruhash_spec.rb +0 -118
  125. data/spec/moneta/adapters/lruhash/standard_lruhash_spec.rb +0 -4
  126. data/spec/moneta/adapters/lruhash/standard_lruhash_with_expires_spec.rb +0 -8
  127. data/spec/moneta/adapters/memcached/adapter_memcached_spec.rb +0 -13
  128. data/spec/moneta/adapters/memcached/dalli/adapter_memcached_dalli_spec.rb +0 -25
  129. data/spec/moneta/adapters/memcached/dalli/standard_memcached_dalli_spec.rb +0 -11
  130. data/spec/moneta/adapters/memcached/native/adapter_memcached_native_spec.rb +0 -25
  131. data/spec/moneta/adapters/memcached/native/standard_memcached_native_spec.rb +0 -11
  132. data/spec/moneta/adapters/memcached/standard_memcached_spec.rb +0 -17
  133. data/spec/moneta/adapters/memcached_helper.rb +0 -20
  134. data/spec/moneta/adapters/memory/adapter_memory_spec.rb +0 -7
  135. data/spec/moneta/adapters/memory/standard_memory_spec.rb +0 -4
  136. data/spec/moneta/adapters/memory/standard_memory_with_compress_spec.rb +0 -9
  137. data/spec/moneta/adapters/memory/standard_memory_with_expires_spec.rb +0 -8
  138. data/spec/moneta/adapters/memory/standard_memory_with_json_key_serializer_spec.rb +0 -4
  139. data/spec/moneta/adapters/memory/standard_memory_with_json_serializer_spec.rb +0 -9
  140. data/spec/moneta/adapters/memory/standard_memory_with_json_value_serializer_spec.rb +0 -9
  141. data/spec/moneta/adapters/memory/standard_memory_with_prefix_spec.rb +0 -41
  142. data/spec/moneta/adapters/memory/standard_memory_with_snappy_compress_spec.rb +0 -9
  143. data/spec/moneta/adapters/mongo/adapter_mongo_spec.rb +0 -41
  144. data/spec/moneta/adapters/mongo/adapter_mongo_with_default_expires_spec.rb +0 -14
  145. data/spec/moneta/adapters/mongo/standard_mongo_spec.rb +0 -7
  146. data/spec/moneta/adapters/null/null_adapter_spec.rb +0 -7
  147. data/spec/moneta/adapters/null/standard_null_spec.rb +0 -9
  148. data/spec/moneta/adapters/pstore/adapter_pstore_spec.rb +0 -7
  149. data/spec/moneta/adapters/pstore/standard_pstore_spec.rb +0 -9
  150. data/spec/moneta/adapters/pstore/standard_pstore_with_expires_spec.rb +0 -13
  151. data/spec/moneta/adapters/redis/adapter_redis_spec.rb +0 -20
  152. data/spec/moneta/adapters/redis/standard_redis_spec.rb +0 -14
  153. data/spec/moneta/adapters/restclient/adapter_restclient_spec.rb +0 -13
  154. data/spec/moneta/adapters/restclient/helper.rb +0 -12
  155. data/spec/moneta/adapters/restclient/standard_restclient_spec.rb +0 -13
  156. data/spec/moneta/adapters/riak/adapter_riak_spec.rb +0 -14
  157. data/spec/moneta/adapters/riak/standard_riak_spec.rb +0 -10
  158. data/spec/moneta/adapters/riak/standard_riak_with_expires_spec.rb +0 -14
  159. data/spec/moneta/adapters/sdbm/adapter_sdbm_spec.rb +0 -7
  160. data/spec/moneta/adapters/sdbm/standard_sdbm_spec.rb +0 -7
  161. data/spec/moneta/adapters/sdbm/standard_sdbm_with_expires_spec.rb +0 -11
  162. data/spec/moneta/adapters/sequel/adapter_sequel_spec.rb +0 -133
  163. data/spec/moneta/adapters/sequel/helper.rb +0 -83
  164. data/spec/moneta/adapters/sequel/standard_sequel_spec.rb +0 -8
  165. data/spec/moneta/adapters/sequel/standard_sequel_with_expires_spec.rb +0 -18
  166. data/spec/moneta/adapters/sqlite/adapter_sqlite_spec.rb +0 -7
  167. data/spec/moneta/adapters/sqlite/standard_sqlite_spec.rb +0 -7
  168. data/spec/moneta/adapters/sqlite/standard_sqlite_with_expires_spec.rb +0 -15
  169. data/spec/moneta/adapters/tdb/adapter_tdb_spec.rb +0 -7
  170. data/spec/moneta/adapters/tdb/standard_tdb_spec.rb +0 -7
  171. data/spec/moneta/adapters/tdb/standard_tdb_with_expires_spec.rb +0 -11
  172. data/spec/moneta/adapters/tokyocabinet/adapter_tokyocabinet_bdb_spec.rb +0 -7
  173. data/spec/moneta/adapters/tokyocabinet/adapter_tokyocabinet_hdb_spec.rb +0 -7
  174. data/spec/moneta/adapters/tokyocabinet/standard_tokyocabinet_spec.rb +0 -7
  175. data/spec/moneta/adapters/tokyocabinet/standard_tokyocabinet_with_expires_spec.rb +0 -11
  176. data/spec/moneta/adapters/tokyotyrant/adapter_tokyotyrant_spec.rb +0 -11
  177. data/spec/moneta/adapters/tokyotyrant/helper.rb +0 -12
  178. data/spec/moneta/adapters/tokyotyrant/standard_tokyotyrant_spec.rb +0 -7
  179. data/spec/moneta/adapters/tokyotyrant/standard_tokyotyrant_with_expires_spec.rb +0 -12
  180. data/spec/moneta/adapters/yaml/adapter_yaml_spec.rb +0 -7
  181. data/spec/moneta/adapters/yaml/standard_yaml_spec.rb +0 -9
  182. data/spec/moneta/adapters/yaml/standard_yaml_with_expires_spec.rb +0 -13
  183. data/spec/moneta/builder_spec.rb +0 -50
  184. data/spec/moneta/config_spec.rb +0 -219
  185. data/spec/moneta/mutex_spec.rb +0 -55
  186. data/spec/moneta/proxies/cache/cache_file_memory_spec.rb +0 -24
  187. data/spec/moneta/proxies/cache/cache_memory_null_spec.rb +0 -12
  188. data/spec/moneta/proxies/enumerable/enumerable_spec.rb +0 -26
  189. data/spec/moneta/proxies/expires/expires_file_spec.rb +0 -28
  190. data/spec/moneta/proxies/expires/expires_memory_spec.rb +0 -15
  191. data/spec/moneta/proxies/expires/expires_memory_with_default_expires_spec.rb +0 -16
  192. data/spec/moneta/proxies/fallback/fallback_spec.rb +0 -42
  193. data/spec/moneta/proxies/lock/lock_spec.rb +0 -10
  194. data/spec/moneta/proxies/optionmerger/optionmerger_spec.rb +0 -96
  195. data/spec/moneta/proxies/pool/pool_spec.rb +0 -353
  196. data/spec/moneta/proxies/proxy/proxy_expires_memory_spec.rb +0 -16
  197. data/spec/moneta/proxies/shared/shared_tcp_spec.rb +0 -59
  198. data/spec/moneta/proxies/shared/shared_unix_spec.rb +0 -58
  199. data/spec/moneta/proxies/transformer/transformer_bencode_spec.rb +0 -19
  200. data/spec/moneta/proxies/transformer/transformer_bert_spec.rb +0 -19
  201. data/spec/moneta/proxies/transformer/transformer_bson_spec.rb +0 -25
  202. data/spec/moneta/proxies/transformer/transformer_bzip2_spec.rb +0 -19
  203. data/spec/moneta/proxies/transformer/transformer_json_spec.rb +0 -19
  204. data/spec/moneta/proxies/transformer/transformer_key_inspect_spec.rb +0 -17
  205. data/spec/moneta/proxies/transformer/transformer_key_marshal_spec.rb +0 -17
  206. data/spec/moneta/proxies/transformer/transformer_key_to_s_spec.rb +0 -17
  207. data/spec/moneta/proxies/transformer/transformer_key_yaml_spec.rb +0 -17
  208. data/spec/moneta/proxies/transformer/transformer_lz4_spec.rb +0 -19
  209. data/spec/moneta/proxies/transformer/transformer_lzma_spec.rb +0 -19
  210. data/spec/moneta/proxies/transformer/transformer_lzo_spec.rb +0 -19
  211. data/spec/moneta/proxies/transformer/transformer_marshal_base64_spec.rb +0 -20
  212. data/spec/moneta/proxies/transformer/transformer_marshal_city128_spec.rb +0 -15
  213. data/spec/moneta/proxies/transformer/transformer_marshal_city32_spec.rb +0 -15
  214. data/spec/moneta/proxies/transformer/transformer_marshal_city64_spec.rb +0 -15
  215. data/spec/moneta/proxies/transformer/transformer_marshal_escape_spec.rb +0 -21
  216. data/spec/moneta/proxies/transformer/transformer_marshal_hex_spec.rb +0 -20
  217. data/spec/moneta/proxies/transformer/transformer_marshal_hmac_spec.rb +0 -19
  218. data/spec/moneta/proxies/transformer/transformer_marshal_md5_spec.rb +0 -15
  219. data/spec/moneta/proxies/transformer/transformer_marshal_md5_spread_spec.rb +0 -15
  220. data/spec/moneta/proxies/transformer/transformer_marshal_prefix_base64_spec.rb +0 -33
  221. data/spec/moneta/proxies/transformer/transformer_marshal_prefix_spec.rb +0 -15
  222. data/spec/moneta/proxies/transformer/transformer_marshal_qp_spec.rb +0 -20
  223. data/spec/moneta/proxies/transformer/transformer_marshal_rmd160_spec.rb +0 -15
  224. data/spec/moneta/proxies/transformer/transformer_marshal_sha1_spec.rb +0 -15
  225. data/spec/moneta/proxies/transformer/transformer_marshal_sha256_spec.rb +0 -15
  226. data/spec/moneta/proxies/transformer/transformer_marshal_sha384_spec.rb +0 -15
  227. data/spec/moneta/proxies/transformer/transformer_marshal_sha512_spec.rb +0 -15
  228. data/spec/moneta/proxies/transformer/transformer_marshal_spec.rb +0 -19
  229. data/spec/moneta/proxies/transformer/transformer_marshal_truncate_spec.rb +0 -15
  230. data/spec/moneta/proxies/transformer/transformer_marshal_urlsafe_base64_spec.rb +0 -20
  231. data/spec/moneta/proxies/transformer/transformer_marshal_uuencode_spec.rb +0 -19
  232. data/spec/moneta/proxies/transformer/transformer_msgpack_spec.rb +0 -19
  233. data/spec/moneta/proxies/transformer/transformer_ox_spec.rb +0 -19
  234. data/spec/moneta/proxies/transformer/transformer_php_spec.rb +0 -19
  235. data/spec/moneta/proxies/transformer/transformer_quicklz_spec.rb +0 -19
  236. data/spec/moneta/proxies/transformer/transformer_snappy_spec.rb +0 -19
  237. data/spec/moneta/proxies/transformer/transformer_tnet_spec.rb +0 -19
  238. data/spec/moneta/proxies/transformer/transformer_value_marshal_spec.rb +0 -19
  239. data/spec/moneta/proxies/transformer/transformer_value_yaml_spec.rb +0 -19
  240. data/spec/moneta/proxies/transformer/transformer_yaml_spec.rb +0 -19
  241. data/spec/moneta/proxies/transformer/transformer_zlib_spec.rb +0 -19
  242. data/spec/moneta/proxies/weak_create/weak_create_spec.rb +0 -21
  243. data/spec/moneta/proxies/weak_each_key/weak_each_key_spec.rb +0 -22
  244. data/spec/moneta/proxies/weak_increment/weak_increment_spec.rb +0 -21
  245. data/spec/moneta/semaphore_spec.rb +0 -68
  246. data/spec/moneta/stack_file_memory_spec.rb +0 -15
  247. data/spec/moneta/stack_memory_file_spec.rb +0 -13
  248. data/spec/rack/cache_moneta_spec.rb +0 -355
  249. data/spec/rack/moneta_cookies_spec.rb +0 -83
  250. data/spec/rack/moneta_store_spec.rb +0 -83
  251. data/spec/rack/session_moneta_spec.rb +0 -350
  252. data/spec/restserver.rb +0 -44
  253. data/test/action_dispatch/fixtures/session_autoload_test/foo.rb +0 -10
  254. data/test/action_dispatch/session_moneta_store_test.rb +0 -204
@@ -1,19 +0,0 @@
1
- describe 'transformer_value_marshal', proxy: :Transformer do
2
- moneta_build do
3
- Moneta.build do
4
- use :Transformer, value: :marshal
5
- adapter :Memory
6
- end
7
- end
8
-
9
- moneta_loader do |value|
10
- ::Marshal.load(value)
11
- end
12
-
13
- moneta_specs TRANSFORMER_SPECS.with_each_key
14
-
15
- it 'compile transformer class' do
16
- store.should_not be_nil
17
- Moneta::Transformer::MarshalValue.should_not be_nil
18
- end
19
- end
@@ -1,19 +0,0 @@
1
- describe 'transformer_value_yaml', proxy: :Transformer do
2
- moneta_build do
3
- Moneta.build do
4
- use :Transformer, value: :yaml
5
- adapter :Memory
6
- end
7
- end
8
-
9
- moneta_loader do |value|
10
- ::YAML.load(value)
11
- end
12
-
13
- moneta_specs TRANSFORMER_SPECS.with_each_key
14
-
15
- it 'compile transformer class' do
16
- store.should_not be_nil
17
- Moneta::Transformer::YamlValue.should_not be_nil
18
- end
19
- end
@@ -1,19 +0,0 @@
1
- describe 'transformer_yaml', proxy: :Transformer do
2
- moneta_build do
3
- Moneta.build do
4
- use :Transformer, key: :yaml, value: :yaml
5
- adapter :Memory
6
- end
7
- end
8
-
9
- moneta_loader do |value|
10
- ::YAML.load(value)
11
- end
12
-
13
- moneta_specs TRANSFORMER_SPECS.with_each_key
14
-
15
- it 'compile transformer class' do
16
- store.should_not be_nil
17
- Moneta::Transformer::YamlKeyYamlValue.should_not be_nil
18
- end
19
- end
@@ -1,19 +0,0 @@
1
- describe 'transformer_zlib', proxy: :Transformer do
2
- moneta_build do
3
- Moneta.build do
4
- use :Transformer, value: :zlib
5
- adapter :Memory
6
- end
7
- end
8
-
9
- moneta_loader do |value|
10
- ::Zlib::Inflate.inflate(value)
11
- end
12
-
13
- moneta_specs TRANSFORMER_SPECS.stringvalues_only.with_each_key
14
-
15
- it 'compile transformer class' do
16
- store.should_not be_nil
17
- Moneta::Transformer::ZlibValue.should_not be_nil
18
- end
19
- end
@@ -1,21 +0,0 @@
1
- describe 'weak_create', proxy: :WeakCreate do
2
- before :all do
3
- require 'fog/aws'
4
-
5
- # Put Fog into testing mode
6
- Fog.mock!
7
- end
8
-
9
- moneta_build do
10
- Moneta.build do
11
- use :WeakCreate
12
- adapter :Fog,
13
- aws_access_key_id: 'fake_access_key_id',
14
- aws_secret_access_key: 'fake_secret_access_key',
15
- provider: 'AWS',
16
- dir: 'weak_create'
17
- end
18
- end
19
-
20
- moneta_specs ADAPTER_SPECS.without_increment.without_concurrent.returnsame
21
- end
@@ -1,22 +0,0 @@
1
- describe 'weak_each_key', proxy: :WeakEachKey do
2
- before :all do
3
- require 'fog/aws'
4
-
5
- # Put Fog into testing mode
6
- Fog.mock!
7
- end
8
-
9
- moneta_build do
10
- Moneta.build do
11
- use :WeakEachKey
12
-
13
- adapter :Fog,
14
- aws_access_key_id: 'fake_access_key_id',
15
- aws_secret_access_key: 'fake_secret_access_key',
16
- provider: 'AWS',
17
- dir: 'weak_each_key'
18
- end
19
- end
20
-
21
- moneta_specs ADAPTER_SPECS.with_each_key.without_create.without_increment.without_concurrent.returnsame
22
- end
@@ -1,21 +0,0 @@
1
- describe 'weak_increment', proxy: :WeakIncrement do
2
- before :all do
3
- require 'fog/aws'
4
-
5
- # Put Fog into testing mode
6
- Fog.mock!
7
- end
8
-
9
- moneta_build do
10
- Moneta.build do
11
- use :WeakIncrement
12
- adapter :Fog,
13
- aws_access_key_id: 'fake_access_key_id',
14
- aws_secret_access_key: 'fake_secret_access_key',
15
- provider: 'AWS',
16
- dir: 'weak_increment'
17
- end
18
- end
19
-
20
- moneta_specs ADAPTER_SPECS.without_create.without_concurrent.returnsame
21
- end
@@ -1,68 +0,0 @@
1
- describe "semaphore" do
2
- moneta_store :Memory
3
-
4
- it 'should have #lock' do
5
- mutex = Moneta::Semaphore.new(store, 'semaphore')
6
- mutex.lock.should be true
7
- mutex.locked?.should be true
8
- expect do
9
- mutex.lock
10
- end.to raise_error(RuntimeError)
11
- expect do
12
- mutex.try_lock
13
- end.to raise_error(RuntimeError)
14
- mutex.unlock.should be_nil
15
- mutex.locked?.should be false
16
- end
17
-
18
- it 'should have #enter' do
19
- mutex = Moneta::Semaphore.new(store, 'semaphore')
20
- mutex.enter.should be true
21
- mutex.locked?.should be true
22
- expect do
23
- mutex.enter
24
- end.to raise_error(RuntimeError)
25
- expect do
26
- mutex.try_enter
27
- end.to raise_error(RuntimeError)
28
- mutex.leave.should be_nil
29
- mutex.locked?.should be false
30
- end
31
-
32
- it 'should lock with #lock' do
33
- a = Moneta::Semaphore.new(store, 'semaphore')
34
- b = Moneta::Semaphore.new(store, 'semaphore')
35
- a.lock.should be true
36
- b.try_lock.should be false
37
- a.unlock.should be_nil
38
- end
39
-
40
- it 'should have lock timeout' do
41
- a = Moneta::Semaphore.new(store, 'semaphore')
42
- b = Moneta::Semaphore.new(store, 'semaphore')
43
- a.lock.should be true
44
- b.lock(1).should be false
45
- a.unlock.should be_nil
46
- end
47
-
48
- it 'should count concurrent accesses' do
49
- a = Moneta::Semaphore.new(store, 'semaphore', 2)
50
- b = Moneta::Semaphore.new(store, 'semaphore', 2)
51
- c = Moneta::Semaphore.new(store, 'semaphore', 2)
52
- a.synchronize do
53
- a.locked?.should be true
54
- b.synchronize do
55
- b.locked?.should be true
56
- c.try_lock.should be false
57
- end
58
- end
59
- end
60
-
61
- it 'should have #synchronize' do
62
- semaphore = Moneta::Semaphore.new(store, 'semaphore')
63
- semaphore.synchronize do
64
- semaphore.locked?.should be true
65
- end
66
- semaphore.locked?.should be false
67
- end
68
- end
@@ -1,15 +0,0 @@
1
- describe "stack_file_memory" do
2
- moneta_build do
3
- tempdir = self.tempdir
4
- Moneta.build do
5
- use(:Stack) do
6
- add(Moneta.new(:Null))
7
- add(Moneta::Adapters::Null.new)
8
- add { adapter :File, dir: File.join(tempdir, "stack_file_memory") }
9
- add { adapter :Memory }
10
- end
11
- end
12
- end
13
-
14
- moneta_specs ADAPTER_SPECS.without_increment.without_create
15
- end
@@ -1,13 +0,0 @@
1
- describe "stack_memory_file" do
2
- moneta_build do
3
- tempdir = self.tempdir
4
- Moneta.build do
5
- use(:Stack) do
6
- add { adapter :Memory }
7
- add { adapter :File, dir: File.join(tempdir, "stack_memory_file") }
8
- end
9
- end
10
- end
11
-
12
- moneta_specs ADAPTER_SPECS.returnsame
13
- end
@@ -1,355 +0,0 @@
1
- require 'rack/cache/moneta'
2
- require 'rack/mock'
3
- require 'rack/cache'
4
-
5
- class Object
6
- def sha_like?
7
- length == 40 && self =~ /^[0-9a-z]+$/
8
- end
9
- end
10
-
11
- describe Rack::Cache::MetaStore::Moneta do
12
- before do
13
- Rack::Cache::Moneta['meta'] = Moneta.new(:Memory, :expires => true)
14
- Rack::Cache::Moneta['entity'] = Moneta.new(:Memory, :expires => true)
15
- @store = Rack::Cache::MetaStore::Moneta.resolve uri('moneta://entity')
16
- @entity_store = Rack::Cache::EntityStore::Moneta.resolve uri('moneta://meta')
17
- @request = mock_request('/', {})
18
- @response = mock_response(200, {}, ['hello world'])
19
- end
20
-
21
- after do
22
- Rack::Cache::Moneta['meta'].clear
23
- Rack::Cache::Moneta['entity'].clear
24
- end
25
-
26
- it "has the class referenced by homonym constant" do
27
- Rack::Cache::MetaStore::MONETA.should == Rack::Cache::MetaStore::Moneta
28
- end
29
-
30
- it "instantiates the store" do
31
- @store.should be_kind_of(Rack::Cache::MetaStore::Moneta)
32
- end
33
-
34
- it "resolves the connection uri" do
35
- Rack::Cache::MetaStore::Moneta.resolve(uri('moneta://Memory?expires=true')).should be_kind_of(Rack::Cache::MetaStore::Moneta)
36
- end
37
-
38
- # Low-level implementation methods ===========================================
39
-
40
- it 'writes a list of negotation tuples with #write' do
41
- # lambda {
42
- @store.write('/test', [[{}, {}]])
43
- # }.should_not raise Exception
44
- end
45
-
46
- it 'reads a list of negotation tuples with #read' do
47
- @store.write('/test', [[{},{}],[{},{}]])
48
- tuples = @store.read('/test')
49
- tuples.should == [ [{},{}], [{},{}] ]
50
- end
51
-
52
- it 'reads an empty list with #read when nothing cached at key' do
53
- @store.read('/nothing').should be_empty
54
- end
55
-
56
- it 'removes entries for key with #purge' do
57
- @store.write('/test', [[{},{}]])
58
- @store.read('/test').should_not be_empty
59
-
60
- @store.purge('/test')
61
- @store.read('/test').should be_empty
62
- end
63
-
64
- it 'succeeds when purging non-existing entries' do
65
- @store.read('/test').should be_empty
66
- @store.purge('/test')
67
- end
68
-
69
- it 'returns nil from #purge' do
70
- @store.write('/test', [[{},{}]])
71
- @store.purge('/test').should be_nil
72
- @store.read('/test').should == []
73
- end
74
-
75
- %w[/test http://example.com:8080/ /test?x=y /test?x=y&p=q].each do |key|
76
- it "can read and write key: '#{key}'" do
77
- # lambda {
78
- @store.write(key, [[{},{}]])
79
- # }.should_not raise Exception
80
- @store.read(key).should == [[{},{}]]
81
- end
82
- end
83
-
84
- it "can read and write fairly large keys" do
85
- key = "b" * 4096
86
- # lambda {
87
- @store.write(key, [[{},{}]])
88
- # }.should_not raise Exception
89
- @store.read(key).should == [[{},{}]]
90
- end
91
-
92
- it "allows custom cache keys from block" do
93
- request = mock_request('/test', {})
94
- request.env['rack-cache.cache_key'] =
95
- lambda { |request| request.path_info.reverse }
96
- @store.cache_key(request).should == 'tset/'
97
- end
98
-
99
- it "allows custom cache keys from class" do
100
- request = mock_request('/test', {})
101
- request.env['rack-cache.cache_key'] = Class.new do
102
- def self.call(request); request.path_info.reverse end
103
- end
104
- @store.cache_key(request).should == 'tset/'
105
- end
106
-
107
- it 'does not blow up when given a non-marhsalable object with an ALL_CAPS key' do
108
- store_simple_entry('/bad', { 'SOME_THING' => Proc.new {} })
109
- end
110
-
111
- # Abstract methods ===========================================================
112
-
113
- it 'stores a cache entry' do
114
- cache_key = store_simple_entry
115
- @store.read(cache_key).should_not be_empty
116
- end
117
-
118
- it 'sets the X-Content-Digest response header before storing' do
119
- cache_key = store_simple_entry
120
- req, res = @store.read(cache_key).first
121
- res['X-Content-Digest'].should == 'a94a8fe5ccb19ba61c4c0873d391e987982fbbd3'
122
- end
123
-
124
- it 'finds a stored entry with #lookup' do
125
- store_simple_entry
126
- response = @store.lookup(@request, @entity_store)
127
- response.should_not be_nil
128
- response.should be_kind_of(Rack::Cache::Response)
129
- end
130
-
131
- it 'does not find an entry with #lookup when none exists' do
132
- req = mock_request('/test', {'HTTP_FOO' => 'Foo', 'HTTP_BAR' => 'Bar'})
133
- @store.lookup(req, @entity_store).should be_nil
134
- end
135
-
136
- it "canonizes urls for cache keys" do
137
- store_simple_entry(path='/test?x=y&p=q')
138
-
139
- hits_req = mock_request(path, {})
140
- miss_req = mock_request('/test?p=x', {})
141
-
142
- @store.lookup(hits_req, @entity_store).should_not be_nil
143
- @store.lookup(miss_req, @entity_store).should be_nil
144
- end
145
-
146
- it 'does not find an entry with #lookup when the body does not exist' do
147
- store_simple_entry
148
- @response.headers['X-Content-Digest'].should_not be_nil
149
- @entity_store.purge(@response.headers['X-Content-Digest'])
150
- @store.lookup(@request, @entity_store).should be_nil
151
- end
152
-
153
- it 'restores response headers properly with #lookup' do
154
- store_simple_entry
155
- response = @store.lookup(@request, @entity_store)
156
- response.headers.should == @response.headers.merge('Content-Length' => '4')
157
- end
158
-
159
- it 'restores response body from entity store with #lookup' do
160
- store_simple_entry
161
- response = @store.lookup(@request, @entity_store)
162
- body = '' ; response.body.each {|p| body << p}
163
- body.should == 'test'
164
- end
165
-
166
- it 'invalidates meta and entity store entries with #invalidate' do
167
- store_simple_entry
168
- @store.invalidate(@request, @entity_store)
169
- response = @store.lookup(@request, @entity_store)
170
- response.should be_kind_of(Rack::Cache::Response)
171
- response.should_not be :fresh?
172
- end
173
-
174
- it 'succeeds quietly when #invalidate called with no matching entries' do
175
- req = mock_request('/test', {})
176
- @store.invalidate(req, @entity_store)
177
- @store.lookup(@request, @entity_store).should be_nil
178
- end
179
-
180
- # Vary =======================================================================
181
-
182
- it 'does not return entries that Vary with #lookup' do
183
- req1 = mock_request('/test', {'HTTP_FOO' => 'Foo', 'HTTP_BAR' => 'Bar'})
184
- req2 = mock_request('/test', {'HTTP_FOO' => 'Bling', 'HTTP_BAR' => 'Bam'})
185
- res = mock_response(200, {'Vary' => 'Foo Bar'}, ['test'])
186
- @store.store(req1, res, @entity_store)
187
-
188
- @store.lookup(req2, @entity_store).should be_nil
189
- end
190
-
191
- it 'stores multiple responses for each Vary combination' do
192
- req1 = mock_request('/test', {'HTTP_FOO' => 'Foo', 'HTTP_BAR' => 'Bar'})
193
- res1 = mock_response(200, {'Vary' => 'Foo Bar'}, ['test 1'])
194
- key = @store.store(req1, res1, @entity_store)
195
-
196
- req2 = mock_request('/test', {'HTTP_FOO' => 'Bling', 'HTTP_BAR' => 'Bam'})
197
- res2 = mock_response(200, {'Vary' => 'Foo Bar'}, ['test 2'])
198
- @store.store(req2, res2, @entity_store)
199
-
200
- req3 = mock_request('/test', {'HTTP_FOO' => 'Baz', 'HTTP_BAR' => 'Boom'})
201
- res3 = mock_response(200, {'Vary' => 'Foo Bar'}, ['test 3'])
202
- @store.store(req3, res3, @entity_store)
203
-
204
- slurp(@store.lookup(req3, @entity_store).body).should == 'test 3'
205
- slurp(@store.lookup(req1, @entity_store).body).should == 'test 1'
206
- slurp(@store.lookup(req2, @entity_store).body).should == 'test 2'
207
-
208
- @store.read(key).length.should == 3
209
- end
210
-
211
- it 'overwrites non-varying responses with #store' do
212
- req1 = mock_request('/test', {'HTTP_FOO' => 'Foo', 'HTTP_BAR' => 'Bar'})
213
- res1 = mock_response(200, {'Vary' => 'Foo Bar'}, ['test 1'])
214
- key = @store.store(req1, res1, @entity_store)
215
- slurp(@store.lookup(req1, @entity_store).body).should == 'test 1'
216
-
217
- req2 = mock_request('/test', {'HTTP_FOO' => 'Bling', 'HTTP_BAR' => 'Bam'})
218
- res2 = mock_response(200, {'Vary' => 'Foo Bar'}, ['test 2'])
219
- @store.store(req2, res2, @entity_store)
220
- slurp(@store.lookup(req2, @entity_store).body).should == 'test 2'
221
-
222
- req3 = mock_request('/test', {'HTTP_FOO' => 'Foo', 'HTTP_BAR' => 'Bar'})
223
- res3 = mock_response(200, {'Vary' => 'Foo Bar'}, ['test 3'])
224
- @store.store(req3, res3, @entity_store)
225
- slurp(@store.lookup(req1, @entity_store).body).should == 'test 3'
226
-
227
- @store.read(key).length.should == 2
228
- end
229
-
230
- private
231
- def mock_request(uri, opts)
232
- env = Rack::MockRequest.env_for(uri, opts || {})
233
- Rack::Cache::Request.new(env)
234
- end
235
-
236
- def mock_response(status, headers, body)
237
- headers ||= {}
238
- body = Array(body).compact
239
- Rack::Cache::Response.new(status, headers, body)
240
- end
241
-
242
- def slurp(body)
243
- buf = ''
244
- body.each { |part| buf << part }
245
- buf
246
- end
247
-
248
- # Stores an entry for the given request args, returns a url encoded cache key
249
- # for the request.
250
- def store_simple_entry(*request_args)
251
- path, headers = request_args
252
- @request = mock_request(path || '/test', headers || {})
253
- @response = mock_response(200, {'Cache-Control' => 'max-age=420'}, ['test'])
254
- body = @response.body
255
- cache_key = @store.store(@request, @response, @entity_store)
256
- @response.body.should == body
257
- cache_key
258
- end
259
-
260
- def uri(uri)
261
- URI.parse uri
262
- end
263
- end
264
-
265
- describe Rack::Cache::EntityStore::Moneta do
266
- before do
267
- @store = Rack::Cache::EntityStore::Moneta.resolve(uri('moneta://Memory?expires=true'))
268
- end
269
-
270
- it 'has the class referenced by homonym constant' do
271
- Rack::Cache::EntityStore::MONETA.should == Rack::Cache::EntityStore::Moneta
272
- end
273
-
274
- it 'resolves the connection uri' do
275
- Rack::Cache::EntityStore::Moneta.resolve(uri('moneta://Memory?expires=true')).should be_kind_of(Rack::Cache::EntityStore::Moneta)
276
- end
277
-
278
- it 'responds to all required messages' do
279
- %w[read open write exist?].each do |message|
280
- @store.should respond_to message
281
- end
282
- end
283
-
284
- it 'stores bodies with #write' do
285
- key, size = @store.write(['My wild love went riding,'])
286
- key.should_not be_nil
287
- key.should be_sha_like
288
-
289
- data = @store.read(key)
290
- data.should == 'My wild love went riding,'
291
- end
292
-
293
- it 'takes a ttl parameter for #write' do
294
- key, size = @store.write(['My wild love went riding,'], 0)
295
- key.should_not be_nil
296
- key.should be_sha_like
297
-
298
- data = @store.read(key)
299
- data.should == 'My wild love went riding,'
300
- end
301
-
302
- it 'correctly determines whether cached body exists for key with #exist?' do
303
- key, size = @store.write(['She rode to the devil,'])
304
- @store.exist?(key).should be true
305
- @store.exist?('938jasddj83jasdh4438021ksdfjsdfjsdsf').should be false
306
- end
307
-
308
- it 'can read data written with #write' do
309
- key, size = @store.write(['And asked him to pay.'])
310
- data = @store.read(key)
311
- data.should == 'And asked him to pay.'
312
- end
313
-
314
- it 'gives a 40 character SHA1 hex digest from #write' do
315
- key, size = @store.write(['she rode to the sea;'])
316
- key.should_not be_nil
317
- key.length.should == 40
318
- key.should match(/^[0-9a-z]+$/)
319
- key.should == '90a4c84d51a277f3dafc34693ca264531b9f51b6'
320
- end
321
-
322
- it 'returns the entire body as a String from #read' do
323
- key, size = @store.write(['She gathered together'])
324
- @store.read(key).should == 'She gathered together'
325
- end
326
-
327
- it 'returns nil from #read when key does not exist' do
328
- @store.read('87fe0a1ae82a518592f6b12b0183e950b4541c62').should be_nil
329
- end
330
-
331
- it 'returns a Rack compatible body from #open' do
332
- key, size = @store.write(['Some shells for her hair.'])
333
- body = @store.open(key)
334
- body.should respond_to :each
335
- buf = ''
336
- body.each { |part| buf << part }
337
- buf.should == 'Some shells for her hair.'
338
- end
339
-
340
- it 'returns nil from #open when key does not exist' do
341
- @store.open('87fe0a1ae82a518592f6b12b0183e950b4541c62').should be_nil
342
- end
343
-
344
- it 'deletes stored entries with #purge' do
345
- key, size = @store.write(['My wild love went riding,'])
346
- @store.purge(key).should be_nil
347
- @store.read(key).should be_nil
348
- end
349
-
350
- private
351
-
352
- def uri(uri)
353
- URI.parse uri
354
- end
355
- end
@@ -1,83 +0,0 @@
1
- require 'helper'
2
- require 'rack/mock'
3
- require 'rack/moneta_cookies'
4
-
5
- describe Rack::MonetaCookies do
6
- def config(options={},&block)
7
- @options = options
8
- @block = block
9
- end
10
-
11
- def app(&block)
12
- @app_block ||= block
13
- end
14
-
15
- def backend
16
- Rack::MockRequest.new(Rack::MonetaCookies.new(lambda do |env|
17
- @store = env['rack.request.cookie_hash']
18
- expect(@store).to equal(env['rack.moneta_cookies'])
19
- app.call(env) if app
20
- [200,{},[]]
21
- end, @options || {}, &@block))
22
- end
23
-
24
- def get(cookies = {}, &block)
25
- app(&block)
26
- @response = backend.get('/','HTTP_COOKIE' => Rack::Utils.build_query(cookies))
27
- end
28
-
29
- it 'should be able to read a key' do
30
- get 'key' => 'value' do
31
- expect( @store['key'] ).to eql('value')
32
- end
33
- end
34
-
35
- it 'should be able to set a key' do
36
- get do
37
- @store['key'] = 'value'
38
- end
39
- expect( @response['Set-Cookie'] ).to eql('key=value')
40
- end
41
-
42
- it 'should be able to remove a key' do
43
- get 'key' => 'value' do
44
- @store.delete('key')
45
- end
46
- expect( @response['Set-Cookie'] ).to match(/key=;/)
47
- expect( @response['Set-Cookie'] ).to match(/\s+expires=.*?1970/)
48
- end
49
-
50
- it 'should accept a config block' do
51
- config do
52
- use :Transformer, :key => :prefix, :prefix => 'moneta.'
53
- adapter :Cookie
54
- end
55
- get 'moneta.key' => 'right', 'key' => 'wrong' do
56
- expect( @store['key'] ).to eql('right')
57
- end
58
- end
59
-
60
- it 'should accept a :domain option' do
61
- config :domain => 'example.com'
62
- get do
63
- @store['key'] = 'value'
64
- end
65
- expect(@response['Set-Cookie']).to eql('key=value; domain=example.com')
66
- end
67
-
68
- it 'should accept a :path option' do
69
- config :path => '/path'
70
- get do
71
- @store['key'] = 'value'
72
- end
73
- expect(@response['Set-Cookie']).to eql('key=value; path=/path')
74
- end
75
-
76
- it 'should be accessible via Rack::Request' do
77
- get 'key' => 'value' do |env|
78
- req = Rack::Request.new(env)
79
- expect(req.cookies['key']).to eql('value')
80
- end
81
- end
82
-
83
- end