Commit be0a949a authored by Rémy Coutable's avatar Rémy Coutable

DRYed peek-pg/mysql2 views and update peek-rblineprof monkey-patch file

Signed-off-by: default avatarRémy Coutable <remy@rymai.me>
parent ef4ccb7e
%strong - local_assigns.fetch(:view)
%a#peek-show-queries{ href: '#' }
%span{ data: { defer_to: "#{view.defer_key}-duration" } }... = render 'peek/views/sql', view: view
\/
%span{ data: { defer_to: "#{view.defer_key}-calls" } }...
#modal-peek-pg-queries.modal{ tabindex: -1 }
.modal-dialog
#modal-peek-pg-queries-content.modal-content
.modal-header
%a.close{ href: "#", "data-dismiss" => "modal" } ×
%h4
SQL queries
.modal-body{ data: { defer_to: "#{view.defer_key}-queries" } }...
mysql mysql
%strong - local_assigns.fetch(:view)
%a#peek-show-queries{ href: '#' }
%span{ data: { defer_to: "#{view.defer_key}-duration" } }... = render 'peek/views/sql', view: view
\/
%span{ data: { defer_to: "#{view.defer_key}-calls" } }...
#modal-peek-pg-queries.modal{ tabindex: -1 }
.modal-dialog
#modal-peek-pg-queries-content.modal-content
.modal-header
%a.close{ href: "#", "data-dismiss" => "modal" } ×
%h4
SQL queries
.modal-body{ data: { defer_to: "#{view.defer_key}-queries" } }...
pg pg
%strong
%a#peek-show-queries{ href: '#' }
%span{ data: { defer_to: "#{view.defer_key}-duration" } }...
\/
%span{ data: { defer_to: "#{view.defer_key}-calls" } }...
#modal-peek-pg-queries.modal{ tabindex: -1 }
.modal-dialog
#modal-peek-pg-queries-content.modal-content
.modal-header
%a.close{ href: "#", "data-dismiss" => "modal" } ×
%h4
SQL queries
.modal-body{ data: { defer_to: "#{view.defer_key}-queries" } }...
...@@ -3,6 +3,8 @@ module Peek ...@@ -3,6 +3,8 @@ module Peek
module CustomControllerHelpers module CustomControllerHelpers
extend ActiveSupport::Concern extend ActiveSupport::Concern
# This will become useless once https://github.com/peek/peek-rblineprof/pull/5
# is merged
def pygmentize(file_name, code, lexer = nil) def pygmentize(file_name, code, lexer = nil)
if lexer.present? if lexer.present?
Gitlab::Highlight.highlight(file_name, code) Gitlab::Highlight.highlight(file_name, code)
...@@ -11,7 +13,7 @@ module Peek ...@@ -11,7 +13,7 @@ module Peek
end end
end end
# rubocop:disable Metrics/AbcSize # rubocop:disable all
def inject_rblineprof def inject_rblineprof
ret = nil ret = nil
profile = lineprof(rblineprof_profiler_regex) do profile = lineprof(rblineprof_profiler_regex) do
...@@ -26,43 +28,32 @@ module Peek ...@@ -26,43 +28,32 @@ module Peek
# Sort each file by the longest calculated time # Sort each file by the longest calculated time
per_file = profile.map do |file, lines| per_file = profile.map do |file, lines|
total, _child, excl, total_cpu, _child_cpu, excl_cpu = lines[0] total, child, excl, total_cpu, child_cpu, excl_cpu = lines[0]
wall = summary == 'exclusive' ? excl : total wall = summary == 'exclusive' ? excl : total
cpu = summary == 'exclusive' ? excl_cpu : total_cpu cpu = summary == 'exclusive' ? excl_cpu : total_cpu
idle = summary == 'exclusive' ? (excl - excl_cpu) : (total - total_cpu) idle = summary == 'exclusive' ? (excl - excl_cpu) : (total - total_cpu)
sort_method =
case sort
when 'idle'
idle
when 'cpu'
cpu
else
wall
end
[ [
file, lines, file, lines,
wall, cpu, idle, wall, cpu, idle,
sort_method sort == 'idle' ? idle : sort == 'cpu' ? cpu : wall
] ]
end end.sort_by{ |a,b,c,d,e,f| -f }
per_file = per_file.sort_by { |_a, _b, _c, _d, _e, f| -f }
output = '' output = ''
per_file.each do |file_name, lines, file_wall, file_cpu, file_idle, file_sort| per_file.each do |file_name, lines, file_wall, file_cpu, file_idle, file_sort|
output << "<div class='peek-rblineprof-file'><div class='heading'>" output << "<div class='peek-rblineprof-file'><div class='heading'>"
show_src = file_sort > min show_src = file_sort > min
tmpl = show_src ? "<a href='#' class='js-lineprof-file'>%s</a>" : "%s" tmpl = show_src ? "<a href='#' class='js-lineprof-file'>%s</a>" : "%s"
output << if mode == 'cpu'
if mode == 'cpu' output << sprintf("<span class='duration'>% 8.1fms + % 8.1fms</span> #{tmpl}", file_cpu / 1000.0, file_idle / 1000.0, file_name.sub(Rails.root.to_s + '/', ''))
sprintf("<span class='duration'>% 8.1fms + % 8.1fms</span> #{tmpl}", file_cpu / 1000.0, file_idle / 1000.0, file_name.sub(Rails.root.to_s + '/', '')) else
else output << sprintf("<span class='duration'>% 8.1fms</span> #{tmpl}", file_wall/1000.0, file_name.sub(Rails.root.to_s + '/', ''))
sprintf("<span class='duration'>% 8.1fms</span> #{tmpl}", file_wall / 1000.0, file_name.sub(Rails.root.to_s + '/', '')) end
end
output << "</div>" # .heading output << "</div>" # .heading
...@@ -89,6 +80,8 @@ module Peek ...@@ -89,6 +80,8 @@ module Peek
output << "<pre class='duration'>#{times.join("\n")}</pre>" output << "<pre class='duration'>#{times.join("\n")}</pre>"
# The following line was changed from # The following line was changed from
# https://github.com/peek/peek-rblineprof/blob/8d3b7a283a27de2f40abda45974516693d882258/lib/peek/rblineprof/controller_helpers.rb#L125 # https://github.com/peek/peek-rblineprof/blob/8d3b7a283a27de2f40abda45974516693d882258/lib/peek/rblineprof/controller_helpers.rb#L125
# This will become useless once https://github.com/peek/peek-rblineprof/pull/16
# is merged and is implemented.
output << "<pre class='code highlight white'>#{pygmentize(file_name, code.join, 'ruby')}</pre>" output << "<pre class='code highlight white'>#{pygmentize(file_name, code.join, 'ruby')}</pre>"
output << "</div></div>" # .data then .peek-rblineprof-file output << "</div></div>" # .data then .peek-rblineprof-file
end end
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment