odba 1.0.1 → 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -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