[Title] Changed job monitoring block to use 3 args
authordonghee yang <donghee.yang@samsung.com>
Fri, 29 Mar 2013 10:02:23 +0000 (19:02 +0900)
committerdonghee yang <donghee.yang@samsung.com>
Fri, 29 Mar 2013 10:02:23 +0000 (19:02 +0900)
build-cli
src/build_server/BuildServerController.rb
src/build_server/BuildServerException.rb
src/build_server/JobLog.rb
src/build_server/RemoteBuilder.rb

index 760f48a84e451eba3dc33d024a9d3669e4f9568e..555e9dbd78eb706d545fc33e5ce4273e0bc83d4a 100755 (executable)
--- a/build-cli
+++ b/build-cli
@@ -230,7 +230,7 @@ begin
                # Query log in case sync
                if result and option[:async].eql? "NO" then
                        begin
-                               result = JobLog.monitor(addr[0], addr[1], job_id) do |line|
+                               result = JobLog.monitor(addr[0], addr[1], job_id) do |line,status,errmsg|
                                        category, level, contents = JobLog.parse_log(line)
                                        if level < Log::LV_USER then next end
                       
@@ -325,7 +325,7 @@ begin
                                puts "Started query log, writing to the file \"#{output}\""
                        end
 
-                       result = JobLog.monitor(addr[0], addr[1], option[:job].strip) do |line|
+                       result = JobLog.monitor(addr[0], addr[1], option[:job].strip) do |line,status,errmsg|
                                log.puts line
                        end
                        if result and not output.nil? then
@@ -468,7 +468,7 @@ begin
 
                # Query log in case sync
                begin
-                       result = JobLog.monitor(bs_ip, bs_port, job_id) do |line|
+                       result = JobLog.monitor(bs_ip, bs_port, job_id) do |line,status,errmsg|
                                category, level, contents = JobLog.parse_log(line)
                                if level < Log::LV_USER then next end
                       
index 9dfd6a7bf39ef144ac64d1e5078c896831d76e63..4dffe2db927bd1bdcc3798e57086f40536838ed5 100644 (file)
@@ -680,7 +680,7 @@ class BuildServerController
                end
 
                begin
-                       result = JobLog.monitor("127.0.0.1", server.port, job_id) do |line|
+                       result = JobLog.monitor("127.0.0.1", server.port, job_id) do |line,status,errmsg|
                                category, level, contents = JobLog.parse_log(line)
                                if level < Log::LV_USER then next end
                       
index deb0d9fea0d925b48b6d0358a7932ef9a3f9becc..966c18d3bc9855c120df84f04280186470f3125d 100644 (file)
@@ -31,11 +31,11 @@ class BuildServerException < Exception
                @err_code = code
        end
 
-       def err_message()
+       def err_message(prefix = "Error: ")
                if not message().nil? and not message().empty? then
-                       return "Error: #{@@err_msgs[@err_code]}: #{message()}"
+                       return "#{prefix}#{@@err_msgs[@err_code]}: #{message()}"
                else
-                       return "Error: #{@@err_msgs[@err_code]}"
+                       return "#{prefix}#{@@err_msgs[@err_code]}"
                end
        end
 end
index c32064a859865679bebd028d3789d8cfa6bf019e..7f92d5f941a7b818e2fd88761d09f45b5669de47 100644 (file)
@@ -92,7 +92,7 @@ class JobLog < Log
                                        job_error = data[2]
                                else
                                        if block_given? then
-                                               yield line.strip
+                                               yield line.strip,job_status,job_error
                                        else
                                                puts line.strip
                                        end
index 61f23a2d034358cbdef799d19b2762b302831c2d..f6fd52f0a82f4fb779e792be83930a3b18bb99f4 100644 (file)
@@ -218,58 +218,45 @@ class RemoteBuilder
        protected
        def send_monitor_request(is_rev_build)
                result_files = []
-
-               client = BuildCommClient.create( @addr, @port, @log )
-               if client.nil? then
-                       @log.error( "Creating communication client failed!", Log::LV_USER)
-                       return false, result_files
-               end
-
                result = true
-               msg = "LOG|#{@job.remote_id}"
-               result = client.send( msg )
-               if not result then
-                       @log.error( "Communication failed! #{client.get_error_msg()}", Log::LV_USER)
-                       return false, result_files
-               end
-
-               result = client.read_lines do |line|
-                       if line.strip.start_with?("=JOB_STATUS") then 
-                               data = line.strip.split(",")
-                               @job.remote_status = data[1]
-                               @job.remote_error_msg = data[2]
-                               next
-                       end
 
-                       # write log first
-                       category, level, contents = JobLog.parse_log(line)
-                       if category == "INFO" then
-                               @log.info( contents, level )
-                       elsif category == "WARN" then
-                               @log.warn( contents, level )
-                       elsif category == "ERROR" then
-                               @log.error( contents, level )
-                       else
-                               next
+               begin
+                       result = JobLog.monitor(@addr, @port,@job.remote_id) do |line,status,errmsg|
+                               @job.remote_status = status
+                               if status == "ERROR" then
+                                       @job.remote_error_msg = errmsg
+                               end
+                               
+                               category, level, contents = JobLog.parse_log(line)
+                               if category == "INFO" then
+                                       @log.info( contents, level )
+                                       # gather result files if not reverse build
+                                       if not is_rev_build and line =~ /Creating package file \.\.\. (.*)/ then
+                                               file_name = $1
+                                               result_files.push file_name
+                                       end
+                               elsif category == "WARN" then
+                                       @log.warn( contents, level )
+                               elsif category == "ERROR" then
+                                       @log.error( contents, level )
+                               else
+                                       next
+                               end
                        end
 
-                       # gather result files if not reverse build
-                       if not is_rev_build and line =~ /Creating package file \.\.\. (.*)/ then
-                               file_name = $1
-                               result_files.push file_name
-                       end
+               rescue BuildServerException => e
+                       @log.error( e.err_message(""), Log::LV_USER )
+                       result = false
+               rescue => e
+                       @log.error( "#{e.message()}", Log::LV_USER )
+                       result = false
                end
 
-               if not result then
-                       @log.error( "Communication failed! #{client.get_error_msg()}", Log::LV_USER)
-               elsif not @job.remote_status.eql? "FINISHED" then 
-                       @log.error( "Job is #{@job.remote_status}! #{@job.remote_error_msg}", Log::LV_USER)
+               if @job.remote_status != "FINISHED" then 
+                       @log.error( "Remote job is finished with \"#{@job.remote_status}\"! #{@job.remote_error_msg}", Log::LV_USER)
                        result = false 
                end
 
-               # close socket
-               client.terminate
-
                return result, result_files
        end