moneta 0.7.5 → 0.7.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (160) hide show
  1. data/CHANGES +6 -0
  2. data/README.md +52 -51
  3. data/Rakefile +1 -3
  4. data/lib/moneta/adapters/daybreak.rb +7 -9
  5. data/lib/moneta/adapters/file.rb +2 -2
  6. data/lib/moneta/adapters/memcached/dalli.rb +1 -0
  7. data/lib/moneta/adapters/memcached/native.rb +1 -0
  8. data/lib/moneta/transformer.rb +4 -4
  9. data/lib/moneta/transformer/config.rb +2 -1
  10. data/lib/moneta/version.rb +1 -1
  11. data/script/benchmarks +52 -44
  12. data/script/generate-specs +238 -49
  13. data/spec/helper.rb +4 -0
  14. data/spec/moneta/adapter_activerecord_spec.rb +5 -0
  15. data/spec/moneta/adapter_cassandra_spec.rb +5 -0
  16. data/spec/moneta/adapter_cassandra_with_default_expires_spec.rb +5 -0
  17. data/spec/moneta/adapter_client_spec.rb +5 -0
  18. data/spec/moneta/adapter_cookie_spec.rb +4 -0
  19. data/spec/moneta/adapter_couch_spec.rb +5 -0
  20. data/spec/moneta/adapter_datamapper_spec.rb +5 -0
  21. data/spec/moneta/adapter_daybreak_spec.rb +4 -0
  22. data/spec/moneta/adapter_dbm_spec.rb +4 -0
  23. data/spec/moneta/adapter_file_spec.rb +5 -0
  24. data/spec/moneta/adapter_fog_spec.rb +5 -0
  25. data/spec/moneta/adapter_gdbm_spec.rb +5 -0
  26. data/spec/moneta/adapter_hbase_spec.rb +5 -0
  27. data/spec/moneta/adapter_leveldb_spec.rb +4 -0
  28. data/spec/moneta/adapter_localmemcache_spec.rb +5 -0
  29. data/spec/moneta/adapter_lruhash_spec.rb +4 -0
  30. data/spec/moneta/adapter_memcached_dalli_spec.rb +5 -0
  31. data/spec/moneta/adapter_memcached_dalli_with_default_expires_spec.rb +5 -0
  32. data/spec/moneta/adapter_memcached_native_spec.rb +5 -0
  33. data/spec/moneta/adapter_memcached_native_with_default_expires_spec.rb +5 -0
  34. data/spec/moneta/adapter_memcached_spec.rb +5 -0
  35. data/spec/moneta/adapter_memcached_with_default_expires_spec.rb +5 -0
  36. data/spec/moneta/adapter_memory_spec.rb +4 -0
  37. data/spec/moneta/adapter_mongo_spec.rb +5 -0
  38. data/spec/moneta/adapter_mongo_with_default_expires_spec.rb +5 -0
  39. data/spec/moneta/adapter_pstore_spec.rb +5 -0
  40. data/spec/moneta/adapter_redis_spec.rb +5 -0
  41. data/spec/moneta/adapter_redis_with_default_expires_spec.rb +5 -0
  42. data/spec/moneta/adapter_restclient_spec.rb +5 -0
  43. data/spec/moneta/adapter_riak_spec.rb +5 -0
  44. data/spec/moneta/adapter_sdbm_spec.rb +4 -0
  45. data/spec/moneta/adapter_sequel_spec.rb +5 -0
  46. data/spec/moneta/adapter_sqlite_spec.rb +5 -0
  47. data/spec/moneta/adapter_tdb_spec.rb +4 -0
  48. data/spec/moneta/adapter_tokyocabinet_bdb_spec.rb +4 -0
  49. data/spec/moneta/adapter_tokyocabinet_hdb_spec.rb +4 -0
  50. data/spec/moneta/adapter_yaml_spec.rb +5 -0
  51. data/spec/moneta/cache_file_memory_spec.rb +5 -0
  52. data/spec/moneta/cache_memory_null_spec.rb +4 -0
  53. data/spec/moneta/expires_file_spec.rb +5 -0
  54. data/spec/moneta/expires_memory_spec.rb +4 -0
  55. data/spec/moneta/expires_memory_with_default_expires_spec.rb +4 -0
  56. data/spec/moneta/lock_spec.rb +4 -0
  57. data/spec/moneta/null_adapter_spec.rb +4 -0
  58. data/spec/moneta/optionmerger_spec.rb +5 -1
  59. data/spec/moneta/pool_spec.rb +5 -0
  60. data/spec/moneta/proxy_expires_memory_spec.rb +4 -0
  61. data/spec/moneta/proxy_redis_spec.rb +5 -0
  62. data/spec/moneta/shared_spec.rb +5 -0
  63. data/spec/moneta/simple_activerecord_spec.rb +6 -1
  64. data/spec/moneta/simple_activerecord_with_expires_spec.rb +6 -1
  65. data/spec/moneta/simple_cassandra_spec.rb +6 -1
  66. data/spec/moneta/simple_client_tcp_spec.rb +6 -1
  67. data/spec/moneta/simple_client_unix_spec.rb +6 -1
  68. data/spec/moneta/simple_couch_spec.rb +6 -1
  69. data/spec/moneta/simple_couch_with_expires_spec.rb +6 -1
  70. data/spec/moneta/simple_datamapper_spec.rb +6 -1
  71. data/spec/moneta/simple_datamapper_with_expires_spec.rb +6 -1
  72. data/spec/moneta/simple_datamapper_with_repository_spec.rb +6 -1
  73. data/spec/moneta/simple_daybreak_spec.rb +5 -1
  74. data/spec/moneta/simple_daybreak_with_expires_spec.rb +5 -1
  75. data/spec/moneta/simple_dbm_spec.rb +5 -1
  76. data/spec/moneta/simple_dbm_with_expires_spec.rb +5 -1
  77. data/spec/moneta/simple_file_spec.rb +6 -1
  78. data/spec/moneta/simple_file_with_expires_spec.rb +6 -1
  79. data/spec/moneta/simple_fog_spec.rb +6 -1
  80. data/spec/moneta/simple_fog_with_expires_spec.rb +6 -1
  81. data/spec/moneta/simple_gdbm_spec.rb +5 -1
  82. data/spec/moneta/simple_gdbm_with_expires_spec.rb +5 -1
  83. data/spec/moneta/simple_hashfile_spec.rb +6 -1
  84. data/spec/moneta/simple_hashfile_with_expires_spec.rb +6 -1
  85. data/spec/moneta/simple_hbase_spec.rb +6 -1
  86. data/spec/moneta/simple_hbase_with_expires_spec.rb +6 -1
  87. data/spec/moneta/simple_leveldb_spec.rb +5 -1
  88. data/spec/moneta/simple_leveldb_with_expires_spec.rb +5 -1
  89. data/spec/moneta/simple_localmemcache_spec.rb +6 -1
  90. data/spec/moneta/simple_localmemcache_with_expires_spec.rb +6 -1
  91. data/spec/moneta/simple_lruhash_spec.rb +5 -1
  92. data/spec/moneta/simple_lruhash_with_expires_spec.rb +5 -1
  93. data/spec/moneta/simple_memcached_dalli_spec.rb +6 -1
  94. data/spec/moneta/simple_memcached_native_spec.rb +6 -1
  95. data/spec/moneta/simple_memcached_spec.rb +6 -1
  96. data/spec/moneta/simple_memory_spec.rb +5 -1
  97. data/spec/moneta/simple_memory_with_compress_spec.rb +5 -1
  98. data/spec/moneta/simple_memory_with_expires_spec.rb +5 -1
  99. data/spec/moneta/simple_memory_with_json_key_serializer_spec.rb +5 -1
  100. data/spec/moneta/simple_memory_with_json_serializer_spec.rb +5 -1
  101. data/spec/moneta/simple_memory_with_json_value_serializer_spec.rb +5 -1
  102. data/spec/moneta/simple_memory_with_prefix_spec.rb +5 -1
  103. data/spec/moneta/simple_memory_with_snappy_compress_spec.rb +5 -1
  104. data/spec/moneta/simple_mongo_spec.rb +6 -1
  105. data/spec/moneta/simple_null_spec.rb +5 -1
  106. data/spec/moneta/simple_pstore_spec.rb +6 -1
  107. data/spec/moneta/simple_pstore_with_expires_spec.rb +6 -1
  108. data/spec/moneta/simple_redis_spec.rb +6 -1
  109. data/spec/moneta/simple_restclient_spec.rb +6 -1
  110. data/spec/moneta/simple_riak_spec.rb +6 -1
  111. data/spec/moneta/simple_riak_with_expires_spec.rb +6 -1
  112. data/spec/moneta/simple_sdbm_spec.rb +5 -1
  113. data/spec/moneta/simple_sdbm_with_expires_spec.rb +5 -1
  114. data/spec/moneta/simple_sequel_spec.rb +6 -1
  115. data/spec/moneta/simple_sequel_with_expires_spec.rb +6 -1
  116. data/spec/moneta/simple_sqlite_spec.rb +6 -1
  117. data/spec/moneta/simple_sqlite_with_expires_spec.rb +6 -1
  118. data/spec/moneta/simple_tdb_spec.rb +5 -1
  119. data/spec/moneta/simple_tdb_with_expires_spec.rb +5 -1
  120. data/spec/moneta/simple_tokyocabinet_spec.rb +5 -1
  121. data/spec/moneta/simple_tokyocabinet_with_expires_spec.rb +5 -1
  122. data/spec/moneta/simple_yaml_spec.rb +6 -1
  123. data/spec/moneta/simple_yaml_with_expires_spec.rb +6 -1
  124. data/spec/moneta/stack_file_memory_spec.rb +5 -0
  125. data/spec/moneta/stack_memory_file_spec.rb +5 -0
  126. data/spec/moneta/transformer_bencode_spec.rb +8 -0
  127. data/spec/moneta/transformer_bert_spec.rb +8 -0
  128. data/spec/moneta/transformer_bson_spec.rb +8 -0
  129. data/spec/moneta/transformer_bzip2_spec.rb +8 -0
  130. data/spec/moneta/transformer_json_spec.rb +8 -0
  131. data/spec/moneta/transformer_key_marshal_spec.rb +8 -0
  132. data/spec/moneta/transformer_key_to_s_spec.rb +72 -0
  133. data/spec/moneta/transformer_key_yaml_spec.rb +8 -0
  134. data/spec/moneta/transformer_lzma_spec.rb +8 -0
  135. data/spec/moneta/transformer_lzo_spec.rb +8 -0
  136. data/spec/moneta/transformer_marshal_base64_spec.rb +8 -0
  137. data/spec/moneta/transformer_marshal_escape_spec.rb +8 -0
  138. data/spec/moneta/transformer_marshal_hmac_spec.rb +8 -0
  139. data/spec/moneta/transformer_marshal_md5_spec.rb +8 -0
  140. data/spec/moneta/transformer_marshal_md5_spread_spec.rb +8 -0
  141. data/spec/moneta/transformer_marshal_prefix_spec.rb +8 -0
  142. data/spec/moneta/transformer_marshal_rmd160_spec.rb +8 -0
  143. data/spec/moneta/transformer_marshal_sha1_spec.rb +8 -0
  144. data/spec/moneta/transformer_marshal_sha256_spec.rb +8 -0
  145. data/spec/moneta/transformer_marshal_sha384_spec.rb +8 -0
  146. data/spec/moneta/transformer_marshal_sha512_spec.rb +8 -0
  147. data/spec/moneta/transformer_marshal_spec.rb +8 -0
  148. data/spec/moneta/transformer_marshal_truncate_spec.rb +8 -0
  149. data/spec/moneta/transformer_marshal_uuencode_spec.rb +8 -0
  150. data/spec/moneta/transformer_msgpack_spec.rb +8 -0
  151. data/spec/moneta/transformer_ox_spec.rb +8 -0
  152. data/spec/moneta/transformer_quicklz_spec.rb +8 -0
  153. data/spec/moneta/transformer_snappy_spec.rb +8 -0
  154. data/spec/moneta/transformer_tnet_spec.rb +8 -0
  155. data/spec/moneta/transformer_value_marshal_spec.rb +8 -0
  156. data/spec/moneta/transformer_value_yaml_spec.rb +8 -0
  157. data/spec/moneta/transformer_yaml_spec.rb +8 -0
  158. data/spec/moneta/transformer_zlib_spec.rb +8 -0
  159. data/spec/monetaspecs.rb +11 -0
  160. metadata +4 -2
@@ -50,7 +50,11 @@ class Specs
50
50
  end
51
51
 
52
52
  def without_persist
53
- new(:specs => specs.without(:persist).with(:not_persist))
53
+ new(:specs => specs.without(:persist).without(:multiprocess).with(:not_persist))
54
+ end
55
+
56
+ def without_multiprocess
57
+ new(:specs => specs.without(:multiprocess))
54
58
  end
55
59
 
56
60
  def with_expires
@@ -96,8 +100,8 @@ class Specs
96
100
  end
97
101
  end
98
102
 
99
- ADAPTER_SPECS = Specs.new(:specs => [:null, :store, :returndifferent, :increment, :persist], :key => %w(string), :value => %w(string))
100
- STANDARD_SPECS = Specs.new(:specs => [:null, :store, :returndifferent, :marshallable_key, :marshallable_value, :transform_value, :increment, :persist])
103
+ ADAPTER_SPECS = Specs.new(:specs => [:null, :store, :returndifferent, :increment, :persist, :multiprocess], :key => %w(string), :value => %w(string))
104
+ STANDARD_SPECS = Specs.new(:specs => [:null, :store, :returndifferent, :marshallable_key, :marshallable_value, :transform_value, :increment, :persist, :multiprocess])
101
105
  TRANSFORMER_SPECS = Specs.new(:specs => [:null, :store, :returndifferent, :transform_value, :increment])
102
106
 
103
107
  header = "# Generated by #{File.basename(__FILE__)}\n"
@@ -226,62 +230,62 @@ end
226
230
  'simple_dbm' => {
227
231
  :store => :DBM,
228
232
  :options => ':file => File.join(make_tempdir, "simple_dbm")',
229
- :specs => STANDARD_SPECS
233
+ :specs => STANDARD_SPECS.without_multiprocess
230
234
  },
231
235
  'simple_dbm_with_expires' => {
232
236
  :store => :DBM,
233
237
  :options => ':file => File.join(make_tempdir, "simple_dbm_with_expires"), :expires => true',
234
- :specs => STANDARD_SPECS.with_expires
238
+ :specs => STANDARD_SPECS.without_multiprocess.with_expires
235
239
  },
236
240
  'simple_tdb' => {
237
241
  :store => :TDB,
238
242
  :options => ':file => File.join(make_tempdir, "simple_tdb")',
239
- :specs => STANDARD_SPECS
243
+ :specs => STANDARD_SPECS.without_multiprocess
240
244
  },
241
245
  'simple_tdb_with_expires' => {
242
246
  :store => :TDB,
243
247
  :options => ':file => File.join(make_tempdir, "simple_tdb_with_expires"), :expires => true',
244
- :specs => STANDARD_SPECS.with_expires
248
+ :specs => STANDARD_SPECS.without_multiprocess.with_expires
245
249
  },
246
250
  'simple_daybreak' => {
247
251
  :store => :Daybreak,
248
252
  :options => ':file => File.join(make_tempdir, "simple_daybreak")',
249
- :specs => STANDARD_SPECS
253
+ :specs => STANDARD_SPECS.without_multiprocess
250
254
  },
251
255
  'simple_daybreak_with_expires' => {
252
256
  :store => :Daybreak,
253
257
  :options => ':file => File.join(make_tempdir, "simple_daybreak_with_expires"), :expires => true',
254
- :specs => STANDARD_SPECS.with_expires
258
+ :specs => STANDARD_SPECS.without_multiprocess.with_expires
255
259
  },
256
260
  'simple_gdbm' => {
257
261
  :store => :GDBM,
258
262
  :options => ':file => File.join(make_tempdir, "simple_gdbm")',
259
- :specs => STANDARD_SPECS
263
+ :specs => STANDARD_SPECS.without_multiprocess
260
264
  },
261
265
  'simple_gdbm_with_expires' => {
262
266
  :store => :GDBM,
263
267
  :options => ':file => File.join(make_tempdir, "simple_gdbm_with_expires"), :expires => true',
264
- :specs => STANDARD_SPECS.with_expires
268
+ :specs => STANDARD_SPECS.without_multiprocess.with_expires
265
269
  },
266
270
  'simple_sdbm' => {
267
271
  :store => :SDBM,
268
272
  :options => ':file => File.join(make_tempdir, "simple_sdbm")',
269
- :specs => STANDARD_SPECS
273
+ :specs => STANDARD_SPECS.without_multiprocess
270
274
  },
271
275
  'simple_sdbm_with_expires' => {
272
276
  :store => :SDBM,
273
277
  :options => ':file => File.join(make_tempdir, "simple_sdbm_with_expires"), :expires => true',
274
- :specs => STANDARD_SPECS.with_expires
278
+ :specs => STANDARD_SPECS.without_multiprocess.with_expires
275
279
  },
276
280
  'simple_leveldb' => {
277
281
  :store => :LevelDB,
278
282
  :options => ':dir => File.join(make_tempdir, "simple_leveldb")',
279
- :specs => STANDARD_SPECS
283
+ :specs => STANDARD_SPECS.without_multiprocess
280
284
  },
281
285
  'simple_leveldb_with_expires' => {
282
286
  :store => :LevelDB,
283
287
  :options => ':dir => File.join(make_tempdir, "simple_leveldb_with_expires"), :expires => true',
284
- :specs => STANDARD_SPECS.with_expires
288
+ :specs => STANDARD_SPECS.without_multiprocess.with_expires
285
289
  },
286
290
  'simple_pstore' => {
287
291
  :store => :PStore,
@@ -320,12 +324,12 @@ end
320
324
  'simple_tokyocabinet' => {
321
325
  :store => :TokyoCabinet,
322
326
  :options => ':file => File.join(make_tempdir, "simple_tokyocabinet")',
323
- :specs => STANDARD_SPECS
327
+ :specs => STANDARD_SPECS.without_multiprocess
324
328
  },
325
329
  'simple_tokyocabinet_with_expires' => {
326
330
  :store => :TokyoCabinet,
327
331
  :options => ':file => File.join(make_tempdir, "simple_tokyocabinet_with_expires"), :expires => true',
328
- :specs => STANDARD_SPECS.with_expires
332
+ :specs => STANDARD_SPECS.without_multiprocess.with_expires
329
333
  },
330
334
  'simple_sqlite' => {
331
335
  :store => :Sqlite,
@@ -605,7 +609,12 @@ end},
605
609
  adapter :Memory
606
610
  end},
607
611
  :specs => TRANSFORMER_SPECS.stringvalues_only,
608
- :load_value => '::Zlib::Inflate.inflate(value)'
612
+ :load_value => '::Zlib::Inflate.inflate(value)',
613
+ :tests => %{
614
+ it 'compile transformer class' do
615
+ store.should_not be_nil
616
+ Moneta::Transformer::ZlibValue.should_not be_nil
617
+ end}
609
618
  },
610
619
  'transformer_bzip2' => {
611
620
  :build => %{Moneta.build do
@@ -613,7 +622,12 @@ end},
613
622
  adapter :Memory
614
623
  end},
615
624
  :specs => TRANSFORMER_SPECS.stringvalues_only,
616
- :load_value => '::Bzip2.uncompress(value)'
625
+ :load_value => '::Bzip2.uncompress(value)',
626
+ :tests => %{
627
+ it 'compile transformer class' do
628
+ store.should_not be_nil
629
+ Moneta::Transformer::Bzip2Value.should_not be_nil
630
+ end}
617
631
  },
618
632
  'transformer_lzo' => {
619
633
  :build => %{Moneta.build do
@@ -621,7 +635,12 @@ end},
621
635
  adapter :Memory
622
636
  end},
623
637
  :specs => TRANSFORMER_SPECS.stringvalues_only,
624
- :load_value => '::LZO.decompress(value)'
638
+ :load_value => '::LZO.decompress(value)',
639
+ :tests => %{
640
+ it 'compile transformer class' do
641
+ store.should_not be_nil
642
+ Moneta::Transformer::LzoValue.should_not be_nil
643
+ end}
625
644
  },
626
645
  'transformer_lzma' => {
627
646
  :build => %{Moneta.build do
@@ -629,7 +648,12 @@ end},
629
648
  adapter :Memory
630
649
  end},
631
650
  :specs => TRANSFORMER_SPECS.stringvalues_only,
632
- :load_value => '::LZMA.decompress(value)'
651
+ :load_value => '::LZMA.decompress(value)',
652
+ :tests => %{
653
+ it 'compile transformer class' do
654
+ store.should_not be_nil
655
+ Moneta::Transformer::LzmaValue.should_not be_nil
656
+ end}
633
657
  },
634
658
  'transformer_snappy' => {
635
659
  :build => %{Moneta.build do
@@ -637,7 +661,12 @@ end},
637
661
  adapter :Memory
638
662
  end},
639
663
  :specs => TRANSFORMER_SPECS.stringvalues_only,
640
- :load_value => '::Snappy.inflate(value)'
664
+ :load_value => '::Snappy.inflate(value)',
665
+ :tests => %{
666
+ it 'compile transformer class' do
667
+ store.should_not be_nil
668
+ Moneta::Transformer::SnappyValue.should_not be_nil
669
+ end}
641
670
  },
642
671
  'transformer_quicklz' => {
643
672
  :build => %{Moneta.build do
@@ -645,7 +674,12 @@ end},
645
674
  adapter :Memory
646
675
  end},
647
676
  :specs => TRANSFORMER_SPECS.stringvalues_only,
648
- :load_value => '::QuickLZ.decompress(value)'
677
+ :load_value => '::QuickLZ.decompress(value)',
678
+ :tests => %{
679
+ it 'compile transformer class' do
680
+ store.should_not be_nil
681
+ Moneta::Transformer::QuicklzValue.should_not be_nil
682
+ end}
649
683
  },
650
684
  'transformer_json' => {
651
685
  :build => %{Moneta.build do
@@ -653,7 +687,12 @@ end},
653
687
  adapter :Memory
654
688
  end},
655
689
  :specs => TRANSFORMER_SPECS.simplekeys_only.simplevalues_only,
656
- :load_value => '::MultiJson.load(value).first'
690
+ :load_value => '::MultiJson.load(value).first',
691
+ :tests => %{
692
+ it 'compile transformer class' do
693
+ store.should_not be_nil
694
+ Moneta::Transformer::JsonKeyJsonValue.should_not be_nil
695
+ end}
657
696
  },
658
697
  'transformer_bert' => {
659
698
  :build => %{Moneta.build do
@@ -661,7 +700,12 @@ end},
661
700
  adapter :Memory
662
701
  end},
663
702
  :specs => TRANSFORMER_SPECS.simplekeys_only.simplevalues_only,
664
- :load_value => '::BERT.decode(value)'
703
+ :load_value => '::BERT.decode(value)',
704
+ :tests => %{
705
+ it 'compile transformer class' do
706
+ store.should_not be_nil
707
+ Moneta::Transformer::BertKeyBertValue.should_not be_nil
708
+ end}
665
709
  },
666
710
  'transformer_bencode' => {
667
711
  :build => %{Moneta.build do
@@ -669,7 +713,13 @@ end},
669
713
  adapter :Memory
670
714
  end},
671
715
  :specs => TRANSFORMER_SPECS.simplekeys_only.simplevalues_only,
672
- :load_value => '::BEncode.load(value)'
716
+ :load_value => '::BEncode.load(value)',
717
+ :tests => %{
718
+ it 'compile transformer class' do
719
+ store.should_not be_nil
720
+ Moneta::Transformer::BencodeKeyBencodeValue.should_not be_nil
721
+ end}
722
+
673
723
  },
674
724
  'transformer_bson' => {
675
725
  :build => %{Moneta.build do
@@ -677,7 +727,12 @@ end},
677
727
  adapter :Memory
678
728
  end},
679
729
  :specs => TRANSFORMER_SPECS.simplekeys_only.simplevalues_only,
680
- :load_value => "::BSON.deserialize(value)['v']"
730
+ :load_value => "::BSON.deserialize(value)['v']",
731
+ :tests => %{
732
+ it 'compile transformer class' do
733
+ store.should_not be_nil
734
+ Moneta::Transformer::BsonKeyBsonValue.should_not be_nil
735
+ end}
681
736
  },
682
737
  'transformer_ox' => {
683
738
  :build => %{Moneta.build do
@@ -685,7 +740,12 @@ end},
685
740
  adapter :Memory
686
741
  end},
687
742
  :specs => TRANSFORMER_SPECS,
688
- :load_value => '::Ox.parse_obj(value)'
743
+ :load_value => '::Ox.parse_obj(value)',
744
+ :tests => %{
745
+ it 'compile transformer class' do
746
+ store.should_not be_nil
747
+ Moneta::Transformer::OxKeyOxValue.should_not be_nil
748
+ end}
689
749
  },
690
750
  'transformer_tnet' => {
691
751
  :build => %{Moneta.build do
@@ -693,7 +753,12 @@ end},
693
753
  adapter :Memory
694
754
  end},
695
755
  :specs => TRANSFORMER_SPECS.simplekeys_only.simplevalues_only,
696
- :load_value => '::TNetstring.parse(value).first'
756
+ :load_value => '::TNetstring.parse(value).first',
757
+ :tests => %{
758
+ it 'compile transformer class' do
759
+ store.should_not be_nil
760
+ Moneta::Transformer::TnetKeyTnetValue.should_not be_nil
761
+ end}
697
762
  },
698
763
  'transformer_msgpack' => {
699
764
  :build => %{Moneta.build do
@@ -701,7 +766,12 @@ end},
701
766
  adapter :Memory
702
767
  end},
703
768
  :specs => TRANSFORMER_SPECS.simplekeys_only.simplevalues_only,
704
- :load_value => '::MessagePack.unpack(value)'
769
+ :load_value => '::MessagePack.unpack(value)',
770
+ :tests => %{
771
+ it 'compile transformer class' do
772
+ store.should_not be_nil
773
+ Moneta::Transformer::MsgpackKeyMsgpackValue.should_not be_nil
774
+ end}
705
775
  },
706
776
  'transformer_marshal' => {
707
777
  :build => %{Moneta.build do
@@ -709,7 +779,12 @@ end},
709
779
  adapter :Memory
710
780
  end},
711
781
  :specs => TRANSFORMER_SPECS,
712
- :load_value => '::Marshal.load(value)'
782
+ :load_value => '::Marshal.load(value)',
783
+ :tests => %{
784
+ it 'compile transformer class' do
785
+ store.should_not be_nil
786
+ Moneta::Transformer::MarshalKeyMarshalValue.should_not be_nil
787
+ end}
713
788
  },
714
789
  'transformer_key_marshal' => {
715
790
  :build => %{Moneta.build do
@@ -717,7 +792,25 @@ end},
717
792
  adapter :Memory
718
793
  end},
719
794
  :specs => TRANSFORMER_SPECS.returnsame,
720
- :load_value => 'value'
795
+ :load_value => 'value',
796
+ :tests => %{
797
+ it 'compile transformer class' do
798
+ store.should_not be_nil
799
+ Moneta::Transformer::MarshalKey.should_not be_nil
800
+ end}
801
+ },
802
+ 'transformer_key_to_s' => {
803
+ :build => %{Moneta.build do
804
+ use :Transformer, :key => :to_s
805
+ adapter :Memory
806
+ end},
807
+ :specs => TRANSFORMER_SPECS.returnsame.simplekeys_only,
808
+ :load_value => 'value',
809
+ :tests => %{
810
+ it 'compile transformer class' do
811
+ store.should_not be_nil
812
+ Moneta::Transformer::To_sKey.should_not be_nil
813
+ end}
721
814
  },
722
815
  'transformer_value_marshal' => {
723
816
  :build => %{Moneta.build do
@@ -725,7 +818,12 @@ end},
725
818
  adapter :Memory
726
819
  end},
727
820
  :specs => TRANSFORMER_SPECS,
728
- :load_value => '::Marshal.load(value)'
821
+ :load_value => '::Marshal.load(value)',
822
+ :tests => %{
823
+ it 'compile transformer class' do
824
+ store.should_not be_nil
825
+ Moneta::Transformer::MarshalValue.should_not be_nil
826
+ end}
729
827
  },
730
828
  'transformer_yaml' => {
731
829
  :build => %{Moneta.build do
@@ -733,7 +831,12 @@ end},
733
831
  adapter :Memory
734
832
  end},
735
833
  :specs => TRANSFORMER_SPECS,
736
- :load_value => '::YAML.load(value)'
834
+ :load_value => '::YAML.load(value)',
835
+ :tests => %{
836
+ it 'compile transformer class' do
837
+ store.should_not be_nil
838
+ Moneta::Transformer::YamlKeyYamlValue.should_not be_nil
839
+ end}
737
840
  },
738
841
  'transformer_key_yaml' => {
739
842
  :build => %{Moneta.build do
@@ -741,7 +844,12 @@ end},
741
844
  adapter :Memory
742
845
  end},
743
846
  :specs => TRANSFORMER_SPECS.returnsame,
744
- :load_value => 'value'
847
+ :load_value => 'value',
848
+ :tests => %{
849
+ it 'compile transformer class' do
850
+ store.should_not be_nil
851
+ Moneta::Transformer::YamlKey.should_not be_nil
852
+ end}
745
853
  },
746
854
  'transformer_value_yaml' => {
747
855
  :build => %{Moneta.build do
@@ -749,7 +857,12 @@ end},
749
857
  adapter :Memory
750
858
  end},
751
859
  :specs => TRANSFORMER_SPECS,
752
- :load_value => '::YAML.load(value)'
860
+ :load_value => '::YAML.load(value)',
861
+ :tests => %{
862
+ it 'compile transformer class' do
863
+ store.should_not be_nil
864
+ Moneta::Transformer::YamlValue.should_not be_nil
865
+ end}
753
866
  },
754
867
  'transformer_marshal_hmac' => {
755
868
  :build => %{Moneta.build do
@@ -757,7 +870,12 @@ end},
757
870
  adapter :Memory
758
871
  end},
759
872
  :specs => STANDARD_SPECS.without_persist,
760
- :load_value => '::Marshal.load(::Moneta::Transformer::Helper.hmacverify(value, \'secret\'))'
873
+ :load_value => '::Marshal.load(::Moneta::Transformer::Helper.hmacverify(value, \'secret\'))',
874
+ :tests => %{
875
+ it 'compile transformer class' do
876
+ store.should_not be_nil
877
+ Moneta::Transformer::MarshalKeyMarshalHmacValue.should_not be_nil
878
+ end}
761
879
  },
762
880
  'transformer_marshal_base64' => {
763
881
  :build => %{Moneta.build do
@@ -765,14 +883,24 @@ end},
765
883
  adapter :Memory
766
884
  end},
767
885
  :specs => STANDARD_SPECS.without_persist,
768
- :load_value => '::Marshal.load(value.unpack(\'m\').first)'
886
+ :load_value => '::Marshal.load(value.unpack(\'m\').first)',
887
+ :tests => %{
888
+ it 'compile transformer class' do
889
+ store.should_not be_nil
890
+ Moneta::Transformer::MarshalBase64KeyMarshalBase64Value.should_not be_nil
891
+ end}
769
892
  },
770
893
  'transformer_marshal_prefix' => {
771
894
  :build => %{Moneta.build do
772
895
  use :Transformer, :key => [:marshal, :prefix], :value => :marshal, :prefix => 'moneta'
773
896
  adapter :Memory
774
897
  end},
775
- :specs => STANDARD_SPECS.without_persist
898
+ :specs => STANDARD_SPECS.without_persist,
899
+ :tests => %{
900
+ it 'compile transformer class' do
901
+ store.should_not be_nil
902
+ Moneta::Transformer::MarshalPrefixKeyMarshalValue.should_not be_nil
903
+ end}
776
904
  },
777
905
  'transformer_marshal_uuencode' => {
778
906
  :build => %{Moneta.build do
@@ -780,14 +908,24 @@ end},
780
908
  adapter :Memory
781
909
  end},
782
910
  :specs => STANDARD_SPECS.without_persist,
783
- :load_value => '::Marshal.load(value.unpack(\'u\').first)'
911
+ :load_value => '::Marshal.load(value.unpack(\'u\').first)',
912
+ :tests => %{
913
+ it 'compile transformer class' do
914
+ store.should_not be_nil
915
+ Moneta::Transformer::MarshalUuencodeKeyMarshalUuencodeValue.should_not be_nil
916
+ end}
784
917
  },
785
918
  'transformer_marshal_escape' => {
786
919
  :build => %{Moneta.build do
787
920
  use :Transformer, :key => [:marshal, :escape], :value => :marshal
788
921
  adapter :Memory
789
922
  end},
790
- :specs => STANDARD_SPECS.without_persist
923
+ :specs => STANDARD_SPECS.without_persist,
924
+ :tests => %{
925
+ it 'compile transformer class' do
926
+ store.should_not be_nil
927
+ Moneta::Transformer::MarshalEscapeKeyMarshalValue.should_not be_nil
928
+ end}
791
929
  },
792
930
  'transformer_marshal_md5' => {
793
931
  :build => %{Moneta.build do
@@ -795,6 +933,11 @@ end},
795
933
  adapter :Memory
796
934
  end},
797
935
  :specs => STANDARD_SPECS.without_persist,
936
+ :tests => %{
937
+ it 'compile transformer class' do
938
+ store.should_not be_nil
939
+ Moneta::Transformer::MarshalMd5KeyMarshalValue.should_not be_nil
940
+ end}
798
941
  },
799
942
  'transformer_marshal_sha1' => {
800
943
  :build => %{Moneta.build do
@@ -802,6 +945,11 @@ end},
802
945
  adapter :Memory
803
946
  end},
804
947
  :specs => STANDARD_SPECS.without_persist,
948
+ :tests => %{
949
+ it 'compile transformer class' do
950
+ store.should_not be_nil
951
+ Moneta::Transformer::MarshalSha1KeyMarshalValue.should_not be_nil
952
+ end}
805
953
  },
806
954
  'transformer_marshal_sha256' => {
807
955
  :build => %{Moneta.build do
@@ -809,6 +957,11 @@ end},
809
957
  adapter :Memory
810
958
  end},
811
959
  :specs => STANDARD_SPECS.without_persist,
960
+ :tests => %{
961
+ it 'compile transformer class' do
962
+ store.should_not be_nil
963
+ Moneta::Transformer::MarshalSha256KeyMarshalValue.should_not be_nil
964
+ end}
812
965
  },
813
966
  'transformer_marshal_sha384' => {
814
967
  :build => %{Moneta.build do
@@ -816,6 +969,11 @@ end},
816
969
  adapter :Memory
817
970
  end},
818
971
  :specs => STANDARD_SPECS.without_persist,
972
+ :tests => %{
973
+ it 'compile transformer class' do
974
+ store.should_not be_nil
975
+ Moneta::Transformer::MarshalSha384KeyMarshalValue.should_not be_nil
976
+ end}
819
977
  },
820
978
  'transformer_marshal_sha512' => {
821
979
  :build => %{Moneta.build do
@@ -823,6 +981,11 @@ end},
823
981
  adapter :Memory
824
982
  end},
825
983
  :specs => STANDARD_SPECS.without_persist,
984
+ :tests => %{
985
+ it 'compile transformer class' do
986
+ store.should_not be_nil
987
+ Moneta::Transformer::MarshalSha512KeyMarshalValue.should_not be_nil
988
+ end}
826
989
  },
827
990
  'transformer_marshal_rmd160' => {
828
991
  :build => %{Moneta.build do
@@ -830,6 +993,11 @@ end},
830
993
  adapter :Memory
831
994
  end},
832
995
  :specs => STANDARD_SPECS.without_persist,
996
+ :tests => %{
997
+ it 'compile transformer class' do
998
+ store.should_not be_nil
999
+ Moneta::Transformer::MarshalRmd160KeyMarshalValue.should_not be_nil
1000
+ end}
833
1001
  },
834
1002
  'transformer_marshal_md5_spread' => {
835
1003
  :build => %{Moneta.build do
@@ -837,6 +1005,11 @@ end},
837
1005
  adapter :Memory
838
1006
  end},
839
1007
  :specs => STANDARD_SPECS.without_persist,
1008
+ :tests => %{
1009
+ it 'compile transformer class' do
1010
+ store.should_not be_nil
1011
+ Moneta::Transformer::MarshalMd5SpreadKeyMarshalValue.should_not be_nil
1012
+ end}
840
1013
  },
841
1014
  'transformer_marshal_truncate' => {
842
1015
  :build => %{Moneta.build do
@@ -844,6 +1017,11 @@ end},
844
1017
  adapter :Memory
845
1018
  end},
846
1019
  :specs => STANDARD_SPECS.without_persist,
1020
+ :tests => %{
1021
+ it 'compile transformer class' do
1022
+ store.should_not be_nil
1023
+ Moneta::Transformer::MarshalTruncateKeyMarshalValue.should_not be_nil
1024
+ end}
847
1025
  },
848
1026
  'adapter_activerecord' => {
849
1027
  :build => "Moneta::Adapters::ActiveRecord.new(:connection => { :adapter => (defined?(JRUBY_VERSION) ? 'jdbcsqlite3' : 'sqlite3'), :database => File.join(make_tempdir, 'adapter_activerecord') })",
@@ -932,15 +1110,15 @@ end
932
1110
  },
933
1111
  'adapter_dbm' => {
934
1112
  :build => 'Moneta::Adapters::DBM.new(:file => File.join(make_tempdir, "adapter_dbm"))',
935
- :specs => ADAPTER_SPECS
1113
+ :specs => ADAPTER_SPECS.without_multiprocess
936
1114
  },
937
1115
  'adapter_tdb' => {
938
1116
  :build => 'Moneta::Adapters::TDB.new(:file => File.join(make_tempdir, "adapter_tdb"))',
939
- :specs => ADAPTER_SPECS
1117
+ :specs => ADAPTER_SPECS.without_multiprocess
940
1118
  },
941
1119
  'adapter_daybreak' => {
942
1120
  :build => 'Moneta::Adapters::Daybreak.new(:file => File.join(make_tempdir, "adapter_daybreak"))',
943
- :specs => ADAPTER_SPECS.returnsame
1121
+ :specs => ADAPTER_SPECS.without_multiprocess.returnsame
944
1122
  },
945
1123
  'adapter_file' => {
946
1124
  :build => 'Moneta::Adapters::File.new(:dir => File.join(make_tempdir, "adapter_file"))',
@@ -1046,11 +1224,11 @@ end}
1046
1224
  },
1047
1225
  'adapter_sdbm' => {
1048
1226
  :build => 'Moneta::Adapters::SDBM.new(:file => File.join(make_tempdir, "adapter_sdbm"))',
1049
- :specs => ADAPTER_SPECS
1227
+ :specs => ADAPTER_SPECS.without_multiprocess
1050
1228
  },
1051
1229
  'adapter_leveldb' => {
1052
1230
  :build => 'Moneta::Adapters::LevelDB.new(:dir => File.join(make_tempdir, "adapter_leveldb"))',
1053
- :specs => ADAPTER_SPECS
1231
+ :specs => ADAPTER_SPECS.without_multiprocess
1054
1232
  },
1055
1233
  'adapter_sequel' => {
1056
1234
  :build => 'Moneta::Adapters::Sequel.new(:db => (defined?(JRUBY_VERSION) ? "jdbc:sqlite:" : "sqlite:") + File.join(make_tempdir, "adapter_sequel"))',
@@ -1062,11 +1240,11 @@ end}
1062
1240
  },
1063
1241
  'adapter_tokyocabinet_bdb' => {
1064
1242
  :build => 'Moneta::Adapters::TokyoCabinet.new(:file => File.join(make_tempdir, "adapter_tokyocabinet_bdb"), :type => :bdb)',
1065
- :specs => ADAPTER_SPECS
1243
+ :specs => ADAPTER_SPECS.without_multiprocess
1066
1244
  },
1067
1245
  'adapter_tokyocabinet_hdb' => {
1068
1246
  :build => 'Moneta::Adapters::TokyoCabinet.new(:file => File.join(make_tempdir, "adapter_tokyocabinet_hdb"), :type => :hdb)',
1069
- :specs => ADAPTER_SPECS
1247
+ :specs => ADAPTER_SPECS.without_multiprocess
1070
1248
  },
1071
1249
  'adapter_yaml' => {
1072
1250
  :build => 'Moneta::Adapters::YAML.new(:file => File.join(make_tempdir, "adapter_yaml"))',
@@ -1336,6 +1514,13 @@ SPECS['not_persist'] = %{it 'does not persist values' do
1336
1514
  store['key'].should be_nil
1337
1515
  end}
1338
1516
 
1517
+ SPECS['multiprocess'] = %{it 'supports access by multiple instances/processes' do
1518
+ store['key'] = 'val'
1519
+ store2 = new_store
1520
+ store2['key'].should == 'val'
1521
+ store2.close
1522
+ end}
1523
+
1339
1524
  SPECS['expires'] = %{it 'supports expires on store and #[]' do
1340
1525
  store.store('key1', 'val1', :expires => 2)
1341
1526
  store['key1'].should == 'val1'
@@ -1774,11 +1959,15 @@ TESTS.each do |name, options|
1774
1959
  opts = options.delete(:options)
1775
1960
  opts = ', ' << opts if opts
1776
1961
 
1777
- build ||= "Moneta.new(#{store.inspect}#{opts}, :logger => {:out => File.open(File.join(make_tempdir, '#{name}.log'), 'a')})"
1962
+ build ||= "Moneta.new(#{store.inspect}#{opts}, :logger => {:out => log})"
1778
1963
 
1779
1964
  code = %{#{header}require 'helper'
1780
1965
 
1781
1966
  describe_moneta #{name.inspect} do
1967
+ def log
1968
+ @log ||= File.open(File.join(make_tempdir, '#{name}.log'), 'a')
1969
+ end
1970
+
1782
1971
  #{preamble}def new_store
1783
1972
  #{build.gsub("\n", "\n ")}
1784
1973
  end