[Title] Used "file transfer cnt" intead of "job initializing" flag
authordonghee yang <donghee.yang@samsung.com>
Mon, 3 Sep 2012 18:29:37 +0000 (03:29 +0900)
committerdonghee yang <donghee.yang@samsung.com>
Mon, 3 Sep 2012 18:29:37 +0000 (03:29 +0900)
src/build_server/BuildServer.rb
src/build_server/RemoteBuildServer.rb
src/build_server/RemoteBuilder.rb
test/build-cli-01.testcase

index 70984092fc841cb831fa1a420b1fd6a23e88708d..3b165eb6b42db3f99b20cdfe576e36bfc417f460 100644 (file)
@@ -284,7 +284,7 @@ class BuildServer
                        @friend_servers.each do |server|
                                if ( server.status == "RUNNING" and server.can_build?( job ) and
                                        not server.has_waiting_jobs and 
-                                       not server.job_initializing and 
+                                       server.get_file_transfer_cnt() == 0 and 
                                        server.get_number_of_empty_room > 0 )
                                        candidates.push server
                                end
index d2fcca9bfb51d9ddea58de0b0ab7d55e2945c777..8c71460220187e8bfb64b4ce3cc4c65707e3a681 100644 (file)
@@ -30,12 +30,12 @@ require 'fileutils'
 $LOAD_PATH.unshift File.dirname(__FILE__)
 require "RemoteBuildJob.rb"
 require "BuildComm.rb"
+require 'thread'
 
 class RemoteBuildServer
        attr_accessor :ip, :port, :status, :host_os
        attr_accessor :max_working_jobs, :working_jobs, :waiting_jobs
        attr_accessor :pkgserver_url, :path
-       attr_accessor :job_initializing
 
        # initialize
        def initialize(ip, port, parent)
@@ -48,7 +48,8 @@ class RemoteBuildServer
                @waiting_jobs = []
                @pkgserver_url = parent.pkgserver_url
                @path = ""
-               @job_initializing = false
+               @file_transfer_cnt_mutex = Mutex.new
+               @file_transfer_cnt = 0
        end
 
 
@@ -128,5 +129,22 @@ class RemoteBuildServer
        def has_waiting_jobs
                return (@waiting_jobs.count > 0)
        end
+
+
+       def add_file_transfer()
+               @file_transfer_cnt_mutex.synchronize {
+                       @file_transfer_cnt += 1
+               }
+       end
+
+       def remove_file_transfer()
+               @file_transfer_cnt_mutex.synchronize {
+                       @file_transfer_cnt -= 1
+               }
+       end
+
+       def get_file_transfer_cnt()
+               return @file_transfer_cnt
+       end
 end
 
index 2cee27eb48191fa1671fa95a9fca59852c31f2f6..f42a318f87c35c79049675c40a25caaa33786391 100644 (file)
@@ -58,17 +58,17 @@ class RemoteBuilder
                dock = Utils.create_uniq_name()
 
                # send local packages
-               @server.job_initializing = true
+               @server.add_file_transfer()
                local_pkgs.each do |pkg_path|
                @log.info( "Sending file... : #{pkg_path}", Log::LV_USER )
                        result = send_file_to_remote( pkg_path, dock )
                        if not result then
                @log.error( "File transfering failed!", Log::LV_USER )
-                               @server.job_initializing = false
+                               @server.remove_file_transfer()
                                return false
                        end
                end
-               @server.job_initializing = false
+               @server.remove_file_transfer()
 
                # send build request
                @log.info( "Sending build request to remote server...", Log::LV_USER )
index d543dd6003af51973dd7c38147b70a39b0690ec0..5a3a051a7c38f8ced2ce76cb4701fd7ec6402b96 100644 (file)
@@ -32,6 +32,7 @@ Options:
 -d, --address <server address>   build server address: 127.0.0.1:2224
 -o, --os <operating system>      target operating system: ubuntu-32/ubuntu-64/windows-32/windows-64/macos-64
 --async                      asynchronous job
+--noreverse                  do not check reverse build
 -j, --job <job number>           job number
 -w, --passwd <password>          password for managing project
 -P, --pkg <package file>         package file path