# frozen_string_literal: true module MemoryUsageHelper extend ActiveSupport::Concern def gather_memory_data(csv_path) write_csv_entry(csv_path, { example_group_path: TestEnv.topmost_example_group[:location], example_group_description: TestEnv.topmost_example_group[:description], time: Time.current, job_name: ENV['CI_JOB_NAME'] }.merge(get_memory_usage)) end def write_csv_entry(path, entry) CSV.open(path, "a", headers: entry.keys, write_headers: !File.exist?(path)) do |file| file << entry.values end end def get_memory_usage output, status = Gitlab::Popen.popen(%w(free -m)) abort "`free -m` return code is #{status}: #{output}" unless status == 0 result = output.split("\n")[1].split(" ")[1..-1] attrs = %i(m_total m_used m_free m_shared m_buffers_cache m_available).freeze attrs.zip(result).to_h end included do |config| config.after(:all) do gather_memory_data(ENV['MEMORY_TEST_PATH']) if ENV['MEMORY_TEST_PATH'] end end end