pigeon 0.3.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,164 @@
1
+ require File.expand_path(File.join(*%w[ .. helper ]), File.dirname(__FILE__))
2
+
3
+ class ExampleTask < Pigeon::Task
4
+ attr_accessor :triggers
5
+
6
+ def state_initialized!
7
+ transition_to_state(:state1)
8
+ end
9
+
10
+ def state_state1!
11
+ transition_to_state(:state2)
12
+ end
13
+
14
+ def state_state2!
15
+ transition_to_state(:state3)
16
+
17
+ dispatch do
18
+ sleep(3)
19
+ transition_to_state(:state4)
20
+ end
21
+ end
22
+
23
+ def state_state4!
24
+ transition_to_state(:finished)
25
+ end
26
+
27
+ def after_initialized
28
+ @triggers = [ :after_initialized ]
29
+ end
30
+
31
+ def before_state(state)
32
+ @triggers << state
33
+ end
34
+
35
+ def after_finished
36
+ @triggers << :after_finished
37
+ end
38
+ end
39
+
40
+ class FailingTask < Pigeon::Task
41
+ def state_initialized!
42
+ invalid_method!
43
+ end
44
+ end
45
+
46
+ class PigeonTaskTest < Test::Unit::TestCase
47
+ def test_empty_task
48
+ engine = Pigeon::Engine.new
49
+
50
+ task = Pigeon::Task.new(engine)
51
+
52
+ reported = 0
53
+
54
+ task.run! do
55
+ reported = 1
56
+ end
57
+
58
+ assert_eventually(5) do
59
+ task.finished? and reported > 0
60
+ end
61
+
62
+ assert_equal 1, reported
63
+ assert_equal :finished, task.state
64
+
65
+ assert_equal nil, task.exception
66
+
67
+ assert_equal engine.object_id, task.engine.object_id
68
+ end
69
+
70
+ def test_example_task
71
+ engine = Pigeon::Engine.new
72
+
73
+ task = ExampleTask.new(engine)
74
+
75
+ callbacks = [ ]
76
+
77
+ task.run! do |state|
78
+ callbacks << state
79
+ end
80
+
81
+ assert_eventually(5) do
82
+ task.finished?
83
+ end
84
+
85
+ assert_equal nil, task.exception
86
+
87
+ assert_equal :finished, task.state
88
+
89
+ expected_triggers = [
90
+ :after_initialized,
91
+ :initialized,
92
+ :state1,
93
+ :state2,
94
+ :state3,
95
+ :state4,
96
+ :finished,
97
+ :after_finished
98
+ ]
99
+
100
+ assert_equal expected_triggers, task.triggers
101
+
102
+ expected_callbacks = [
103
+ :initialized,
104
+ :state1,
105
+ :state2,
106
+ :state3,
107
+ :state4,
108
+ :finished
109
+ ]
110
+
111
+ assert_equal expected_callbacks, callbacks
112
+ end
113
+
114
+ def test_failing_task
115
+ engine = Pigeon::Engine.new
116
+
117
+ task = FailingTask.new(engine)
118
+
119
+ reported = false
120
+
121
+ task.run! do
122
+ reported = true
123
+ end
124
+
125
+ assert_eventually(5) do
126
+ task.failed? and reported
127
+ end
128
+
129
+ assert task.exception?
130
+ end
131
+
132
+ def test_block_notification
133
+ engine = Pigeon::Engine.new
134
+
135
+ task = Pigeon::Task.new(engine)
136
+
137
+ states_triggered = [ ]
138
+
139
+ task.run! do |state|
140
+ states_triggered << state
141
+ end
142
+
143
+ assert_eventually(5) do
144
+ task.finished?
145
+ end
146
+
147
+ assert_equal [ :initialized, :finished ], states_triggered
148
+ end
149
+
150
+ def test_priority_order
151
+ engine = Pigeon::Engine.new
152
+
153
+ tasks = (0..10).collect do
154
+ task = Pigeon::Task.new(engine)
155
+
156
+ # Trigger generation of default priority value
157
+ task.priority
158
+
159
+ task
160
+ end
161
+
162
+ assert_equal tasks.collect(&:object_id), tasks.sort.collect(&:object_id)
163
+ end
164
+ end
@@ -1,4 +1,4 @@
1
- require File.expand_path(File.join(*%w[ helper ]), File.dirname(__FILE__))
1
+ require File.expand_path(File.join(*%w[ .. helper ]), File.dirname(__FILE__))
2
2
 
3
3
  class TestPigeon < Test::Unit::TestCase
4
4
  def test_load_module
metadata CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
4
4
  prerelease: false
5
5
  segments:
6
6
  - 0
7
- - 3
7
+ - 4
8
8
  - 0
9
- version: 0.3.0
9
+ version: 0.4.0
10
10
  platform: ruby
11
11
  authors:
12
12
  - tadman
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-10-19 00:00:00 -04:00
17
+ date: 2010-11-09 00:00:00 -05:00
18
18
  default_executable: launcher.example
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -48,20 +48,31 @@ files:
48
48
  - VERSION
49
49
  - bin/launcher.example
50
50
  - lib/pigeon.rb
51
+ - lib/pigeon/dispatcher.rb
51
52
  - lib/pigeon/engine.rb
52
53
  - lib/pigeon/launcher.rb
53
54
  - lib/pigeon/logger.rb
54
55
  - lib/pigeon/option_accessor.rb
55
56
  - lib/pigeon/pidfile.rb
57
+ - lib/pigeon/processor.rb
56
58
  - lib/pigeon/queue.rb
59
+ - lib/pigeon/scheduler.rb
60
+ - lib/pigeon/sorted_array.rb
57
61
  - lib/pigeon/support.rb
62
+ - lib/pigeon/task.rb
58
63
  - pigeon.gemspec
59
64
  - test/helper.rb
60
- - test/test_pigeon.rb
61
- - test/test_pigeon_engine.rb
62
- - test/test_pigeon_launcher.rb
63
- - test/test_pigeon_option_accessor.rb
64
- - test/test_pigeon_queue.rb
65
+ - test/unit/pigeon_backlog_test.rb
66
+ - test/unit/pigeon_dispatcher_test.rb
67
+ - test/unit/pigeon_engine_test.rb
68
+ - test/unit/pigeon_launcher_test.rb
69
+ - test/unit/pigeon_option_accessor_test.rb
70
+ - test/unit/pigeon_processor_test.rb
71
+ - test/unit/pigeon_queue_test.rb
72
+ - test/unit/pigeon_scheduler_test.rb
73
+ - test/unit/pigeon_sorted_array_test.rb
74
+ - test/unit/pigeon_task_test.rb
75
+ - test/unit/pigeon_test.rb
65
76
  has_rdoc: true
66
77
  homepage: http://github.com/tadman/pigeon
67
78
  licenses: []
@@ -96,8 +107,14 @@ specification_version: 3
96
107
  summary: Simple daemonized EventMachine engine framework with plug-in support
97
108
  test_files:
98
109
  - test/helper.rb
99
- - test/test_pigeon.rb
100
- - test/test_pigeon_engine.rb
101
- - test/test_pigeon_launcher.rb
102
- - test/test_pigeon_option_accessor.rb
103
- - test/test_pigeon_queue.rb
110
+ - test/unit/pigeon_backlog_test.rb
111
+ - test/unit/pigeon_dispatcher_test.rb
112
+ - test/unit/pigeon_engine_test.rb
113
+ - test/unit/pigeon_launcher_test.rb
114
+ - test/unit/pigeon_option_accessor_test.rb
115
+ - test/unit/pigeon_processor_test.rb
116
+ - test/unit/pigeon_queue_test.rb
117
+ - test/unit/pigeon_scheduler_test.rb
118
+ - test/unit/pigeon_sorted_array_test.rb
119
+ - test/unit/pigeon_task_test.rb
120
+ - test/unit/pigeon_test.rb
@@ -1,29 +0,0 @@
1
- require File.expand_path(File.join(*%w[ helper ]), File.dirname(__FILE__))
2
-
3
- class PigeonQueueTest < Test::Unit::TestCase
4
- def test_simple_queue
5
- queue = Pigeon::Queue.new
6
-
7
- checks = { }
8
-
9
- count = 1000
10
-
11
- count.times do |n|
12
- queue.perform do
13
- x = 0
14
- 10_000.times { x += 1 }
15
- checks[n] = true
16
- end
17
- end
18
-
19
- while (!queue.empty?)
20
- sleep(1)
21
- end
22
-
23
- assert queue.empty?
24
- assert_equal [ ], queue.exceptions
25
- assert !queue.exceptions?
26
-
27
- assert_equal (0..count - 1).to_a, checks.keys.sort
28
- end
29
- end