Sha256: 460fa0a7645b9845ae6b3a6adc085a686a23c52cafcfc03351527b9845c1d862

Contents?: true

Size: 1.22 KB

Versions: 11

Compression:

Stored size: 1.22 KB

Contents

module KnapsackPro
  class Allocator
    def initialize(args)
      @test_files = args.fetch(:test_files)
      @ci_node_total = args.fetch(:ci_node_total)
      @ci_node_index = args.fetch(:ci_node_index)
      @repository_adapter = args.fetch(:repository_adapter)
    end

    def test_file_paths
      action = KnapsackPro::Client::API::V1::BuildDistributions.subset(
        commit_hash: repository_adapter.commit_hash,
        branch: repository_adapter.branch,
        node_total: ci_node_total,
        node_index: ci_node_index,
        test_files: test_files,
      )
      connection = KnapsackPro::Client::Connection.new(action)
      response = connection.call
      if connection.success?
        raise ArgumentError.new(response) if connection.errors?
        KnapsackPro::TestFilePresenter.paths(response['test_files'])
      else
        test_flat_distributor = KnapsackPro::TestFlatDistributor.new(test_files, ci_node_total)
        test_files_for_node_index = test_flat_distributor.test_files_for_node(ci_node_index)
        KnapsackPro::TestFilePresenter.paths(test_files_for_node_index)
      end
    end

    private

    attr_reader :test_files,
      :ci_node_total,
      :ci_node_index,
      :repository_adapter
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
knapsack_pro-0.10.0 lib/knapsack_pro/allocator.rb
knapsack_pro-0.9.0 lib/knapsack_pro/allocator.rb
knapsack_pro-0.8.0 lib/knapsack_pro/allocator.rb
knapsack_pro-0.7.2 lib/knapsack_pro/allocator.rb
knapsack_pro-0.7.1 lib/knapsack_pro/allocator.rb
knapsack_pro-0.7.0 lib/knapsack_pro/allocator.rb
knapsack_pro-0.6.1 lib/knapsack_pro/allocator.rb
knapsack_pro-0.6.0 lib/knapsack_pro/allocator.rb
knapsack_pro-0.5.0 lib/knapsack_pro/allocator.rb
knapsack_pro-0.4.0 lib/knapsack_pro/allocator.rb
knapsack_pro-0.3.0 lib/knapsack_pro/allocator.rb