eventus 0.3.9 → 0.4.0

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.
@@ -59,7 +59,8 @@ module Eventus
59
59
  end
60
60
 
61
61
  def pack_hex(id)
62
- id.match(/^[0-9a-fA-F]+$/) ? [id].pack('H*') : id
62
+ id
63
+ #id.match(/^[0-9a-fA-F]+$/) ? [id].pack('H*') : id
63
64
  end
64
65
 
65
66
  def build_key(id, index)
@@ -12,6 +12,7 @@ module Eventus
12
12
  end
13
13
 
14
14
  def commit(events)
15
+ return if events.empty?
15
16
  seqs = events.map{|e| e['sequence']}
16
17
  doc = {
17
18
  '_id' => "#{events[0]['sid']}_#{seqs.min}",
@@ -25,7 +26,7 @@ module Eventus
25
26
  future = @commits.find_one({sid:doc['sid'], max:{:$gte => doc['min']}})
26
27
  raise Eventus::ConcurrencyError if future
27
28
  begin
28
- @commits.insert(doc, safe:true)
29
+ @commits.insert(doc, w: 2)
29
30
  rescue ::Mongo::OperationFailure => e
30
31
  raise Eventus::ConcurrencyError if e.error_code == 11000
31
32
  end
@@ -26,6 +26,7 @@ module Eventus
26
26
  e['sequence'] = i
27
27
  end
28
28
  Eventus::logger.debug "Committing #{@uncommitted_events.length} events to #{@id}"
29
+ return if @uncommitted_events.empty?
29
30
  payload = @persistence.commit @uncommitted_events
30
31
  load_events @uncommitted_events
31
32
  @dispatcher.dispatch(payload) if @dispatcher
@@ -1,3 +1,3 @@
1
1
  module Eventus
2
- VERSION = "0.3.9"
2
+ VERSION = "0.4.0"
3
3
  end
@@ -8,11 +8,11 @@ describe Eventus::Persistence::KyotoCabinet do
8
8
  @persistence = Eventus::Persistence::KyotoCabinet.new
9
9
  end
10
10
 
11
- it "should pack keys" do
11
+ it "should not pack keys" do
12
12
  1000.times do
13
13
  key = uuid.generate(:compact)
14
14
  packed = persistence.pack_hex(key)
15
- packed.unpack('H*')[0].should == key
15
+ packed.should == key
16
16
  end
17
17
  end
18
18
 
@@ -77,24 +77,8 @@ describe Eventus::Persistence::Mongo do
77
77
  end
78
78
  end
79
79
 
80
- describe "when serialization is set" do
81
- let(:serializer) { stub }
82
- let(:persistence) { Eventus::Persistence::KyotoCabinet.new(:path => '%', :serializer => serializer) }
83
-
84
- it "should use serializer" do
85
- input = {:name => 'event'}
86
- ser = "serialized!!"
87
- id = uuid.generate :compact
88
- commit = create_commit(id, 1, input)
89
-
90
- serializer.should_receive(:serialize).with(commit[0]).and_return(ser)
91
- serializer.should_receive(:deserialize).with(ser).and_return(input)
92
-
93
-
94
- persistence.commit commit
95
- result = persistence.load id
96
- result[0].should == input
97
- end
80
+ it 'should return nil if there are no events' do
81
+ persistence.commit([]).should be_nil
98
82
  end
99
83
  end
100
84
 
@@ -18,6 +18,12 @@ describe Eventus::Stream do
18
18
  stream.uncommitted_events.should be_empty
19
19
  end
20
20
 
21
+ it "should not commit to persistence if no uncommited events" do
22
+ persistence.should_not_receive(:commit)
23
+ stream.uncommitted_events.clear
24
+ stream.commit
25
+ end
26
+
21
27
  describe "when events available from persistence" do
22
28
  before do
23
29
  persistence.should_receive(:load).and_return([stub, stub])
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: eventus
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.9
4
+ version: 0.4.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-02-23 00:00:00.000000000 Z
12
+ date: 2013-02-25 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: An Event Store
15
15
  email:
@@ -65,7 +65,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
65
65
  version: '0'
66
66
  requirements: []
67
67
  rubyforge_project: eventus
68
- rubygems_version: 1.8.15
68
+ rubygems_version: 1.8.23
69
69
  signing_key:
70
70
  specification_version: 3
71
71
  summary: Event Store