Sha256: dcdc962b4cac56e0b5bb7b907e63069a216fc68615c9a1c116d89d7dc17e6f30
Contents?: true
Size: 1.98 KB
Versions: 1
Compression:
Stored size: 1.98 KB
Contents
module Mutant class Runner # Mutation killing worker receiving work from parent class Worker include Adamantium::Flat, Anima.new(:config, :id, :parent) private_class_method :new # Run worker # # @param [Hash<Symbol, Object] attributes # # @return [Actor::Sender] # # @api private # def self.run(attributes) attributes.fetch(:config).actor_env.spawn do |actor| worker = new(attributes) worker.send(:run, actor) end end private # Worker loop # # @return [self] # # @api private # # rubocop:disable Lint/Loop # def run(actor) begin parent.call(Actor::Message.new(:ready, actor.sender)) end until handle(actor.receiver.call) end # Handle job # # @param [Message] message # # @return [Boolean] # # @api private # def handle(message) type, payload = message.type, message.payload case message.type when :job handle_job(payload) nil when :stop true else fail Actor::ProtocolError, "Unknown command: #{type.inspect}" end end # Handle mutation # # @param [Job] job # # @return [undefined] # # @api private # def handle_job(job) parent.call(Actor::Message.new(:result, JobResult.new(job: job, result: run_mutation(job)))) end # Run mutation # # @param [Mutation] mutation # # @return [Report::Mutation] # # @api private # def run_mutation(job) mutation = job.mutation test_result = mutation.kill(config.isolation, config.integration) Result::Mutation.new( index: job.index, mutation: mutation, test_result: test_result ) end end # Worker end # Runner end # Mutant
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
mutant-0.7.1 | lib/mutant/runner/worker.rb |