odba 1.0.1 → 1.0.2

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.
@@ -1,4 +1,8 @@
1
- === 1.0.1 / 08.12.2010
1
+ === 1.0.2 / 09.12.2011
2
+
3
+ * Updated cache.rb persitatble.rb 18_19_loading_compatibility.rb to be compatible for both Ruby 1.8 and 1.9
4
+
5
+ === 1.0.1 / 08.12.2011
2
6
 
3
7
  * Added file lock exclusive control to create a new odba_id between processes.
4
8
 
@@ -11,5 +11,5 @@ require 'odba/index'
11
11
  require 'odba/odba'
12
12
 
13
13
  class Odba
14
- VERSION = '1.0.1'
14
+ VERSION = '1.0.2'
15
15
  end
@@ -1,4 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
+ # encoding: utf-8
3
+ # 18_19_loading_compatibility -- odba -- 09.12.2011 -- mhatakeyama@ywesee.com
2
4
 
3
5
  require 'date'
4
6
  require 'strscan'
@@ -28,17 +30,21 @@ if RUBY_VERSION >= '1.9'
28
30
  a.push Marshal.load(dump)
29
31
  end
30
32
  end
31
-
32
33
  ajd = of = sg = 0
33
34
  if a.size == 3
34
35
  num, den, sg = a
35
- ajd = Rational(num,den)
36
- ajd -= 1.to_r/2
36
+ if den > 0
37
+ ajd = Rational(num,den)
38
+ ajd -= 1.to_r/2
39
+ end
37
40
  else
38
41
  num, den, of, sg = a
39
- ajd = Rational(num,den)
42
+ if den > 0
43
+ ajd = Rational(num,den)
44
+ end
40
45
  end
41
- new!(ajd, of, sg)
46
+ ajd += 1.to_r/2
47
+ jd(ajd)
42
48
  end
43
49
  end
44
50
  class Encoding
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
2
  # encoding: utf-8
3
- # ODBA::Cache -- odba -- 08.12.2011 -- mhatakeyama@ywesee.com
3
+ # ODBA::Cache -- odba -- 09.12.2011 -- mhatakeyama@ywesee.com
4
4
  # ODBA::Cache -- odba -- 29.04.2004 -- hwyss@ywesee.com rwaltert@ywesee.com mwalder@ywesee.com
5
5
 
6
6
  require 'singleton'
@@ -97,12 +97,14 @@ module ODBA
97
97
  end
98
98
  counter = 0
99
99
  cutoff = offset + @cleaner_step
100
- holder.each_value { |value|
101
- counter += 1
102
- if(counter > offset && value.odba_old?(retire_time))
103
- value.odba_retire && @cleaned += 1
104
- end
105
- return cutoff if(counter > cutoff)
100
+ @cache_mutex.synchronize {
101
+ holder.each_value { |value|
102
+ counter += 1
103
+ if(counter > offset && value.odba_old?(retire_time))
104
+ value.odba_retire && @cleaned += 1
105
+ end
106
+ return cutoff if(counter > cutoff)
107
+ }
106
108
  }
107
109
  cutoff
108
110
  # every once in a while we'll get a 'hash modified during iteration'-Error.
@@ -1,5 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
- #-- Persistable -- odba -- 29.04.2004 -- hwyss@ywesee.com rwaltert@ywesee.com mwalder@ywesee.com
2
+ # encoding: utf-8
3
+ # ODBA::Persistable -- odba -- 09.12.2011 -- mhatakeyama@ywesee.com
4
+ # ODBA::Persistable -- odba -- 29.04.2004 -- hwyss@ywesee.com rwaltert@ywesee.com mwalder@ywesee.com
3
5
 
4
6
  class Object # :nodoc: all
5
7
  def odba_id
@@ -325,7 +327,11 @@ module ODBA
325
327
  odba_serializables.each { |name|
326
328
  var = instance_variable_get(name)
327
329
  if(var.is_a?(ODBA::Stub))
328
- instance_variable_set(name, var.odba_instance)
330
+ if RUBY_VERSION > "1.9"
331
+ instance_variable_set(name, var)
332
+ else
333
+ instance_variable_set(name, var.odba_instance)
334
+ end
329
335
  end
330
336
  }
331
337
  end
@@ -1,4 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
+ # encoding: utf-8
3
+ # ODBA::TestCache -- odba -- 08.12.2011 -- mhatakeyama@ywesee.com
2
4
 
3
5
  $: << File.dirname(__FILE__)
4
6
  $: << File.expand_path('../lib/', File.dirname(__FILE__))
@@ -597,32 +599,37 @@ module ODBA
597
599
  @storage.should_receive(:store).with(1,'dump1',nil,nil,Object)\
598
600
  .times(1).and_return { assert(true) }
599
601
  @storage.should_receive(:ensure_object_connections)\
600
- .with(1,[2]).times(1).and_return { assert(true) }
602
+ .with(Integer,Array).times(1).and_return { assert(true) }
601
603
 
602
604
  ## store o2
603
- @storage.should_receive(:restore_collection).with(2)\
605
+ @storage.should_receive(:restore_collection).with(Integer)\
604
606
  .times(1).and_return([])
605
607
  @storage.should_receive(:store)\
606
- .with(2,'dump2','name2',nil,Object)\
608
+ .with(Integer,String,'name2',nil,Object)\
607
609
  .times(1).and_return { assert(true) }
608
610
  @storage.should_receive(:ensure_object_connections)\
609
- .with(2,[3]).times(1).and_return { assert(true) }
611
+ .with(Integer,Array).times(1).and_return { assert(true) }
610
612
 
611
613
  ## store o3 and raise
612
- @storage.should_receive(:restore_collection).with(3)\
614
+ @storage.should_receive(:restore_collection).with(Integer)\
613
615
  .times(1).and_return([])
614
616
  ## at this stage 1 and 2 (and 'name2') are stored:
615
617
  @storage.should_receive(:store)\
616
- .with(3,'dump3',nil,nil,Object)\
618
+ .with(Integer,String,nil,nil,Object)\
617
619
  .times(1).and_return { raise "trigger rollback" }
618
620
 
619
621
  ## rollback
620
- @storage.should_receive(:restore).with(2)\
622
+ @storage.should_receive(:restore).with(Integer)\
621
623
  .times(1).and_return(nil)
622
624
  @storage.should_receive(:restore).with(1)\
623
625
  .times(1).and_return('dump1')
624
- @storage.should_receive(:restore_collection).with(1)\
626
+ @storage.should_receive(:restore_collection).with(Integer)\
625
627
  .times(2).and_return([])
628
+ dbi = flexmock('dbi', :dbi_args => ['dbi_args'])
629
+ flexmock(@storage,
630
+ :dbi => dbi,
631
+ :update_max_id => 123
632
+ )
626
633
  @marshal.should_receive(:load).with('dump1')\
627
634
  .times(1).and_return(o4)
628
635
  @cache.fetched.store(1, ODBA::CacheEntry.new(o1))
@@ -720,6 +727,29 @@ module ODBA
720
727
  @cache.instance_variable_set('@deferred_indices', [df1, df2])
721
728
  @cache.setup
722
729
  @cache.instance_variable_set('@indices', {})
730
+ end
731
+ def test_lock
732
+ result = ""
733
+ th = Thread.new do
734
+ sleep 1
735
+ @cache.lock('testcase') do
736
+ result << '123'
737
+ end
738
+ end
739
+ @cache.lock('testcase') do
740
+ result << '456'
741
+ end
742
+ th.join
743
+ expected = '456123'
744
+ assert_equal(expected, result)
745
+ end
746
+ def test_new_id
747
+ flexmock(File, :exist? => false)
748
+ storage = flexmock('storage',
749
+ :max_id => 123,
750
+ :update_max_id => nil
751
+ )
752
+ assert_equal(124, @cache.new_id('testcase', storage))
723
753
  end
724
754
  end
725
755
  end
@@ -1,4 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
+ # encoding: utf-8
3
+ # ODBA::TestStub -- odba -- 08.12.2011 -- mhatakeyama@ywesee.com
2
4
 
3
5
  $: << File.expand_path('../lib/', File.dirname(__FILE__))
4
6
  $: << File.dirname(__FILE__)
@@ -193,6 +195,7 @@ module ODBA
193
195
  assert_nil(hash[other])
194
196
  end
195
197
  def test_to_yaml
198
+ flexmock(@cache, :fetch => nil)
196
199
  yaml = ''
197
200
  assert_nothing_raised {
198
201
  yaml = @stub.odba_isolated_stub.to_yaml
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: odba
3
3
  version: !ruby/object:Gem::Version
4
- hash: 21
4
+ hash: 19
5
5
  prerelease:
6
6
  segments:
7
7
  - 1
8
8
  - 0
9
- - 1
10
- version: 1.0.1
9
+ - 2
10
+ version: 1.0.2
11
11
  platform: ruby
12
12
  authors:
13
13
  - Masaomi Hatakeyama, Zeno R.R. Davatz
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-12-08 00:00:00 +01:00
18
+ date: 2011-12-09 00:00:00 +01:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency