brendan-skynet 0.9.33 → 0.9.303

Sign up to get free protection for your applications and to get access to all the features.
Files changed (121) hide show
  1. data/History.txt +9 -0
  2. data/License.txt +1 -0
  3. data/Manifest.txt +19 -112
  4. data/Rakefile +3 -3
  5. data/app_generators/skynet_install/templates/skynet_config.rb +1 -1
  6. data/extras/rails/views/skynet/index.html.erb +137 -0
  7. data/lib/skynet.rb +15 -15
  8. data/lib/skynet/{skynet_active_record_extensions.rb → active_record_extensions.rb} +0 -0
  9. data/lib/skynet/{skynet_config.rb → config.rb} +0 -0
  10. data/lib/skynet/{skynet_console.rb → console.rb} +1 -1
  11. data/lib/skynet/{skynet_console_helper.rb → console_helper.rb} +0 -0
  12. data/lib/skynet/{skynet_debugger.rb → debugger.rb} +0 -0
  13. data/lib/skynet/{skynet_guid_generator.rb → guid_generator.rb} +0 -0
  14. data/lib/skynet/{skynet_job.rb → job.rb} +0 -0
  15. data/lib/skynet/{skynet_launcher.rb → launcher.rb} +0 -0
  16. data/lib/skynet/{skynet_logger.rb → logger.rb} +0 -0
  17. data/lib/skynet/{skynet_manager.rb → manager.rb} +0 -0
  18. data/lib/skynet/{skynet_message.rb → message.rb} +0 -0
  19. data/lib/skynet/{skynet_message_queue.rb → message_queue.rb} +0 -0
  20. data/lib/skynet/{skynet_partitioners.rb → partitioners.rb} +0 -0
  21. data/lib/skynet/{skynet_ruby_extensions.rb → ruby_extensions.rb} +0 -0
  22. data/lib/skynet/{skynet_task.rb → task.rb} +0 -0
  23. data/lib/skynet/{skynet_tuplespace_server.rb → tuplespace_server.rb} +0 -0
  24. data/lib/skynet/version.rb +1 -1
  25. data/lib/skynet/{skynet_worker.rb → worker.rb} +0 -0
  26. data/skynet.gemspec +21 -132
  27. metadata +22 -130
  28. data/examples/dgrep/README +0 -70
  29. data/examples/dgrep/config/skynet_config.rb +0 -26
  30. data/examples/dgrep/data/shakespeare/README +0 -2
  31. data/examples/dgrep/data/shakespeare/poetry/loverscomplaint +0 -381
  32. data/examples/dgrep/data/shakespeare/poetry/rapeoflucrece +0 -2199
  33. data/examples/dgrep/data/shakespeare/poetry/sonnets +0 -2633
  34. data/examples/dgrep/data/shakespeare/poetry/various +0 -640
  35. data/examples/dgrep/data/shakespeare/poetry/venusandadonis +0 -1423
  36. data/examples/dgrep/data/testfile1.txt +0 -1
  37. data/examples/dgrep/data/testfile2.txt +0 -1
  38. data/examples/dgrep/data/testfile3.txt +0 -1
  39. data/examples/dgrep/data/testfile4.txt +0 -1
  40. data/examples/dgrep/lib/dgrep.rb +0 -59
  41. data/examples/dgrep/lib/mapreduce_test.rb +0 -32
  42. data/examples/dgrep/lib/most_common_words.rb +0 -45
  43. data/examples/dgrep/script/dgrep +0 -75
  44. data/examples/rails_mysql_example/README +0 -66
  45. data/examples/rails_mysql_example/Rakefile +0 -10
  46. data/examples/rails_mysql_example/app/controllers/application.rb +0 -10
  47. data/examples/rails_mysql_example/app/helpers/application_helper.rb +0 -3
  48. data/examples/rails_mysql_example/app/models/user.rb +0 -21
  49. data/examples/rails_mysql_example/app/models/user_favorite.rb +0 -5
  50. data/examples/rails_mysql_example/app/models/user_mailer.rb +0 -12
  51. data/examples/rails_mysql_example/app/views/user_mailer/welcome.erb +0 -5
  52. data/examples/rails_mysql_example/config/boot.rb +0 -109
  53. data/examples/rails_mysql_example/config/database.yml +0 -42
  54. data/examples/rails_mysql_example/config/environment.rb +0 -59
  55. data/examples/rails_mysql_example/config/environments/development.rb +0 -18
  56. data/examples/rails_mysql_example/config/environments/production.rb +0 -19
  57. data/examples/rails_mysql_example/config/environments/test.rb +0 -22
  58. data/examples/rails_mysql_example/config/initializers/inflections.rb +0 -10
  59. data/examples/rails_mysql_example/config/initializers/mime_types.rb +0 -5
  60. data/examples/rails_mysql_example/config/initializers/skynet.rb +0 -1
  61. data/examples/rails_mysql_example/config/routes.rb +0 -35
  62. data/examples/rails_mysql_example/config/skynet_config.rb +0 -36
  63. data/examples/rails_mysql_example/db/migrate/001_create_skynet_tables.rb +0 -43
  64. data/examples/rails_mysql_example/db/migrate/002_create_users.rb +0 -16
  65. data/examples/rails_mysql_example/db/migrate/003_create_user_favorites.rb +0 -14
  66. data/examples/rails_mysql_example/db/schema.rb +0 -85
  67. data/examples/rails_mysql_example/db/skynet_mysql_schema.sql +0 -33
  68. data/examples/rails_mysql_example/doc/README_FOR_APP +0 -2
  69. data/examples/rails_mysql_example/lib/tasks/rails_mysql_example.rake +0 -20
  70. data/examples/rails_mysql_example/public/404.html +0 -30
  71. data/examples/rails_mysql_example/public/422.html +0 -30
  72. data/examples/rails_mysql_example/public/500.html +0 -30
  73. data/examples/rails_mysql_example/public/dispatch.cgi +0 -10
  74. data/examples/rails_mysql_example/public/dispatch.fcgi +0 -24
  75. data/examples/rails_mysql_example/public/dispatch.rb +0 -10
  76. data/examples/rails_mysql_example/public/favicon.ico +0 -0
  77. data/examples/rails_mysql_example/public/images/rails.png +0 -0
  78. data/examples/rails_mysql_example/public/index.html +0 -277
  79. data/examples/rails_mysql_example/public/javascripts/application.js +0 -2
  80. data/examples/rails_mysql_example/public/javascripts/controls.js +0 -963
  81. data/examples/rails_mysql_example/public/javascripts/dragdrop.js +0 -972
  82. data/examples/rails_mysql_example/public/javascripts/effects.js +0 -1120
  83. data/examples/rails_mysql_example/public/javascripts/prototype.js +0 -4225
  84. data/examples/rails_mysql_example/public/robots.txt +0 -5
  85. data/examples/rails_mysql_example/script/about +0 -3
  86. data/examples/rails_mysql_example/script/console +0 -3
  87. data/examples/rails_mysql_example/script/destroy +0 -3
  88. data/examples/rails_mysql_example/script/generate +0 -3
  89. data/examples/rails_mysql_example/script/performance/benchmarker +0 -3
  90. data/examples/rails_mysql_example/script/performance/profiler +0 -3
  91. data/examples/rails_mysql_example/script/performance/request +0 -3
  92. data/examples/rails_mysql_example/script/plugin +0 -3
  93. data/examples/rails_mysql_example/script/process/inspector +0 -3
  94. data/examples/rails_mysql_example/script/process/reaper +0 -3
  95. data/examples/rails_mysql_example/script/process/spawner +0 -3
  96. data/examples/rails_mysql_example/script/runner +0 -3
  97. data/examples/rails_mysql_example/script/server +0 -3
  98. data/examples/rails_mysql_example/test/fixtures/user_favorites.yml +0 -9
  99. data/examples/rails_mysql_example/test/fixtures/users.yml +0 -11
  100. data/examples/rails_mysql_example/test/test_helper.rb +0 -38
  101. data/examples/rails_mysql_example/test/unit/user_favorite_test.rb +0 -8
  102. data/examples/rails_mysql_example/test/unit/user_test.rb +0 -8
  103. data/extras/nagios/check_skynet.sh +0 -121
  104. data/extras/rails/views/skynet/index.rhtml +0 -137
  105. data/tasks/website.rake +0 -17
  106. data/test/test_active_record_extensions.rb +0 -138
  107. data/test/test_generator_helper.rb +0 -20
  108. data/test/test_helper.rb +0 -10
  109. data/test/test_mysql_message_queue_adapter.rb +0 -263
  110. data/test/test_skynet.rb +0 -19
  111. data/test/test_skynet_install_generator.rb +0 -49
  112. data/test/test_skynet_job.rb +0 -717
  113. data/test/test_skynet_manager.rb +0 -157
  114. data/test/test_skynet_message.rb +0 -229
  115. data/test/test_skynet_task.rb +0 -24
  116. data/test/test_tuplespace_message_queue.rb +0 -174
  117. data/website/index.html +0 -181
  118. data/website/index.txt +0 -98
  119. data/website/javascripts/rounded_corners_lite.inc.js +0 -285
  120. data/website/stylesheets/screen.css +0 -138
  121. data/website/template.rhtml +0 -48
@@ -1,157 +0,0 @@
1
- require File.dirname(__FILE__) + '/test_helper.rb'
2
- require 'functor'
3
-
4
- class SkynetManagerTest < Test::Unit::TestCase
5
-
6
- PIDS = []
7
- PIDFILE = []
8
-
9
- def setup
10
- connection = ActiveRecord::Base.establish_connection(
11
- :adapter => "mysql",
12
- :host => "localhost",
13
- :username => "root",
14
- :password => "",
15
- :database => "skynet_test"
16
- )
17
-
18
- ActiveRecord::Base.connection.reconnect!
19
-
20
- Skynet.configure(
21
- :ENABLE => false,
22
- # :SKYNET_PIDS_FILE => File.expand_path("#{RAILS_ROOT}/log/skynet_#{RAILS_ENV}.pids"),
23
- :SKYNET_LOG_FILE => STDOUT,
24
- :SKYNET_LOG_LEVEL => 4,
25
- :MESSAGE_QUEUE_ADAPTER => "Skynet::MessageQueueAdapter::Mysql",
26
- :MYSQL_TEMPERATURE_CHANGE_SLEEP => 1,
27
- :MYSQL_NEXT_TASK_TIMEOUT => 1,
28
- :MYSQL_QUEUE_DATABASE => nil
29
- )
30
-
31
- mq.clear_outstanding_tasks
32
- mq.clear_worker_status
33
-
34
- @pids = []
35
- @pidfile = []
36
- @worker_queue = []
37
-
38
- PIDS.delete_if {true}
39
- PIDFILE.delete_if {true}
40
-
41
- Process.stubs(:detatch).returns(true)
42
- Process.stubs(:kill).returns(true)
43
-
44
- @minstance = Skynet::Manager.any_instance
45
- @hostname = Socket.gethostname
46
-
47
- Skynet::Worker.any_instance.stubs(:max_memory_reached?).returns(false)
48
- end
49
-
50
- def setup_manager
51
- @manager = Skynet::Manager.new(:script_path => "path", :workers => 2)
52
- @manager.extend(Functor)
53
-
54
- mq = functor
55
- @manager.stubs(:mq).returns(mq)
56
-
57
- mq.get_worker_version = 1
58
-
59
- worker_queue = @worker_queue
60
- mq.read_all_worker_statuses = lambda do |hostname|
61
- worker_queue
62
- end
63
-
64
- mq.take_worker_status = lambda do |options, timeout|
65
- worker_queue.delete_if {|w|w.process_id == options[:process_id] }.first
66
- end
67
-
68
- pids = @pids
69
- hostname = @hostname
70
- Skynet.extend(Functor)
71
- Skynet.define_method(:close_files) do
72
- true
73
- end
74
-
75
- Skynet.define_method(:close_console) do
76
- true
77
- end
78
-
79
-
80
- Skynet.define_method(:fork_and_exec) do |cmd|
81
- newpid = pids.size + 1
82
- pids << newpid
83
- worker_info = {
84
- :hostname => hostname,
85
- :process_id => newpid,
86
- :worker_type => :task,
87
- :worker_id => newpid,
88
- :version => 1
89
- }
90
-
91
- worker_queue << Skynet::WorkerStatusMessage.new(worker_info)
92
- newpid
93
- end
94
- end
95
-
96
- def test_manager_start
97
- setup_manager
98
- @manager.start_workers
99
- assert_equal 2, @manager.worker_pids.size
100
- assert_equal @pids.sort, @manager.worker_pids.sort
101
- assert_equal @pids.sort, @manager.worker_queue.collect {|q|q.process_id}.sort
102
- end
103
-
104
- def test_check_workers
105
- setup_manager
106
- Skynet::Manager.any_instance.expects(:worker_alive?).times(2).returns(true)
107
- @manager.start_workers
108
- @manager.check_workers
109
- assert_equal 2, @manager.worker_pids.size
110
- assert_equal @pids.sort, @manager.worker_pids.sort
111
- assert_equal @pids.sort, @manager.worker_queue.collect {|q|q.process_id}.sort
112
- end
113
-
114
- def test_running_pids
115
- setup_manager
116
- Skynet::Manager.any_instance.expects(:worker_alive?).with(1).returns(true)
117
- Skynet::Manager.any_instance.expects(:worker_alive?).with(2).returns(false)
118
- @manager.start_workers
119
- @manager.check_workers
120
- assert_equal 1, @manager.worker_pids.size
121
- assert_equal [1], @manager.worker_pids.sort
122
- assert_equal [1], @manager.worker_queue.collect {|q|q.process_id}.sort
123
- end
124
-
125
- ## XXX FIXME. What happens if there's a worker missing from the pidfile, but was running?
126
- def test_more_in_pidfile_than_queue_alive
127
- setup_manager
128
- @manager.expects(:worker_alive?).with(1).returns(false)
129
- Skynet.configure(:SKYNET_LOG_LEVEL => 4) do
130
- @manager.start_workers
131
-
132
- @manager.expects(:worker_alive?).with(2).returns(true)
133
- @worker_queue.delete_if {|w| w.process_id == 1}
134
- @manager.check_workers
135
- end
136
- assert_equal 2, @manager.worker_pids.size
137
- assert_equal [2,3], @manager.worker_pids.sort
138
- assert_equal [2,3], @manager.worker_queue.collect {|q|q.process_id}.sort
139
- end
140
-
141
- def test_dead_workers
142
- setup_manager
143
- Skynet::Manager.any_instance.expects(:worker_alive?).times(1).with(1).returns(false)
144
- # Skynet::Manager.any_instance.expects(:worker_alive?).with(2).returns(true)
145
- @manager.start_workers
146
- @manager.check_workers
147
- assert_equal [2], @manager.worker_pids.sort
148
- assert_equal [2], @manager.worker_queue.collect {|q|q.process_id}.sort
149
- end
150
-
151
-
152
- private
153
-
154
- def mq
155
- Skynet::MessageQueueAdapter::Mysql.new
156
- end
157
- end
@@ -1,229 +0,0 @@
1
- require File.dirname(__FILE__) + '/test_helper.rb'
2
-
3
- class MysqlMessageQueueTest < Test::Unit::TestCase
4
-
5
- def setup
6
- Skynet.configure(
7
- :ENABLE => false,
8
- :SKYNET_LOG_FILE => STDOUT,
9
- :SKYNET_LOG_LEVEL => Logger::ERROR
10
- )
11
- end
12
-
13
- def setup_worker_message
14
- @worker_message = Skynet::WorkerStatusMessage.new(
15
- :tasktype => :task,
16
- :drburi => "localhost",
17
- :job_id => 1,
18
- :task_id => 2,
19
- :payload => "payload",
20
- :payload_type => "task",
21
- :expiry => 20,
22
- :expire_time => 1095108406.9251,
23
- :iteration => 0,
24
- :name => "name",
25
- :version => 1,
26
- :queue_id => 0
27
- )
28
- end
29
-
30
- def setup_task_message
31
- @task_message = Skynet::Message.new(
32
- :tasktype => :task,
33
- :drburi => "localhost",
34
- :job_id => 1,
35
- :task_id => 2,
36
- :payload => "payload",
37
- :payload_type => "task",
38
- :expiry => 20,
39
- :expire_time => 0,
40
- :iteration => 0,
41
- :name => "name",
42
- :version => 1,
43
- :retry => 2,
44
- :queue_id => 0
45
- )
46
- end
47
-
48
- def test_worker_status_message
49
- setup_worker_message
50
- {
51
- :queue_id => 0,
52
- :tasksubtype => :worker,
53
- :tasktype => :status,
54
- :name => "name",
55
- :hostname => nil,
56
- :worker_id => nil,
57
- :map_or_reduce => nil,
58
- :process_id => nil,
59
- :started_at => nil,
60
- :job_id => 1,
61
- :iteration => 0,
62
- :processed => nil,
63
- :task_id => 2,
64
- :version => 1
65
- }.each do |key, val|
66
- assert_equal val, @worker_message.send(key), key
67
- end
68
- assert_equal @worker_message.to_a, Skynet::WorkerStatusMessage.new([:status, :worker, nil, nil, nil, 1, 2, 0, "name", nil, nil, 1, nil, 0]).to_a
69
- end
70
-
71
- def test_task_message
72
- setup_task_message
73
- {:payload=>"payload",
74
- :queue_id=>0,
75
- :tasktype=>:task,
76
- :name=>"name",
77
- :payload_type=>:task,
78
- :expiry=>20,
79
- :drburi=>"localhost",
80
- :expire_time=>0,
81
- :job_id=>1,
82
- :iteration=>0,
83
- :retry=>2,
84
- :task_id=>2,
85
- :version=>1}.each do |key, val|
86
- assert_equal val, @task_message.send(key)
87
- end
88
- assert_equal @task_message.to_a, Skynet::Message.new([:task, "localhost", 2, 1, "payload", :task, "name", 20, 0, 0, 1, 2, 0]).to_a
89
- end
90
-
91
-
92
- def test_worker_status_template
93
- template = Skynet::WorkerStatusMessage.worker_status_template(:hostname => "localhost", :process_id => $$)
94
- [:status,:worker, nil, "localhost", :skip, nil, nil, nil, nil, nil, nil, nil, nil, nil].each_with_index do |field, ii|
95
- next if field == :skip
96
- assert_equal field, template[ii]
97
- end
98
- end
99
-
100
- def test_fallback_message
101
- setup_task_message
102
- fb = @task_message.fallback_task_message
103
- test_fb = {:payload=>"payload",
104
- :queue_id=>0,
105
- :tasktype=>:task,
106
- :name=>"name",
107
- :payload_type=>:task,
108
- :expiry=>20,
109
- :drburi=>"localhost",
110
- :expire_time=>1200599892,
111
- :job_id=>1,
112
- :iteration=>1,
113
- :retry=>2,
114
- :task_id=>2,
115
- :version=>1}
116
-
117
- test_fb.each do |key, val|
118
- next if key == :expire_time
119
- assert_equal val, fb.send(key)
120
- end
121
-
122
- end
123
-
124
- def test_retry
125
- setup_task_message
126
- test_fb = {:payload=>"payload",
127
- :queue_id=>0,
128
- :tasktype=>:task,
129
- :name=>"name",
130
- :payload_type=>:task,
131
- :expiry=>20,
132
- :drburi=>"localhost",
133
- :job_id=>1,
134
- :retry=>2,
135
- :task_id=>2,
136
- :version=>1}
137
-
138
- fb1 = @task_message.fallback_task_message
139
- test_fb.merge(:iteration => 1).each do |k,v|
140
- assert_equal v, fb1.send(k)
141
- end
142
-
143
- fb2 = fb1.fallback_task_message
144
- test_fb.merge(:iteration => 2).each do |k,v|
145
- assert_equal v, fb2.send(k)
146
- end
147
-
148
- fb3 = fb2.fallback_task_message
149
- test_fb.merge(:iteration => -1).each do |k,v|
150
- assert_equal v, fb3.send(k)
151
- end
152
- end
153
-
154
- def test_next_task_template
155
- template = Skynet::Message.next_task_template(0,:any, 99)
156
- [:task, nil, nil, nil, nil, :any, nil, nil, :skip, 0..6, 0, nil, 99].each_with_index do |field, ii|
157
- next if field == :skip
158
- assert_equal field, template[ii]
159
- end
160
- end
161
-
162
- def test_result_template
163
- template = Skynet::Message.result_template(88,:task)
164
- [:task, nil, nil, 88, nil, nil, nil, nil, nil, nil, nil, nil, nil].each_with_index do |field, ii|
165
- assert_equal field, template[ii]
166
- end
167
- end
168
-
169
- def test_result_message
170
- setup_task_message
171
- result = @task_message.result_message("result")
172
- {
173
- :payload=>"result",
174
- :queue_id=>0,
175
- :tasktype=>:result,
176
- :name=>"name",
177
- :payload_type=>:result,
178
- :expiry=>20,
179
- :drburi=>"localhost",
180
- :expire_time=>0,
181
- :job_id=>1,
182
- :iteration=>0,
183
- :retry=>2,
184
- :task_id=>2,
185
- :version=>1
186
- }.each do |key, val|
187
- assert_equal val, result.send(key)
188
- end
189
-
190
- end
191
-
192
- def test_fallback_template
193
- setup_task_message
194
- template = @task_message.fallback_template
195
- [:task, "localhost", 2, nil, nil, nil, nil, nil, nil, 1..6, 1, nil, 0].each_with_index do |field, ii|
196
- assert_equal field, template[ii]
197
- end
198
- end
199
-
200
- def test_no_retry
201
- setup_task_message
202
- @task_message.retry = 0
203
- fb1 = @task_message.fallback_task_message
204
- {
205
- :payload=>"payload",
206
- :queue_id=>0,
207
- :tasktype=>:task,
208
- :name=>"name",
209
- :payload_type=>:task,
210
- :expiry=>20,
211
- :drburi=>"localhost",
212
- :job_id=>1,
213
- :iteration=>-1,
214
- :retry=>0,
215
- :task_id=>2,
216
- :version=>1
217
- }.each do |k,v|
218
- assert_equal v, fb1.send(k)
219
- end
220
- end
221
-
222
- def test_payload
223
- setup_task_message
224
- @task_message.payload = "hi"
225
- assert_equal YAML::dump("hi"), @task_message.raw_payload
226
- end
227
-
228
-
229
- end
@@ -1,24 +0,0 @@
1
- require File.dirname(__FILE__) + '/test_helper.rb'
2
-
3
- class SkynetTaskTest < Test::Unit::TestCase
4
-
5
- def setup
6
- Skynet.configure(
7
- :ENABLE => false,
8
- :SKYNET_LOG_FILE => STDOUT,
9
- :SKYNET_LOG_LEVEL => Logger::ERROR
10
- )
11
- end
12
-
13
- def test_master_task
14
- job = Skynet::Job.new(:map_reduce_class => self.class, :async => true, :local_master => false, :solo => true)
15
- master_task = Skynet::Task.master_task(job)
16
- master_job = Skynet::Job.new(master_task.process)
17
- assert_equal self.class.to_s, master_job.map
18
- assert ! master_job.async
19
- assert_equal true, master_job.local_master
20
- end
21
-
22
- def self.map(datas)
23
- end
24
- end
@@ -1,174 +0,0 @@
1
- require File.dirname(__FILE__) + '/test_helper.rb'
2
-
3
- class TuplespaceMessageQueueTest < Test::Unit::TestCase
4
-
5
- def setup
6
- Skynet.configure(
7
- :ENABLE => false,
8
- # :SKYNET_PIDS_FILE => File.expand_path("#{RAILS_ROOT}/log/skynet_#{RAILS_ENV}.pids"),
9
- :SKYNET_LOG_FILE => STDOUT,
10
- :SKYNET_LOG_LEVEL => Logger::ERROR,
11
- :SKYNET_LOCAL_MANAGER_URL => "druby://localhost:40000",
12
- :MESSAGE_QUEUE_ADAPTER => "Skynet::MessageQueueAdapter::TupleSpace",
13
- :TS_DRBURIS => ["druby://localhost:77647"],
14
- :TS_USE_RINGSERVER => false
15
- )
16
- @ts ||= Rinda::TupleSpace.new
17
- @@tss ||= DRb.start_service(Skynet::CONFIG[:TS_DRBURIS].first, @ts)
18
- mq.clear_outstanding_tasks
19
-
20
- @worker_message = Skynet::Message.new(
21
- :tasktype => :task,
22
- :drburi => "localhost",
23
- :job_id => 1,
24
- :task_id => 2,
25
- :payload => "task",
26
- :payload_type => "master",
27
- :expiry => 20,
28
- :expire_time => 0,
29
- :iteration => 0,
30
- :name => "test",
31
- :version => 1,
32
- :retry => 3,
33
- :queue_id => 0
34
- )
35
-
36
- end
37
-
38
- def test_tuple_space
39
- @ts.write([:test])
40
- assert_equal [:test], @ts.take([:test])
41
-
42
- rts = DRbObject.new(nil, Skynet::CONFIG[:TS_DRBURIS].first)
43
- rts.write([:test])
44
- assert_equal [:test], rts.take([:test])
45
- end
46
-
47
- def test_tuplespace_ranges
48
- tuple = [:test,10]
49
- @ts.write(tuple)
50
- assert_equal tuple, @ts.take([:test,0...11],0.00001)
51
- write_tuple = [:task,"localhost", 2,1,"task","master","test",0.001,1195078587.001,1,1]
52
- read_tuple = [:task, nil, nil, nil, nil, nil, nil, nil, 0...1195078588, 0..6, 1]
53
- assert_equal write_tuple.size, read_tuple.size
54
- @ts.write(write_tuple)
55
- assert_equal write_tuple, @ts.take(read_tuple,0.00001)
56
-
57
- write_tuple = [:task, "localhost", 2, 1, "task", "master", "test", 0.001, 1195079557.001, 1, 1]
58
- read_tuple = [:task, nil, nil, nil, nil, nil, nil, nil, 0..1195079558, 0..6, 1]
59
- assert_equal write_tuple.size, read_tuple.size
60
- @ts.write(write_tuple)
61
- assert_equal write_tuple, @ts.take(read_tuple,0.00001)
62
- end
63
-
64
- ### THE FOLLOWING TESTS THE MessageQueueProxy API
65
-
66
- def test_write_message
67
- assert mq.write_message(@worker_message,10)
68
- assert_equal 1, mq.list_tasks.size
69
- end
70
-
71
- def test_take_next_task
72
- assert mq.write_message(@worker_message,10)
73
- assert_equal @worker_message.to_a, mq.take_next_task(1).to_a
74
- end
75
-
76
-
77
- def test_task_failover
78
- message = @worker_message.clone
79
- message.expiry=0.4
80
- assert mq.write_message(message)
81
- assert_equal message.to_a, mq.take_next_task(1).to_a
82
- sleep 1
83
- ntt = Skynet::Message.next_task_template(1,nil,0)
84
- assert_equal 2, mq.take_next_task(1,0.00001).task_id
85
- end
86
-
87
- def test_write_and_take_result
88
- assert mq.write_message(@worker_message,10)
89
- message = mq.take_next_task(1)
90
- set_result = {:blah => ['hi']}
91
-
92
- mq.write_result(message,set_result,20)
93
- assert mq.list_tasks.empty?
94
- assert_equal 1, mq.list_results.size
95
- result = mq.take_result(1)
96
- assert_equal set_result, result.payload
97
- end
98
-
99
- def test_write_error
100
- mq.write_message(@worker_message,10)
101
- message = mq.take_next_task(1)
102
- mq.write_error(message,"something_bad_happened",10)
103
- result = mq.take_result(1)
104
- assert_equal "something_bad_happened", result.payload
105
- end
106
-
107
- def test_write_complex_error
108
- mq.write_message(@worker_message,10)
109
- message = mq.take_next_task(1)
110
- error = {:error => "something_bad_happened"}
111
- mq.write_error(message,error,10)
112
- result = mq.take_result(1)
113
- assert_equal error, result.payload
114
- end
115
-
116
- def test_write_worker_status
117
- assert mq.write_worker_status({
118
- :worker_id => 5,
119
- :hostname => 'localhost',
120
- :process_id => $$,
121
- :name => "waiting for master or tasks",
122
- :processed => 0,
123
- :version => 1,
124
- :started_at => Time.now.to_i
125
- })
126
- end
127
-
128
- def test_take_worker_status
129
- assert mq.write_worker_status({
130
- :worker_id => 5,
131
- :hostname => 'localhost',
132
- :process_id => $$,
133
- :name => "waiting for master or tasks",
134
- :processed => 0,
135
- :version => 1,
136
- :started_at => Time.now.to_i
137
- })
138
-
139
- status = mq.take_worker_status({:hostname => 'localhost',:process_id => $$ })
140
- assert_equal $$, status.process_id
141
- end
142
-
143
- def test_read_all_worker_statuses
144
- assert mq.write_worker_status({
145
- :worker_id => 5,
146
- :hostname => 'localhost',
147
- :process_id => $$,
148
- :name => "waiting for master or tasks",
149
- :processed => 0,
150
- :version => 1,
151
- :started_at => Time.now.to_i
152
- })
153
- status = mq.read_all_worker_statuses.first
154
-
155
- # status = mq.take_worker_status({:hostname => 'localhost',:process_id => $$ })
156
- assert_equal $$, status.process_id
157
- end
158
-
159
- def test_worker_version
160
- mq.set_worker_version(2)
161
- assert_equal 2, mq.get_worker_version
162
- mq.set_worker_version(10)
163
- assert_equal 10, mq.get_worker_version
164
- end
165
-
166
-
167
-
168
-
169
- private
170
- def mq
171
- Skynet::MessageQueueAdapter::TupleSpace.new
172
- end
173
-
174
- end