#!/usr/bin/env ruby # frozen_string_literal: true abort "usage: #{__FILE__} " unless ARGV.length == 2 memory_bundle_mem_file_name_prefix = ARGV.first test_count = ARGV.last.to_i results = [] (1..test_count).each do |i| report_filename = "#{memory_bundle_mem_file_name_prefix}#{i}.txt" stats = nil File.foreach(report_filename).detect do |line| stats = /TOP: (?.*) MiB/.match(line) end abort 'failed to process the benchmark output' unless stats total_mibs = stats[:total_mibs_str].to_f results << total_mibs end res = results.sort median = (res[(test_count - 1) / 2] + res[test_count / 2]) / 2.0 METRIC_NAME = "total_memory_used_by_dependencies_on_boot_prod_env_mb" puts "# TYPE #{METRIC_NAME} gauge" puts "# UNIT #{METRIC_NAME} mebibytes" puts "#{METRIC_NAME} #{median.round(1)}"