[Title] add progress for job query
authorjiil.hyoun <jiil.hyoun@samsung.com>
Mon, 20 Aug 2012 07:30:25 +0000 (16:30 +0900)
committerjiil.hyoun <jiil.hyoun@samsung.com>
Mon, 20 Aug 2012 07:35:16 +0000 (16:35 +0900)
[Type] Enhancement
[Module] Toolchain /
[Priority] Major
[Jira#]
[Redmine#]
[Problem]
[Cause]
[Solution]
[TestCase]

Change-Id: I61610df05406d7c17325b65983b1fadadd1aebe9

src/build_server/BuildJob.rb
src/build_server/CommonProject.rb
src/build_server/GitBuildJob.rb
src/build_server/MultiBuildJob.rb
src/build_server/RegisterPackageJob.rb
src/build_server/SocketJobRequestListener.rb
src/common/log.rb

index 50bd8a45001279a9a2ccfdbbb16fae84645bd3c3..74b58dae8b4f255c3994c37f1fa8fbc50d14618c 100644 (file)
@@ -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
        #
index 5ff3af58c889d018e361db7a3551a8c4abd1a6b4..0c539e3ea2b88e74efc4cb5b1169d694e0db6203 100644 (file)
@@ -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
index 12c756678ff9d066f620c91c3812b99ea9173806..36d05c1be831f34861210622efed3b5c3166a354 100644 (file)
@@ -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)
index 87b79a2b45bc9d55173b5339c46c0ef0d91388e2..09f9ea6d3bb9ad1688b6f6d33a1240f1178b54cb 100644 (file)
@@ -341,6 +341,12 @@ class MultiBuildJob
        end
 
 
+       def progress
+               # do noting
+               return ""
+       end
+
+
        #
        # PROTECTED METHODS
        #
index ef300ae070f981490c02ceb71db22e2357d3b3e8..83451fd13a277f087bade6c73a1fb8acaf938b6a 100644 (file)
@@ -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
        #
index 99337cbc9e23c68376643914737590d8a66c5361..b026282775356fe59e09b3cdf8e27ab4babba658 100644 (file)
@@ -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
index 6e06896c5e91bb83f1f3ed6cf04c7591a0ad5d19..e7eb19041e2549bfd60060eef09d5b131bf0c89e 100644 (file)
@@ -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