From ecb7c589a3a0d83241d890b7d33a45939f5676cd Mon Sep 17 00:00:00 2001 From: Hyoun Jiil Date: Wed, 31 Jul 2013 11:06:23 +0900 Subject: [PATCH] [Title] fix performance_analyzer to get db fast [Type] Enhancement [Module] Toolchain / [Priority] Minor [Jira#] [Redmine#] [Problem] [Cause] [Solution] [TestCase] Change-Id: Ia6839d08e9ec3a7ae1cf4188b8237ced45e155ed --- performance_analyzer | 75 +++++++++++++++++++++++----------------------------- 1 file changed, 33 insertions(+), 42 deletions(-) diff --git a/performance_analyzer b/performance_analyzer index 39d82a4..34b3542 100755 --- a/performance_analyzer +++ b/performance_analyzer @@ -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 -- 2.7.4