rbbt-util 5.33.19 → 5.34.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/lib/rbbt/hpc/batch.rb +3 -3
- data/lib/rbbt/hpc/orchestrate.rb +6 -2
- data/lib/rbbt/util/misc/inspect.rb +2 -1
- data/lib/rbbt/util/misc/pipes.rb +9 -1
- data/lib/rbbt/util/open.rb +1 -0
- data/lib/rbbt/workflow/util/provenance.rb +6 -4
- data/lib/rbbt/workflow.rb +1 -1
- data/share/rbbt_commands/hpc/list +7 -3
- data/share/rbbt_commands/hpc/orchestrate +18 -8
- data/share/rbbt_commands/hpc/task +11 -10
- data/share/rbbt_commands/lsf/list +7 -3
- data/share/rbbt_commands/lsf/orchestrate +18 -8
- data/share/rbbt_commands/lsf/task +11 -10
- data/share/rbbt_commands/slurm/list +7 -3
- data/share/rbbt_commands/slurm/orchestrate +18 -8
- data/share/rbbt_commands/slurm/task +11 -10
- data/share/rbbt_commands/workflow/task +1 -1
- data/test/rbbt/util/misc/test_pipes.rb +37 -0
- data/test/rbbt/util/test_open.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: d612eb753e090f1221cd4d3b2c17e13e0e87f4cea7bc76c920717ba8055cbe8b
|
|
4
|
+
data.tar.gz: 9bea5062d3d73982ef5a35526c39ca3208fae9b817233344045144cbd0619920
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 2d1e5c3fe701bb42049ab34bbe74fddb3e9a0a29d292cc8c8fbfc93049b0004be5b449aa83939de8924f2cdf19a720c044ea7491aacc96037e1acd549bd1201f
|
|
7
|
+
data.tar.gz: 54abc57de1a43b04337d8f9ad27668af2d07db21dbac7ee925728d6058dee280624385ef5b40280c0ec2439b6d80ed350bc136c9bef15116ba56292532d5e210
|
data/lib/rbbt/hpc/batch.rb
CHANGED
|
@@ -555,7 +555,7 @@ env > #{batch_options[:fenv]}
|
|
|
555
555
|
|
|
556
556
|
batch_job = run_template(batch_dir, dry_run)
|
|
557
557
|
|
|
558
|
-
return batch_job unless tail
|
|
558
|
+
return [batch_job, batch_dir] unless tail
|
|
559
559
|
|
|
560
560
|
t_monitor = Thread.new do
|
|
561
561
|
self.follow_job(batch_dir, :STDERR)
|
|
@@ -570,8 +570,8 @@ env > #{batch_options[:fenv]}
|
|
|
570
570
|
Open.ln path + '.info', job.path + '.info' if Open.exists?(path + '.info')
|
|
571
571
|
Open.ln path + '.files', job.path + '.files' if Open.exists?(path + '.files')
|
|
572
572
|
end
|
|
573
|
-
|
|
574
|
-
|
|
573
|
+
|
|
574
|
+
[batch_job, batch_dir]
|
|
575
575
|
end
|
|
576
576
|
end
|
|
577
577
|
|
data/lib/rbbt/hpc/orchestrate.rb
CHANGED
|
@@ -49,6 +49,8 @@ module HPC
|
|
|
49
49
|
Log.high "Compute #{batches.length} batches"
|
|
50
50
|
|
|
51
51
|
batch_ids = {}
|
|
52
|
+
last_id = nil
|
|
53
|
+
last_dir = nil
|
|
52
54
|
while batches.any?
|
|
53
55
|
top = batches.select{|b| b[:deps].nil? || (b[:deps] - batch_ids.keys).empty? }.first
|
|
54
56
|
raise "No batch without unmet dependencies" if top.nil?
|
|
@@ -87,10 +89,12 @@ module HPC
|
|
|
87
89
|
puts Log.color(:yellow, "Options: ") + job_options.inspect
|
|
88
90
|
batch_ids[top] = top[:top_level].task_signature
|
|
89
91
|
else
|
|
90
|
-
id = run_job(top[:top_level], job_options)
|
|
91
|
-
batch_ids[top] = id
|
|
92
|
+
id, dir = run_job(top[:top_level], job_options)
|
|
93
|
+
last_id = batch_ids[top] = id
|
|
94
|
+
last_dir = dir
|
|
92
95
|
end
|
|
93
96
|
end
|
|
97
|
+
[last_id, last_dir]
|
|
94
98
|
end
|
|
95
99
|
|
|
96
100
|
end
|
|
@@ -56,7 +56,8 @@ module Misc
|
|
|
56
56
|
":" << obj.to_s
|
|
57
57
|
when String
|
|
58
58
|
if obj.length > 100
|
|
59
|
-
|
|
59
|
+
digest = Misc.digest(obj)
|
|
60
|
+
"'" << obj.slice(0,30) << "<...#{obj.length} - #{digest[0..4]}...>" << obj.slice(-10,30)<< "'"
|
|
60
61
|
else
|
|
61
62
|
"'" << obj << "'"
|
|
62
63
|
end
|
data/lib/rbbt/util/misc/pipes.rb
CHANGED
|
@@ -92,7 +92,6 @@ module Misc
|
|
|
92
92
|
ConcurrentStream.setup sout, :pids => [pid]
|
|
93
93
|
else
|
|
94
94
|
|
|
95
|
-
|
|
96
95
|
ConcurrentStream.setup sin, :pair => sout
|
|
97
96
|
ConcurrentStream.setup sout, :pair => sin
|
|
98
97
|
|
|
@@ -782,4 +781,13 @@ module Misc
|
|
|
782
781
|
ConcurrentStream.setup out, :threads => monitor_thread
|
|
783
782
|
end
|
|
784
783
|
|
|
784
|
+
def self.open_gz_pipe
|
|
785
|
+
sout = Misc.open_pipe do |sin|
|
|
786
|
+
yield sin
|
|
787
|
+
sin.close
|
|
788
|
+
end
|
|
789
|
+
|
|
790
|
+
Open.gzip(sout)
|
|
791
|
+
end
|
|
792
|
+
|
|
785
793
|
end
|
data/lib/rbbt/util/open.rb
CHANGED
|
@@ -100,11 +100,13 @@ class Step
|
|
|
100
100
|
step.dependencies.each do |dep|
|
|
101
101
|
if dep.input_dependencies.any?
|
|
102
102
|
dep.input_dependencies.each do |id|
|
|
103
|
-
input_name = dep.recursive_inputs.fields.zip(dep.recursive_inputs).select{|f,d|
|
|
103
|
+
input_name, _dep = dep.recursive_inputs.fields.zip(dep.recursive_inputs).select{|f,d|
|
|
104
104
|
d == id || (String === d && d.start_with?(id.files_dir)) || (Array === d && d.include?(id))
|
|
105
|
-
}.last
|
|
106
|
-
|
|
107
|
-
|
|
105
|
+
}.last
|
|
106
|
+
if input_name
|
|
107
|
+
input_dependencies[id] ||= []
|
|
108
|
+
input_dependencies[id] << [dep, input_name]
|
|
109
|
+
end
|
|
108
110
|
end
|
|
109
111
|
end
|
|
110
112
|
end
|
data/lib/rbbt/workflow.rb
CHANGED
|
@@ -414,7 +414,7 @@ module Workflow
|
|
|
414
414
|
end if task.required_inputs
|
|
415
415
|
|
|
416
416
|
if missing_inputs.length == 1
|
|
417
|
-
raise ParameterException, "Input #{missing_inputs.first} is required but was not provided or is nil"
|
|
417
|
+
raise ParameterException, "Input '#{missing_inputs.first}' is required but was not provided or is nil"
|
|
418
418
|
end
|
|
419
419
|
|
|
420
420
|
if missing_inputs.length > 1
|
|
@@ -193,7 +193,11 @@ workdir.glob("**/command.batch").sort_by{|f| File.mtime(f)}.each do |fcmd|
|
|
|
193
193
|
if different_system
|
|
194
194
|
status = exit_status ? (exit_status == 0 ? Log.color(:green, "Done") : Log.color(:red, "Error")) + " (#{ id })" : Log.color(:green, id)
|
|
195
195
|
else
|
|
196
|
-
status = exit_status ? (exit_status == 0 ? Log.color(:green, "Done") : Log.color(:red, "Error")) + " (#{ id })" : (running_jobs.include?(id) || $norunningjobs ? Log.color(:green, id) : Log.color(:red, id) )
|
|
196
|
+
#status = exit_status ? (exit_status == 0 ? Log.color(:green, "Done") : Log.color(:red, "Error")) + " (#{ id })" : (running_jobs.include?(id) || $norunningjobs ? Log.color(:green, id) : Log.color(:red, id) )
|
|
197
|
+
status = exit_status ? (exit_status == 0 ? Log.color(:green, "Done") : Log.color(:red, "Error")) + " (#{ id })" :
|
|
198
|
+
(running_jobs.include?(id) || $norunningjobs ?
|
|
199
|
+
(is_running ? Log.color(:green, id) : Log.color(:yellow, id) ) :
|
|
200
|
+
Log.color(:red, id) )
|
|
197
201
|
end
|
|
198
202
|
prog_rep = []
|
|
199
203
|
if options[:progress]
|
|
@@ -204,7 +208,7 @@ workdir.glob("**/command.batch").sort_by{|f| File.mtime(f)}.each do |fcmd|
|
|
|
204
208
|
step = Step.new step_path
|
|
205
209
|
step.load_dependencies_from_info
|
|
206
210
|
has_bar = false
|
|
207
|
-
|
|
211
|
+
[step].reverse.each do |j|
|
|
208
212
|
next if j.done?
|
|
209
213
|
if j.file(:progress).exists?
|
|
210
214
|
bar = Log::ProgressBar.new
|
|
@@ -352,5 +356,5 @@ workdir.glob("**/command.batch").sort_by{|f| File.mtime(f)}.each do |fcmd|
|
|
|
352
356
|
end
|
|
353
357
|
|
|
354
358
|
puts
|
|
355
|
-
puts "Found #{count} jobs"
|
|
359
|
+
puts Log.color :clear, "Found #{count} jobs"
|
|
356
360
|
|
|
@@ -49,17 +49,27 @@ HPC::BATCH_MODULE = HPC.batch_system batch_system
|
|
|
49
49
|
raise ParameterException.new("Could not detect batch_system: #{Misc.fingerprint batch_system}") if HPC::BATCH_MODULE.nil?
|
|
50
50
|
|
|
51
51
|
class Step
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
52
|
+
def join
|
|
53
|
+
HPC::BATCH_MODULE.wait_for_job(@batch_job_dir)
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def run(no_load = true)
|
|
57
|
+
if done?
|
|
58
|
+
self.load
|
|
59
|
+
else
|
|
60
|
+
begin
|
|
61
|
+
Log.debug "Issuing SLURM job for #{self.path}"
|
|
62
|
+
@batch_job_id, @batch_job_dir = HPC::BATCH_MODULE.orchestrate_job(self, SOPT::GOT_OPTIONS.merge($slurm_options))
|
|
63
|
+
if no_load
|
|
64
|
+
self
|
|
55
65
|
else
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
HPC::BATCH_MODULE.orchestrate_job(self, SOPT::GOT_OPTIONS.merge($slurm_options))
|
|
59
|
-
rescue HPC::SBATCH
|
|
60
|
-
end
|
|
66
|
+
join
|
|
67
|
+
self.load
|
|
61
68
|
end
|
|
69
|
+
rescue HPC::SBATCH
|
|
70
|
+
end
|
|
62
71
|
end
|
|
72
|
+
end
|
|
63
73
|
end
|
|
64
74
|
|
|
65
75
|
ARGV.concat ['--detach']
|
|
@@ -47,17 +47,18 @@ HPC::BATCH_MODULE = HPC.batch_system batch_system
|
|
|
47
47
|
raise ParameterException.new("Could not detect batch_system: #{Misc.fingerprint batch_system}") if HPC::BATCH_MODULE.nil?
|
|
48
48
|
|
|
49
49
|
class Step
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
50
|
+
|
|
51
|
+
def run(*args)
|
|
52
|
+
if done?
|
|
53
|
+
self.load
|
|
54
|
+
else
|
|
55
|
+
begin
|
|
56
|
+
Log.debug "Issuing SLURM job for #{self.path}"
|
|
57
|
+
HPC::BATCH_MODULE.run_job(self, SOPT::GOT_OPTIONS.merge($slurm_options))
|
|
58
|
+
rescue HPC::SBATCH
|
|
59
|
+
end
|
|
60
60
|
end
|
|
61
|
+
end
|
|
61
62
|
end
|
|
62
63
|
|
|
63
64
|
ARGV.concat ["-W", $slurm_options[:workflows]] if $slurm_options[:workflows]
|
|
@@ -193,7 +193,11 @@ workdir.glob("**/command.batch").sort_by{|f| File.mtime(f)}.each do |fcmd|
|
|
|
193
193
|
if different_system
|
|
194
194
|
status = exit_status ? (exit_status == 0 ? Log.color(:green, "Done") : Log.color(:red, "Error")) + " (#{ id })" : Log.color(:green, id)
|
|
195
195
|
else
|
|
196
|
-
status = exit_status ? (exit_status == 0 ? Log.color(:green, "Done") : Log.color(:red, "Error")) + " (#{ id })" : (running_jobs.include?(id) || $norunningjobs ? Log.color(:green, id) : Log.color(:red, id) )
|
|
196
|
+
#status = exit_status ? (exit_status == 0 ? Log.color(:green, "Done") : Log.color(:red, "Error")) + " (#{ id })" : (running_jobs.include?(id) || $norunningjobs ? Log.color(:green, id) : Log.color(:red, id) )
|
|
197
|
+
status = exit_status ? (exit_status == 0 ? Log.color(:green, "Done") : Log.color(:red, "Error")) + " (#{ id })" :
|
|
198
|
+
(running_jobs.include?(id) || $norunningjobs ?
|
|
199
|
+
(is_running ? Log.color(:green, id) : Log.color(:yellow, id) ) :
|
|
200
|
+
Log.color(:red, id) )
|
|
197
201
|
end
|
|
198
202
|
prog_rep = []
|
|
199
203
|
if options[:progress]
|
|
@@ -204,7 +208,7 @@ workdir.glob("**/command.batch").sort_by{|f| File.mtime(f)}.each do |fcmd|
|
|
|
204
208
|
step = Step.new step_path
|
|
205
209
|
step.load_dependencies_from_info
|
|
206
210
|
has_bar = false
|
|
207
|
-
|
|
211
|
+
[step].reverse.each do |j|
|
|
208
212
|
next if j.done?
|
|
209
213
|
if j.file(:progress).exists?
|
|
210
214
|
bar = Log::ProgressBar.new
|
|
@@ -352,5 +356,5 @@ workdir.glob("**/command.batch").sort_by{|f| File.mtime(f)}.each do |fcmd|
|
|
|
352
356
|
end
|
|
353
357
|
|
|
354
358
|
puts
|
|
355
|
-
puts "Found #{count} jobs"
|
|
359
|
+
puts Log.color :clear, "Found #{count} jobs"
|
|
356
360
|
|
|
@@ -49,17 +49,27 @@ HPC::BATCH_MODULE = HPC.batch_system batch_system
|
|
|
49
49
|
raise ParameterException.new("Could not detect batch_system: #{Misc.fingerprint batch_system}") if HPC::BATCH_MODULE.nil?
|
|
50
50
|
|
|
51
51
|
class Step
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
52
|
+
def join
|
|
53
|
+
HPC::BATCH_MODULE.wait_for_job(@batch_job_dir)
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def run(no_load = true)
|
|
57
|
+
if done?
|
|
58
|
+
self.load
|
|
59
|
+
else
|
|
60
|
+
begin
|
|
61
|
+
Log.debug "Issuing SLURM job for #{self.path}"
|
|
62
|
+
@batch_job_id, @batch_job_dir = HPC::BATCH_MODULE.orchestrate_job(self, SOPT::GOT_OPTIONS.merge($slurm_options))
|
|
63
|
+
if no_load
|
|
64
|
+
self
|
|
55
65
|
else
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
HPC::BATCH_MODULE.orchestrate_job(self, SOPT::GOT_OPTIONS.merge($slurm_options))
|
|
59
|
-
rescue HPC::SBATCH
|
|
60
|
-
end
|
|
66
|
+
join
|
|
67
|
+
self.load
|
|
61
68
|
end
|
|
69
|
+
rescue HPC::SBATCH
|
|
70
|
+
end
|
|
62
71
|
end
|
|
72
|
+
end
|
|
63
73
|
end
|
|
64
74
|
|
|
65
75
|
ARGV.concat ['--detach']
|
|
@@ -47,17 +47,18 @@ HPC::BATCH_MODULE = HPC.batch_system batch_system
|
|
|
47
47
|
raise ParameterException.new("Could not detect batch_system: #{Misc.fingerprint batch_system}") if HPC::BATCH_MODULE.nil?
|
|
48
48
|
|
|
49
49
|
class Step
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
50
|
+
|
|
51
|
+
def run(*args)
|
|
52
|
+
if done?
|
|
53
|
+
self.load
|
|
54
|
+
else
|
|
55
|
+
begin
|
|
56
|
+
Log.debug "Issuing SLURM job for #{self.path}"
|
|
57
|
+
HPC::BATCH_MODULE.run_job(self, SOPT::GOT_OPTIONS.merge($slurm_options))
|
|
58
|
+
rescue HPC::SBATCH
|
|
59
|
+
end
|
|
60
60
|
end
|
|
61
|
+
end
|
|
61
62
|
end
|
|
62
63
|
|
|
63
64
|
ARGV.concat ["-W", $slurm_options[:workflows]] if $slurm_options[:workflows]
|
|
@@ -193,7 +193,11 @@ workdir.glob("**/command.batch").sort_by{|f| File.mtime(f)}.each do |fcmd|
|
|
|
193
193
|
if different_system
|
|
194
194
|
status = exit_status ? (exit_status == 0 ? Log.color(:green, "Done") : Log.color(:red, "Error")) + " (#{ id })" : Log.color(:green, id)
|
|
195
195
|
else
|
|
196
|
-
status = exit_status ? (exit_status == 0 ? Log.color(:green, "Done") : Log.color(:red, "Error")) + " (#{ id })" : (running_jobs.include?(id) || $norunningjobs ? Log.color(:green, id) : Log.color(:red, id) )
|
|
196
|
+
#status = exit_status ? (exit_status == 0 ? Log.color(:green, "Done") : Log.color(:red, "Error")) + " (#{ id })" : (running_jobs.include?(id) || $norunningjobs ? Log.color(:green, id) : Log.color(:red, id) )
|
|
197
|
+
status = exit_status ? (exit_status == 0 ? Log.color(:green, "Done") : Log.color(:red, "Error")) + " (#{ id })" :
|
|
198
|
+
(running_jobs.include?(id) || $norunningjobs ?
|
|
199
|
+
(is_running ? Log.color(:green, id) : Log.color(:yellow, id) ) :
|
|
200
|
+
Log.color(:red, id) )
|
|
197
201
|
end
|
|
198
202
|
prog_rep = []
|
|
199
203
|
if options[:progress]
|
|
@@ -204,7 +208,7 @@ workdir.glob("**/command.batch").sort_by{|f| File.mtime(f)}.each do |fcmd|
|
|
|
204
208
|
step = Step.new step_path
|
|
205
209
|
step.load_dependencies_from_info
|
|
206
210
|
has_bar = false
|
|
207
|
-
|
|
211
|
+
[step].reverse.each do |j|
|
|
208
212
|
next if j.done?
|
|
209
213
|
if j.file(:progress).exists?
|
|
210
214
|
bar = Log::ProgressBar.new
|
|
@@ -352,5 +356,5 @@ workdir.glob("**/command.batch").sort_by{|f| File.mtime(f)}.each do |fcmd|
|
|
|
352
356
|
end
|
|
353
357
|
|
|
354
358
|
puts
|
|
355
|
-
puts "Found #{count} jobs"
|
|
359
|
+
puts Log.color :clear, "Found #{count} jobs"
|
|
356
360
|
|
|
@@ -49,17 +49,27 @@ HPC::BATCH_MODULE = HPC.batch_system batch_system
|
|
|
49
49
|
raise ParameterException.new("Could not detect batch_system: #{Misc.fingerprint batch_system}") if HPC::BATCH_MODULE.nil?
|
|
50
50
|
|
|
51
51
|
class Step
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
52
|
+
def join
|
|
53
|
+
HPC::BATCH_MODULE.wait_for_job(@batch_job_dir)
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def run(no_load = true)
|
|
57
|
+
if done?
|
|
58
|
+
self.load
|
|
59
|
+
else
|
|
60
|
+
begin
|
|
61
|
+
Log.debug "Issuing SLURM job for #{self.path}"
|
|
62
|
+
@batch_job_id, @batch_job_dir = HPC::BATCH_MODULE.orchestrate_job(self, SOPT::GOT_OPTIONS.merge($slurm_options))
|
|
63
|
+
if no_load
|
|
64
|
+
self
|
|
55
65
|
else
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
HPC::BATCH_MODULE.orchestrate_job(self, SOPT::GOT_OPTIONS.merge($slurm_options))
|
|
59
|
-
rescue HPC::SBATCH
|
|
60
|
-
end
|
|
66
|
+
join
|
|
67
|
+
self.load
|
|
61
68
|
end
|
|
69
|
+
rescue HPC::SBATCH
|
|
70
|
+
end
|
|
62
71
|
end
|
|
72
|
+
end
|
|
63
73
|
end
|
|
64
74
|
|
|
65
75
|
ARGV.concat ['--detach']
|
|
@@ -47,17 +47,18 @@ HPC::BATCH_MODULE = HPC.batch_system batch_system
|
|
|
47
47
|
raise ParameterException.new("Could not detect batch_system: #{Misc.fingerprint batch_system}") if HPC::BATCH_MODULE.nil?
|
|
48
48
|
|
|
49
49
|
class Step
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
50
|
+
|
|
51
|
+
def run(*args)
|
|
52
|
+
if done?
|
|
53
|
+
self.load
|
|
54
|
+
else
|
|
55
|
+
begin
|
|
56
|
+
Log.debug "Issuing SLURM job for #{self.path}"
|
|
57
|
+
HPC::BATCH_MODULE.run_job(self, SOPT::GOT_OPTIONS.merge($slurm_options))
|
|
58
|
+
rescue HPC::SBATCH
|
|
59
|
+
end
|
|
60
60
|
end
|
|
61
|
+
end
|
|
61
62
|
end
|
|
62
63
|
|
|
63
64
|
ARGV.concat ["-W", $slurm_options[:workflows]] if $slurm_options[:workflows]
|
|
@@ -284,4 +284,41 @@ line4
|
|
|
284
284
|
end
|
|
285
285
|
end
|
|
286
286
|
end
|
|
287
|
+
|
|
288
|
+
def test_gz_pipe
|
|
289
|
+
text =<<-EOF
|
|
290
|
+
line1
|
|
291
|
+
line2
|
|
292
|
+
line3
|
|
293
|
+
line4
|
|
294
|
+
EOF
|
|
295
|
+
|
|
296
|
+
TmpFile.with_file nil, :extension => 'txt.gz' do |file|
|
|
297
|
+
sout = Misc.open_gz_pipe do |sin|
|
|
298
|
+
text.split("\n").each do |line|
|
|
299
|
+
sin.puts line
|
|
300
|
+
end
|
|
301
|
+
end
|
|
302
|
+
|
|
303
|
+
Open.mkdir File.basename(file)
|
|
304
|
+
thr1 = Misc.consume_stream(sout, true, file)
|
|
305
|
+
thr1.join
|
|
306
|
+
assert Open.gzip?(file)
|
|
307
|
+
assert_equal text, Open.read(file)
|
|
308
|
+
end
|
|
309
|
+
end
|
|
310
|
+
|
|
311
|
+
def test_open_pipe_error
|
|
312
|
+
sout = Misc.open_pipe do |sin|
|
|
313
|
+
10.times do |i|
|
|
314
|
+
sin.puts "line #{i}"
|
|
315
|
+
end
|
|
316
|
+
raise
|
|
317
|
+
end
|
|
318
|
+
|
|
319
|
+
TmpFile.with_file do |tmp|
|
|
320
|
+
#Misc.consume_stream(sout, false, tmp)
|
|
321
|
+
Open.write(tmp, sout)
|
|
322
|
+
end
|
|
323
|
+
end
|
|
287
324
|
end
|
data/test/rbbt/util/test_open.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: rbbt-util
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 5.
|
|
4
|
+
version: 5.34.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Miguel Vazquez
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2022-
|
|
11
|
+
date: 2022-06-03 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rake
|