Page MenuHomePhabricator
Paste P8591

build_report.rb
ActivePublic

Authored by dduvall on Jun 5 2019, 1:42 AM.
Tags
None
Referenced Files
F29345120: raw.txt
Jun 5 2019, 1:44 AM
F29345112: raw.txt
Jun 5 2019, 1:42 AM
Subscribers
None
#!/usr/bin/env ruby
#
# Usage: build_report.rb builds.csv [category/column] [delim]
#
require 'csv'
require 'descriptive_statistics'
@category = (ARGV[1] || "builton").to_sym
@delim = ARGV[2] || ","
@stats = {
category: ->(c,d) { c },
builds: ->(c,d) { d.count },
variance: ->(c,d) { d.variance },
min: ->(c,d) { d.min },
max: ->(c,d) { d.max },
mean: ->(c,d) { d.mean },
median: ->(c,d) { d.median },
p75: ->(c,d) { d.percentile(75) },
p90: ->(c,d) { d.percentile(90) },
p95: ->(c,d) { d.percentile(95) },
}
builds = CSV.table(File.open(ARGV.first))
def out(data)
puts data.join(@delim)
end
def stats_select(builds, category, &selector)
selected = builds.select(&selector).select { |r| r[:result] == "SUCCESS" }
durations = selected.collect { |row| row[:duration] }
@stats.map { |stat,f| f.call(category, durations) }
end
out(@stats.keys)
out(stats_select(builds, "all") { true })
builds[@category].uniq.sort.each do |cat|
out(stats_select(builds, cat) { |row| row[@category] == cat })
end

Event Timeline

dduvall changed the title of this paste from untitled to build_report.rb.