From d027ed719dfdfabb687985ec6d4c6301953102cc Mon Sep 17 00:00:00 2001
From: Pascal Betz <pascal.betz@gmail.com>
Date: Thu, 8 Sep 2016 15:30:16 +0200
Subject: [PATCH] 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
+  (?<pid>\d+)\s+
+  (?<cpu>[\d\.,]+)\s+
+  (?<mem>[\d\.,]+)\s+
+  (?<state>[DRSTWXZNLsl\+<]+)\s+
+  (?<start>.+)\s+
+  (?<command>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
-- 
GitLab