Module: Gauge::Processors::ExecutionHandler Private

Included in:
Gauge::Processors
Defined in:
lib/processors/execution_handler.rb

Overview

This module is part of a private API. You should avoid using this module if possible, as it may be removed or be changed in the future.

API:

  • private

Instance Method Summary collapse

Instance Method Details

#create_param_values(parameters) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

API:

  • private



77
78
79
80
81
82
83
84
85
86
87
88
# File 'lib/processors/execution_handler.rb', line 77

def create_param_values parameters
  params = []
  parameters.each do |param|
    if ((param.parameterType == Messages::Parameter::ParameterType::Table) ||(param.parameterType == Messages::Parameter::ParameterType::Special_Table))
      gtable = Gauge::Table.new(param.table)
      params.push gtable
    else
      params.push param.value
    end
  end
  return params
end

#get_code_snippet(filename, number) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

API:

  • private



57
58
59
60
61
# File 'lib/processors/execution_handler.rb', line 57

def get_code_snippet(filename, number)
  return nil if number < 1
  line = File.readlines(filename)[number-1]
  number.to_s + " | " + line.strip + "\n\n"
end

#handle_failure(message, exception, execution_time, recoverable) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

API:

  • private



39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/processors/execution_handler.rb', line 39

def handle_failure(message, exception, execution_time, recoverable)
  project_dir = File.basename(Dir.getwd)
  stacktrace =  exception.backtrace.select {|x| x.match(project_dir) && !x.match(File.join(project_dir, "vendor"))}.join("\n")+"\n"
  filepath =  stacktrace.split("\n").first.split(":").first
  line_number =  stacktrace.split("\n").first.split("/").last.split(":")[1]
  code_snippet = "\n" + '> ' + get_code_snippet(filepath, line_number.to_i)
  execution_status_response =
    Messages::ExecutionStatusResponse.new(
      :executionResult => Messages::ProtoExecutionResult.new(:failed => true,
       :recoverableError => recoverable,
       :errorMessage => exception.message,
       :stackTrace => code_snippet + stacktrace,
       :executionTime => execution_time,
       :screenShot => screenshot_bytes))
  Messages::Message.new(:messageType => Messages::Message::MessageType::ExecutionStatusResponse,
    :messageId => message.messageId, :executionStatusResponse => execution_status_response)
end

#handle_hooks_execution(hooks, message, currentExecutionInfo, should_filter = true) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

API:

  • private



24
25
26
27
28
29
30
31
32
# File 'lib/processors/execution_handler.rb', line 24

def handle_hooks_execution(hooks, message, currentExecutionInfo, should_filter=true)
  start_time= Time.now
  execution_error = Executor.execute_hooks(hooks, currentExecutionInfo, should_filter)
  if execution_error == nil
    return handle_pass message, time_elapsed_since(start_time)
  else
    return handle_failure message, execution_error, time_elapsed_since(start_time), false
  end
end

#handle_pass(message, execution_time) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

API:

  • private



34
35
36
37
# File 'lib/processors/execution_handler.rb', line 34

def handle_pass(message, execution_time)
  execution_status_response = Messages::ExecutionStatusResponse.new(:executionResult => Messages::ProtoExecutionResult.new(:failed => false, :executionTime => execution_time))
  Messages::Message.new(:messageType => Messages::Message::MessageType::ExecutionStatusResponse, :messageId => message.messageId, :executionStatusResponse => execution_status_response)
end

#screenshot_bytesObject

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

API:

  • private



63
64
65
66
67
68
69
70
71
# File 'lib/processors/execution_handler.rb', line 63

def screenshot_bytes
  return nil if (ENV['screenshot_on_failure'] || "").downcase == "false" || which("gauge_screenshot").nil?
  begin
    Configuration.instance.screengrabber.call
  rescue Exception => e
    Gauge::Log.error e
    return nil
  end
end

#time_elapsed_since(start_time) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

API:

  • private



73
74
75
# File 'lib/processors/execution_handler.rb', line 73

def time_elapsed_since(start_time)
  ((Time.now-start_time) * 1000).round
end