From 32adcedbca9b794239ae0d2c63fb248dc8102372 Mon Sep 17 00:00:00 2001 From: Daigo Moriwaki Date: Thu, 26 Dec 2013 23:52:35 +0900 Subject: [PATCH] [shogi-server] - Previously, parameters in Floodgate time configuration file were not applied to actual instances. This issue has been fixed. --- changelog | 6 ++++++ shogi_server/league/floodgate.rb | 13 +++++++------ shogi_server/league/floodgate_thread.rb | 25 ++++++++++++------------- test/TC_floodgate_thread.rb | 8 +++++++- 4 files changed, 32 insertions(+), 20 deletions(-) diff --git a/changelog b/changelog index 3d114b7..fd7fe66 100644 --- a/changelog +++ b/changelog @@ -1,3 +1,9 @@ +2013-12-26 Daigo Moriwaki + + * [shogi-server] + - Previously, parameters in Floodgate time configuration file were + not applied to actual instances. This issue has been fixed. + 2013-12-21 Daigo Moriwaki * [shogi-server] diff --git a/shogi_server/league/floodgate.rb b/shogi_server/league/floodgate.rb index 5d6ccaa..27be353 100644 --- a/shogi_server/league/floodgate.rb +++ b/shogi_server/league/floodgate.rb @@ -27,16 +27,17 @@ class League # attr_reader :next_time attr_reader :league, :game_name - attr_reader :pairing_factory + attr_reader :pairing_factory, :sacrifice attr_reader :options def initialize(league, hash={}) @league = league - @next_time = hash[:next_time] || nil - @game_name = hash[:game_name] || "floodgate-900-0" - @pairing_factory = "default_factory" # will be updated by NextTimeGenerator - # Options will be updated by NextTimeGenerator - @options = {:sacrifice => "gps500+e293220e3f8a3e59f79f6b0efffaa931"} + @next_time = hash[:next_time] || nil + @game_name = hash[:game_name] || "floodgate-900-0" + @pairing_factory = hash[:pairing_factory] || "default_factory" # will be updated by NextTimeGenerator + @sacrifice = hash[:sacrifice] || "gps500+e293220e3f8a3e59f79f6b0efffaa931" + # @options is passed to a pairing factory + @options = {:sacrifice => @sacrifice} charge if @next_time.nil? end diff --git a/shogi_server/league/floodgate_thread.rb b/shogi_server/league/floodgate_thread.rb index 231c8ce..a1b3d11 100644 --- a/shogi_server/league/floodgate_thread.rb +++ b/shogi_server/league/floodgate_thread.rb @@ -68,15 +68,16 @@ module ShogiServer floodgate.match_game end - # Regenerate floodgate instances from next_array for the next matches. - # @param next_array array of [game_name, next_time] + # Regenerate floodgate instances from next_instances for the next matches. + # @param next_instances array of [game_name, next_time] # - def regenerate_leagues(next_array) - leagues = next_array.collect do |game_name, next_time| - log_message("Regenerating a floodgate league...: %s %s" % [game_name, next_time]) + def regenerate_leagues(next_instances) + leagues = next_instances.collect do |prev| + log_message("Regenerating a floodgate league...: %s %s %s" % + [prev.game_name, prev.next_time, prev.sacrifice]) floodgate = ShogiServer::League::Floodgate.new($league, - {:game_name => game_name, - :next_time => next_time}) + {:game_name => prev.game_name, :next_time => prev.next_time, + :pairing_factory => prev.pairing_factory, :sacrifice => prev.sacrifice}) end floodgate_reload_log(leagues) return leagues @@ -98,20 +99,18 @@ module ShogiServer floodgate = next_league(leagues) next if wait_next_floodgate(floodgate) - next_array = leagues.collect do |floodgate| - if (floodgate.next_time - Time.now) > 0 - [floodgate.game_name, floodgate.next_time] - else + next_instances = leagues.collect do |floodgate| + unless (floodgate.next_time - Time.now) > 0 start_games(floodgate) floodgate.charge # updates next_time - [floodgate.game_name, floodgate.next_time] end + floodgate end reload_shogi_server # Regenerate floodgate instances after ShogiServer.realod - leagues = regenerate_leagues(next_array) + leagues = regenerate_leagues(next_instances) rescue Exception => ex # ignore errors log_error("[in Floodgate's thread] #{ex} #{ex.backtrace}") diff --git a/test/TC_floodgate_thread.rb b/test/TC_floodgate_thread.rb index 434f2b8..f1fb034 100644 --- a/test/TC_floodgate_thread.rb +++ b/test/TC_floodgate_thread.rb @@ -65,7 +65,13 @@ class TestSetupFloodgate < Test::Unit::TestCase def test_regenerate_leagues game_names = %w(floodgate-900-0 floodgate-3600-0) now = Time.now - next_array = [["floodgate-900-0", now+100], ["floodgate-3600-0", now+200]] + next_array = [] + next_array << ShogiServer::League::Floodgate.new($league, + {:game_name => "floodgate-900-0", + :next_time => (now+100)}) + next_array << ShogiServer::League::Floodgate.new($league, + {:game_name => "floodgate-3600-0", + :next_time => (now+200)}) objs = @sf.regenerate_leagues(next_array) assert_equal 2, objs.size assert_instance_of ShogiServer::League::Floodgate, objs[0] -- 2.11.0