Module: Ibex::CLIReduceReporting

Included in:
CLIReduce
Defined in:
lib/ibex/cli/reduce_reporting.rb,
sig/ibex/cli/reduce_reporting.rbs

Overview

Versioned machine and terminal reports for bounded delta reduction.

Instance Method Summary collapse

Instance Method Details

#default_reduction_boundsreduction_bounds

RBS:

  • () -> reduction_bounds

Returns:

  • (reduction_bounds)


36
37
38
39
40
41
42
43
44
45
# File 'lib/ibex/cli/reduce_reporting.rb', line 36

def default_reduction_bounds
  {
    max_trials: @options.fetch(:reduce_max_trials, 1_000),
    timeout_seconds: @options.fetch(:reduce_timeout, BoundedSubprocess::DEFAULT_TIMEOUT_SECONDS),
    max_output_bytes: @options.fetch(
      :reduce_max_output_bytes, BoundedSubprocess::DEFAULT_MAX_OUTPUT_BYTES
    ),
    max_input_bytes: @options.fetch(:reduce_max_input_bytes, CLIReduce::DEFAULT_MAX_INPUT_BYTES)
  }
end

#reduction_budget_report(details) ⇒ reduction_budget_document

RBS:

  • (reduction_budget_details details) -> reduction_budget_document

Parameters:

  • details (reduction_budget_details)

Returns:

  • (reduction_budget_document)


26
27
28
29
30
31
32
33
# File 'lib/ibex/cli/reduce_reporting.rb', line 26

def reduction_budget_report(details)
  {
    ibex_report: "reduce", schema_version: 2, result: "budget_exhausted",
    mode: @reduction_mode || @options.fetch(:reduce_mode, :tokens),
    bounded: true, bounds: @reduction_bounds || default_reduction_bounds,
    budget: details
  }
end

#reduction_success_report(result) ⇒ reduction_success_document

RBS:

  • (DeltaReducer::Result result) -> reduction_success_document

Parameters:

Returns:

  • (reduction_success_document)


13
14
15
16
17
18
19
20
21
22
23
# File 'lib/ibex/cli/reduce_reporting.rb', line 13

def reduction_success_report(result)
  items = result.items #: Array[String | Integer]
  {
    ibex_report: "reduce", schema_version: 2,
    result: result.complete ? "minimized" : "incomplete",
    mode: @reduction_mode, original_size: result.original_size,
    minimized_size: items.length, trials: result.trials,
    complete: result.complete, minimized: items, bounded: true,
    bounds: @reduction_bounds
  }
end

#write_reduction_budget(report) ⇒ void

This method returns an undefined value.

RBS:

  • (reduction_budget_document report) -> void

Parameters:

  • report (reduction_budget_document)


61
62
63
64
65
66
67
68
69
# File 'lib/ibex/cli/reduce_reporting.rb', line 61

def write_reduction_budget(report)
  if @options.fetch(:reduce_format, "json") == "json"
    @stdout.puts JSON.pretty_generate(report)
    return
  end

  @stdout.puts("result=#{report[:result]}")
  @stdout.puts("budget=#{report[:budget].inspect}")
end

#write_reduction_success(report) ⇒ void

This method returns an undefined value.

RBS:

  • (reduction_success_document report) -> void

Parameters:

  • report (reduction_success_document)


48
49
50
51
52
53
54
55
56
57
58
# File 'lib/ibex/cli/reduce_reporting.rb', line 48

def write_reduction_success(report)
  if @options.fetch(:reduce_format, "json") == "json"
    @stdout.puts JSON.pretty_generate(report)
    return
  end

  @stdout.puts("result=#{report[:result]}")
  @stdout.puts("mode=#{report[:mode]} original_size=#{report[:original_size]} " \
               "minimized_size=#{report[:minimized_size]} trials=#{report[:trials]}")
  @stdout.puts("minimized=#{report[:minimized].inspect}")
end