ruote-beanstalk 2.1.10

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.
@@ -0,0 +1,7 @@
1
+
2
+ module Ruote
3
+ module Beanstalk
4
+ VERSION = '2.1.10'
5
+ end
6
+ end
7
+
@@ -0,0 +1,85 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{ruote-beanstalk}
8
+ s.version = "2.1.10"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["John Mettraux"]
12
+ s.date = %q{2010-06-15}
13
+ s.description = %q{Beanstalk participant/receiver/storage for ruote (a Ruby workflow engine)}
14
+ s.email = %q{jmettraux@gmail.com}
15
+ s.extra_rdoc_files = [
16
+ "LICENSE.txt",
17
+ "README.md"
18
+ ]
19
+ s.files = [
20
+ "CHANGELOG.txt",
21
+ "LICENSE.txt",
22
+ "README.md",
23
+ "Rakefile",
24
+ "TODO.txt",
25
+ "doc/storages.graffle/QuickLook/Preview.pdf",
26
+ "doc/storages.graffle/QuickLook/Thumbnail.tiff",
27
+ "doc/storages.graffle/data.plist",
28
+ "doc/storages.graffle/image1.png",
29
+ "doc/storages.graffle/image2.png",
30
+ "doc/storages.png",
31
+ "lib/ruote-beanstalk.rb",
32
+ "lib/ruote/beanstalk.rb",
33
+ "lib/ruote/beanstalk/fork.rb",
34
+ "lib/ruote/beanstalk/participant.rb",
35
+ "lib/ruote/beanstalk/receiver.rb",
36
+ "lib/ruote/beanstalk/storage.rb",
37
+ "lib/ruote/beanstalk/version.rb",
38
+ "ruote-beanstalk.gemspec",
39
+ "serve.rb",
40
+ "test/functional/base.rb",
41
+ "test/functional/ft_0_participant.rb",
42
+ "test/functional/ft_1_receiver.rb",
43
+ "test/functional/test.rb",
44
+ "test/functional_connection.rb",
45
+ "test/test.rb"
46
+ ]
47
+ s.homepage = %q{http://github.com/jmettraux/ruote-beanstalk}
48
+ s.rdoc_options = ["--charset=UTF-8"]
49
+ s.require_paths = ["lib"]
50
+ s.rubyforge_project = %q{ruote}
51
+ s.rubygems_version = %q{1.3.6}
52
+ s.summary = %q{Beanstalk participant/receiver/storage for ruote (a Ruby workflow engine)}
53
+ s.test_files = [
54
+ "test/test.rb"
55
+ ]
56
+
57
+ if s.respond_to? :specification_version then
58
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
59
+ s.specification_version = 3
60
+
61
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
62
+ s.add_runtime_dependency(%q<ruote>, [">= 2.1.10"])
63
+ s.add_runtime_dependency(%q<rufus-cloche>, [">= 0.1.17"])
64
+ s.add_runtime_dependency(%q<beanstalk-client>, [">= 1.0.2"])
65
+ s.add_development_dependency(%q<yard>, [">= 0"])
66
+ s.add_development_dependency(%q<rake>, [">= 0"])
67
+ s.add_development_dependency(%q<jeweler>, [">= 0"])
68
+ else
69
+ s.add_dependency(%q<ruote>, [">= 2.1.10"])
70
+ s.add_dependency(%q<rufus-cloche>, [">= 0.1.17"])
71
+ s.add_dependency(%q<beanstalk-client>, [">= 1.0.2"])
72
+ s.add_dependency(%q<yard>, [">= 0"])
73
+ s.add_dependency(%q<rake>, [">= 0"])
74
+ s.add_dependency(%q<jeweler>, [">= 0"])
75
+ end
76
+ else
77
+ s.add_dependency(%q<ruote>, [">= 2.1.10"])
78
+ s.add_dependency(%q<rufus-cloche>, [">= 0.1.17"])
79
+ s.add_dependency(%q<beanstalk-client>, [">= 1.0.2"])
80
+ s.add_dependency(%q<yard>, [">= 0"])
81
+ s.add_dependency(%q<rake>, [">= 0"])
82
+ s.add_dependency(%q<jeweler>, [">= 0"])
83
+ end
84
+ end
85
+
data/serve.rb ADDED
@@ -0,0 +1,11 @@
1
+
2
+ $:.unshift('../ruote/lib')
3
+ $:.unshift('lib')
4
+
5
+ require 'fileutils'
6
+ FileUtils.rm_rf('ruote_work')
7
+
8
+ require 'ruote/beanstalk'
9
+
10
+ Ruote::Beanstalk::BsStorage.new(':11300', 'ruote_work', :fork => true)
11
+
@@ -0,0 +1,17 @@
1
+
2
+ ruote_lib = File.expand_path(
3
+ File.join(File.dirname(__FILE__), %w[ .. .. .. ruote lib ]))
4
+ ruote_beanstalk_lib = File.expand_path(
5
+ File.join(File.dirname(__FILE__), %w[ .. .. lib ]))
6
+
7
+ $:.unshift(ruote_lib)
8
+ $:.unshift(ruote_beanstalk_lib)
9
+
10
+ require 'test/unit'
11
+
12
+ require 'rubygems'
13
+ require 'yajl'
14
+
15
+ require 'ruote'
16
+ require 'ruote/beanstalk'
17
+
@@ -0,0 +1,102 @@
1
+
2
+ #
3
+ # testing ruote-beanstalk
4
+ #
5
+ # Mon Jun 14 16:11:02 JST 2010
6
+ #
7
+
8
+ require File.join(File.dirname(__FILE__), 'base')
9
+
10
+
11
+ class FtParticipantTest < Test::Unit::TestCase
12
+
13
+ def setup
14
+
15
+ @bs_pid = Ruote::Beanstalk.fork(
16
+ :address => '127.0.0.1',
17
+ :port => 11300,
18
+ :no_kill_at_exit => true,
19
+ :quiet => true)
20
+
21
+ sleep 0.100
22
+
23
+ @engine = Ruote::Engine.new(Ruote::Worker.new(Ruote::HashStorage.new()))
24
+ end
25
+
26
+ def teardown
27
+
28
+ Process.kill(9, @bs_pid) if @bs_pid
29
+ end
30
+
31
+ class Watcher
32
+
33
+ attr_reader :jobs
34
+
35
+ def initialize (port, tube=nil)
36
+
37
+ @connection = ::Beanstalk::Connection.new("127.0.0.1:#{port}", tube)
38
+
39
+ @jobs = []
40
+
41
+ @thread = Thread.new do
42
+ begin
43
+ loop do
44
+ job = @connection.reserve
45
+ job.delete
46
+ @jobs << Rufus::Json.decode(job.body)
47
+ end
48
+ rescue Exception => e
49
+ #p e
50
+ end
51
+ end
52
+ end
53
+ end
54
+
55
+ def test_participant
56
+
57
+ @engine.register_participant(
58
+ :alpha,
59
+ Ruote::Beanstalk::BsParticipant,
60
+ 'beanstalk' => '127.0.0.1:11300')
61
+
62
+ watcher = Watcher.new(11300)
63
+
64
+ #@engine.context.logger.noisy = true
65
+
66
+ wfid = @engine.launch(Ruote.define do
67
+ alpha
68
+ end)
69
+
70
+ @engine.wait_for(:alpha)
71
+ sleep 0.100
72
+
73
+ assert_equal 1, watcher.jobs.size
74
+ assert_equal 'workitem', watcher.jobs.first.first
75
+ end
76
+
77
+ def test_participant_tube
78
+
79
+ @engine.register_participant(
80
+ :alpha,
81
+ Ruote::Beanstalk::BsParticipant,
82
+ 'beanstalk' => '127.0.0.1:11300',
83
+ 'tube' => 'underground')
84
+
85
+ watcher0 = Watcher.new(11300)
86
+ watcher1 = Watcher.new(11300, 'underground')
87
+
88
+ #@engine.context.logger.noisy = true
89
+
90
+ wfid = @engine.launch(Ruote.define do
91
+ alpha
92
+ end)
93
+
94
+ @engine.wait_for(:alpha)
95
+ sleep 0.100
96
+
97
+ assert_equal 0, watcher0.jobs.size
98
+ assert_equal 1, watcher1.jobs.size
99
+ assert_equal 'workitem', watcher1.jobs.first.first
100
+ end
101
+ end
102
+
@@ -0,0 +1,112 @@
1
+ # encoding: UTF-8
2
+
3
+ #
4
+ # testing ruote-beanstalk
5
+ #
6
+ # Mon Jun 14 19:43:57 JST 2010
7
+ #
8
+
9
+ require File.join(File.dirname(__FILE__), 'base')
10
+
11
+
12
+ class FtParticipantTest < Test::Unit::TestCase
13
+
14
+ def setup
15
+
16
+ @bs_pid = Ruote::Beanstalk.fork(
17
+ :address => '127.0.0.1',
18
+ :port => 11300,
19
+ :no_kill_at_exit => true,
20
+ :quiet => true)
21
+
22
+ sleep 0.100
23
+
24
+ @engine = Ruote::Engine.new(Ruote::Worker.new(Ruote::HashStorage.new()))
25
+ end
26
+
27
+ def teardown
28
+
29
+ Process.kill(9, @bs_pid) if @bs_pid
30
+ end
31
+
32
+ class HelloServer
33
+
34
+ def initialize (port, tube_in, tube_out)
35
+
36
+ @connection = ::Beanstalk::Connection.new("127.0.0.1:#{port}", tube_in)
37
+
38
+ @thread = Thread.new do
39
+ begin
40
+ loop do
41
+
42
+ job = @connection.reserve
43
+ job.delete
44
+
45
+ payload = Rufus::Json.decode(job.body)
46
+ payload.last['fields']['hello'] = 'world'
47
+
48
+ @connection.use(tube_out)
49
+ @connection.put(Rufus::Json.encode(payload))
50
+ end
51
+ rescue Exception => e
52
+ #p e
53
+ end
54
+ end
55
+ end
56
+ end
57
+
58
+ def test_participant_and_receiver
59
+
60
+ @engine.register_participant(
61
+ :alpha,
62
+ Ruote::Beanstalk::BsParticipant,
63
+ 'beanstalk' => '127.0.0.1:11300',
64
+ 'tube' => 'in')
65
+
66
+ Ruote::Beanstalk::BsReceiver.new(
67
+ @engine, '127.0.0.1:11300', :tube => 'out')
68
+
69
+ echo = HelloServer.new(11300, 'in', 'out')
70
+
71
+ #@engine.context.logger.noisy = true
72
+
73
+ wfid = @engine.launch(Ruote.define do
74
+ alpha
75
+ end)
76
+
77
+ r = @engine.wait_for(wfid)
78
+
79
+ assert_equal 'world', r['workitem']['fields']['hello']
80
+ end
81
+
82
+ def test_launchitem
83
+
84
+ sp = @engine.register_participant '.+', Ruote::StorageParticipant
85
+
86
+ Ruote::Beanstalk::BsReceiver.new(
87
+ @engine, '127.0.0.1:11300', :tube => 'launch')
88
+
89
+ #@engine.context.logger.noisy = true
90
+
91
+ pdef = Ruote.process_definition do
92
+ alpha
93
+ end
94
+
95
+ #fields = { 'hello' => '上海' }
96
+ fields = { 'hello' => 'shangai' }
97
+
98
+ launchitem = [ 'launchitem', [ pdef, fields, {} ] ]
99
+
100
+ con = ::Beanstalk::Connection.new('127.0.0.1:11300')
101
+ con.use('launch')
102
+ con.put(Rufus::Json.encode(launchitem))
103
+
104
+ sleep 1
105
+
106
+ assert_equal 1, sp.size
107
+ assert_equal 'alpha', sp.first.participant_name
108
+ #assert_equal '上海', sp.first.fields['hello']
109
+ assert_equal 'shangai', sp.first.fields['hello']
110
+ end
111
+ end
112
+
@@ -0,0 +1,9 @@
1
+
2
+ #
3
+ # testing ruote-beanstalk
4
+ #
5
+ # Mon Jun 14 21:28:47 JST 2010
6
+ #
7
+
8
+ Dir.glob(File.join(File.dirname(__FILE__), 'ft_*.rb')).sort.each { |t| load(t) }
9
+
@@ -0,0 +1,19 @@
1
+
2
+ #
3
+ # testing ruote-beanstalk
4
+ #
5
+ # Mon May 3 19:00:00 JST 2010
6
+ #
7
+
8
+ require 'yajl' rescue require 'json'
9
+ require 'rufus-json'
10
+ Rufus::Json.detect_backend
11
+
12
+ require 'ruote/beanstalk'
13
+
14
+
15
+ def new_storage (opts)
16
+
17
+ Ruote::Beanstalk::BsStorage.new('127.0.0.1:11300', opts)
18
+ end
19
+
data/test/test.rb ADDED
@@ -0,0 +1,9 @@
1
+
2
+ #
3
+ # testing ruote-beanstalk
4
+ #
5
+ # Mon Jun 14 21:29:35 JST 2010
6
+ #
7
+
8
+ require File.join(File.dirname(__FILE__), 'functional', 'test')
9
+
metadata ADDED
@@ -0,0 +1,165 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ruote-beanstalk
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 2
7
+ - 1
8
+ - 10
9
+ version: 2.1.10
10
+ platform: ruby
11
+ authors:
12
+ - John Mettraux
13
+ autorequire:
14
+ bindir: bin
15
+ cert_chain: []
16
+
17
+ date: 2010-06-15 00:00:00 +09:00
18
+ default_executable:
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: ruote
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ segments:
28
+ - 2
29
+ - 1
30
+ - 10
31
+ version: 2.1.10
32
+ type: :runtime
33
+ version_requirements: *id001
34
+ - !ruby/object:Gem::Dependency
35
+ name: rufus-cloche
36
+ prerelease: false
37
+ requirement: &id002 !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ segments:
42
+ - 0
43
+ - 1
44
+ - 17
45
+ version: 0.1.17
46
+ type: :runtime
47
+ version_requirements: *id002
48
+ - !ruby/object:Gem::Dependency
49
+ name: beanstalk-client
50
+ prerelease: false
51
+ requirement: &id003 !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ segments:
56
+ - 1
57
+ - 0
58
+ - 2
59
+ version: 1.0.2
60
+ type: :runtime
61
+ version_requirements: *id003
62
+ - !ruby/object:Gem::Dependency
63
+ name: yard
64
+ prerelease: false
65
+ requirement: &id004 !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ segments:
70
+ - 0
71
+ version: "0"
72
+ type: :development
73
+ version_requirements: *id004
74
+ - !ruby/object:Gem::Dependency
75
+ name: rake
76
+ prerelease: false
77
+ requirement: &id005 !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - ">="
80
+ - !ruby/object:Gem::Version
81
+ segments:
82
+ - 0
83
+ version: "0"
84
+ type: :development
85
+ version_requirements: *id005
86
+ - !ruby/object:Gem::Dependency
87
+ name: jeweler
88
+ prerelease: false
89
+ requirement: &id006 !ruby/object:Gem::Requirement
90
+ requirements:
91
+ - - ">="
92
+ - !ruby/object:Gem::Version
93
+ segments:
94
+ - 0
95
+ version: "0"
96
+ type: :development
97
+ version_requirements: *id006
98
+ description: Beanstalk participant/receiver/storage for ruote (a Ruby workflow engine)
99
+ email: jmettraux@gmail.com
100
+ executables: []
101
+
102
+ extensions: []
103
+
104
+ extra_rdoc_files:
105
+ - LICENSE.txt
106
+ - README.md
107
+ files:
108
+ - CHANGELOG.txt
109
+ - LICENSE.txt
110
+ - README.md
111
+ - Rakefile
112
+ - TODO.txt
113
+ - doc/storages.graffle/QuickLook/Preview.pdf
114
+ - doc/storages.graffle/QuickLook/Thumbnail.tiff
115
+ - doc/storages.graffle/data.plist
116
+ - doc/storages.graffle/image1.png
117
+ - doc/storages.graffle/image2.png
118
+ - doc/storages.png
119
+ - lib/ruote-beanstalk.rb
120
+ - lib/ruote/beanstalk.rb
121
+ - lib/ruote/beanstalk/fork.rb
122
+ - lib/ruote/beanstalk/participant.rb
123
+ - lib/ruote/beanstalk/receiver.rb
124
+ - lib/ruote/beanstalk/storage.rb
125
+ - lib/ruote/beanstalk/version.rb
126
+ - ruote-beanstalk.gemspec
127
+ - serve.rb
128
+ - test/functional/base.rb
129
+ - test/functional/ft_0_participant.rb
130
+ - test/functional/ft_1_receiver.rb
131
+ - test/functional/test.rb
132
+ - test/functional_connection.rb
133
+ - test/test.rb
134
+ has_rdoc: true
135
+ homepage: http://github.com/jmettraux/ruote-beanstalk
136
+ licenses: []
137
+
138
+ post_install_message:
139
+ rdoc_options:
140
+ - --charset=UTF-8
141
+ require_paths:
142
+ - lib
143
+ required_ruby_version: !ruby/object:Gem::Requirement
144
+ requirements:
145
+ - - ">="
146
+ - !ruby/object:Gem::Version
147
+ segments:
148
+ - 0
149
+ version: "0"
150
+ required_rubygems_version: !ruby/object:Gem::Requirement
151
+ requirements:
152
+ - - ">="
153
+ - !ruby/object:Gem::Version
154
+ segments:
155
+ - 0
156
+ version: "0"
157
+ requirements: []
158
+
159
+ rubyforge_project: ruote
160
+ rubygems_version: 1.3.6
161
+ signing_key:
162
+ specification_version: 3
163
+ summary: Beanstalk participant/receiver/storage for ruote (a Ruby workflow engine)
164
+ test_files:
165
+ - test/test.rb