Skip to content

Commit

Permalink
create a list of strategies on initialization of test retries component
Browse files Browse the repository at this point in the history
  • Loading branch information
anmarchenko committed Sep 16, 2024
1 parent 74e72fe commit 532a1a9
Show file tree
Hide file tree
Showing 5 changed files with 30 additions and 2 deletions.
20 changes: 20 additions & 0 deletions lib/datadog/ci/test_retries/component.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,10 @@
require_relative "driver/retry_failed"
require_relative "driver/retry_new"

require_relative "strategy/no_retry"
require_relative "strategy/retry_failed"
require_relative "strategy/retry_new"

require_relative "../ext/telemetry"
require_relative "../utils/telemetry"

Expand Down Expand Up @@ -32,6 +36,22 @@ def initialize(
retry_new_tests_enabled:,
unique_tests_client:
)
no_retries_strategy = Strategy::NoRetry.new

retry_failed_strategy = Strategy::RetryFailed.new(
enabled: retry_failed_tests_enabled,
max_attempts: retry_failed_tests_max_attempts,
total_limit: retry_failed_tests_total_limit
)

retry_new_strategy = Strategy::RetryNew.new(
enabled: retry_new_tests_enabled,
unique_tests_client: unique_tests_client
)

# order is important, we should try to retry new tests first
@retry_strategies = [retry_new_strategy, retry_failed_strategy, no_retries_strategy]

@retry_failed_tests_enabled = retry_failed_tests_enabled
@retry_failed_tests_max_attempts = retry_failed_tests_max_attempts
@retry_failed_tests_total_limit = retry_failed_tests_total_limit
Expand Down
2 changes: 2 additions & 0 deletions lib/datadog/ci/test_retries/strategy/no_retry.rb
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# frozen_string_literal: true

require_relative "base"

module Datadog
module CI
module TestRetries
Expand Down
4 changes: 3 additions & 1 deletion lib/datadog/ci/test_retries/strategy/retry_failed.rb
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
# frozen_string_literal: true

require_relative "../driver/no_retry"
require_relative "base"

require_relative "../driver/retry_failed"

module Datadog
module CI
Expand Down
4 changes: 3 additions & 1 deletion lib/datadog/ci/test_retries/strategy/retry_new.rb
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
# frozen_string_literal: true

require_relative "../driver/no_retry"
require_relative "base"

require_relative "../driver/retry_new"

module Datadog
module CI
Expand Down
2 changes: 2 additions & 0 deletions sig/datadog/ci/test_retries/component.rbs
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,8 @@ module Datadog

@unique_tests_client: Datadog::CI::TestRetries::UniqueTestsClient

@retry_strategies: Array[Datadog::CI::TestRetries::Strategy::Base]

def initialize: (retry_failed_tests_enabled: bool, retry_failed_tests_max_attempts: Integer, retry_failed_tests_total_limit: Integer, retry_new_tests_enabled: bool, unique_tests_client: TestRetries::UniqueTestsClient) -> void

def configure: (Datadog::CI::Remote::LibrarySettings library_settings, Datadog::CI::TestSession test_session) -> void
Expand Down

0 comments on commit 532a1a9

Please sign in to comment.