Sha256: 068ae6909a4c6cbcd809155af56ddc3e9f6b08c64fb9f245c5b210c8b7480d86
Contents?: true
Size: 1.88 KB
Versions: 1
Compression:
Stored size: 1.88 KB
Contents
# typed: strict # frozen_string_literal: true require 'uri' require 'securerandom' module Minitest module Distributed class Configuration < T::Struct DEFAULT_BATCH_SIZE = 10 DEFAULT_MAX_ATTEMPTS = 3 DEFAULT_TEST_TIMEOUT = 30.0 # seconds class << self extend T::Sig sig { params(env: T::Hash[String, T.nilable(String)]).returns(T.attached_class) } def from_env(env = ENV.to_h) new( coordinator_uri: URI(env['MINITEST_COORDINATOR'] || 'memory:'), run_id: env['MINITEST_RUN_ID'] || SecureRandom.uuid, worker_id: env['MINITEST_WORKER_ID'] || SecureRandom.uuid, test_timeout: Float(env['MINITEST_TEST_TIMEOUT'] || DEFAULT_TEST_TIMEOUT), test_batch_size: Integer(env['MINITEST_TEST_BATCH_SIZE'] || DEFAULT_BATCH_SIZE), max_attempts: Integer(env['MINITEST_MAX_ATTEMPTS'] || DEFAULT_MAX_ATTEMPTS), ) end end extend T::Sig prop :coordinator_uri, URI::Generic, default: URI('memory:') prop :run_id, String, factory: -> { SecureRandom.uuid } prop :worker_id, String, factory: -> { SecureRandom.uuid } prop :test_timeout, Float, default: DEFAULT_TEST_TIMEOUT prop :test_batch_size, Integer, default: DEFAULT_BATCH_SIZE prop :max_attempts, Integer, default: DEFAULT_MAX_ATTEMPTS sig { returns(Coordinators::CoordinatorInterface) } def coordinator @coordinator = T.let(@coordinator, T.nilable(Coordinators::CoordinatorInterface)) @coordinator ||= case coordinator_uri.scheme when 'redis' Coordinators::RedisCoordinator.new(configuration: self) when 'memory' Coordinators::MemoryCoordinator.new(configuration: self) else raise NotImplementedError, "Unknown coordinator implementation: #{coordinator_uri.scheme}" end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
minitest-distributed-0.1.2 | lib/minitest/distributed/configuration.rb |