Class: Datadog::CI::Span

Inherits:
Object
  • Object
show all
Includes:
DRb::DRbUndumped
Defined in:
lib/datadog/ci/span.rb

Overview

Represents a single part of a test run. Could be a session, suite, test, or any custom span.

Direct Known Subclasses

ConcurrentSpan, Test

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(tracer_span) ⇒ Span

Returns a new instance of Span.



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

def initialize(tracer_span)
  @tracer_span = tracer_span
end

Instance Attribute Details

#tracer_spanObject (readonly)

Returns the value of attribute tracer_span.



20
21
22
# File 'lib/datadog/ci/span.rb', line 20

def tracer_span
  @tracer_span
end

Instance Method Details

#base_commit_shaString?

Returns the base commit SHA for the pull request, if available.

Returns:

  • (String, nil)

    the base commit SHA or nil if not set.



182
183
184
# File 'lib/datadog/ci/span.rb', line 182

def base_commit_sha
  tracer_span.get_tag(Ext::Git::TAG_PULL_REQUEST_BASE_BRANCH_SHA)
end

#clear_tag(key) ⇒ void

This method returns an undefined value.

Removes tag by key.

Parameters:

  • key (String)

    the key of the tag.



124
125
126
# File 'lib/datadog/ci/span.rb', line 124

def clear_tag(key)
  tracer_span.clear_tag(key)
end

#failed!(exception: nil) ⇒ void

This method returns an undefined value.

Sets the status of the span to "fail".

Parameters:

  • exception (Exception) (defaults to: nil)

    the exception that caused the test to fail.



90
91
92
93
94
# File 'lib/datadog/ci/span.rb', line 90

def failed!(exception: nil)
  tracer_span.status = 1
  tracer_span.set_tag(Ext::Test::TAG_STATUS, Ext::Test::Status::FAIL)
  tracer_span.set_error(exception) unless exception.nil?
end

#failed?bool

Checks whether span status is FAIL.

Returns:

  • (bool)

    true if span status is FAIL



65
66
67
# File 'lib/datadog/ci/span.rb', line 65

def failed?
  tracer_span.get_tag(Ext::Test::TAG_STATUS) == Ext::Test::Status::FAIL
end

#finishvoid

This method returns an undefined value.

Finishes the span.



145
146
147
# File 'lib/datadog/ci/span.rb', line 145

def finish
  tracer_span.finish
end

#get_metric(key) ⇒ Numeric

Gets metric value by key.

Parameters:

  • key (String)

    the key of the metric.

Returns:

  • (Numeric)

    value the value of the metric.



131
132
133
# File 'lib/datadog/ci/span.rb', line 131

def get_metric(key)
  tracer_span.get_metric(key)
end

#get_tag(key) ⇒ String

Gets tag value by key.

Parameters:

  • key (String)

    the key of the tag.

Returns:

  • (String)

    the value of the tag.



109
110
111
# File 'lib/datadog/ci/span.rb', line 109

def get_tag(key)
  tracer_span.get_tag(key)
end

#git_branchString

Returns the git branch name extracted from the environment.

Returns:

  • (String)

    the branch.



170
171
172
# File 'lib/datadog/ci/span.rb', line 170

def git_branch
  tracer_span.get_tag(Ext::Git::TAG_BRANCH)
end

#git_commit_shaString

Returns the latest commit SHA extracted from the environment.

Returns:

  • (String)

    the commit SHA of the last commit.



164
165
166
# File 'lib/datadog/ci/span.rb', line 164

def git_commit_sha
  tracer_span.get_tag(Ext::Git::TAG_COMMIT_SHA)
end

#git_repository_urlString

Returns the git repository URL extracted from the environment.

Returns:

  • (String)

    the repository URL.



158
159
160
# File 'lib/datadog/ci/span.rb', line 158

def git_repository_url
  tracer_span.get_tag(Ext::Git::TAG_REPOSITORY_URL)
end

#git_tagString?

Returns the git tag extracted from the environment.

Returns:

  • (String, nil)

    the tag or nil if not set.



176
177
178
# File 'lib/datadog/ci/span.rb', line 176

def git_tag
  tracer_span.get_tag(Ext::Git::TAG_TAG)
end

#idInteger

Returns the ID of the span.

Returns:

  • (Integer)

    the ID of the span.



27
28
29
# File 'lib/datadog/ci/span.rb', line 27

def id
  tracer_span.id
end

#nameString

Returns the name of the span.

Returns:

  • (String)

    the name of the span.



37
38
39
# File 'lib/datadog/ci/span.rb', line 37

def name
  tracer_span.name
end

#os_architectureString

Returns the OS architecture extracted from the environment.

Returns:

  • (String)

    OS arch.



188
189
190
# File 'lib/datadog/ci/span.rb', line 188

def os_architecture
  tracer_span.get_tag(Ext::Test::TAG_OS_ARCHITECTURE)
end

#os_platformString

Returns the OS platform extracted from the environment.

Returns:

  • (String)

    OS platform.



194
195
196
# File 'lib/datadog/ci/span.rb', line 194

def os_platform
  tracer_span.get_tag(Ext::Test::TAG_OS_PLATFORM)
end

#os_versionString

Returns the OS version extracted from the environment.

Returns:

  • (String)

    OS version.



200
201
202
# File 'lib/datadog/ci/span.rb', line 200

def os_version
  tracer_span.get_tag(Ext::Test::TAG_OS_VERSION)
end

#passed!void

This method returns an undefined value.

Sets the status of the span to "pass".



83
84
85
# File 'lib/datadog/ci/span.rb', line 83

def passed!
  tracer_span.set_tag(Ext::Test::TAG_STATUS, Ext::Test::Status::PASS)
end

#passed?bool

Checks whether span status is PASS.

Returns:

  • (bool)

    true if span status is PASS



59
60
61
# File 'lib/datadog/ci/span.rb', line 59

def passed?
  tracer_span.get_tag(Ext::Test::TAG_STATUS) == Ext::Test::Status::PASS
end

#runtime_nameString

Returns the runtime name extracted from the environment.

Returns:

  • (String)

    runtime name.



206
207
208
# File 'lib/datadog/ci/span.rb', line 206

def runtime_name
  tracer_span.get_tag(Ext::Test::TAG_RUNTIME_NAME)
end

#runtime_versionString

Returns the runtime version extracted from the environment.

Returns:

  • (String)

    runtime version.



212
213
214
# File 'lib/datadog/ci/span.rb', line 212

def runtime_version
  tracer_span.get_tag(Ext::Test::TAG_RUNTIME_VERSION)
end

#serviceString

Returns the service name of the span.

Returns:

  • (String)

    the service name of the span.



42
43
44
# File 'lib/datadog/ci/span.rb', line 42

def service
  tracer_span.service
end

#set_default_tagsObject



232
233
234
# File 'lib/datadog/ci/span.rb', line 232

def set_default_tags
  tracer_span.set_tag(Ext::Test::TAG_SPAN_KIND, Ext::Test::SPAN_KIND_TEST)
end

#set_environment_runtime_tagsObject



223
224
225
226
227
228
229
230
# File 'lib/datadog/ci/span.rb', line 223

def set_environment_runtime_tags
  tracer_span.set_tag(Ext::Test::TAG_OS_ARCHITECTURE, ::RbConfig::CONFIG["host_cpu"])
  tracer_span.set_tag(Ext::Test::TAG_OS_PLATFORM, ::RbConfig::CONFIG["host_os"])
  tracer_span.set_tag(Ext::Test::TAG_OS_VERSION, Core::Environment::Platform.kernel_release)
  tracer_span.set_tag(Ext::Test::TAG_RUNTIME_NAME, Core::Environment::Ext::LANG_ENGINE)
  tracer_span.set_tag(Ext::Test::TAG_RUNTIME_VERSION, Core::Environment::Ext::ENGINE_VERSION)
  tracer_span.set_tag(Ext::Test::TAG_COMMAND, Utils::TestRun.command)
end

#set_metric(key, value) ⇒ void

This method returns an undefined value.

Sets metric value by key.

Parameters:

  • key (String)

    the key of the metric.

  • value (Numeric)

    the value of the metric.



139
140
141
# File 'lib/datadog/ci/span.rb', line 139

def set_metric(key, value)
  tracer_span.set_metric(key, value)
end

#set_tag(key, value) ⇒ void

This method returns an undefined value.

Sets tag value by key.

Parameters:

  • key (String)

    the key of the tag.

  • value (String)

    the value of the tag.



117
118
119
# File 'lib/datadog/ci/span.rb', line 117

def set_tag(key, value)
  tracer_span.set_tag(key, value)
end

#set_tags(tags) ⇒ void

This method returns an undefined value.

Sets multiple tags at once.

Parameters:

  • tags (Hash[String, String])

    the tags to set.



152
153
154
# File 'lib/datadog/ci/span.rb', line 152

def set_tags(tags)
  tracer_span.set_tags(tags)
end

#skipped!(exception: nil, reason: nil) ⇒ void

This method returns an undefined value.

Sets the status of the span to "skip".

Parameters:

  • exception (Exception) (defaults to: nil)

    the exception that caused the test to fail.

  • reason (String) (defaults to: nil)

    the reason why the test was skipped.



100
101
102
103
104
# File 'lib/datadog/ci/span.rb', line 100

def skipped!(exception: nil, reason: nil)
  tracer_span.set_tag(Ext::Test::TAG_STATUS, Ext::Test::Status::SKIP)
  tracer_span.set_error(exception) unless exception.nil?
  tracer_span.set_tag(Ext::Test::TAG_SKIP_REASON, reason) unless reason.nil?
end

#skipped?bool

Checks whether span status is SKIP.

Returns:

  • (bool)

    true if span status is SKIP



71
72
73
# File 'lib/datadog/ci/span.rb', line 71

def skipped?
  tracer_span.get_tag(Ext::Test::TAG_STATUS) == Ext::Test::Status::SKIP
end

#source_fileString?

Source file path where the test or test suite defined (relative to git repository root).

Returns:

  • (String)

    the source file path of the test

  • (nil)

    if the source file path is not found



219
220
221
# File 'lib/datadog/ci/span.rb', line 219

def source_file
  get_tag(Ext::Test::TAG_SOURCE_FILE)
end

#statusString?

Returns the current status of the span.

Returns:

  • (String, nil)

    the status of the span ("pass", "fail", "skip"), or nil if not set



77
78
79
# File 'lib/datadog/ci/span.rb', line 77

def status
  tracer_span.get_tag(Ext::Test::TAG_STATUS)
end

#to_sObject



236
237
238
# File 'lib/datadog/ci/span.rb', line 236

def to_s
  "#{self.class}(name:#{name},tracer_span:#{@tracer_span})"
end

#trace_idInteger

Returns the trace ID of the trace this span belongs to.

Returns:

  • (Integer)

    the trace ID of the trace this span belongs to



32
33
34
# File 'lib/datadog/ci/span.rb', line 32

def trace_id
  tracer_span.trace_id
end

#typeString

Returns the type of the span (for example "test" or type that was provided to [Datadog::CI.trace]).

Returns:

  • (String)

    the type of the span (for example "test" or type that was provided to [Datadog::CI.trace]).



47
48
49
# File 'lib/datadog/ci/span.rb', line 47

def type
  tracer_span.type
end

#undefined?bool

Checks whether span status is not set yet.

Returns:

  • (bool)

    true if span does not have status



53
54
55
# File 'lib/datadog/ci/span.rb', line 53

def undefined?
  tracer_span.get_tag(Ext::Test::TAG_STATUS).nil?
end