Class: SecurityBox::Result

Inherits:
Object
  • Object
show all
Defined in:
lib/security_box/result.rb

Overview

Result of a sandbox execution. Possible statuses:

:ok             

rpcs (stage 6): the host-side transcript of guest RPC calls, one frozen "args", "ok", "result"|"error" entry per call, or nil when no rpcs were configured (or none were called).

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(status:, value: nil, error: nil, stdout: "", stderr: "", fuel_used: nil, duration_ms: nil, guest_duration_ms: nil, rpcs: nil) ⇒ Result

Returns a new instance of Result.



19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/security_box/result.rb', line 19

def initialize(status:, value: nil, error: nil, stdout: "", stderr: "",
               fuel_used: nil, duration_ms: nil, guest_duration_ms: nil,
               rpcs: nil)
  @status = status
  @value = value
  @error = error
  @stdout = stdout
  @stderr = stderr
  @fuel_used = fuel_used
  @duration_ms = duration_ms
  @guest_duration_ms = guest_duration_ms
  @rpcs = rpcs
  freeze
end

Instance Attribute Details

#duration_ms ⇒ Object (readonly)

Returns the value of attribute duration_ms.



16
17
18
# File 'lib/security_box/result.rb', line 16

def duration_ms
  @duration_ms
end

#error ⇒ Object (readonly)

Returns the value of attribute error.



16
17
18
# File 'lib/security_box/result.rb', line 16

def error
  @error
end

#fuel_used ⇒ Object (readonly)

Returns the value of attribute fuel_used.



16
17
18
# File 'lib/security_box/result.rb', line 16

def fuel_used
  @fuel_used
end

#guest_duration_ms ⇒ Object (readonly)

Returns the value of attribute guest_duration_ms.



16
17
18
# File 'lib/security_box/result.rb', line 16

def guest_duration_ms
  @guest_duration_ms
end

#rpcs ⇒ Object (readonly)

Returns the value of attribute rpcs.



16
17
18
# File 'lib/security_box/result.rb', line 16

def rpcs
  @rpcs
end

#status ⇒ Object (readonly)

Returns the value of attribute status.



16
17
18
# File 'lib/security_box/result.rb', line 16

def status
  @status
end

#stderr ⇒ Object (readonly)

Returns the value of attribute stderr.



16
17
18
# File 'lib/security_box/result.rb', line 16

def stderr
  @stderr
end

#stdout ⇒ Object (readonly)

Returns the value of attribute stdout.



16
17
18
# File 'lib/security_box/result.rb', line 16

def stdout
  @stdout
end

#value ⇒ Object (readonly)

Returns the value of attribute value.



16
17
18
# File 'lib/security_box/result.rb', line 16

def value
  @value
end

Class Method Details

.worker_unavailable(worker_index) ⇒ Object

Factory for the "the worker never answered" sandbox failure (dead or stalled Ractor worker, or the pop deadline elapsed).



40
41
42
43
# File 'lib/security_box/result.rb', line 40

def self.worker_unavailable(worker_index)
  new(status: :sandbox_error,
      stderr: "security_box: RactorPool worker #{worker_index} did not answer\n")
end

Instance Method Details

#ok? ⇒ Boolean

Returns:

  • (Boolean)


34
35
36
# File 'lib/security_box/result.rb', line 34

def ok?
  @status == :ok
end

#to_h ⇒ Object



45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/security_box/result.rb', line 45

def to_h
  {
    status: @status,
    value: @value,
    error: @error,
    stdout: @stdout,
    stderr: @stderr,
    fuel_used: @fuel_used,
    duration_ms: @duration_ms,
    guest_duration_ms: @guest_duration_ms,
    rpcs: @rpcs
  }
end