[Title] fix performance_analyzer to get db fast
authorHyoun Jiil <jiil.hyoun@samsung.com>
Wed, 31 Jul 2013 02:06:23 +0000 (11:06 +0900)
committerHyoun Jiil <jiil.hyoun@samsung.com>
Wed, 31 Jul 2013 02:06:23 +0000 (11:06 +0900)
[Type] Enhancement
[Module] Toolchain /
[Priority] Minor
[Jira#]
[Redmine#]
[Problem]
[Cause]
[Solution]
[TestCase]

Change-Id: Ia6839d08e9ec3a7ae1cf4188b8237ced45e155ed

performance_analyzer

index 39d82a441d97528e6d4c7dda87d136f4b30fc6f9..34b3542e7730100190630925335dcae79760552a 100755 (executable)
@@ -39,30 +39,30 @@ class CommonJob
        attr_accessor :d_BASE, :d_waitI, :d_INIT, :d_waitW, :d_RU, :d_WORK, :d_RD, :d_waitU, :d_U, :d_FINISH, :d_total, :sub_total, :sub_work_total
        attr_accessor :sub_job
        def initialize(option, projects, supported_os, distributions)
-               @id = option[:id]
-               @project = projects[option[:project_id]]
+               @id = option['id']
+               @project = projects[option['project_id']]
                @project = "" if @project.nil?
-               @supported_os = supported_os[option[:supported_os_id]]
-               @distribution = distributions[option[:distribution_id]]
-               @parent_job = option[:parent_job]
-               @remote_build_server = option[:remote_build_server]
-               @jtype = option[:jtype]
-               @status = option[:status]
+               @supported_os = supported_os[option['supported_os_id']]
+               @distribution = distributions[option['distribution_id']]
+               @parent_job = option['parent_job']
+               @remote_build_server = option['remote_build_server']
+               @jtype = option['jtype']
+               @status = option['status']
                #set time stamp
                @t_BASE = nil
                t = Time.now
                offset = t.getlocal.gmt_offset
-               @t_S = Time.parse(option[:start_time].strftime) - offset if not option[:start_time].nil?
-               @t_IS = Time.parse(option[:INIT_START].strftime) - offset if not option[:INIT_START].nil?
-               @t_IE = Time.parse(option[:INIT_END].strftime) - offset if not option[:INIT_END].nil?
-               @t_WS = Time.parse(option[:WORK_START].strftime) - offset if not option[:WORK_START].nil?
-               @t_RUS = Time.parse(option[:REMOTE_UPLOAD_START].strftime) - offset if not option[:REMOTE_UPLOAD_START].nil?
-               @t_RUE = Time.parse(option[:REMOTE_UPLOAD_END].strftime) - offset if not option[:REMOTE_UPLOAD_END].nil?
-               @t_RDS = Time.parse(option[:REMOTE_DOWNLOAD_START].strftime) - offset if not option[:REMOTE_DOWNLOAD_START].nil?
-               @t_RDE = Time.parse(option[:REMOTE_DOWNLOAD_END].strftime) - offset if not option[:REMOTE_DOWNLOAD_END].nil?
-               @t_US = Time.parse(option[:UPLOAD_START].strftime) - offset if not option[:UPLOAD_START].nil?
-               @t_UE = Time.parse(option[:UPLOAD_END].strftime) - offset if not option[:UPLOAD_END].nil?
-               @t_E = Time.parse(option[:end_time].strftime) - offset if not option[:end_time].nil?
+               @t_S = Time.parse(option['start_time'].strftime) - offset if not option['start_time'].nil?
+               @t_IS = Time.parse(option['INIT_START'].strftime) - offset if not option['INIT_START'].nil?
+               @t_IE = Time.parse(option['INIT_END'].strftime) - offset if not option['INIT_END'].nil?
+               @t_WS = Time.parse(option['WORK_START'].strftime) - offset if not option['WORK_START'].nil?
+               @t_RUS = Time.parse(option['REMOTE_UPLOAD_START'].strftime) - offset if not option['REMOTE_UPLOAD_START'].nil?
+               @t_RUE = Time.parse(option['REMOTE_UPLOAD_END'].strftime) - offset if not option['REMOTE_UPLOAD_END'].nil?
+               @t_RDS = Time.parse(option['REMOTE_DOWNLOAD_START'].strftime) - offset if not option['REMOTE_DOWNLOAD_START'].nil?
+               @t_RDE = Time.parse(option['REMOTE_DOWNLOAD_END'].strftime) - offset if not option['REMOTE_DOWNLOAD_END'].nil?
+               @t_US = Time.parse(option['UPLOAD_START'].strftime) - offset if not option['UPLOAD_START'].nil?
+               @t_UE = Time.parse(option['UPLOAD_END'].strftime) - offset if not option['UPLOAD_END'].nil?
+               @t_E = Time.parse(option['end_time'].strftime) - offset if not option['end_time'].nil?
                @sub_job = []
                @d_BASE = 0
                @d_waitI = 0
@@ -184,16 +184,6 @@ conn.select_all "SELECT id,name FROM distributions ;" do |row|
        distributions[row[:id]] = row[:name]
 end
 
-performance_log = " , (SELECT stamp_time FROM rsa.job_timestamps WHERE job_timestamps.job_id = jobs.id AND stamp_name = 'INIT_START') INIT_START
-, (SELECT stamp_time FROM rsa.job_timestamps WHERE job_timestamps.job_id = jobs.id AND stamp_name = 'INIT_END') INIT_END
-, (SELECT stamp_time FROM rsa.job_timestamps WHERE job_timestamps.job_id = jobs.id AND stamp_name = 'WORK_START') WORK_START
-, (SELECT stamp_time FROM rsa.job_timestamps WHERE job_timestamps.job_id = jobs.id AND stamp_name = 'REMOTE_UPLOAD_START') REMOTE_UPLOAD_START
-, (SELECT stamp_time FROM rsa.job_timestamps WHERE job_timestamps.job_id = jobs.id AND stamp_name = 'REMOTE_UPLOAD_END') REMOTE_UPLOAD_END
-, (SELECT stamp_time FROM rsa.job_timestamps WHERE job_timestamps.job_id = jobs.id AND stamp_name = 'REMOTE_DOWNLOAD_START') REMOTE_DOWNLOAD_START
-, (SELECT stamp_time FROM rsa.job_timestamps WHERE job_timestamps.job_id = jobs.id AND stamp_name = 'REMOTE_DOWNLOAD_END') REMOTE_DOWNLOAD_END
-, (SELECT stamp_time FROM rsa.job_timestamps WHERE job_timestamps.job_id = jobs.id AND stamp_name = 'UPLOAD_START') UPLOAD_START
-, (SELECT stamp_time FROM rsa.job_timestamps WHERE job_timestamps.job_id = jobs.id AND stamp_name = 'UPLOAD_END') UPLOAD_END "
-
 def set_stamp(stamp)
        result = {}
        stamp.each do |x|
@@ -213,37 +203,38 @@ def set_stamp(stamp)
        return result
 end
 puts 'run'
-conn.select_all "SELECT * #{performance_log}
+conn.select_all "SELECT *
 FROM rsa.jobs 
 #{option[:where]}
 ;" do |row|
        print "."
-       #stamp_hash = {}
-       #conn.select_all("SELECT stamp_name, stamp_time FROM rsa.job_timestamps WHERE job_id = '#{row[:id]}'").each do |stamp|
-       #       stamp_hash[stamp[:stamp_name].to_sym] = stamp[:stamp_time]
-       #end
+       r = row.to_h
+       conn.select_all("SELECT stamp_name, stamp_time FROM rsa.job_timestamps WHERE job_id = '#{r['id']}'") do |stamp|
+               s = stamp.to_h
+               r[s['stamp_name'].to_s] = s['stamp_time']
+       end
 
        #puts stamp_hash
-       new = CommonJob.new(row, projects, supported_os, distributions)
-       case row[:jtype]
+       new = CommonJob.new(r, projects, supported_os, distributions)
+       case r['jtype']
        when "MULTIBUILD" then
                multiJobs.push new
        when "REGISTER"
                registerJobs.push new
        when "BUILD"
-               if row[:parent_job_id].nil?
+               if row['parent_job_id'].nil?
                        singleJobs.push new
                else
                        set = false
                        multiJobs.each do |x|
-                               if x.id == row[:parent_job_id] then
+                               if x.id == row['parent_job_id'] then
                                        new.t_BASE = x.t_S
                                        x.sub_job.push new
                                        set = true
                                        break
                                else
                                        x.sub_job.each do |y|
-                                               if y.id == row[:parent_job_id] then
+                                               if y.id == row['parent_job_id'] then
                                                        new.t_BASE = x.t_S
                                                        y.sub_job.push new
                                                        set = true
@@ -254,7 +245,7 @@ FROM rsa.jobs
                        end
                        if not set then
                                singleJobs.each do |x|
-                                       if x.id == row[:parent_job_id] then
+                                       if x.id == row['parent_job_id'] then
                                                new.t_BASE = x.t_S
                                                x.sub_job.push new
                                                set = true
@@ -264,7 +255,7 @@ FROM rsa.jobs
                        end
                        if not set then
                                registerJobs.each do |x|
-                                       if x.id == row[:parent_job_id] then
+                                       if x.id == row['parent_job_id'] then
                                                new.t_BASE = x.t_S
                                                x.sub_job.push new
                                                set = true
@@ -274,7 +265,7 @@ FROM rsa.jobs
                        end
                        if not set then
                                orphanJobs.each do |x|
-                                       if x.id == row[:parent_job_id] then
+                                       if x.id == row['parent_job_id'] then
                                                new.t_BASE = x.t_S
                                                x.sub_job.push new
                                                set = true