laborantin 0.0.10 → 0.0.12
Sign up to get free protection for your applications and to get access to all the features.
- data/Rakefile +1 -1
- data/bin/labor +103 -12
- data/lib/laborantin.rb +1 -1
- data/lib/laborantin/core/scenario.rb +2 -1
- metadata +2 -2
data/Rakefile
CHANGED
data/bin/labor
CHANGED
@@ -9,12 +9,24 @@ require 'find'
|
|
9
9
|
require 'erb'
|
10
10
|
require 'yaml'
|
11
11
|
require 'net/ftp'
|
12
|
+
require 'logger'
|
12
13
|
|
13
14
|
class Command
|
14
15
|
attr_accessor :name, :description, :parser, :block, :options, :args
|
15
16
|
|
16
17
|
@@all = []
|
17
18
|
|
19
|
+
def find_and_require(dir, filter=[])
|
20
|
+
Find.find(dir) do |f|
|
21
|
+
test = if filter.empty?
|
22
|
+
File.extname(f) == '.rb'
|
23
|
+
else
|
24
|
+
filter.include? File.basename(f)
|
25
|
+
end
|
26
|
+
require f if test
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
18
30
|
def initialize(name, description='')
|
19
31
|
@@all << self
|
20
32
|
@name = name
|
@@ -66,9 +78,9 @@ Command.new('create', 'prepares a dir for laborantin measurements') do |c|
|
|
66
78
|
c.options[:environments] = []
|
67
79
|
c.options[:force] = false
|
68
80
|
c.opts do |o|
|
69
|
-
o.on('-s', '--scenarii=OPTIONAL', 'scenarii to build, comma separated', Array) {|c.options[:scenarii]
|
70
|
-
o.on('-e', '--environments=OPTIONAL', 'environments to prepare, comma separated', Array) {|c.options[:environments]
|
71
|
-
o.on_tail('-f', '--force', 'force overwrite') {|c.options[:force]
|
81
|
+
o.on('-s', '--scenarii=OPTIONAL', 'scenarii to build, comma separated', Array) {|val| c.options[:scenarii] = val}
|
82
|
+
o.on('-e', '--environments=OPTIONAL', 'environments to prepare, comma separated', Array) {|val| c.options[:environments] = val}
|
83
|
+
o.on_tail('-f', '--force', 'force overwrite') {|val| c.options[:force] = val}
|
72
84
|
o.on_tail('-h', '--help', 'shows this help and exit') {puts o; exit}
|
73
85
|
end
|
74
86
|
|
@@ -136,14 +148,19 @@ end
|
|
136
148
|
# Describe
|
137
149
|
|
138
150
|
Command.new('describe', "describes a laborantin's work") do |c|
|
151
|
+
c.options[:environments] = []
|
152
|
+
c.options[:scenarii] = []
|
139
153
|
c.opts do |o|
|
154
|
+
o.on('-s', '--scenarii=OPTIONAL', 'scenarii to build, comma separated', Array) {|val| c.options[:scenarii] = val}
|
155
|
+
o.on('-e', '--environments=OPTIONAL', 'environments to prepare, comma separated', Array) {|val| c.options[:environments] = val}
|
140
156
|
o.on_tail('-h', '--help', 'shows this help and exit') {puts o; exit}
|
141
157
|
end
|
142
158
|
c.execute do
|
143
159
|
FileUtils.cd(args.first || '.')
|
144
|
-
|
145
|
-
|
146
|
-
|
160
|
+
loaded_envs = c.options[:environments].map{|e| "#{e}.rb"}
|
161
|
+
loaded_scii = c.options[:scenarii].map{|e| "#{e}.rb"}
|
162
|
+
find_and_require('environments', loaded_envs)
|
163
|
+
find_and_require('scenarii', loaded_scii)
|
147
164
|
|
148
165
|
Laborantin::Environment.all.each {|e| p e}
|
149
166
|
Laborantin::Scenario.all.each {|s| p s}
|
@@ -153,14 +170,21 @@ end
|
|
153
170
|
# Scan
|
154
171
|
|
155
172
|
Command.new('scan', "scan a laborantin's dir for results") do |c|
|
173
|
+
c.options[:filter] = ''
|
174
|
+
c.options[:environments] = []
|
175
|
+
c.options[:scenarii] = []
|
156
176
|
c.opts do |o|
|
177
|
+
o.on('-s', '--scenarii=OPTIONAL', 'scenarii to build, comma separated', Array) {|val| c.options[:scenarii] = val}
|
178
|
+
o.on('-e', '--environments=OPTIONAL', 'environments to prepare, comma separated', Array) {|val| c.options[:environments] = val}
|
179
|
+
o.on('-p', '--parameters=OPTIONAL', 'filter parameters (ruby hash format)', String) {|val| c.options[:filter] = val}
|
157
180
|
o.on_tail('-h', '--help', 'shows this help and exit') {puts o; exit}
|
158
181
|
end
|
159
182
|
c.execute do
|
160
183
|
FileUtils.cd(args.first || '.')
|
161
|
-
|
162
|
-
|
163
|
-
|
184
|
+
loaded_envs = c.options[:environments].map{|e| "#{e}.rb"}
|
185
|
+
loaded_scii = c.options[:scenarii].map{|e| "#{e}.rb"}
|
186
|
+
find_and_require('environments', loaded_envs)
|
187
|
+
find_and_require('scenarii', loaded_scii)
|
164
188
|
|
165
189
|
envs = Laborantin::Environment.scan_resdir('results')
|
166
190
|
|
@@ -177,6 +201,70 @@ Command.new('scan', "scan a laborantin's dir for results") do |c|
|
|
177
201
|
end
|
178
202
|
end
|
179
203
|
|
204
|
+
# Find
|
205
|
+
|
206
|
+
Command.new('find', "find the results dir for a set of params/env") do |c|
|
207
|
+
c.options[:filter] = ''
|
208
|
+
c.options[:environments] = []
|
209
|
+
c.options[:scenarii] = []
|
210
|
+
c.opts do |o|
|
211
|
+
o.on('-s', '--scenarii=OPTIONAL', 'scenarii to build, comma separated', Array) {|val| c.options[:scenarii] = val}
|
212
|
+
o.on('-e', '--environments=OPTIONAL', 'environments to prepare, comma separated', Array) {|val| c.options[:environments] = val}
|
213
|
+
o.on('-p', '--parameters=OPTIONAL', 'filter parameters (ruby hash format)', String) {|val| c.options[:filter] = val}
|
214
|
+
o.on_tail('-h', '--help', 'shows this help and exit') {puts o; exit}
|
215
|
+
end
|
216
|
+
c.execute do
|
217
|
+
|
218
|
+
FileUtils.cd(args.first || '.')
|
219
|
+
loaded_envs = c.options[:environments].map{|e| "#{e}.rb"}
|
220
|
+
loaded_scii = c.options[:scenarii].map{|e| "#{e}.rb"}
|
221
|
+
find_and_require('environments', loaded_envs)
|
222
|
+
find_and_require('scenarii', loaded_scii)
|
223
|
+
|
224
|
+
envs = Laborantin::Environment.scan_resdir('results')
|
225
|
+
|
226
|
+
params = eval @options[:filter] unless @options[:filter].empty?
|
227
|
+
params.each_key{|k| params[k] = [params[k]].flatten} if params
|
228
|
+
params ||= {}
|
229
|
+
|
230
|
+
scs = envs.map{|env| env.populate }.flatten
|
231
|
+
|
232
|
+
scs.each do |sc|
|
233
|
+
to_filter = params.keys.find{|k| not params[k].include?(sc.params[k])}
|
234
|
+
unless to_filter
|
235
|
+
puts sc.rundir
|
236
|
+
puts sc.params.inspect
|
237
|
+
end
|
238
|
+
end
|
239
|
+
end
|
240
|
+
end
|
241
|
+
|
242
|
+
# Replay
|
243
|
+
|
244
|
+
Command.new('replay', 'scan existing runs, keep their raw results but rebuild all the products') do |c|
|
245
|
+
c.opts do |o|
|
246
|
+
o.on_tail('-h', '--help', 'shows this help and exit') {puts o; exit}
|
247
|
+
end
|
248
|
+
c.execute do
|
249
|
+
FileUtils.cd(args.first || '.')
|
250
|
+
Find.find('environments', 'scenarii') do |f|
|
251
|
+
require f if File.extname(f) == '.rb'
|
252
|
+
end
|
253
|
+
|
254
|
+
envs = Laborantin::Environment.scan_resdir('results')
|
255
|
+
envs.each{|env| env.loggers << Logger.new(STDOUT)}
|
256
|
+
|
257
|
+
scs = envs.map{|env| env.populate }.flatten
|
258
|
+
|
259
|
+
puts "Replaying everything"
|
260
|
+
|
261
|
+
scs.each do |sc|
|
262
|
+
sc.environment.log "Replaying products #{sc.params.inspect}"
|
263
|
+
sc.analyze!
|
264
|
+
end
|
265
|
+
end
|
266
|
+
end
|
267
|
+
|
180
268
|
# Run
|
181
269
|
|
182
270
|
Command.new('run', 'actually perform measurements') do |c|
|
@@ -184,9 +272,9 @@ Command.new('run', 'actually perform measurements') do |c|
|
|
184
272
|
c.options[:environments] = []
|
185
273
|
c.options[:filter] = ''
|
186
274
|
c.opts do |o|
|
187
|
-
o.on('-s', '--scenarii=OPTIONAL', 'scenarii to build, comma separated', Array) {|c.options[:scenarii]
|
188
|
-
o.on('-e', '--environments=OPTIONAL', 'environments to prepare, comma separated', Array) {|c.options[:environments]
|
189
|
-
o.on('-p', '--parameters=OPTIONAL', 'filter parameters (ruby hash format)', String) {|c.options[:filter]
|
275
|
+
o.on('-s', '--scenarii=OPTIONAL', 'scenarii to build, comma separated', Array) {|val| c.options[:scenarii] = val}
|
276
|
+
o.on('-e', '--environments=OPTIONAL', 'environments to prepare, comma separated', Array) {|val| c.options[:environments] = val}
|
277
|
+
o.on('-p', '--parameters=OPTIONAL', 'filter parameters (ruby hash format)', String) {|val| c.options[:filter] = val}
|
190
278
|
o.on_tail('-h', '--help', 'shows this help and exit') {puts o; exit}
|
191
279
|
end
|
192
280
|
c.execute do
|
@@ -235,6 +323,9 @@ Command.new('run', 'actually perform measurements') do |c|
|
|
235
323
|
end
|
236
324
|
end
|
237
325
|
|
326
|
+
# Run missing
|
327
|
+
# TODO scan existing params + filter
|
328
|
+
|
238
329
|
# FTP
|
239
330
|
|
240
331
|
Command.new('ftp-up', 'upload results via FTP') do |c|
|
data/lib/laborantin.rb
CHANGED
@@ -28,7 +28,7 @@ require File.join(File.dirname(__FILE__), 'laborantin', 'core', 'environment')
|
|
28
28
|
require File.join(File.dirname(__FILE__), 'laborantin', 'core', 'monkey_patches')
|
29
29
|
|
30
30
|
module Laborantin
|
31
|
-
VERSION = '0.0.
|
31
|
+
VERSION = '0.0.12'
|
32
32
|
AUTHORS = ['Lucas Di Cioccio']
|
33
33
|
WEBSITE = 'http://dicioccio.fr'
|
34
34
|
LICENSE = 'GNU GPL version 3'
|
@@ -57,7 +57,8 @@ module Laborantin
|
|
57
57
|
scenar = scklass.new(env)
|
58
58
|
scs << scenar
|
59
59
|
scenar.rundir = File.join(scklass.scenardir(env), r)
|
60
|
-
YAML.load_file(File.join(scenar.rundir, 'config.yaml'))
|
60
|
+
tst, params = YAML.load_file(File.join(scenar.rundir, 'config.yaml'))
|
61
|
+
scenar.params = params
|
61
62
|
end
|
62
63
|
end
|
63
64
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: laborantin
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.12
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Di Cioccio Lucas
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-
|
12
|
+
date: 2009-09-15 00:00:00 +00:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|