mrflip-edamame 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.document +8 -0
- data/.gitignore +31 -0
- data/LICENSE.textile +21 -0
- data/README.textile +178 -0
- data/Rakefile +75 -0
- data/VERSION +1 -0
- data/app/edamame_san/config.ru +4 -0
- data/app/edamame_san/config.yml +17 -0
- data/app/edamame_san/config/.gitignore +1 -0
- data/app/edamame_san/edamame_san.rb +71 -0
- data/app/edamame_san/public/favicon.ico +0 -0
- data/app/edamame_san/public/images/edamame_logo.icns +0 -0
- data/app/edamame_san/public/images/edamame_logo.ico +0 -0
- data/app/edamame_san/public/images/edamame_logo.png +0 -0
- data/app/edamame_san/public/images/edamame_logo_2.icns +0 -0
- data/app/edamame_san/public/javascripts/application.js +8 -0
- data/app/edamame_san/public/javascripts/jquery/jquery-ui.js +8694 -0
- data/app/edamame_san/public/javascripts/jquery/jquery.js +4376 -0
- data/app/edamame_san/public/stylesheets/application.css +32 -0
- data/app/edamame_san/public/stylesheets/layout.css +88 -0
- data/app/edamame_san/views/layout.haml +13 -0
- data/app/edamame_san/views/load.haml +37 -0
- data/app/edamame_san/views/root.haml +25 -0
- data/bin/edamame-ps +2 -0
- data/bin/empty_all.rb +15 -0
- data/bin/stats.rb +13 -0
- data/bin/sync.rb +15 -0
- data/bin/test_run.rb +14 -0
- data/edamame.gemspec +110 -0
- data/lib/edamame.rb +193 -0
- data/lib/edamame/job.rb +134 -0
- data/lib/edamame/queue.rb +6 -0
- data/lib/edamame/queue/beanstalk.rb +132 -0
- data/lib/edamame/rescheduled.rb +89 -0
- data/lib/edamame/scheduling.rb +69 -0
- data/lib/edamame/store.rb +8 -0
- data/lib/edamame/store/base.rb +62 -0
- data/lib/edamame/store/tyrant_store.rb +50 -0
- data/lib/methods.txt +94 -0
- data/spec/edamame_spec.rb +7 -0
- data/spec/spec_helper.rb +9 -0
- data/utils/god/README-god.textile +54 -0
- data/utils/god/beanstalkd_god.rb +34 -0
- data/utils/god/edamame.god +30 -0
- data/utils/god/god-etc-init-dot-d-example +40 -0
- data/utils/god/god_email.rb +45 -0
- data/utils/god/god_process.rb +140 -0
- data/utils/god/god_site_config.rb +4 -0
- data/utils/god/sinatra_god.rb +36 -0
- data/utils/god/tyrant_god.rb +67 -0
- data/utils/simulation/Add Percent Variation.vi +0 -0
- data/utils/simulation/Harmonic Average.vi +0 -0
- data/utils/simulation/Rescheduling Simulation.aliases +3 -0
- data/utils/simulation/Rescheduling Simulation.lvlps +3 -0
- data/utils/simulation/Rescheduling Simulation.lvproj +22 -0
- data/utils/simulation/Rescheduling.vi +0 -0
- data/utils/simulation/Weighted Average.vi +0 -0
- metadata +135 -0
@@ -0,0 +1,36 @@
|
|
1
|
+
class SinatraGod < GodProcess
|
2
|
+
SinatraGod::CONFIG_DEFAULTS = {
|
3
|
+
:port => 12000,
|
4
|
+
:app_dirname => File.dirname(__FILE__)+'/../../app/edamame_san',
|
5
|
+
:monitor_group => 'sinatras',
|
6
|
+
:server_exe => '/usr/local/bin/shotgun',
|
7
|
+
}
|
8
|
+
def initialize *args
|
9
|
+
super *args
|
10
|
+
self.config = SinatraGod::CONFIG_DEFAULTS.compact.merge(self.config)
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.kind
|
14
|
+
:sinatra
|
15
|
+
end
|
16
|
+
|
17
|
+
def app_runner
|
18
|
+
File.join(config[:app_dirname], config[:app_name] || 'config.ru')
|
19
|
+
end
|
20
|
+
|
21
|
+
def start_command
|
22
|
+
[
|
23
|
+
config[:server_exe],
|
24
|
+
"--server=thin",
|
25
|
+
"--port=#{config[:port]}",
|
26
|
+
app_runner
|
27
|
+
].flatten.compact.join(" ")
|
28
|
+
end
|
29
|
+
# w.start = "thin start -C #{file} -o #{number}"
|
30
|
+
# w.stop = "thin stop -C #{file} -o #{number}"
|
31
|
+
# w.restart = "thin restart -C #{file} -o #{number}"
|
32
|
+
|
33
|
+
def self.are_you_there_god_its_me_sinatra *args
|
34
|
+
create *args
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,67 @@
|
|
1
|
+
|
2
|
+
#
|
3
|
+
# -host name : specify the host name or the address of the server. By default, every network address is bound.
|
4
|
+
# -port num : specify the port number. By default, it is 1978.
|
5
|
+
#
|
6
|
+
# -thnum num : specify the number of worker threads. By default, it is 8.
|
7
|
+
# -tout num : specify the timeout of each session in seconds. By default, no timeout is specified.
|
8
|
+
#
|
9
|
+
# -log path : output log messages into the file.
|
10
|
+
# -ld : log debug messages also.
|
11
|
+
# -le : log error messages only.
|
12
|
+
# -ulog path : specify the update log directory.
|
13
|
+
# -ulim num : specify the limit size of each update log file.
|
14
|
+
# -uas : use asynchronous I/O for the update log.
|
15
|
+
#
|
16
|
+
# -sid num : specify the server ID.
|
17
|
+
# -mhost name : specify the host name of the replication master server.
|
18
|
+
# -mport num : specify the port number of the replication master server.
|
19
|
+
# -rts path : specify the replication time stamp file.
|
20
|
+
# -rcc : check consistency of replication.
|
21
|
+
#
|
22
|
+
# -skel name : specify the name of the skeleton database library.
|
23
|
+
# -ext path : specify the script language extension file.
|
24
|
+
# -extpc name period : specify the function name and the calling period of a periodic command.
|
25
|
+
# -mask expr : specify the names of forbidden commands.
|
26
|
+
# -unmask expr : specify the names of allowed commands.
|
27
|
+
#
|
28
|
+
class TyrantGod < GodProcess
|
29
|
+
TyrantGod::CONFIG_DEFAULTS = {
|
30
|
+
:listen_on => '0.0.0.0',
|
31
|
+
:port => 11200,
|
32
|
+
:db_dirname => '/tmp',
|
33
|
+
#
|
34
|
+
:max_cpu_usage => 50.percent,
|
35
|
+
:max_mem_usage => 150.megabytes,
|
36
|
+
:monitor_group => 'tyrants',
|
37
|
+
:server_exe => '/usr/local/bin/ttserver',
|
38
|
+
}
|
39
|
+
|
40
|
+
def initialize *args
|
41
|
+
super *args
|
42
|
+
self.config = TyrantGod::CONFIG_DEFAULTS.compact.merge(self.config)
|
43
|
+
end
|
44
|
+
|
45
|
+
def self.kind
|
46
|
+
:ttyrant
|
47
|
+
end
|
48
|
+
|
49
|
+
def dbname
|
50
|
+
basename = config[:db_name] || (handle+'.tct')
|
51
|
+
File.join(config[:db_dirname], basename)
|
52
|
+
end
|
53
|
+
|
54
|
+
def start_command
|
55
|
+
[
|
56
|
+
config[:server_exe],
|
57
|
+
"-host #{config[:listen_on]}",
|
58
|
+
"-port #{config[:port]}",
|
59
|
+
"-log #{process_log_file}",
|
60
|
+
dbname
|
61
|
+
].flatten.compact.join(" ")
|
62
|
+
end
|
63
|
+
|
64
|
+
def self.are_you_there_god_its_me_beanstalkd *args
|
65
|
+
create *args
|
66
|
+
end
|
67
|
+
end
|
Binary file
|
Binary file
|
@@ -0,0 +1,22 @@
|
|
1
|
+
<?xml version='1.0' encoding='UTF-8'?>
|
2
|
+
<Project Type="Project" LVVersion="8608001">
|
3
|
+
<Item Name="My Computer" Type="My Computer">
|
4
|
+
<Property Name="server.app.propertiesEnabled" Type="Bool">true</Property>
|
5
|
+
<Property Name="server.control.propertiesEnabled" Type="Bool">true</Property>
|
6
|
+
<Property Name="server.tcp.enabled" Type="Bool">false</Property>
|
7
|
+
<Property Name="server.tcp.port" Type="Int">0</Property>
|
8
|
+
<Property Name="server.tcp.serviceName" Type="Str">My Computer/VI Server</Property>
|
9
|
+
<Property Name="server.tcp.serviceName.default" Type="Str">My Computer/VI Server</Property>
|
10
|
+
<Property Name="server.vi.callsEnabled" Type="Bool">true</Property>
|
11
|
+
<Property Name="server.vi.propertiesEnabled" Type="Bool">true</Property>
|
12
|
+
<Property Name="specify.custom.address" Type="Bool">false</Property>
|
13
|
+
<Item Name="Rescheduling.vi" Type="VI" URL="../Rescheduling.vi"/>
|
14
|
+
<Item Name="Weighted Average.vi" Type="VI" URL="../Weighted Average.vi"/>
|
15
|
+
<Item Name="Harmonic Average.vi" Type="VI" URL="../Harmonic Average.vi"/>
|
16
|
+
<Item Name="Add Percent Variation.vi" Type="VI" URL="../Add Percent Variation.vi"/>
|
17
|
+
<Item Name="Rescheduling with revisit.vi" Type="VI" URL="../Rescheduling with revisit.vi"/>
|
18
|
+
<Item Name="Rescheduling with revisit 2.vi" Type="VI" URL="../Rescheduling with revisit 2.vi"/>
|
19
|
+
<Item Name="Dependencies" Type="Dependencies"/>
|
20
|
+
<Item Name="Build Specifications" Type="Build"/>
|
21
|
+
</Item>
|
22
|
+
</Project>
|
Binary file
|
Binary file
|
metadata
ADDED
@@ -0,0 +1,135 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: mrflip-edamame
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Philip (flip) Kromer
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2009-08-23 00:00:00 -07:00
|
13
|
+
default_executable:
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: rspec
|
17
|
+
type: :development
|
18
|
+
version_requirement:
|
19
|
+
version_requirements: !ruby/object:Gem::Requirement
|
20
|
+
requirements:
|
21
|
+
- - ">="
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: "0"
|
24
|
+
version:
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: yard
|
27
|
+
type: :development
|
28
|
+
version_requirement:
|
29
|
+
version_requirements: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: "0"
|
34
|
+
version:
|
35
|
+
description: Edamame combines the Beanstalk priority queue with a Tokyo Tyrant database and God monitoring to produce a persistent distributed priority job queue system. Like beanstalk, it is fast, lightweight, distributed, priority queuing, reliable scheduling; it adds persistence, named jobs and job querying/enumeration.
|
36
|
+
email: flip@infochimps.org
|
37
|
+
executables:
|
38
|
+
- edamame-ps
|
39
|
+
- empty_all.rb
|
40
|
+
- stats.rb
|
41
|
+
- sync.rb
|
42
|
+
- test_run.rb
|
43
|
+
extensions: []
|
44
|
+
|
45
|
+
extra_rdoc_files:
|
46
|
+
- LICENSE.textile
|
47
|
+
- README.textile
|
48
|
+
files:
|
49
|
+
- .document
|
50
|
+
- .gitignore
|
51
|
+
- LICENSE.textile
|
52
|
+
- README.textile
|
53
|
+
- Rakefile
|
54
|
+
- VERSION
|
55
|
+
- app/edamame_san/config.ru
|
56
|
+
- app/edamame_san/config.yml
|
57
|
+
- app/edamame_san/config/.gitignore
|
58
|
+
- app/edamame_san/edamame_san.rb
|
59
|
+
- app/edamame_san/public/favicon.ico
|
60
|
+
- app/edamame_san/public/images/edamame_logo.icns
|
61
|
+
- app/edamame_san/public/images/edamame_logo.ico
|
62
|
+
- app/edamame_san/public/images/edamame_logo.png
|
63
|
+
- app/edamame_san/public/images/edamame_logo_2.icns
|
64
|
+
- app/edamame_san/public/javascripts/application.js
|
65
|
+
- app/edamame_san/public/javascripts/jquery/jquery-ui.js
|
66
|
+
- app/edamame_san/public/javascripts/jquery/jquery.js
|
67
|
+
- app/edamame_san/public/stylesheets/application.css
|
68
|
+
- app/edamame_san/public/stylesheets/layout.css
|
69
|
+
- app/edamame_san/views/layout.haml
|
70
|
+
- app/edamame_san/views/load.haml
|
71
|
+
- app/edamame_san/views/root.haml
|
72
|
+
- bin/edamame-ps
|
73
|
+
- bin/empty_all.rb
|
74
|
+
- bin/stats.rb
|
75
|
+
- bin/sync.rb
|
76
|
+
- bin/test_run.rb
|
77
|
+
- edamame.gemspec
|
78
|
+
- lib/edamame.rb
|
79
|
+
- lib/edamame/job.rb
|
80
|
+
- lib/edamame/queue.rb
|
81
|
+
- lib/edamame/queue/beanstalk.rb
|
82
|
+
- lib/edamame/rescheduled.rb
|
83
|
+
- lib/edamame/scheduling.rb
|
84
|
+
- lib/edamame/store.rb
|
85
|
+
- lib/edamame/store/base.rb
|
86
|
+
- lib/edamame/store/tyrant_store.rb
|
87
|
+
- lib/methods.txt
|
88
|
+
- spec/edamame_spec.rb
|
89
|
+
- spec/spec_helper.rb
|
90
|
+
- utils/god/README-god.textile
|
91
|
+
- utils/god/beanstalkd_god.rb
|
92
|
+
- utils/god/edamame.god
|
93
|
+
- utils/god/god-etc-init-dot-d-example
|
94
|
+
- utils/god/god_email.rb
|
95
|
+
- utils/god/god_process.rb
|
96
|
+
- utils/god/god_site_config.rb
|
97
|
+
- utils/god/sinatra_god.rb
|
98
|
+
- utils/god/tyrant_god.rb
|
99
|
+
- utils/simulation/Add Percent Variation.vi
|
100
|
+
- utils/simulation/Harmonic Average.vi
|
101
|
+
- utils/simulation/Rescheduling Simulation.aliases
|
102
|
+
- utils/simulation/Rescheduling Simulation.lvlps
|
103
|
+
- utils/simulation/Rescheduling Simulation.lvproj
|
104
|
+
- utils/simulation/Rescheduling.vi
|
105
|
+
- utils/simulation/Weighted Average.vi
|
106
|
+
has_rdoc: false
|
107
|
+
homepage: http://github.com/mrflip/edamame
|
108
|
+
licenses:
|
109
|
+
post_install_message:
|
110
|
+
rdoc_options:
|
111
|
+
- --charset=UTF-8
|
112
|
+
require_paths:
|
113
|
+
- lib
|
114
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
115
|
+
requirements:
|
116
|
+
- - ">="
|
117
|
+
- !ruby/object:Gem::Version
|
118
|
+
version: "0"
|
119
|
+
version:
|
120
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: "0"
|
125
|
+
version:
|
126
|
+
requirements: []
|
127
|
+
|
128
|
+
rubyforge_project:
|
129
|
+
rubygems_version: 1.3.5
|
130
|
+
signing_key:
|
131
|
+
specification_version: 3
|
132
|
+
summary: Beanstalk + Tokyo Tyrant = Edamame, a fast persistent distributed priority job queue.
|
133
|
+
test_files:
|
134
|
+
- spec/edamame_spec.rb
|
135
|
+
- spec/spec_helper.rb
|