class CrossSpec::Spec
Public Class Methods
trace(&block)
click to toggle source
# File lib/cross_spec/spec.rb, line 48 def self.trace(&block) spec = new DistributedTracing.trace do spec.instance_eval(&block) end end
Public Instance Methods
async(service:, data: nil)
click to toggle source
# File lib/cross_spec/spec.rb, line 55 def async(service:, data: nil) DistributedTracing.trace do str = JSON.dump( service: service, biomarkers: DistributedTracing.get, data: data ) CrossSpec.broadcast(str) end nil end
await(tasks:, options: {}, &block)
click to toggle source
# File lib/cross_spec/spec.rb, line 72 def await(tasks:, options: {}, &block) combined = { timeout: 5 }.merge(options) waiting = SpecWaiting.new(tasks) ::Timeout::timeout(combined[:timeout]) do CrossSpec.listen! do |message| waiting.process(message, &block) return waiting.data.length == 1 ? waiting.data.first : waiting.data if waiting.done? nil # nil keeps blocking listen! end end end
sync(service:, data: nil, tasks:, options: {}, &block)
click to toggle source
# File lib/cross_spec/spec.rb, line 67 def sync(service:, data: nil, tasks:, options: {}, &block) async(service: service, data: data) await(tasks: tasks, options: options, &block) end