From 8911635793256bc2f3ff141282ee5bda1c93f39c Mon Sep 17 00:00:00 2001 From: "jiil.hyoun" Date: Mon, 20 Aug 2012 16:30:25 +0900 Subject: [PATCH] [Title] add progress for job query [Type] Enhancement [Module] Toolchain / [Priority] Major [Jira#] [Redmine#] [Problem] [Cause] [Solution] [TestCase] Change-Id: I61610df05406d7c17325b65983b1fadadd1aebe9 --- src/build_server/BuildJob.rb | 14 +++++++ src/build_server/CommonProject.rb | 41 ++++++++++++++++++++ src/build_server/GitBuildJob.rb | 2 + src/build_server/MultiBuildJob.rb | 6 +++ src/build_server/RegisterPackageJob.rb | 17 ++++++++ src/build_server/SocketJobRequestListener.rb | 6 +-- src/common/log.rb | 34 +++++++++------- 7 files changed, 102 insertions(+), 18 deletions(-) diff --git a/src/build_server/BuildJob.rb b/src/build_server/BuildJob.rb index 50bd8a4..74b58da 100644 --- a/src/build_server/BuildJob.rb +++ b/src/build_server/BuildJob.rb @@ -497,6 +497,20 @@ class BuildJob return false end + + def progress + if not @log.nil? then + if @project.nil? or @project.get_latest_log_cnt.nil? then + return "--% (#{log.cnt.to_s} lines) " + else + return ( ( @log.cnt * 100 ) / @project.get_latest_log_cnt ).to_s + "%" + end + end + # if log is nil then can't figure progress out + return "" + end + + # # PROTECTED METHODS # diff --git a/src/build_server/CommonProject.rb b/src/build_server/CommonProject.rb index 5ff3af5..0c539e3 100644 --- a/src/build_server/CommonProject.rb +++ b/src/build_server/CommonProject.rb @@ -40,6 +40,8 @@ class CommonProject @passwd = "" @os_list = os_list @server = server + @extra_infos = {} + read_ext_info end @@ -59,4 +61,43 @@ class CommonProject return false end end + + + def write_ext_info + # write to file + info_file = "#{@server.path}/projects/#{@name}/extra" + File.open( info_file, "w" ) do |f| + @extra_infos.each { |key,value| + f.puts "#{key} : #{value}" + } + end + end + + + # set extra info + def read_ext_info + info_file = "#{@server.path}/projects/#{@name}/extra" + if not File.exists? info_file then return end + File.open( info_file, "r" ) do |f| + while (not f.gets and line = f.gets.split(":")) + if not line[1].nil? then + @extra_infos[line[0].strip] = line[1].strip + end + end + end + end + + + def set_log_cnt( cnt ) + @extra_infos["Latest_log_count"] = cnt.to_s + end + + + def get_latest_log_cnt + result = @extra_infos["Latest_log_count"] + if not result.nil? then + return result.to_i + end + return nil + end end diff --git a/src/build_server/GitBuildJob.rb b/src/build_server/GitBuildJob.rb index 12c7566..36d05c1 100644 --- a/src/build_server/GitBuildJob.rb +++ b/src/build_server/GitBuildJob.rb @@ -61,6 +61,8 @@ class GitBuildJob < BuildJob @project.add_source_info( @pkginfo.get_version(), @git_commit) @project.copy_package_info( @pkginfo.get_version(), "#{@source_path}/package/pkginfo.manifest") + @project.set_log_cnt( @log.cnt ) + @project.write_ext_info # clean up @server.cleaner.clean(@id) diff --git a/src/build_server/MultiBuildJob.rb b/src/build_server/MultiBuildJob.rb index 87b79a2..09f9ea6 100644 --- a/src/build_server/MultiBuildJob.rb +++ b/src/build_server/MultiBuildJob.rb @@ -341,6 +341,12 @@ class MultiBuildJob end + def progress + # do noting + return "" + end + + # # PROTECTED METHODS # diff --git a/src/build_server/RegisterPackageJob.rb b/src/build_server/RegisterPackageJob.rb index ef300ae..83451fd 100644 --- a/src/build_server/RegisterPackageJob.rb +++ b/src/build_server/RegisterPackageJob.rb @@ -215,6 +215,10 @@ class RegisterPackageJob else # clean up @server.cleaner.clean(@id) + if not @project.nil? then + @project.set_log_cnt( @log.cnt ) + @project.write_ext_info + end end # close logger @@ -333,6 +337,19 @@ class RegisterPackageJob end + def progress + if not @log.nil? then + if @project.nil? or @project.get_latest_log_cnt.nil? then + return "--% (#{log.cnt.to_s} lines) " + else + return ( ( @log.cnt * 100 ) / @project.get_latest_log_cnt ).to_s + "%" + end + end + # if log is nil then can't figure progress out + return "" + end + + # # PROTECTED METHODS # diff --git a/src/build_server/SocketJobRequestListener.rb b/src/build_server/SocketJobRequestListener.rb index 99337cb..b026282 100644 --- a/src/build_server/SocketJobRequestListener.rb +++ b/src/build_server/SocketJobRequestListener.rb @@ -367,13 +367,13 @@ class SocketJobRequestListener else ids = job.pending_ancestor.id end - BuildCommServer.send(req,"#{status}:#{ids},#{job.id},#{job.get_project().name},#{job.os}") + BuildCommServer.send(req,"#{status}:#{ids},#{job.id},#{job.get_project().name},#{job.os} #{job.progress}") else - BuildCommServer.send(req,"#{status},#{job.id},#{job.get_project().name},#{job.os}") + BuildCommServer.send(req,"#{status},#{job.id},#{job.get_project().name},#{job.os} #{job.progress}") end when "REGISTER" if job.pkg_type == "BINARY" and not job.get_project().nil? then - BuildCommServer.send(req,"#{status},#{job.id},#{job.get_project().name},#{job.os}") + BuildCommServer.send(req,"#{status},#{job.id},#{job.get_project().name},#{job.os} #{job.progress}") else BuildCommServer.send(req,"#{status},#{job.id},#{job.pkg_name}") end diff --git a/src/common/log.rb b/src/common/log.rb index 6e06896..e7eb190 100644 --- a/src/common/log.rb +++ b/src/common/log.rb @@ -30,7 +30,7 @@ require "logger" class Log - attr_accessor :path + attr_accessor :path, :cnt # Log LEVEL LV_NORMAL = 1 @@ -39,6 +39,7 @@ class Log # init def initialize(path, lv=LV_USER) + @cnt = 0 @path = path if @path.nil? then @logger = Logger.new(STDOUT) @@ -52,7 +53,7 @@ class Log # diable logger format @default_formatter = @logger.formatter @no_prefix_formatter = proc do |severity, datetime, progname, msg| - " >#{msg}" + " >#{msg}" end end @@ -60,35 +61,39 @@ class Log def info(msg, lv=LV_NORMAL) if @path.nil? and not @second_out.nil? then puts "Info: #{msg}" else @logger.info msg end - if not @second_out.nil? and lv >= @second_out_level then - output_extra "Info: " + msg + if not @second_out.nil? and lv >= @second_out_level then + output_extra "Info: " + msg end - end + @cnt = @cnt + 1 + end - def warn(msg, lv=LV_NORMAL) + def warn(msg, lv=LV_NORMAL) if @path.nil? and not @second_out.nil? then puts "Warn: #{msg}" else @logger.warn msg end if not @second_out.nil? and lv >= @second_out_level then - output_extra "Warn: " + msg + output_extra "Warn: " + msg end - end + @cnt = @cnt + 1 + end - def error(msg, lv=LV_NORMAL) + def error(msg, lv=LV_NORMAL) if @path.nil? and not @second_out.nil? then puts "Error: #{msg}" else @logger.error msg end if not @second_out.nil? and lv >= @second_out_level then - output_extra "Error: " + msg + output_extra "Error: " + msg end + @cnt = @cnt + 1 end - def output(msg, lv=LV_NORMAL) + def output(msg, lv=LV_NORMAL) if @path.nil? and not @second_out.nil? then puts msg else @logger.info msg end if not @second_out.nil? and lv >= @second_out_level then - output_extra msg + output_extra msg end + @cnt = @cnt + 1 end @@ -99,7 +104,6 @@ class Log protected def output_extra(msg) - #do nothing - end - + #do nothing + end end -- 2.34.1