Class: Datadog::CI::ConcurrentSpan

Inherits:
Span
  • Object
show all
Defined in:
lib/datadog/ci/concurrent_span.rb

Overview

Represents a single part of a test run that can be safely shared between threads. Examples of shared objects are: TestSession, TestModule, TestSpan.

Direct Known Subclasses

TestModule, TestSession, TestSuite

Instance Attribute Summary

Attributes inherited from Span

#tracer_span

Instance Method Summary collapse

Methods inherited from Span

#clear_tag, #failed!, #failed?, #git_branch, #git_commit_sha, #git_repository_url, #id, #name, #os_architecture, #os_platform, #os_version, #passed!, #passed?, #runtime_name, #runtime_version, #service, #set_default_tags, #set_environment_runtime_tags, #skipped!, #skipped?, #to_s, #trace_id, #type, #undefined?

Constructor Details

#initialize(tracer_span) ⇒ ConcurrentSpan

Returns a new instance of ConcurrentSpan.



12
13
14
15
16
17
# File 'lib/datadog/ci/concurrent_span.rb', line 12

def initialize(tracer_span)
  super

  # we use Monitor instead of Mutex because it is reentrant
  @mutex = Monitor.new
end

Instance Method Details

#finishvoid

This method returns an undefined value.

Finishes the span. This method is thread-safe.



44
45
46
# File 'lib/datadog/ci/concurrent_span.rb', line 44

def finish
  synchronize { super }
end

#get_tag(key) ⇒ String

Gets tag value by key. This method is thread-safe.

Parameters:

  • key (String)

    the key of the tag.

Returns:

  • (String)

    the value of the tag.



22
23
24
# File 'lib/datadog/ci/concurrent_span.rb', line 22

def get_tag(key)
  synchronize { super }
end

#set_metric(key, value) ⇒ void

This method returns an undefined value.

Sets metric value by key. This method is thread-safe.

Parameters:

  • key (String)

    the key of the metric.

  • value (Numeric)

    the value of the metric.



38
39
40
# File 'lib/datadog/ci/concurrent_span.rb', line 38

def set_metric(key, value)
  synchronize { super }
end

#set_tag(key, value) ⇒ void

This method returns an undefined value.

Sets tag value by key. This method is thread-safe.

Parameters:

  • key (String)

    the key of the tag.

  • value (String)

    the value of the tag.



30
31
32
# File 'lib/datadog/ci/concurrent_span.rb', line 30

def set_tag(key, value)
  synchronize { super }
end

#set_tags(tags) ⇒ void

This method returns an undefined value.

Sets multiple tags at once. This method is thread-safe.

Parameters:

  • tags (Hash[String, String])

    the tags to set.



51
52
53
# File 'lib/datadog/ci/concurrent_span.rb', line 51

def set_tags(tags)
  synchronize { super }
end

#synchronizeObject



55
56
57
# File 'lib/datadog/ci/concurrent_span.rb', line 55

def synchronize
  @mutex.synchronize { yield }
end