runnerbean 0.0.2 → 0.1.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c92db16e711b588ad071465aa3a1706702b707a9
4
- data.tar.gz: 0c14b41d5d111e32674b6fd15b5e84eb0215840d
3
+ metadata.gz: eeb3b26430bb762559e9e23c1e282a1c129da954
4
+ data.tar.gz: 83fd6adbde6f4ff23c4994b53a655b0b923fe9fa
5
5
  SHA512:
6
- metadata.gz: 8210b2dd8f3c46f8e9c391b250a6c2842f5b5363a61ec9f7168461e00afad68bf1c23ca62565dcae52fcbc6b408bbdebcd32badb0d3f18108120f0fb832713f1
7
- data.tar.gz: 846841cd685bc9c3ecd02dd3f9328f8efdf590d115db00cc20374b7cdbf5ad60d0860ab14d39fa88cb433883abfd2dc4d63966414e233775cadfdfa31ff0e363
6
+ metadata.gz: b890956a793090f1eda8fa49b7dbdd340c391d6806108eafdb1acbb1a0dcf4cc388739024342542a8f6da063a3a21a0f693675b73002739ed79deb0c342b6b47
7
+ data.tar.gz: 4a30f2bf2f7307257d6caa9995163c08779f4c27bca929a9b5cb16aef830b43440433457c4cf763c4225ea5b39bc564d51ecbd03389f70e4ab0091a40f044d76
@@ -0,0 +1,18 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ $LOAD_PATH.unshift(File.expand_path('../lib', __dir__))
4
+
5
+ require 'runnerbean'
6
+ require_relative 'processes/frontend'
7
+ require_relative 'processes/backend'
8
+
9
+ runner = Runnerbean.runner
10
+ runner.add_process(frontend: Frontend.new,
11
+ backend: Backend.new)
12
+
13
+ smoke_test_group = runner.group(:frontend, :backend)
14
+ smoke_test_group.name = ('smoke_test')
15
+
16
+ smoke_test_group.ensure_started!
17
+ puts 'combined Frontend and Backend Tests would run here ...'
18
+ smoke_test_group.kill!
@@ -1,49 +1,10 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- APP_ROOT = File.expand_path('..', __dir__)
4
- $LOAD_PATH.unshift(File.join(APP_ROOT, 'lib'))
3
+ $LOAD_PATH.unshift(File.expand_path('../lib', __dir__))
5
4
 
6
5
  require 'runnerbean'
7
-
8
- class Frontend
9
- attr_accessor :group_name
10
-
11
- def start_command
12
- "echo 'This would be the Frontend start command'"
13
- end
14
-
15
- def sleep_after_start
16
- 1
17
- end
18
-
19
- def kill_command
20
- "echo 'This would be the Frontend kill command'"
21
- end
22
-
23
- def sleep_after_kill
24
- 1
25
- end
26
- end
27
-
28
- class Backend
29
- attr_accessor :group_name
30
-
31
- def start_command
32
- "echo 'This would be the Backend start command'"
33
- end
34
-
35
- def sleep_after_start
36
- 1
37
- end
38
-
39
- def kill_command
40
- "echo 'This would be the Backend kill command'"
41
- end
42
-
43
- def sleep_after_kill
44
- 1
45
- end
46
- end
6
+ require_relative 'processes/frontend'
7
+ require_relative 'processes/backend'
47
8
 
48
9
  runner = Runnerbean.runner('front_and_back')
49
10
  runner.add_process(frontend: Frontend.new,
@@ -1,49 +1,10 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- APP_ROOT = File.expand_path('..', __dir__)
4
- $LOAD_PATH.unshift(File.join(APP_ROOT, 'lib'))
3
+ $LOAD_PATH.unshift(File.expand_path('../lib', __dir__))
5
4
 
6
5
  require 'runnerbean'
7
-
8
- class Frontend
9
- attr_accessor :group_name
10
-
11
- def start_command
12
- "echo 'This would be the Frontend start command'"
13
- end
14
-
15
- def sleep_after_start
16
- 1
17
- end
18
-
19
- def kill_command
20
- "echo 'This would be the Frontend kill command'"
21
- end
22
-
23
- def sleep_after_kill
24
- 1
25
- end
26
- end
27
-
28
- class Backend
29
- attr_accessor :group_name
30
-
31
- def start_command
32
- "echo 'This would be the Backend start command'"
33
- end
34
-
35
- def sleep_after_start
36
- 1
37
- end
38
-
39
- def kill_command
40
- "echo 'This would be the Backend kill command'"
41
- end
42
-
43
- def sleep_after_kill
44
- 1
45
- end
46
- end
6
+ require_relative 'processes/frontend'
7
+ require_relative 'processes/backend'
47
8
 
48
9
  runner = Runnerbean.runner
49
10
  runner.add_process(frontend: Frontend.new,
@@ -0,0 +1,23 @@
1
+ class Backend
2
+ attr_accessor :group_name
3
+
4
+ def start_command
5
+ "echo 'This would be the Backend start command'"
6
+ end
7
+
8
+ def sleep_after_start
9
+ 1
10
+ end
11
+
12
+ def kill_command
13
+ "echo 'This would be the Backend kill command'"
14
+ end
15
+
16
+ def sleep_after_kill
17
+ 1
18
+ end
19
+
20
+ def running?
21
+ false
22
+ end
23
+ end
@@ -0,0 +1,23 @@
1
+ class Frontend
2
+ attr_accessor :group_name
3
+
4
+ def start_command
5
+ "echo 'This would be the Frontend start command'"
6
+ end
7
+
8
+ def sleep_after_start
9
+ 1
10
+ end
11
+
12
+ def kill_command
13
+ "echo 'This would be the Frontend kill command'"
14
+ end
15
+
16
+ def sleep_after_kill
17
+ 1
18
+ end
19
+
20
+ def running?
21
+ true
22
+ end
23
+ end
@@ -0,0 +1,21 @@
1
+ class MyTestProcess
2
+ attr_accessor :group_name
3
+
4
+ def start_command
5
+ "echo 'This would be the start command, logging to prefix of #{group_name}' &&" \
6
+ "echo '... with a following delay of #{sleep_after_start}'"
7
+ end
8
+
9
+ def sleep_after_start
10
+ 7
11
+ end
12
+
13
+ def kill_command
14
+ "echo 'This would be the kill command, logging to prefix of #{group_name}' &&" \
15
+ "echo '... with a following delay of #{sleep_after_kill}'"
16
+ end
17
+
18
+ def sleep_after_kill
19
+ 4
20
+ end
21
+ end
@@ -1,31 +1,9 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- APP_ROOT = File.expand_path('..', __dir__)
4
- $LOAD_PATH.unshift(File.join(APP_ROOT, 'lib'))
3
+ $LOAD_PATH.unshift(File.expand_path('../lib', __dir__))
5
4
 
6
5
  require 'runnerbean'
7
-
8
- class MyTestProcess
9
- attr_accessor :group_name
10
-
11
- def start_command
12
- "echo 'This would be the start command, logging to prefix of #{group_name}' &&" \
13
- "echo '... with a following delay of #{sleep_after_start}'"
14
- end
15
-
16
- def sleep_after_start
17
- 7
18
- end
19
-
20
- def kill_command
21
- "echo 'This would be the kill command, logging to prefix of #{group_name}' &&" \
22
- "echo '... with a following delay of #{sleep_after_kill}'"
23
- end
24
-
25
- def sleep_after_kill
26
- 4
27
- end
28
- end
6
+ require_relative 'processes/my_test_process'
29
7
 
30
8
  runner = Runnerbean.runner('simple')
31
9
  runner.add_process(my_process: MyTestProcess.new)
@@ -19,6 +19,11 @@ module Runnerbean
19
19
  @name ||= default_process_group_name
20
20
  end
21
21
 
22
+ def ensure_started!
23
+ kill_if_running!
24
+ start!
25
+ end
26
+
22
27
  private
23
28
 
24
29
  def default_process_group_name
@@ -41,6 +46,12 @@ module Runnerbean
41
46
  processes.each { |p| p.group_name = name }
42
47
  end
43
48
 
49
+ def kill_if_running!
50
+ running_processes = processes.select(&:running?)
51
+ kill_group = self.class.new(*running_processes)
52
+ kill_group.kill!
53
+ end
54
+
44
55
  def find_commands(command)
45
56
  command_getter = "#{command}_command".to_sym
46
57
  processes.map(&command_getter).compact
@@ -1,3 +1,3 @@
1
1
  module Runnerbean
2
- VERSION = '0.0.2'
2
+ VERSION = '0.1.0'
3
3
  end
@@ -55,33 +55,34 @@ module Runnerbean
55
55
  describe '#kill!' do
56
56
  subject { group.kill! }
57
57
 
58
- it 'runs shell command specified for frontend' do
59
- expect(Kernel).to receive(:system).with(the_frontend_kill)
60
- subject
61
- end
62
-
63
- it 'sleeps for specified time' do
64
- expect(Kernel).to receive(:sleep).with(the_frontend.sleep_after_kill)
65
- subject
66
- end
58
+ it_behaves_like 'frontend killer'
67
59
  end
68
60
 
69
61
  describe '#start!' do
70
62
  subject { group.start! }
71
63
 
72
- it 'runs shell command specified for frontend' do
73
- expect(Kernel).to receive(:system).with(the_frontend_start)
74
- subject
75
- end
64
+ it_behaves_like 'frontend starter'
65
+ end
66
+
67
+ describe '#ensure_started!' do
68
+ subject { group.ensure_started! }
76
69
 
77
- it 'instructs process to log to logfile, prefixed with group name' do
78
- expect(the_frontend).to receive(:group_name=).with(group.name)
79
- subject
70
+ context 'when process is not running' do
71
+ before { allow(the_frontend).to receive(:running?).and_return(false) }
72
+
73
+ it 'does not runs kill shell command specified for frontend' do
74
+ expect(Kernel).to_not receive(:system).with(the_frontend_kill)
75
+ subject
76
+ end
77
+
78
+ it_behaves_like 'frontend starter'
80
79
  end
81
80
 
82
- it 'sleeps for specified time' do
83
- expect(Kernel).to receive(:sleep).with(the_frontend.sleep_after_start)
84
- subject
81
+ context 'when process is already running' do
82
+ before { allow(the_frontend).to receive(:running?).and_return(true) }
83
+
84
+ it_behaves_like 'frontend killer'
85
+ it_behaves_like 'frontend starter'
85
86
  end
86
87
  end
87
88
 
@@ -19,6 +19,8 @@
19
19
  APP_ROOT = File.expand_path('..', __dir__)
20
20
  $LOAD_PATH.unshift(File.join(APP_ROOT, 'lib'))
21
21
 
22
+ Dir[File.join(APP_ROOT, 'spec/support/**/*.rb')].each(&method(:require))
23
+
22
24
  # See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
23
25
  RSpec.configure do |config|
24
26
  # rspec-expectations config goes here. You can use an alternate
@@ -0,0 +1,28 @@
1
+ shared_examples_for 'frontend starter' do
2
+ it 'runs shell start command specified for frontend' do
3
+ expect(Kernel).to receive(:system).with(the_frontend.start_command)
4
+ subject
5
+ end
6
+
7
+ it 'instructs process to log to logfile, prefixed with group name' do
8
+ expect(the_frontend).to receive(:group_name=).with(group.name)
9
+ subject
10
+ end
11
+
12
+ it 'sleeps for specified time after start' do
13
+ expect(Kernel).to receive(:sleep).with(the_frontend.sleep_after_start)
14
+ subject
15
+ end
16
+ end
17
+
18
+ shared_examples_for 'frontend killer' do
19
+ it 'runs kill shell command specified for frontend' do
20
+ expect(Kernel).to receive(:system).with(the_frontend.kill_command)
21
+ subject
22
+ end
23
+
24
+ it 'sleeps for specified time after kill' do
25
+ expect(Kernel).to receive(:sleep).with(the_frontend.sleep_after_kill)
26
+ subject
27
+ end
28
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: runnerbean
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - baob
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-09-06 00:00:00.000000000 Z
11
+ date: 2015-09-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -165,8 +165,12 @@ files:
165
165
  - LICENSE.txt
166
166
  - README.md
167
167
  - Rakefile
168
+ - examples/ensure_started
168
169
  - examples/front_and_back
169
170
  - examples/process_groups
171
+ - examples/processes/backend.rb
172
+ - examples/processes/frontend.rb
173
+ - examples/processes/my_test_process.rb
170
174
  - examples/simple
171
175
  - lib/runnerbean.rb
172
176
  - lib/runnerbean/process_group.rb
@@ -178,6 +182,7 @@ files:
178
182
  - spec/runnerbean/runner_spec.rb
179
183
  - spec/runnerbean_spec.rb
180
184
  - spec/spec_helper.rb
185
+ - spec/support/process_group_shared_examples.rb
181
186
  homepage: ''
182
187
  licenses:
183
188
  - MIT
@@ -208,3 +213,4 @@ test_files:
208
213
  - spec/runnerbean/runner_spec.rb
209
214
  - spec/runnerbean_spec.rb
210
215
  - spec/spec_helper.rb
216
+ - spec/support/process_group_shared_examples.rb