Class: Ukiryu::Execution::ExecutionMetadata

Inherits:
Object
  • Object
show all
Defined in:
lib/ukiryu/execution/metadata.rb

Overview

Execution metadata

Provides timing and execution environment information

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(started_at:, finished_at:, timeout: nil) ⇒ ExecutionMetadata

Returns a new instance of ExecutionMetadata.



11
12
13
14
15
16
# File 'lib/ukiryu/execution/metadata.rb', line 11

def initialize(started_at:, finished_at:, timeout: nil)
  @started_at = started_at
  @finished_at = finished_at
  @timeout = timeout
  @duration = calculate_duration
end

Instance Attribute Details

#durationObject (readonly)

Returns the value of attribute duration.



9
10
11
# File 'lib/ukiryu/execution/metadata.rb', line 9

def duration
  @duration
end

#finished_atObject (readonly)

Returns the value of attribute finished_at.



9
10
11
# File 'lib/ukiryu/execution/metadata.rb', line 9

def finished_at
  @finished_at
end

#started_atObject (readonly)

Returns the value of attribute started_at.



9
10
11
# File 'lib/ukiryu/execution/metadata.rb', line 9

def started_at
  @started_at
end

#timeoutObject (readonly)

Returns the value of attribute timeout.



9
10
11
# File 'lib/ukiryu/execution/metadata.rb', line 9

def timeout
  @timeout
end

Instance Method Details

#calculate_durationFloat?

Calculate duration from start and finish times

Returns:

  • (Float, nil)

    duration in seconds



21
22
23
24
25
# File 'lib/ukiryu/execution/metadata.rb', line 21

def calculate_duration
  return nil unless @started_at && @finished_at

  @finished_at - @started_at
end

#duration_millisecondsFloat?

Get execution duration in milliseconds

Returns:

  • (Float, nil)

    duration in milliseconds



37
38
39
# File 'lib/ukiryu/execution/metadata.rb', line 37

def duration_milliseconds
  @duration ? @duration * 1000 : nil
end

#duration_secondsFloat?

Get execution duration in seconds

Returns:

  • (Float, nil)

    duration in seconds



30
31
32
# File 'lib/ukiryu/execution/metadata.rb', line 30

def duration_seconds
  @duration
end

#formatted_durationString

Format duration for display

Returns:

  • (String)

    formatted duration



53
54
55
56
57
58
59
60
61
62
63
64
65
# File 'lib/ukiryu/execution/metadata.rb', line 53

def formatted_duration
  return 'N/A' unless @duration

  if @duration < 1
    "#{(@duration * 1000).round(2)}ms"
  elsif @duration < 60
    "#{@duration.round(3)}s"
  else
    minutes = @duration / 60
    seconds = @duration % 60
    "#{minutes.to_i}m#{seconds.round(1)}s"
  end
end

#inspectString

Inspect

Returns:

  • (String)

    inspection string



92
93
94
# File 'lib/ukiryu/execution/metadata.rb', line 92

def inspect
  "#<Ukiryu::Execution::ExecutionMetadata duration=#{formatted_duration}>"
end

#timed_out?Boolean

Check if execution timed out

Returns:

  • (Boolean)

    true if timeout was set and exceeded



44
45
46
47
48
# File 'lib/ukiryu/execution/metadata.rb', line 44

def timed_out?
  return false unless @timeout && @duration

  @duration > @timeout
end

#to_hHash

Convert to hash

Returns:

  • (Hash)

    metadata as hash



70
71
72
73
74
75
76
77
78
79
80
# File 'lib/ukiryu/execution/metadata.rb', line 70

def to_h
  {
    started_at: @started_at,
    finished_at: @finished_at,
    duration: @duration,
    duration_seconds: @duration,
    duration_milliseconds: duration_milliseconds,
    timeout: @timeout,
    timed_out: timed_out?
  }
end

#to_sString

String representation

Returns:

  • (String)

    formatted string



85
86
87
# File 'lib/ukiryu/execution/metadata.rb', line 85

def to_s
  "duration: #{formatted_duration}"
end