Skip to content

Commit

Permalink
NH-58499: move custom_metrics to api and add test
Browse files Browse the repository at this point in the history
  • Loading branch information
xuan-cao-swi committed Sep 20, 2023
1 parent efd50c4 commit 6bd9542
Show file tree
Hide file tree
Showing 6 changed files with 90 additions and 18 deletions.
1 change: 0 additions & 1 deletion lib/solarwinds_apm.rb
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@
require 'solarwinds_apm/support_report'
require 'solarwinds_apm/constants'
require 'solarwinds_apm/api'
require 'solarwinds_apm/sdk'
require 'solarwinds_apm/base'
require 'solarwinds_apm/logger'
require 'solarwinds_apm/config'
Expand Down
2 changes: 2 additions & 0 deletions lib/solarwinds_apm/api.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,14 @@
require_relative './api/current_trace_info'
require_relative './api/tracing'
require_relative './api/opentelemetry'
require_relative './api/custom_metrics'

module SolarWindsAPM
module API
extend SolarWindsAPM::API::TransactionName
extend SolarWindsAPM::API::CurrentTraceInfo
extend SolarWindsAPM::API::Tracing
extend SolarWindsAPM::API::OpenTelemetry
extend SolarWindsAPM::API::CustomMetrics
end
end
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
module SolarWindsAPM
module SDK
module API
module CustomMetrics
# Send counts
#
Expand All @@ -17,19 +17,19 @@ module CustomMetrics
# class WorkTracker
# def counting(name, tags = {})
# yield # yield to where work is done
# SolarWindsAPM::SDK.increment_metric(name, 1, false, tags)
# SolarWindsAPM::API.increment_metric(name, 1, false, tags)
# end
# end
#
# === Returns:
# * 0 on success, error code on failure
# * Boolean
#
def increment_metric(name, count=1, with_hostname=false, tags_kvs={}) # rubocop:disable Style/OptionalBooleanParameter
return true unless SolarWindsAPM.loaded

with_hostname = with_hostname ? 1 : 0
tags, tags_count = make_tags(tags_kvs)
SolarWindsAPM::CustomMetrics.increment(name.to_s, count, with_hostname, nil, tags, tags_count) == 1
SolarWindsAPM::CustomMetrics.increment(name.to_s, count, with_hostname, nil, tags, tags_count) == 0
end

# Send values with counts
Expand All @@ -51,19 +51,19 @@ def increment_metric(name, count=1, with_hostname=false, tags_kvs={}) # rubocop:
# start = Time.now
# yield # yield to where work is done
# duration = Time.now - start
# SolarWindsAPM::SDK.summary_metric(name, duration, 1, false, tags)
# SolarWindsAPM::API.summary_metric(name, duration, 1, false, tags)
# end
# end
#
# === Returns:
# * 0 on success, error code on failure
# * Boolean
#
def summary_metric(name, value, count=1, with_hostname=false, tags_kvs={}) # rubocop:disable Style/OptionalBooleanParameter
return true unless SolarWindsAPM.loaded

with_hostname = with_hostname ? 1 : 0
tags, tags_count = make_tags(tags_kvs)
SolarWindsAPM::CustomMetrics.summary(name.to_s, value, count, with_hostname, nil, tags, tags_count) == 1
SolarWindsAPM::CustomMetrics.summary(name.to_s, value, count, with_hostname, nil, tags, tags_count) == 0
end

private
Expand Down
10 changes: 0 additions & 10 deletions lib/solarwinds_apm/sdk.rb

This file was deleted.

62 changes: 62 additions & 0 deletions test/api/custom_metrics_test.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
# Copyright (c) 2023 SolarWinds, LLC.
# All rights reserved.

require 'minitest_helper'
require 'minitest/mock'
require './lib/solarwinds_apm/api'

describe 'SolarWinds Custom Metrics Test' do
it 'test_increment_metric_with_single_variable_with_successful_liboboe_metric_call' do
SolarWindsAPM::CustomMetrics.stub(:increment, 0) do
SolarWindsAPM::MetricTags.stub(:new, {}) do
result = SolarWindsAPM::API.increment_metric('abc')
_(result).must_equal true
end
end
end

it 'test_increment_metric_with_single_variable_with_failed_liboboe_metric_call' do
SolarWindsAPM::CustomMetrics.stub(:increment, 1) do
SolarWindsAPM::MetricTags.stub(:new, {}) do
result = SolarWindsAPM::API.increment_metric('abc')
_(result).must_equal false
end
end
end

it 'test_increment_metric_with_single_variable_with_success_variables' do
SolarWindsAPM::CustomMetrics.stub(:increment, 0) do
SolarWindsAPM::MetricTags.stub(:new, {}) do
result = SolarWindsAPM::API.increment_metric('abc', 1, true, {})
_(result).must_equal true
end
end
end

it 'test_summary_metric_with_single_variable_with_success' do
SolarWindsAPM::CustomMetrics.stub(:summary, 0) do
SolarWindsAPM::MetricTags.stub(:new, {}) do
result = SolarWindsAPM::API.summary_metric('abc', 1, true, {})
_(result).must_equal true
end
end
end

it 'test_summary_metric_with_single_variable_with_failure' do
SolarWindsAPM::CustomMetrics.stub(:summary, 1) do
SolarWindsAPM::MetricTags.stub(:new, {}) do
result = SolarWindsAPM::API.summary_metric('abc', 1, true, {})
_(result).must_equal false
end
end
end

it 'test_summary_metric_with_single_variable_with_failure' do
SolarWindsAPM::CustomMetrics.stub(:summary, 0) do
SolarWindsAPM::MetricTags.stub(:new, {}) do
result = SolarWindsAPM::API.summary_metric('abc', 7.7, 1, true, {} )
_(result).must_equal true
end
end
end
end
19 changes: 19 additions & 0 deletions test/minitest_helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,25 @@ class << self
end
end

# for custom_metrics_test.rb
module SolarWindsAPM
module CustomMetrics
def self.increment
end
def self.summary
end
end
end

module SolarWindsAPM
module MetricTags
def self.new
end
def self.add
end
end
end

##
# create_span_data
#
Expand Down

0 comments on commit 6bd9542

Please sign in to comment.