gorgon 0.10.5 → 0.11.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.
- checksums.yaml +4 -4
- data/Gemfile.lock +2 -2
- data/bin/gorgon +3 -3
- data/lib/gorgon/originator.rb +21 -5
- data/lib/gorgon/version.rb +1 -1
- data/spec/originator_spec.rb +35 -1
- metadata +83 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4c7715c6f11333845258e304eec73544db11135d
|
4
|
+
data.tar.gz: f4f2c0ca24b61ebd1e238673dbba746bb30a787f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 16092b5b748104343f172c539d2dd0a8e625ce2c06bb628d717e4140729c2e77536e91c68914774241eb0ba242fd9c523434915d8908239c79e1ddf2061f16e8
|
7
|
+
data.tar.gz: 2a08a60a432b19c46ab7170cb2c4e0061fa9a8c1cc2b42b635a54d2d342457ba92929dbc936a460c97bf8aef20b24148e9108548ef9fa7c49222575ddae148b6
|
data/Gemfile.lock
CHANGED
data/bin/gorgon
CHANGED
@@ -16,7 +16,7 @@ WELCOME_MSG = "Welcome to Gorgon #{Gorgon::VERSION}"
|
|
16
16
|
|
17
17
|
def start
|
18
18
|
o = Originator.new
|
19
|
-
o.originate
|
19
|
+
exit o.originate
|
20
20
|
end
|
21
21
|
|
22
22
|
def listen
|
@@ -77,7 +77,7 @@ end
|
|
77
77
|
case ARGV[0] # special case for 'version', because we don't need the welcome message telling us the version when we're explicitly asking for it
|
78
78
|
when "version", "--version"
|
79
79
|
puts Gorgon::VERSION
|
80
|
-
exit
|
80
|
+
exit
|
81
81
|
end
|
82
82
|
|
83
83
|
puts WELCOME_MSG
|
@@ -87,7 +87,7 @@ when nil
|
|
87
87
|
start
|
88
88
|
when "help", "--help"
|
89
89
|
usage
|
90
|
-
exit
|
90
|
+
exit
|
91
91
|
when "start"
|
92
92
|
start
|
93
93
|
when "listen"
|
data/lib/gorgon/originator.rb
CHANGED
@@ -18,6 +18,12 @@ require 'socket'
|
|
18
18
|
class Originator
|
19
19
|
include Configuration
|
20
20
|
|
21
|
+
SPEC_SUCCESS_EXIT_STATUS = 0
|
22
|
+
SPEC_FAILURE_EXIT_STATUS = 1
|
23
|
+
SYNC_ERROR_EXIT_STATUS = 2
|
24
|
+
ERROR_EXIT_STATUS = 3
|
25
|
+
|
26
|
+
|
21
27
|
def initialize
|
22
28
|
@configuration = nil
|
23
29
|
end
|
@@ -27,8 +33,9 @@ class Originator
|
|
27
33
|
Signal.trap("INT") { ctrl_c }
|
28
34
|
Signal.trap("TERM") { ctrl_c }
|
29
35
|
|
30
|
-
publish
|
36
|
+
exit_status = publish
|
31
37
|
@logger.log "Originator finished successfully"
|
38
|
+
exit_status
|
32
39
|
rescue StandardError
|
33
40
|
$stderr.puts "Unhandled exception in originator:"
|
34
41
|
$stderr.puts $!.message
|
@@ -37,7 +44,7 @@ class Originator
|
|
37
44
|
$stderr.puts "Now attempting to cancel the job."
|
38
45
|
@logger.log_error "Unhandled Exception!" if @logger
|
39
46
|
cancel_job
|
40
|
-
exit
|
47
|
+
exit ERROR_EXIT_STATUS
|
41
48
|
end
|
42
49
|
end
|
43
50
|
|
@@ -51,11 +58,13 @@ class Originator
|
|
51
58
|
end
|
52
59
|
|
53
60
|
def publish
|
61
|
+
exit_status = SPEC_SUCCESS_EXIT_STATUS
|
62
|
+
|
54
63
|
@logger = OriginatorLogger.new configuration[:originator_log_file]
|
55
64
|
|
56
65
|
if files.empty?
|
57
66
|
$stderr.puts "There are no files to test! Quitting."
|
58
|
-
exit
|
67
|
+
exit ERROR_EXIT_STATUS
|
59
68
|
end
|
60
69
|
|
61
70
|
cluster_id = callback_handler.before_originate
|
@@ -68,7 +77,7 @@ class Originator
|
|
68
77
|
publish_files_and_job
|
69
78
|
|
70
79
|
@protocol.receive_payloads do |payload|
|
71
|
-
handle_reply(payload)
|
80
|
+
exit_status |= handle_reply(payload)
|
72
81
|
end
|
73
82
|
|
74
83
|
@protocol.receive_new_listener_notifications do |payload|
|
@@ -77,6 +86,7 @@ class Originator
|
|
77
86
|
end
|
78
87
|
|
79
88
|
callback_handler.after_job_finishes
|
89
|
+
exit_status
|
80
90
|
end
|
81
91
|
|
82
92
|
def publish_files_and_job
|
@@ -105,7 +115,7 @@ class Originator
|
|
105
115
|
$stderr.puts "Command '#{syncer.sys_command}' failed!"
|
106
116
|
$stderr.puts "Stdout:\n#{syncer.output}"
|
107
117
|
$stderr.puts "Stderr:\n#{syncer.errors}"
|
108
|
-
exit
|
118
|
+
exit SYNC_ERROR_EXIT_STATUS
|
109
119
|
end
|
110
120
|
end
|
111
121
|
|
@@ -138,6 +148,7 @@ class Originator
|
|
138
148
|
# ap payload
|
139
149
|
|
140
150
|
cleanup_if_job_complete
|
151
|
+
exit_status(payload)
|
141
152
|
end
|
142
153
|
|
143
154
|
def handle_new_listener_notification(payload)
|
@@ -181,6 +192,11 @@ class Originator
|
|
181
192
|
|
182
193
|
private
|
183
194
|
|
195
|
+
def exit_status(payload)
|
196
|
+
return SPEC_FAILURE_EXIT_STATUS if ["crash", "exception", "fail"].include?(payload[:type])
|
197
|
+
SPEC_SUCCESS_EXIT_STATUS
|
198
|
+
end
|
199
|
+
|
184
200
|
def sync_configuration
|
185
201
|
configuration[:job].
|
186
202
|
fetch(:sync, {}).
|
data/lib/gorgon/version.rb
CHANGED
data/spec/originator_spec.rb
CHANGED
@@ -33,6 +33,17 @@ describe Originator do
|
|
33
33
|
@originator.publish
|
34
34
|
end
|
35
35
|
|
36
|
+
it "propagates the success result of handle_reply" do
|
37
|
+
@originator.publish.should eq Originator::SPEC_SUCCESS_EXIT_STATUS
|
38
|
+
end
|
39
|
+
|
40
|
+
it "propagates the error result of handle_reply" do
|
41
|
+
OriginatorProtocol.should_receive(:new).and_return(protocol)
|
42
|
+
protocol.should_receive(:receive_payloads).and_yield(Yajl::Encoder.encode({:type => 'fail'}))
|
43
|
+
|
44
|
+
@originator.publish.should eq Originator::SPEC_FAILURE_EXIT_STATUS
|
45
|
+
end
|
46
|
+
|
36
47
|
it "creates a ProgressBarView and show" do
|
37
48
|
JobState.stub(:new).and_return job_state
|
38
49
|
ProgressBarView.should_receive(:new).with(job_state).and_return progress_bar_view
|
@@ -83,7 +94,7 @@ describe Originator do
|
|
83
94
|
|
84
95
|
it "exits with a non-zero status code when the originator crashes" do
|
85
96
|
originator_logger.stub(:log_error)
|
86
|
-
$stderr = StringIO.new # slurp up the error output so we don't pollute the
|
97
|
+
$stderr = StringIO.new # slurp up the error output so we don't pollute the rspec run
|
87
98
|
CallbackHandler.any_instance.should_receive(:before_originate).and_throw("I'm an unhandled exception")
|
88
99
|
|
89
100
|
expect { @originator.originate }.to raise_error(SystemExit) do |error|
|
@@ -138,6 +149,29 @@ describe Originator do
|
|
138
149
|
@originator.publish
|
139
150
|
end
|
140
151
|
|
152
|
+
it "returns SPEC_SUCCESS_EXIT_STATUS when payload[:action] is start" do
|
153
|
+
job_state.stub(:file_started)
|
154
|
+
@originator.handle_reply(start_payload).should eq Originator::SPEC_SUCCESS_EXIT_STATUS
|
155
|
+
end
|
156
|
+
|
157
|
+
it "returns SPEC_SUCCESS_EXIT_STATUS when payload[:action] is finish" do
|
158
|
+
job_state.stub(:file_finished)
|
159
|
+
@originator.handle_reply(finish_payload).should eq Originator::SPEC_SUCCESS_EXIT_STATUS
|
160
|
+
end
|
161
|
+
|
162
|
+
it "returns SPEC_FAILURE_EXIT_STATUS when payload[:action] is crash" do
|
163
|
+
job_state.stub(:gorgon_crash_message)
|
164
|
+
@originator.handle_reply(Yajl::Encoder.encode(gorgon_crash_message)).should eq Originator::SPEC_FAILURE_EXIT_STATUS
|
165
|
+
end
|
166
|
+
|
167
|
+
it "returns SPEC_FAILURE_EXIT_STATUS when payload[:action] is exception" do
|
168
|
+
@originator.handle_reply(Yajl::Encoder.encode({:type => 'exception'})).should eq Originator::SPEC_FAILURE_EXIT_STATUS
|
169
|
+
end
|
170
|
+
|
171
|
+
it "returns SPEC_FAILURE_EXIT_STATUS when payload[:action] is fail" do
|
172
|
+
@originator.handle_reply(Yajl::Encoder.encode({:type => 'fail'})).should eq Originator::SPEC_FAILURE_EXIT_STATUS
|
173
|
+
end
|
174
|
+
|
141
175
|
it "calls cleanup_if_job_complete" do
|
142
176
|
@originator.should_receive(:cleanup_if_job_complete)
|
143
177
|
@originator.handle_reply finish_payload
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gorgon
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.11.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Justin Fitzsimmons
|
@@ -12,7 +12,7 @@ authors:
|
|
12
12
|
autorequire:
|
13
13
|
bindir: bin
|
14
14
|
cert_chain: []
|
15
|
-
date: 2016-
|
15
|
+
date: 2016-10-28 00:00:00.000000000 Z
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|
18
18
|
name: rake
|
@@ -400,8 +400,87 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
400
400
|
version: '0'
|
401
401
|
requirements: []
|
402
402
|
rubyforge_project: gorgon
|
403
|
-
rubygems_version: 2.
|
403
|
+
rubygems_version: 2.6.7
|
404
404
|
signing_key:
|
405
405
|
specification_version: 4
|
406
406
|
summary: Distributed testing for ruby with centralized management
|
407
|
-
test_files:
|
407
|
+
test_files:
|
408
|
+
- spec/acceptance_spec_helper.rb
|
409
|
+
- spec/callback_handler_spec.rb
|
410
|
+
- spec/crash_reporter_spec.rb
|
411
|
+
- spec/failures_printer_spec.rb
|
412
|
+
- spec/gem_command_handler_spec.rb
|
413
|
+
- spec/gem_service_spec.rb
|
414
|
+
- spec/gorgon_rspec_formatter_spec.rb
|
415
|
+
- spec/host_state_spec.rb
|
416
|
+
- spec/job_definition_spec.rb
|
417
|
+
- spec/job_state_spec.rb
|
418
|
+
- spec/listener_spec.rb
|
419
|
+
- spec/mini_test_runner_spec.rb
|
420
|
+
- spec/originator_logger_spec.rb
|
421
|
+
- spec/originator_protocol_spec.rb
|
422
|
+
- spec/originator_spec.rb
|
423
|
+
- spec/ping_service_spec.rb
|
424
|
+
- spec/pipe_forker_spec.rb
|
425
|
+
- spec/progress_bar_view_spec.rb
|
426
|
+
- spec/rspec_runner_spec.rb
|
427
|
+
- spec/rsync_daemon_spec.rb
|
428
|
+
- spec/runtime_file_reader_spec.rb
|
429
|
+
- spec/runtime_recorder_spec.rb
|
430
|
+
- spec/shutdown_manager_spec.rb
|
431
|
+
- spec/source_tree_syncer_spec.rb
|
432
|
+
- spec/support/mock_app/.gitignore
|
433
|
+
- spec/support/mock_app/Gemfile
|
434
|
+
- spec/support/mock_app/Gemfile.lock
|
435
|
+
- spec/support/mock_app/README.rdoc
|
436
|
+
- spec/support/mock_app/Rakefile
|
437
|
+
- spec/support/mock_app/app/assets/images/rails.png
|
438
|
+
- spec/support/mock_app/app/assets/javascripts/application.js
|
439
|
+
- spec/support/mock_app/app/assets/stylesheets/application.css
|
440
|
+
- spec/support/mock_app/app/controllers/application_controller.rb
|
441
|
+
- spec/support/mock_app/app/helpers/application_helper.rb
|
442
|
+
- spec/support/mock_app/app/mailers/.gitkeep
|
443
|
+
- spec/support/mock_app/app/models/.gitkeep
|
444
|
+
- spec/support/mock_app/app/views/layouts/application.html.erb
|
445
|
+
- spec/support/mock_app/config.ru
|
446
|
+
- spec/support/mock_app/config/application.rb
|
447
|
+
- spec/support/mock_app/config/boot.rb
|
448
|
+
- spec/support/mock_app/config/database.yml
|
449
|
+
- spec/support/mock_app/config/environment.rb
|
450
|
+
- spec/support/mock_app/config/environments/development.rb
|
451
|
+
- spec/support/mock_app/config/environments/production.rb
|
452
|
+
- spec/support/mock_app/config/environments/test.rb
|
453
|
+
- spec/support/mock_app/config/initializers/backtrace_silencers.rb
|
454
|
+
- spec/support/mock_app/config/initializers/inflections.rb
|
455
|
+
- spec/support/mock_app/config/initializers/mime_types.rb
|
456
|
+
- spec/support/mock_app/config/initializers/secret_token.rb
|
457
|
+
- spec/support/mock_app/config/initializers/session_store.rb
|
458
|
+
- spec/support/mock_app/config/initializers/wrap_parameters.rb
|
459
|
+
- spec/support/mock_app/config/locales/en.yml
|
460
|
+
- spec/support/mock_app/config/routes.rb
|
461
|
+
- spec/support/mock_app/db/seeds.rb
|
462
|
+
- spec/support/mock_app/doc/README_FOR_APP
|
463
|
+
- spec/support/mock_app/lib/assets/.gitkeep
|
464
|
+
- spec/support/mock_app/lib/tasks/.gitkeep
|
465
|
+
- spec/support/mock_app/log/.gitkeep
|
466
|
+
- spec/support/mock_app/public/404.html
|
467
|
+
- spec/support/mock_app/public/422.html
|
468
|
+
- spec/support/mock_app/public/500.html
|
469
|
+
- spec/support/mock_app/public/favicon.ico
|
470
|
+
- spec/support/mock_app/public/index.html
|
471
|
+
- spec/support/mock_app/public/robots.txt
|
472
|
+
- spec/support/mock_app/script/rails
|
473
|
+
- spec/support/mock_app/test/fixtures/.gitkeep
|
474
|
+
- spec/support/mock_app/test/functional/.gitkeep
|
475
|
+
- spec/support/mock_app/test/integration/.gitkeep
|
476
|
+
- spec/support/mock_app/test/performance/browsing_test.rb
|
477
|
+
- spec/support/mock_app/test/test_helper.rb
|
478
|
+
- spec/support/mock_app/test/unit/.gitkeep
|
479
|
+
- spec/support/mock_app/test/unit/passing_test.rb
|
480
|
+
- spec/support/mock_app/vendor/assets/javascripts/.gitkeep
|
481
|
+
- spec/support/mock_app/vendor/assets/stylesheets/.gitkeep
|
482
|
+
- spec/support/mock_app/vendor/plugins/.gitkeep
|
483
|
+
- spec/support/originator_handler.rb
|
484
|
+
- spec/unknown_runner_spec.rb
|
485
|
+
- spec/worker_manager_spec.rb
|
486
|
+
- spec/worker_spec.rb
|