88 lines
3.3 KiB
Ruby
88 lines
3.3 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require_relative "test_helper"
|
|
require "prometheus_exporter/client"
|
|
|
|
class PrometheusExporterTest < Minitest::Test
|
|
def test_find_the_correct_registered_metric
|
|
client = PrometheusExporter::Client.new
|
|
|
|
# register a metrics for testing
|
|
counter_metric = client.register(:counter, "counter_metric", "helping")
|
|
|
|
# when the given name doesn't match any existing metric, it returns nil
|
|
result = client.find_registered_metric("not_registered")
|
|
assert_nil(result)
|
|
|
|
# when the given name matches an existing metric, it returns this metric
|
|
result = client.find_registered_metric("counter_metric")
|
|
assert_equal(counter_metric, result)
|
|
|
|
# when the given name matches an existing metric, but the given type doesn't, it returns nil
|
|
result = client.find_registered_metric("counter_metric", type: :gauge)
|
|
assert_nil(result)
|
|
|
|
# when the given name and type match an existing metric, it returns the metric
|
|
result = client.find_registered_metric("counter_metric", type: :counter)
|
|
assert_equal(counter_metric, result)
|
|
|
|
# when the given name matches an existing metric, but the given help doesn't, it returns nil
|
|
result = client.find_registered_metric("counter_metric", help: "not helping")
|
|
assert_nil(result)
|
|
|
|
# when the given name and help match an existing metric, it returns the metric
|
|
result = client.find_registered_metric("counter_metric", help: "helping")
|
|
assert_equal(counter_metric, result)
|
|
|
|
# when the given name matches an existing metric, but the given help and type don't, it returns nil
|
|
result = client.find_registered_metric("counter_metric", type: :gauge, help: "not helping")
|
|
assert_nil(result)
|
|
|
|
# when the given name, type, and help all match an existing metric, it returns the metric
|
|
result = client.find_registered_metric("counter_metric", type: :counter, help: "helping")
|
|
assert_equal(counter_metric, result)
|
|
end
|
|
|
|
def test_standard_values
|
|
client = PrometheusExporter::Client.new
|
|
counter_metric = client.register(:counter, "counter_metric", "helping")
|
|
assert_equal(false, counter_metric.standard_values("value", "key").has_key?(:opts))
|
|
|
|
expected_quantiles = { quantiles: [0.99, 9] }
|
|
summary_metric = client.register(:summary, "summary_metric", "helping", expected_quantiles)
|
|
assert_equal(expected_quantiles, summary_metric.standard_values("value", "key")[:opts])
|
|
end
|
|
|
|
def test_close_socket_on_error
|
|
logs = StringIO.new
|
|
logger = Logger.new(logs)
|
|
logger.level = :error
|
|
|
|
client =
|
|
PrometheusExporter::Client.new(logger: logger, port: 321, process_queue_once_and_stop: true)
|
|
client.send("put a message in the queue")
|
|
|
|
assert_includes(
|
|
logs.string,
|
|
"Prometheus Exporter, failed to send message Connection refused - connect(2) for \"localhost\" port 321",
|
|
)
|
|
end
|
|
|
|
def test_overriding_logger
|
|
logs = StringIO.new
|
|
logger = Logger.new(logs)
|
|
logger.level = :warn
|
|
|
|
client =
|
|
PrometheusExporter::Client.new(
|
|
logger: logger,
|
|
max_queue_size: 1,
|
|
process_queue_once_and_stop: true,
|
|
)
|
|
client.send("put a message in the queue")
|
|
client.send("put a second message in the queue to trigger the logger")
|
|
|
|
assert_includes(logs.string, "dropping message cause queue is full")
|
|
end
|
|
end
|