trident 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 +15 -0
- data/.coveralls.yml +1 -0
- data/.gitignore +17 -0
- data/.travis.yml +8 -0
- data/Gemfile +9 -0
- data/LICENSE.txt +22 -0
- data/README.md +33 -0
- data/Rakefile +18 -0
- data/bin/trident +8 -0
- data/lib/trident.rb +8 -0
- data/lib/trident/cli.rb +130 -0
- data/lib/trident/pool.rb +108 -0
- data/lib/trident/pool_handler.rb +31 -0
- data/lib/trident/pool_manager.rb +79 -0
- data/lib/trident/signal_handler.rb +167 -0
- data/lib/trident/utils.rb +9 -0
- data/lib/trident/version.rb +3 -0
- data/test/fixtures/integration_project/config/trident.yml +51 -0
- data/test/integration/trident_test.rb +105 -0
- data/test/test_helper.rb +144 -0
- data/test/unit/trident/cli_test.rb +253 -0
- data/test/unit/trident/pool_handler_test.rb +70 -0
- data/test/unit/trident/pool_manager_test.rb +131 -0
- data/test/unit/trident/pool_test.rb +233 -0
- data/test/unit/trident/signal_handler_test.rb +262 -0
- data/test/unit/trident/utils_test.rb +20 -0
- data/trident.example.yml +49 -0
- data/trident.gemspec +29 -0
- metadata +180 -0
@@ -0,0 +1,20 @@
|
|
1
|
+
require_relative '../../test_helper'
|
2
|
+
|
3
|
+
class Trident::UtilsTest < MiniTest::Should::TestCase
|
4
|
+
include Trident::Utils
|
5
|
+
|
6
|
+
context "#procline" do
|
7
|
+
|
8
|
+
should "set the procline of the process" do
|
9
|
+
pid = fork do
|
10
|
+
procline "foo", "bar"
|
11
|
+
end
|
12
|
+
|
13
|
+
process_name = `ps -o command -p #{pid}`.lines.to_a.last.strip
|
14
|
+
assert_equal "trident[foo]: bar", process_name
|
15
|
+
Process.kill("KILL", pid)
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
data/trident.example.yml
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
# a name for labelling pool processes
|
2
|
+
application: app_name
|
3
|
+
|
4
|
+
# loads handlers in the master process before forking workers
|
5
|
+
prefork: true
|
6
|
+
|
7
|
+
# Configure the behavior of the pool manager in response to signals
|
8
|
+
# actions are methods on PoolManager and can be sequenced
|
9
|
+
signals:
|
10
|
+
TERM: stop_gracefully
|
11
|
+
INT: stop_forcefully
|
12
|
+
|
13
|
+
# define and setup all the PoolHandlers
|
14
|
+
handlers:
|
15
|
+
myhandler:
|
16
|
+
environment: "require '<%= Rails.root %>/config/environment'"
|
17
|
+
class: MyRailsWorker
|
18
|
+
options:
|
19
|
+
my_default_option: hum
|
20
|
+
signals:
|
21
|
+
stop_forcefully: INT
|
22
|
+
stop_gracefully: TERM
|
23
|
+
otherhandler:
|
24
|
+
environment: "class MyWorker; def initialize(opts); end; def start; end; end"
|
25
|
+
class: MyWorker
|
26
|
+
options:
|
27
|
+
my_default_option: dum
|
28
|
+
signals:
|
29
|
+
stop_forcefully: INT
|
30
|
+
stop_gracefully: TERM
|
31
|
+
|
32
|
+
# Configure the worker pools
|
33
|
+
pools:
|
34
|
+
mypool:
|
35
|
+
# number of worker processes
|
36
|
+
size: 5
|
37
|
+
# chooses a handler defined above for running process
|
38
|
+
handler: myhandler
|
39
|
+
# options passed to each handler's initializer (merged into handler options above)
|
40
|
+
options:
|
41
|
+
some_option: foo
|
42
|
+
otherpool:
|
43
|
+
# number of worker processes
|
44
|
+
size: 3
|
45
|
+
# chooses a handler defined above for running process
|
46
|
+
handler: myhandler
|
47
|
+
# options passed to each handler's initializer (merged into handler options above)
|
48
|
+
options:
|
49
|
+
some_option: bar
|
data/trident.gemspec
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'trident/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "trident"
|
8
|
+
spec.version = Trident::VERSION
|
9
|
+
spec.authors = ["Matt Conway"]
|
10
|
+
spec.email = ["matt@conwaysplace.com"]
|
11
|
+
spec.description = %q{Manages pools of forked ruby processes}
|
12
|
+
spec.summary = %q{Manages pools of forked ruby processes}
|
13
|
+
spec.homepage = ""
|
14
|
+
spec.license = "MIT"
|
15
|
+
|
16
|
+
spec.files = `git ls-files`.split($/)
|
17
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
+
spec.require_paths = ["lib"]
|
20
|
+
|
21
|
+
spec.add_dependency "gem_logger"
|
22
|
+
spec.add_dependency "clamp"
|
23
|
+
|
24
|
+
spec.add_development_dependency "bundler", "~> 1.3"
|
25
|
+
spec.add_development_dependency "rake"
|
26
|
+
spec.add_development_dependency "minitest"
|
27
|
+
spec.add_development_dependency "minitest_should"
|
28
|
+
spec.add_development_dependency "minitest-reporters"
|
29
|
+
end
|
metadata
ADDED
@@ -0,0 +1,180 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: trident
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Matt Conway
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2013-11-05 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: gem_logger
|
15
|
+
prerelease: false
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
requirements:
|
18
|
+
- - ! '>='
|
19
|
+
- !ruby/object:Gem::Version
|
20
|
+
version: '0'
|
21
|
+
type: :runtime
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ! '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: clamp
|
29
|
+
prerelease: false
|
30
|
+
requirement: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - ! '>='
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: '0'
|
35
|
+
type: :runtime
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ! '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: bundler
|
43
|
+
prerelease: false
|
44
|
+
requirement: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - ~>
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: '1.3'
|
49
|
+
type: :development
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ~>
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '1.3'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rake
|
57
|
+
prerelease: false
|
58
|
+
requirement: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- - ! '>='
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '0'
|
63
|
+
type: :development
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ! '>='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: minitest
|
71
|
+
prerelease: false
|
72
|
+
requirement: !ruby/object:Gem::Requirement
|
73
|
+
requirements:
|
74
|
+
- - ! '>='
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0'
|
77
|
+
type: :development
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ! '>='
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: minitest_should
|
85
|
+
prerelease: false
|
86
|
+
requirement: !ruby/object:Gem::Requirement
|
87
|
+
requirements:
|
88
|
+
- - ! '>='
|
89
|
+
- !ruby/object:Gem::Version
|
90
|
+
version: '0'
|
91
|
+
type: :development
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ! '>='
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: minitest-reporters
|
99
|
+
prerelease: false
|
100
|
+
requirement: !ruby/object:Gem::Requirement
|
101
|
+
requirements:
|
102
|
+
- - ! '>='
|
103
|
+
- !ruby/object:Gem::Version
|
104
|
+
version: '0'
|
105
|
+
type: :development
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ! '>='
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
description: Manages pools of forked ruby processes
|
112
|
+
email:
|
113
|
+
- matt@conwaysplace.com
|
114
|
+
executables:
|
115
|
+
- trident
|
116
|
+
extensions: []
|
117
|
+
extra_rdoc_files: []
|
118
|
+
files:
|
119
|
+
- .coveralls.yml
|
120
|
+
- .gitignore
|
121
|
+
- .travis.yml
|
122
|
+
- Gemfile
|
123
|
+
- LICENSE.txt
|
124
|
+
- README.md
|
125
|
+
- Rakefile
|
126
|
+
- bin/trident
|
127
|
+
- lib/trident.rb
|
128
|
+
- lib/trident/cli.rb
|
129
|
+
- lib/trident/pool.rb
|
130
|
+
- lib/trident/pool_handler.rb
|
131
|
+
- lib/trident/pool_manager.rb
|
132
|
+
- lib/trident/signal_handler.rb
|
133
|
+
- lib/trident/utils.rb
|
134
|
+
- lib/trident/version.rb
|
135
|
+
- test/fixtures/integration_project/config/trident.yml
|
136
|
+
- test/integration/trident_test.rb
|
137
|
+
- test/test_helper.rb
|
138
|
+
- test/unit/trident/cli_test.rb
|
139
|
+
- test/unit/trident/pool_handler_test.rb
|
140
|
+
- test/unit/trident/pool_manager_test.rb
|
141
|
+
- test/unit/trident/pool_test.rb
|
142
|
+
- test/unit/trident/signal_handler_test.rb
|
143
|
+
- test/unit/trident/utils_test.rb
|
144
|
+
- trident.example.yml
|
145
|
+
- trident.gemspec
|
146
|
+
homepage: ''
|
147
|
+
licenses:
|
148
|
+
- MIT
|
149
|
+
metadata: {}
|
150
|
+
post_install_message:
|
151
|
+
rdoc_options: []
|
152
|
+
require_paths:
|
153
|
+
- lib
|
154
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
155
|
+
requirements:
|
156
|
+
- - ! '>='
|
157
|
+
- !ruby/object:Gem::Version
|
158
|
+
version: '0'
|
159
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
160
|
+
requirements:
|
161
|
+
- - ! '>='
|
162
|
+
- !ruby/object:Gem::Version
|
163
|
+
version: '0'
|
164
|
+
requirements: []
|
165
|
+
rubyforge_project:
|
166
|
+
rubygems_version: 2.0.7
|
167
|
+
signing_key:
|
168
|
+
specification_version: 4
|
169
|
+
summary: Manages pools of forked ruby processes
|
170
|
+
test_files:
|
171
|
+
- test/fixtures/integration_project/config/trident.yml
|
172
|
+
- test/integration/trident_test.rb
|
173
|
+
- test/test_helper.rb
|
174
|
+
- test/unit/trident/cli_test.rb
|
175
|
+
- test/unit/trident/pool_handler_test.rb
|
176
|
+
- test/unit/trident/pool_manager_test.rb
|
177
|
+
- test/unit/trident/pool_test.rb
|
178
|
+
- test/unit/trident/signal_handler_test.rb
|
179
|
+
- test/unit/trident/utils_test.rb
|
180
|
+
has_rdoc:
|