summaryrefslogtreecommitdiff
path: root/spec/helpers/sidekiq_helper_spec.rb
blob: 141c4b5350cdf46a6571398ad86062ba410f18f1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
require "spec_helper"

describe SidekiqHelper do
  describe "parse_sidekiq_ps" do
    it "parses line with time" do
      line = "55137\t10,0\t2,1\tS+\t2:30pm\tsidekiq 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\t10,0\t2,1\tS+\tAug 4\tsidekiq 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\t10,0\t2,1\tS+\tAug 04\tsidekiq 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\t10.0\t2.1\tS+\t2:30pm\tsidekiq 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 OSX output" do
      line = " 1641   1.5  3.8 S+    4:04PM sidekiq 4.2.1 gitlab [0 of 25 busy]"
      parts = helper.parse_sidekiq_ps(line)

      expect(parts).to eq(["1641", "1.5", "3.8", "S+", "4:04PM", "sidekiq 4.2.1 gitlab [0 of 25 busy]"])
    end

    it "parses Ubuntu output" do
      # Ubuntu Linux 16.04 LTS / procps-3.3.10-4ubuntu2
      line = "  938  1.4  2.5 Sl+  21:23:21 sidekiq 4.2.1 gitlab [0 of 25 busy]   "
      parts = helper.parse_sidekiq_ps(line)

      expect(parts).to eq(["938", "1.4", "2.5", "Sl+", "21:23:21", "sidekiq 4.2.1 gitlab [0 of 25 busy]"])
    end

    it "parses Debian output" do
      # Debian Linux Wheezy/Jessie
      line = "17725  1.0 12.1 Ssl  19:20:15 sidekiq 4.2.1 gitlab-rails [0 of 25 busy]   "
      parts = helper.parse_sidekiq_ps(line)

      expect(parts).to eq(["17725", "1.0", "12.1", "Ssl", "19:20:15", "sidekiq 4.2.1 gitlab-rails [0 of 25 busy]"])
    end

    it "parses OpenBSD output" do
      # OpenBSD 6.1
      line = "49258  0.5  2.3 R/0   Fri10PM  ruby23: sidekiq 4.2.7 gitlab [0 of 25 busy] (ruby23)"
      parts = helper.parse_sidekiq_ps(line)

      expect(parts).to eq(["49258", "0.5", "2.3", "R/0", "Fri10PM", "ruby23: sidekiq 4.2.7 gitlab [0 of 25 busy] (ruby23)"])
    end

    it "does fail gracefully on line not matching the format" do
      line = "55137\t10.0\t2.1\tS+\t2:30pm\tsomething"
      parts = helper.parse_sidekiq_ps(line)

      expect(parts).to eq(["?", "?", "?", "?", "?", "?"])
    end
  end
end