pigeon 0.3.0 → 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.
@@ -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