Module: Mxrb::Oql::WorkloadBaseline
- Defined in:
- lib/mxrb/oql/workload_baseline.rb
Overview
Serializable workload snapshot and deterministic regression comparison.
Constant Summary collapse
- METRICS =
%w[total_time_ms mean_time_ms io_time_ms temp_writes rows].freeze
Class Method Summary collapse
Class Method Details
.compare(report, baseline) ⇒ Object
36 37 38 39 40 |
# File 'lib/mxrb/oql/workload_baseline.rb', line 36 def compare(report, baseline) previous = load(baseline).fetch('queries') deltas = report.queries.flat_map { query_deltas(_1, previous[_1.query_id.to_s]) } WorkloadComparison.new(deltas.freeze) end |
.dump(report) ⇒ Object
20 21 22 23 24 25 |
# File 'lib/mxrb/oql/workload_baseline.rb', line 20 def dump(report) JSON.pretty_generate( version: 1, engine: report.engine, captured_at: Time.now.utc.iso8601, queries: report.queries.to_h { [_1.query_id.to_s, _1.to_h] } ) << "\n" end |
.load(source) ⇒ Object
27 28 29 30 31 32 33 34 |
# File 'lib/mxrb/oql/workload_baseline.rb', line 27 def load(source) payload = source.is_a?(Hash) ? source : JSON.parse(File.read(source)) raise ArgumentError, 'unsupported workload baseline version' unless payload['version'] == 1 payload rescue JSON::ParserError, Errno::ENOENT => e raise ArgumentError, "cannot read workload baseline: #{e.}" end |