summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPascal Betz <pascal.betz@gmail.com>2016-09-06 21:40:49 +0200
committerPascal Betz <pascal.betz@gmail.com>2016-09-07 12:16:05 +0200
commit1112b5a28323bdcee5b7e910575097d1ccb6256c (patch)
treeacd6378f677a3ee7e63ce58662cbfbbebc68e0c0
parent80e575af523f49d314dc83e02989115193b9ab64 (diff)
downloadgitlab-ce-1112b5a28323bdcee5b7e910575097d1ccb6256c.tar.gz
Move parsing of sidekiq ps into helper
-rw-r--r--app/helpers/sidekiq_helper.rb12
-rw-r--r--app/views/admin/background_jobs/show.html.haml11
-rw-r--r--spec/helpers/sidekiq_helper_spec.rb35
3 files changed, 50 insertions, 8 deletions
diff --git a/app/helpers/sidekiq_helper.rb b/app/helpers/sidekiq_helper.rb
new file mode 100644
index 00000000000..3644039d38e
--- /dev/null
+++ b/app/helpers/sidekiq_helper.rb
@@ -0,0 +1,12 @@
+module SidekiqHelper
+ SIDEKIQ_PS_REGEXP = /\A([^\s]+)\s+([^\s]+)\s+([^\s]+)\s+([^\s]+)\s+(.+)\s+(sidekiq.*\])\s+\z/
+
+ def parse_sidekiq_ps(line)
+ match = line.match(SIDEKIQ_PS_REGEXP)
+ if match
+ match[1..6]
+ else
+ %w{? ? ? ? ? ?}
+ end
+ end
+end
diff --git a/app/views/admin/background_jobs/show.html.haml b/app/views/admin/background_jobs/show.html.haml
index 4f680b507c4..c2a312b2196 100644
--- a/app/views/admin/background_jobs/show.html.haml
+++ b/app/views/admin/background_jobs/show.html.haml
@@ -28,14 +28,9 @@
%th COMMAND
%tbody
- @sidekiq_processes.each do |process|
- - next unless process.match(/(sidekiq \d+\.\d+\.\d+.+$)/)
- - data = process.strip.split(' ')
- %tr
- %td= gitlab_config.user
- - 5.times do
- %td= data.shift
- %td= data.join(' ')
-
+ %td= gitlab_config.user
+ -parse_sidekiq_ps(process).each do |value|
+ %td= value
.clearfix
%p
%i.fa.fa-exclamation-circle
diff --git a/spec/helpers/sidekiq_helper_spec.rb b/spec/helpers/sidekiq_helper_spec.rb
new file mode 100644
index 00000000000..2eb1c816bc5
--- /dev/null
+++ b/spec/helpers/sidekiq_helper_spec.rb
@@ -0,0 +1,35 @@
+require 'spec_helper'
+
+describe SidekiqHelper do
+ describe 'parse_sidekiq_ps' do
+ it 'parses line with time' do
+ line = '55137 10,0 2,1 S+ 2:30pm sidekiq 4.1.4 gitlab [0 of 25 busy] '
+ parts = helper.parse_sidekiq_ps(line)
+ expect(parts).to eq(['55137', '10,0', '2,1', 'S+', '2:30pm', 'sidekiq 4.1.4 gitlab [0 of 25 busy]'])
+ end
+
+ it 'parses line with date' do
+ line = '55137 10,0 2,1 S+ Aug 4 sidekiq 4.1.4 gitlab [0 of 25 busy] '
+ parts = helper.parse_sidekiq_ps(line)
+ expect(parts).to eq(['55137', '10,0', '2,1', 'S+', 'Aug 4', 'sidekiq 4.1.4 gitlab [0 of 25 busy]'])
+ end
+
+ it 'parses line with two digit date' do
+ line = '55137 10,0 2,1 S+ Aug 04 sidekiq 4.1.4 gitlab [0 of 25 busy] '
+ parts = helper.parse_sidekiq_ps(line)
+ expect(parts).to eq(['55137', '10,0', '2,1', 'S+', 'Aug 04', 'sidekiq 4.1.4 gitlab [0 of 25 busy]'])
+ end
+
+ it 'parses line with dot as float separator' do
+ line = '55137 10.0 2.1 S+ 2:30pm sidekiq 4.1.4 gitlab [0 of 25 busy] '
+ parts = helper.parse_sidekiq_ps(line)
+ expect(parts).to eq(['55137', '10.0', '2.1', 'S+', '2:30pm', 'sidekiq 4.1.4 gitlab [0 of 25 busy]'])
+ end
+
+ it 'does fail gracefully on line not matching the format' do
+ line = '55137 10.0 2.1 S+ 2:30pm something'
+ parts = helper.parse_sidekiq_ps(line)
+ expect(parts).to eq(['?', '?', '?', '?', '?', '?'])
+ end
+ end
+end