Class: CC::Analyzer::Engine

Inherits:
Object
  • Object
show all
Defined in:
lib/cc/analyzer/engine.rb

Constant Summary collapse

EngineFailure =
Class.new(StandardError)
EngineTimeout =
Class.new(StandardError)

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name, metadata, code_path, config, label) ⇒ Engine

Returns a new instance of Engine.



11
12
13
14
15
16
17
# File 'lib/cc/analyzer/engine.rb', line 11

def initialize(name, , code_path, config, label)
  @name = name
  @metadata = 
  @code_path = code_path
  @config = config
  @label = label.to_s
end

Instance Attribute Details

#nameObject (readonly)

Returns the value of attribute name.



9
10
11
# File 'lib/cc/analyzer/engine.rb', line 9

def name
  @name
end

Instance Method Details

#run(stdout_io, container_listener) ⇒ Object



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/cc/analyzer/engine.rb', line 19

def run(stdout_io, container_listener)
  composite_listener = CompositeContainerListener.new(
    container_listener,
    LoggingContainerListener.new(name, Analyzer.logger),
    StatsdContainerListener.new(name, Analyzer.statsd),
    RaisingContainerListener.new(name, EngineFailure, EngineTimeout),
  )

  container = Container.new(
    image: @metadata["image"],
    command: @metadata["command"],
    name: container_name,
    listener: composite_listener,
  )

  container.on_output("\0") do |output|
    unless output_filter.filter?(output)
      stdout_io.write(output)
    end
  end

  container.run(container_options)
end