test/node/test_farmers.rb in zold-0.16.30 vs test/node/test_farmers.rb in zold-0.17.0

- old
+ new

@@ -23,55 +23,68 @@ require 'minitest/autorun' require 'time' require 'zold/score' require_relative '../test__helper' require_relative '../../lib/zold/node/farmers' +require_relative '../../lib/zold/verbose_thread' class FarmersTest < Zold::Test def test_calculates_next_score before = Zold::Score.new(host: 'some-host', port: 9999, invoice: 'NOPREFIX4@ffffffffffffffff', strength: 3) - farmer = Zold::Farmers::Spawn.new(log: test_log) - after = farmer.up(before) - assert_equal(1, after.value) - assert(!after.expired?) - assert_equal('some-host', after.host) - assert_equal(9999, after.port) + [Zold::Farmers::Plain, Zold::Farmers::Spawn, Zold::Farmers::Fork].each do |farmer_class| + farmer = farmer_class.new(log: test_log) + after = farmer.up(before) + assert_equal(1, after.value) + assert(!after.expired?) + assert_equal('some-host', after.host) + assert_equal(9999, after.port) + end end def test_calculates_large_score log = TestLogger.new(test_log) thread = Thread.start do - farmer = Zold::Farmers::Spawn.new(log: log) - farmer.up(Zold::Score.new(host: 'a', port: 1, invoice: 'NOPREFIX4@ffffffffffffffff', strength: 20)) + [Zold::Farmers::Spawn, Zold::Farmers::Fork].each do |farmer_class| + farmer = farmer_class.new(log: log) + farmer.up(Zold::Score.new(host: 'a', port: 1, invoice: 'NOPREFIX4@ffffffffffffffff', strength: 20)) + end end assert_wait { !log.msgs.find { |m| m.include?('Scoring started') }.nil? } thread.kill thread.join assert(log.msgs.find { |m| m.include?('killed') }) end - def test_calculates_next_score_plain - before = Zold::Score.new(host: 'some-host', port: 9999, invoice: 'NOPREFIX4@ffffffffffffffff', strength: 1) - farmer = Zold::Farmers::Plain.new - after = farmer.up(before) - assert_equal(1, after.value) - assert(!after.expired?) - assert_equal('some-host', after.host) - assert_equal(9999, after.port) + def test_kills_farmer + [Zold::Farmers::Plain, Zold::Farmers::Spawn, Zold::Farmers::Fork].each do |type| + farmer = type.new(log: test_log) + thread = Thread.start do + Zold::VerboseThread.new(test_log).run do + farmer.up(Zold::Score.new(host: 'some-host', invoice: 'NOPREFIX4@ffffffffffffffff', strength: 32)) + end + end + sleep(1) + thread.kill + thread.join + end end def test_avoid_duplicate_processes log = TestLogger.new(test_log) time = Time.now thread = Thread.start do - farmer = Zold::Farmers::Spawn.new(log: log) - farmer.up(Zold::Score.new(time: time, host: 'a', port: 1, invoice: 'prefixone@ffffffffffffffff', strength: 20)) + [Zold::Farmers::Spawn, Zold::Farmers::Fork].each do |farmer_class| + farmer = farmer_class.new(log: log) + farmer.up(Zold::Score.new(time: time, host: 'a', port: 1, invoice: 'prefixone@ffffffffffffffff', strength: 20)) + end end assert_wait { !log.msgs.find { |m| m.include?('Scoring started') }.nil? } assert_raises do - Zold::Farmers::Spawn.new(log: log).up( - Zold::Score.new(time: time, host: 'a', port: 1, invoice: 'prefixtwo@ffffffffffffffff', strength: 20) - ) + [Zold::Farmers::Spawn, Zold::Farmers::Fork].each do |farmer_class| + farmer_class.new(log: log).up( + Zold::Score.new(time: time, host: 'a', port: 1, invoice: 'prefixtwo@ffffffffffffffff', strength: 20) + ) + end end thread.kill thread.join end end