diff --git a/src/ziggurat/metrics.clj b/src/ziggurat/metrics.clj index 6f3f161d..56ef1a0f 100644 --- a/src/ziggurat/metrics.clj +++ b/src/ziggurat/metrics.clj @@ -14,8 +14,11 @@ (defn- merge-tags [additional-tags] (let [default-tags {"actor" (:app-name (ziggurat-config))}] - (merge default-tags (when-not (seq additional-tags) - (stringify-keys additional-tags))))) + (merge default-tags (stringify-keys additional-tags)))) + +(defn- get-tagged-metric + [metric-name tags] + (.tagged ^MetricName metric-name tags)) (defn mk-meter ([category metric] @@ -24,7 +27,7 @@ (let [namespace (str category "." metric) metric-name (MetricRegistry/name ^String namespace nil) tags (merge-tags additional-tags) - tagged-metric (.tagged ^MetricName metric-name tags)] + tagged-metric (get-tagged-metric metric-name tags)] (.meter ^MetricRegistry metrics-registry ^MetricName tagged-metric)))) (defn mk-histogram diff --git a/test/ziggurat/metrics_test.clj b/test/ziggurat/metrics_test.clj index 8ae9c3ac..32db653a 100644 --- a/test/ziggurat/metrics_test.clj +++ b/test/ziggurat/metrics_test.clj @@ -1,21 +1,48 @@ (ns ziggurat.metrics-test (:require [clojure.test :refer :all] + [clojure.walk :refer [stringify-keys]] + [ziggurat.config :refer [ziggurat-config]] + [ziggurat.fixtures :as fix] [ziggurat.metrics :as metrics]) (:import (io.dropwizard.metrics5 Meter Histogram UniformReservoir))) +(use-fixtures :once fix/mount-only-config) + (deftest mk-meter-test - (testing "returns a meter" - (let [category "category" - metric "metric1" - meter (metrics/mk-meter category metric)] - (is (instance? Meter meter))))) + (let [category "category" + metric "metric1" + service-name (:app-name (ziggurat-config))] + (testing "returns a meter" + (let [expected-tags {"actor" service-name}] + (with-redefs [metrics/get-tagged-metric (fn [metric-name tags] + (is (= tags expected-tags)) + (.tagged metric-name tags))] + (is (instance? Meter (metrics/mk-meter category metric)))))) + (testing "returns a meter - with additional-tags" + (let [additional-tags {:foo "bar"} + expected-tags (merge {"actor" service-name} (stringify-keys additional-tags))] + (with-redefs [metrics/get-tagged-metric (fn [metric-name tags] + (is (= tags expected-tags)) + (.tagged metric-name tags))] + (is (instance? Meter (metrics/mk-meter category metric additional-tags)))))))) (deftest mk-histogram-test - (testing "returns a histogram" - (let [category "category" - metric "metric2" - meter (metrics/mk-histogram category metric)] - (is (instance? Histogram meter))))) + (let [category "category" + metric "metric2" + service-name (:app-name (ziggurat-config))] + (testing "returns a histogram" + (let [expected-tags {"actor" service-name}] + (with-redefs [metrics/get-tagged-metric (fn [metric-name tags] + (is (= tags expected-tags)) + (.tagged metric-name tags))] + (is (instance? Histogram (metrics/mk-histogram category metric)))))) + (testing "returns a histogram - with additional-tags" + (let [additional-tags {:foo "bar"} + expected-tags (merge {"actor" service-name} (stringify-keys additional-tags))] + (with-redefs [metrics/get-tagged-metric (fn [metric-name tags] + (is (= tags expected-tags)) + (.tagged metric-name tags))] + (is (instance? Histogram (metrics/mk-histogram category metric additional-tags)))))))) (deftest increment-count-test (let [metric "metric3"