Skip to content

Commit c8e941a

Browse files
author
Oskar Kapusta
committed
Format Slack messages only
1 parent 630fad7 commit c8e941a

File tree

5 files changed

+20
-22
lines changed

5 files changed

+20
-22
lines changed

lib/appoptics-services/numbers.rb

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,24 @@
1-
require 'active_support/all'
2-
31
module AppOptics
42
module Services
53
class Numbers
6-
extend ActiveSupport::NumberHelper
7-
84
def self.format_for_threshold(threshold, number, tolerance=2)
95
threshold_decimals = number_decimal_places(threshold)
106
number_decimals = number_decimal_places(number)
117

128
if !threshold_decimals || !number_decimals
13-
return number_to_delimited(number)
9+
return number
1410
end
1511

1612
if (number_decimals - tolerance) <= threshold_decimals
17-
return number_to_delimited(number)
13+
return number
1814
end
1915

2016
# here we have more decimals in the number than the threshold
2117
# number: 3.14159
2218
# threshold: 3.14
2319

2420
factor = (10**(threshold_decimals+tolerance)).to_f
25-
number_to_delimited((number * factor).truncate / factor)
21+
(number * factor).truncate / factor
2622
end
2723

2824
def self.number_decimal_places(number)

lib/appoptics-services/output.rb

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
require 'redcarpet'
22
require 'active_support/core_ext/string/filters.rb'
3+
require 'active_support/number_helper.rb'
34

45
require_relative 'helpers/alert_helpers'
56
require_relative 'numbers'
@@ -11,6 +12,7 @@ module AppOptics
1112
module Services
1213
class Output
1314
include Helpers::AlertHelpers
15+
include ActiveSupport::NumberHelper
1416

1517
attr_reader :violations, :conditions, :alert, :clear, :trigger_time, :alert_url
1618
def initialize(payload, add_test_notice=true)
@@ -102,24 +104,27 @@ def generate_alert_cleared
102104
lines.join("\n")
103105
end
104106

105-
def format_measurement(measurement, source = nil)
107+
def format_measurement(measurement, source = nil, service = nil)
106108
condition = @conditions[measurement[:condition_violated]]
107109
if source
108110
metric = "`#{measurement[:metric]}` from `#{source}`"
109111
else
110112
metric = "`#{measurement[:metric]}`"
111113
end
112114
violation_time = measurement[:end] || measurement[:recorded_at]
113-
"metric #{metric} was #{format_violation_type(condition, measurement)} recorded at #{format_time(violation_time)}"
115+
"metric #{metric} was #{format_violation_type(condition, measurement, service)} recorded at #{format_time(violation_time)}"
114116
end
115117

116-
def format_violation_type(condition, measurement)
118+
def format_violation_type(condition, measurement, service)
117119
if condition[:type] == "absent"
118120
"absent for #{condition[:duration]} seconds"
119121
else
120122
threshold_value = condition[:threshold]
121123
actual_value = measurement[:value]
122124
formatted_value = AppOptics::Services::Numbers.format_for_threshold(threshold_value, actual_value)
125+
if service == AppOptics::Services::Service::Slack::SERVICE_NAME
126+
formatted_value = number_to_delimited(formatted_value)
127+
end
123128
"#{condition[:type]} threshold #{threshold(condition,measurement)} with value #{formatted_value}"
124129
end
125130
end

lib/appoptics-services/service.rb

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -179,5 +179,3 @@ class ConfigurationError < StandardError; end
179179
Dir[File.join(File.dirname(__FILE__), '../../services/*.rb')].each { |service|
180180
load service
181181
}
182-
183-

services/slack.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
module AppOptics::Services
88
class Service::Slack < AppOptics::Services::Service
99
VERTICAL_LINE_COLOR = "#0880ad"
10+
SERVICE_NAME = "slack"
1011

1112
def receive_validate(errors = {})
1213
if settings[:url].blank?
@@ -70,7 +71,7 @@ def v2_alert_result
7071
{
7172
:title => source,
7273
:value => measurements.inject([]) do |texts, measurement|
73-
texts << data.format_measurement(measurement)
74+
texts << data.format_measurement(measurement, nil, SERVICE_NAME)
7475
end.join("\n")
7576
}
7677
end,

test/numbers_test.rb

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,18 +8,16 @@ def format(threshold, number, tolerance=2)
88
end
99

1010
def test_does_not_change
11-
assert format(10, 10.53) == "10.53"
12-
assert format(10.53, 10.53) == "10.53"
11+
assert format(10, 10.53) == 10.53
12+
assert format(10.53, 10.53) == 10.53
1313
end
1414

1515
def test_changes
16-
assert_equal "10.5312", format(10.53, 10.5312345)
17-
assert_equal "10.53", format(10, 10.5312345)
18-
assert_equal "0.53", format(0, 0.5312345)
19-
assert_equal "0.5312", format(0.12, 0.5312345)
20-
assert_equal "100", format(10, 100)
21-
assert_equal "12,345,678", format(10, 12345678)
22-
assert_equal "12,345,678.0", format(10, 12345678.0)
16+
assert_equal 10.5312, format(10.53, 10.5312345)
17+
assert_equal 10.53, format(10, 10.5312345)
18+
assert_equal 0.53, format(0, 0.5312345)
19+
assert_equal 0.5312, format(0.12, 0.5312345)
20+
assert_equal 100, format(10, 100)
2321
end
2422

2523

0 commit comments

Comments
 (0)