From 1112b5a28323bdcee5b7e910575097d1ccb6256c Mon Sep 17 00:00:00 2001 From: Pascal Betz Date: Tue, 6 Sep 2016 21:40:49 +0200 Subject: Move parsing of sidekiq ps into helper --- app/helpers/sidekiq_helper.rb | 12 +++++++++ app/views/admin/background_jobs/show.html.haml | 11 +++----- spec/helpers/sidekiq_helper_spec.rb | 35 ++++++++++++++++++++++++++ 3 files changed, 50 insertions(+), 8 deletions(-) create mode 100644 app/helpers/sidekiq_helper.rb create mode 100644 spec/helpers/sidekiq_helper_spec.rb 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 -- cgit v1.2.1 From de6a44fae6273c44ef27ff55d13799efc9756acd Mon Sep 17 00:00:00 2001 From: Pascal Betz Date: Wed, 7 Sep 2016 21:59:29 +0200 Subject: feedback code review --- CHANGELOG | 1 + app/helpers/sidekiq_helper.rb | 2 +- app/views/admin/background_jobs/show.html.haml | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index d06b782f850..21d3cc1435f 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -12,6 +12,7 @@ v 8.12.0 (unreleased) - Change merge_error column from string to text type - Reduce contributions calendar data payload (ClemMakesApps) - Add `web_url` field to issue, merge request, and snippet API objects (Ben Boeckel) + - Move parsing of sidekiq ps into helper !6245 (pascalbetz) - Expose `sha` and `merge_commit_sha` in merge request API (Ben Boeckel) - Set path for all JavaScript cookies to honor GitLab's subdirectory setting !5627 (Mike Greiling) - Fix bug where pagination is still displayed despite all todos marked as done (ClemMakesApps) diff --git a/app/helpers/sidekiq_helper.rb b/app/helpers/sidekiq_helper.rb index 3644039d38e..82ab26408df 100644 --- a/app/helpers/sidekiq_helper.rb +++ b/app/helpers/sidekiq_helper.rb @@ -6,7 +6,7 @@ module SidekiqHelper if match match[1..6] else - %w{? ? ? ? ? ?} + %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 c2a312b2196..058919635da 100644 --- a/app/views/admin/background_jobs/show.html.haml +++ b/app/views/admin/background_jobs/show.html.haml @@ -29,7 +29,7 @@ %tbody - @sidekiq_processes.each do |process| %td= gitlab_config.user - -parse_sidekiq_ps(process).each do |value| + - parse_sidekiq_ps(process).each do |value| %td= value .clearfix %p -- cgit v1.2.1 From d027ed719dfdfabb687985ec6d4c6301953102cc Mon Sep 17 00:00:00 2001 From: Pascal Betz Date: Thu, 8 Sep 2016 15:30:16 +0200 Subject: Reformat Regexp Fix show template (missing tr) Separate exercise/verify --- app/helpers/sidekiq_helper.rb | 9 +++++++++ app/views/admin/background_jobs/show.html.haml | 7 ++++--- spec/helpers/sidekiq_helper_spec.rb | 5 +++++ 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/app/helpers/sidekiq_helper.rb b/app/helpers/sidekiq_helper.rb index 82ab26408df..37650ca642b 100644 --- a/app/helpers/sidekiq_helper.rb +++ b/app/helpers/sidekiq_helper.rb @@ -1,6 +1,15 @@ module SidekiqHelper SIDEKIQ_PS_REGEXP = /\A([^\s]+)\s+([^\s]+)\s+([^\s]+)\s+([^\s]+)\s+(.+)\s+(sidekiq.*\])\s+\z/ + SIDEKIQ_PS_REGEXP = /\A + (?\d+)\s+ + (?[\d\.,]+)\s+ + (?[\d\.,]+)\s+ + (?[DRSTWXZNLsl\+<]+)\s+ + (?.+)\s+ + (?sidekiq.*\])\s+ + \z/x + def parse_sidekiq_ps(line) match = line.match(SIDEKIQ_PS_REGEXP) if match diff --git a/app/views/admin/background_jobs/show.html.haml b/app/views/admin/background_jobs/show.html.haml index 058919635da..05855db963a 100644 --- a/app/views/admin/background_jobs/show.html.haml +++ b/app/views/admin/background_jobs/show.html.haml @@ -28,9 +28,10 @@ %th COMMAND %tbody - @sidekiq_processes.each do |process| - %td= gitlab_config.user - - parse_sidekiq_ps(process).each do |value| - %td= value + %tr + %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 index 2eb1c816bc5..d60839b78ec 100644 --- a/spec/helpers/sidekiq_helper_spec.rb +++ b/spec/helpers/sidekiq_helper_spec.rb @@ -5,30 +5,35 @@ describe SidekiqHelper 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 -- cgit v1.2.1 From 76c7b83dd5e345583fbaa26d9462a1bec7107a60 Mon Sep 17 00:00:00 2001 From: Pascal Betz Date: Thu, 8 Sep 2016 19:41:25 +0200 Subject: Remove original regexp --- app/helpers/sidekiq_helper.rb | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/app/helpers/sidekiq_helper.rb b/app/helpers/sidekiq_helper.rb index 37650ca642b..d440edc55ba 100644 --- a/app/helpers/sidekiq_helper.rb +++ b/app/helpers/sidekiq_helper.rb @@ -1,14 +1,12 @@ module SidekiqHelper - SIDEKIQ_PS_REGEXP = /\A([^\s]+)\s+([^\s]+)\s+([^\s]+)\s+([^\s]+)\s+(.+)\s+(sidekiq.*\])\s+\z/ - SIDEKIQ_PS_REGEXP = /\A - (?\d+)\s+ - (?[\d\.,]+)\s+ - (?[\d\.,]+)\s+ - (?[DRSTWXZNLsl\+<]+)\s+ - (?.+)\s+ - (?sidekiq.*\])\s+ - \z/x + (?\d+)\s+ + (?[\d\.,]+)\s+ + (?[\d\.,]+)\s+ + (?[DRSTWXZNLsl\+<]+)\s+ + (?.+)\s+ + (?sidekiq.*\])\s+ + \z/x def parse_sidekiq_ps(line) match = line.match(SIDEKIQ_PS_REGEXP) -- cgit v1.2.1