Skip to content

Commit

Permalink
Rename ITR module to TestOptimisation and ITR::Runner to TestOptimisa…
Browse files Browse the repository at this point in the history
…tion::Component
  • Loading branch information
anmarchenko committed Jul 2, 2024
1 parent a891eba commit c6b9e38
Show file tree
Hide file tree
Showing 34 changed files with 109 additions and 111 deletions.
4 changes: 2 additions & 2 deletions ext/datadog_cov/datadog_cov.c
Original file line number Diff line number Diff line change
Expand Up @@ -236,8 +236,8 @@ void Init_datadog_cov(void)
{
VALUE mDatadog = rb_define_module("Datadog");
VALUE mCI = rb_define_module_under(mDatadog, "CI");
VALUE mITR = rb_define_module_under(mCI, "ITR");
VALUE mCoverage = rb_define_module_under(mITR, "Coverage");
VALUE mTestOptimisation = rb_define_module_under(mCI, "TestOptimisation");
VALUE mCoverage = rb_define_module_under(mTestOptimisation, "Coverage");
VALUE cDatadogCov = rb_define_class_under(mCoverage, "DDCov", rb_cObject);

rb_define_alloc_func(cDatadogCov, dd_cov_allocate);
Expand Down
4 changes: 2 additions & 2 deletions lib/datadog/ci.rb
Original file line number Diff line number Diff line change
Expand Up @@ -365,8 +365,8 @@ def test_visibility
components.test_visibility
end

def itr_runner
components.itr
def test_optimisation
components.test_optimisation
end
end
end
Expand Down
22 changes: 11 additions & 11 deletions lib/datadog/ci/configuration/components.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@

require_relative "../ext/settings"
require_relative "../git/tree_uploader"
require_relative "../itr/runner"
require_relative "../itr/coverage/transport"
require_relative "../itr/coverage/writer"
require_relative "../test_optimisation/component"
require_relative "../test_optimisation/coverage/transport"
require_relative "../test_optimisation/coverage/writer"
require_relative "../test_visibility/component"
require_relative "../test_visibility/flush"
require_relative "../test_visibility/null_component"
Expand All @@ -21,10 +21,10 @@ module CI
module Configuration
# Adds CI behavior to Datadog trace components
module Components
attr_reader :test_visibility, :itr
attr_reader :test_visibility, :test_optimisation

def initialize(settings)
@itr = nil
@test_optimisation = nil
@test_visibility = TestVisibility::NullComponent.new

# Activate CI mode if enabled
Expand All @@ -39,7 +39,7 @@ def shutdown!(replacement = nil)
super

@test_visibility&.shutdown!
@itr&.shutdown!
@test_optimisation&.shutdown!
end

def activate_ci!(settings)
Expand Down Expand Up @@ -99,8 +99,8 @@ def activate_ci!(settings)

settings.tracing.test_mode.writer_options = trace_writer_options

# @type ivar @itr: Datadog::CI::ITR::Runner
@itr = ITR::Runner.new(
# @type ivar @test_optimisation: Datadog::CI::TestOptimisation::Component
@test_optimisation = TestOptimisation::Component.new(
api: test_visibility_api,
dd_env: settings.env,
config_tags: custom_configuration(settings),
Expand All @@ -111,8 +111,8 @@ def activate_ci!(settings)
)

@test_visibility = TestVisibility::Component.new(
test_optimisation: @test_optimisation,
test_suite_level_visibility_enabled: !settings.ci.force_test_level_visibility,
itr: @itr,
remote_settings_api: build_remote_settings_client(settings, test_visibility_api),
git_tree_upload_worker: build_git_upload_worker(settings, test_visibility_api)
)
Expand Down Expand Up @@ -169,8 +169,8 @@ def build_tracing_transport(settings, api)
def build_coverage_writer(settings, api)
return nil if api.nil?

ITR::Coverage::Writer.new(
transport: ITR::Coverage::Transport.new(api: api)
TestOptimisation::Coverage::Writer.new(
transport: TestOptimisation::Coverage::Transport.new(api: api)
)
end

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,11 @@

module Datadog
module CI
module ITR
module TestOptimisation
# Intelligent test runner implementation
# Integrates with backend to provide test impact analysis data and
# skip tests that are not impacted by the changes
class Runner
class Component
include Core::Utils::Forking

attr_reader :correlation_id, :skippable_tests, :skipped_tests_count
Expand Down Expand Up @@ -57,11 +57,11 @@ def initialize(
@skipped_tests_count = 0
@mutex = Mutex.new

Datadog.logger.debug("ITR Runner initialized with enabled: #{@enabled}")
Datadog.logger.debug("TestOptimisation initialized with enabled: #{@enabled}")
end

def configure(remote_configuration, test_session:, git_tree_upload_worker:)
Datadog.logger.debug("Configuring ITR Runner with remote configuration: #{remote_configuration}")
Datadog.logger.debug("Configuring TestOptimisation with remote configuration: #{remote_configuration}")

@enabled = Utils::Parsing.convert_to_bool(
remote_configuration.fetch(Ext::Transport::DD_API_SETTINGS_RESPONSE_ITR_ENABLED_KEY, false)
Expand All @@ -83,7 +83,7 @@ def configure(remote_configuration, test_session:, git_tree_upload_worker:)

load_datadog_cov! if @code_coverage_enabled

Datadog.logger.debug("Configured ITR Runner with enabled: #{@enabled}, skipping_tests: #{@test_skipping_enabled}, code_coverage: #{@code_coverage_enabled}")
Datadog.logger.debug("Configured TestOptimisation with enabled: #{@enabled}, skipping_tests: #{@test_skipping_enabled}, code_coverage: #{@code_coverage_enabled}")

fetch_skippable_tests(test_session: test_session, git_tree_upload_worker: git_tree_upload_worker)
end
Expand Down Expand Up @@ -139,7 +139,7 @@ def mark_if_skippable(test)
skippable_test_id = Utils::TestRun.skippable_test_id(test.name, test.test_suite_name, test.parameters)
if @skippable_tests.include?(skippable_test_id)
if forked?
Datadog.logger.warn { "ITR is not supported for forking test runners yet" }
Datadog.logger.warn { "Intelligent test runner is not supported for forking test runners yet" }
return
end

Expand All @@ -155,7 +155,7 @@ def count_skipped_test(test)
return if !test.skipped? || !test.skipped_by_itr?

if forked?
Datadog.logger.warn { "ITR is not supported for forking test runners yet" }
Datadog.logger.warn { "Intelligent test runner is not supported for forking test runners yet" }
return
end

Expand All @@ -167,7 +167,7 @@ def count_skipped_test(test)
def write_test_session_tags(test_session)
return if !enabled?

Datadog.logger.debug { "Finished ITR session with test skipping enabled: #{@test_skipping_enabled}" }
Datadog.logger.debug { "Finished optimised session with test skipping enabled: #{@test_skipping_enabled}" }
Datadog.logger.debug { "#{@skipped_tests_count} tests were skipped" }

test_session.set_tag(Ext::Test::TAG_ITR_TESTS_SKIPPED, @skipped_tests_count.positive?.to_s)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

module Datadog
module CI
module ITR
module TestOptimisation
module Coverage
# Placeholder for code coverage collection
# Implementation in ext/datadog_cov
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

module Datadog
module CI
module ITR
module TestOptimisation
module Coverage
class Event
attr_reader :test_id, :test_suite_id, :test_session_id, :coverage
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

module Datadog
module CI
module ITR
module TestOptimisation
module Coverage
class Transport < Datadog::CI::Transport::EventPlatformTransport
private
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@

module Datadog
module CI
module ITR
module TestOptimisation
module Coverage
class Writer
include Core::Workers::Queue
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

module Datadog
module CI
module ITR
module TestOptimisation
class Skippable
class Response
def initialize(http_response)
Expand Down
18 changes: 9 additions & 9 deletions lib/datadog/ci/test_visibility/component.rb
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ class Component
attr_reader :environment_tags, :test_suite_level_visibility_enabled

def initialize(
itr:,
test_optimisation:,
remote_settings_api:,
git_tree_upload_worker: DummyWorker.new,
test_suite_level_visibility_enabled: false,
Expand All @@ -46,7 +46,7 @@ def initialize(

@codeowners = codeowners

@itr = itr
@test_optimisation = test_optimisation
@remote_settings_api = remote_settings_api
@git_tree_upload_worker = git_tree_upload_worker
end
Expand Down Expand Up @@ -210,7 +210,7 @@ def deactivate_test_suite(test_suite_name)
end

def itr_enabled?
@itr.enabled?
@test_optimisation.enabled?
end

private
Expand All @@ -234,7 +234,7 @@ def configure_library(test_session)
end
end

@itr.configure(
@test_optimisation.configure(
remote_configuration.payload,
test_session: test_session,
git_tree_upload_worker: @git_tree_upload_worker
Expand Down Expand Up @@ -404,17 +404,17 @@ def validate_test_suite_level_visibility_correctness(test)

# TODO: use kind of event system to notify about test finished?
def on_test_finished(test)
@itr.stop_coverage(test)
@itr.count_skipped_test(test)
@test_optimisation.stop_coverage(test)
@test_optimisation.count_skipped_test(test)
end

def on_test_started(test)
@itr.mark_if_skippable(test)
@itr.start_coverage(test)
@test_optimisation.mark_if_skippable(test)
@test_optimisation.start_coverage(test)
end

def on_test_session_finished(test_session)
@itr.write_test_session_tags(test_session)
@test_optimisation.write_test_session_tags(test_session)
end
end
end
Expand Down
2 changes: 1 addition & 1 deletion lib/datadog/ci/test_visibility/transport.rb
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ def write_payload_header(packer)
end

def itr
@itr ||= Datadog::CI.send(:itr_runner)
@test_optimisation ||= Datadog::CI.send(:test_optimisation)
end
end
end
Expand Down
2 changes: 1 addition & 1 deletion sig/datadog/ci.rbs
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,6 @@ module Datadog

def self.test_visibility: () -> (Datadog::CI::TestVisibility::Component | Datadog::CI::TestVisibility::NullComponent)

def self.itr_runner: () -> Datadog::CI::ITR::Runner?
def self.test_optimisation: () -> Datadog::CI::TestOptimisation::Component?
end
end
6 changes: 3 additions & 3 deletions sig/datadog/ci/configuration/components.rbs
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,11 @@ module Datadog
module Configuration
module Components : Datadog::Core::Configuration::Components
@test_visibility: Datadog::CI::TestVisibility::Component | Datadog::CI::TestVisibility::NullComponent
@itr: Datadog::CI::ITR::Runner?
@test_optimisation: Datadog::CI::TestOptimisation::Component?
@custom_configuration: Hash[String, String]

attr_reader test_visibility: Datadog::CI::TestVisibility::Component | Datadog::CI::TestVisibility::NullComponent
attr_reader itr: Datadog::CI::ITR::Runner?
attr_reader test_optimisation: Datadog::CI::TestOptimisation::Component?

def initialize: (untyped settings) -> void

Expand All @@ -21,7 +21,7 @@ module Datadog

def build_tracing_transport: (untyped settings, Datadog::CI::Transport::Api::Base? api) -> Datadog::CI::TestVisibility::Transport?

def build_coverage_writer: (untyped settings, Datadog::CI::Transport::Api::Base? api) -> Datadog::CI::ITR::Coverage::Writer?
def build_coverage_writer: (untyped settings, Datadog::CI::Transport::Api::Base? api) -> Datadog::CI::TestOptimisation::Coverage::Writer?

def build_git_upload_worker: (untyped settings, Datadog::CI::Transport::Api::Base? api) -> Datadog::CI::Worker

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
module Datadog
module CI
module ITR
module TestOptimisation
module Coverage
class DDCov
type threading_mode = :multi | :single
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
module Datadog
module CI
module ITR
module TestOptimisation
module Coverage
class Event
@test_id: String
Expand Down
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
module Datadog
module CI
module ITR
module TestOptimisation
module Coverage
class Transport < Datadog::CI::Transport::EventPlatformTransport
private

def send_payload: (String payload) -> ::Datadog::CI::Transport::HTTP::ResponseDecorator

def encode_events: (Array[Datadog::CI::ITR::Coverage::Event] events) -> ::Array[String]
def encode_events: (Array[Datadog::CI::TestOptimisation::Coverage::Event] events) -> ::Array[String]

def pack_events: (Array[String] encoded_events) -> String

def event_too_large?: (Datadog::CI::ITR::Coverage::Event event, String encoded_event) -> bool
def event_too_large?: (Datadog::CI::TestOptimisation::Coverage::Event event, String encoded_event) -> bool
end
end
end
Expand Down
Original file line number Diff line number Diff line change
@@ -1,40 +1,40 @@
module Datadog
module CI
module ITR
module TestOptimisation
module Coverage
class Writer
include Datadog::Core::Workers::Async::Thread
include Datadog::Core::Workers::Polling
include Datadog::Core::Workers::Queue
include Datadog::Core::Workers::IntervalLoop

@transport: Datadog::CI::ITR::Coverage::Transport
@transport: Datadog::CI::TestOptimisation::Coverage::Transport

@buffer_size: Integer

@shutdown_timeout: Integer

@stopped: bool

attr_reader transport: Datadog::CI::ITR::Coverage::Transport
attr_reader transport: Datadog::CI::TestOptimisation::Coverage::Transport

DEFAULT_BUFFER_MAX_SIZE: 10000

DEFAULT_SHUTDOWN_TIMEOUT: 60

DEFAULT_INTERVAL: 3

def initialize: (transport: Datadog::CI::ITR::Coverage::Transport, ?options: ::Hash[untyped, untyped]) -> void
def initialize: (transport: Datadog::CI::TestOptimisation::Coverage::Transport, ?options: ::Hash[untyped, untyped]) -> void

def write: (Datadog::CI::ITR::Coverage::Event event) -> untyped
def write: (Datadog::CI::TestOptimisation::Coverage::Event event) -> untyped

def perform: (*Datadog::CI::ITR::Coverage::Event events) -> nil
def perform: (*Datadog::CI::TestOptimisation::Coverage::Event events) -> nil

def stop: (?bool force_stop, ?Integer timeout) -> untyped

def enqueue: (Datadog::CI::ITR::Coverage::Event event) -> untyped
def enqueue: (Datadog::CI::TestOptimisation::Coverage::Event event) -> untyped

def dequeue: () -> ::Array[Datadog::CI::ITR::Coverage::Event]
def dequeue: () -> ::Array[Datadog::CI::TestOptimisation::Coverage::Event]

def async?: () -> true

Expand Down
Loading

0 comments on commit c6b9e38

Please sign in to comment.