class Drntest::TestExecutor::Context
Public Class Methods
new(client, config, results, abort_tag)
click to toggle source
# File lib/drntest/test-executor.rb, line 58 def initialize(client, config, results, abort_tag) @client = client @config = config @results = results @abort_tag = abort_tag @requests = [] @responses = [] @logging = true @completion = nil @validation = nil end
Public Instance Methods
execute(operation)
click to toggle source
# File lib/drntest/test-executor.rb, line 70 def execute(operation) case operation when Directive execute_directive(operation) else execute_request(operation) end end
finish()
click to toggle source
# File lib/drntest/test-executor.rb, line 79 def finish consume_requests @results.actuals = @responses end
Private Instance Methods
abort_execution()
click to toggle source
# File lib/drntest/test-executor.rb, line 178 def abort_execution throw(@abort_tag) end
clean_response(request, raw_response)
click to toggle source
# File lib/drntest/test-executor.rb, line 146 def clean_response(request, raw_response) begin normalize_response(request, raw_response) rescue { "error" => { "message" => "failed to normalize response", "detail" => "#{$!.message} (#{$!.class})", "backtrace" => $!.backtrace, "response" => raw_response, }, } end end
consume_requests()
click to toggle source
# File lib/drntest/test-executor.rb, line 161 def consume_requests @requests.each do |request| request.wait end @requests.clear end
execute_directive(directive)
click to toggle source
# File lib/drntest/test-executor.rb, line 85 def execute_directive(directive) case directive when EnableLoggingDirective @logging = true consume_requests when DisableLoggingDirective @logging = false when OmitDirective @results.omit(directive.message) abort_execution when RequireCatalogVersionDirective if @config.catalog_version < directive.version message = "require catalog version #{directive.version} or later: " + "<#{@config.catalog_version}>" @results.omit(message) abort_execution end when EnableCompletionDirective @completion = true when DisableCompletionDirective @completion = false when EnableValidationDirective @validation = true when DisableValidationDirective @validation = false when SubscribeUntil @subscribe = true @timeout_seconds = directive.timeout_seconds @max_messages = directive.max_messages end end
execute_request(request)
click to toggle source
# File lib/drntest/test-executor.rb, line 118 def execute_request(request) options = {} options[:completion] = @completion unless @completion.nil? options[:validation] = @validation unless @validation.nil? if @logging responses = [] if @subscribe options[:subscription_timeout] = @timeout_seconds options[:max_messages] = @max_messages request_process = @client.subscribe(request, options) do |raw_response| responses << clean_response(request, raw_response) end request_process.wait @subscribe = false else request_process = @client.request(request, options) do |raw_response| responses << clean_response(request, raw_response) end request_process.wait end @responses.concat(normalize_responses(request, responses)) else @requests << @client.request(request, options) do end end end
normalize_response(request, response)
click to toggle source
# File lib/drntest/test-executor.rb, line 168 def normalize_response(request, response) normalizer = ResponseNormalizer.new(request, response) normalizer.normalize end
normalize_responses(request, responses)
click to toggle source
# File lib/drntest/test-executor.rb, line 173 def normalize_responses(request, responses) normalizer = ResponsesNormalizer.new(request, responses) normalizer.normalize end