diff --git a/test-resources/babashka/statsd.clj b/test-resources/babashka/statsd.clj new file mode 100644 index 00000000..959fc3bf --- /dev/null +++ b/test-resources/babashka/statsd.clj @@ -0,0 +1,49 @@ +(ns statsd-client + "a simple StatsD client written in Clojure + + Usage: + statsd-client/increment 'foo + statsd-client/decrement 'foo + statsd-client/increment 'foo 1 + statsd-client/decrement 'foo 1 + statsd-client/gauge 'foo 1 + statsd-client/timing 'foo 1 + " + (:import (java.net InetAddress DatagramPacket DatagramSocket))) + +(def server-address "127.0.0.1") +(def server-port 8125) + +; UDP helper functions +(defn make-socket + ([] (new DatagramSocket)) + ([port] (new DatagramSocket port))) + +(defn send-data [send-socket ip port data] + (let [ipaddress (InetAddress/getByName ip), + send-packet (new DatagramPacket (.getBytes data) (.length data) ipaddress port)] + (.send send-socket send-packet))) + +(defn make-send [ip port] + (let [send-socket (make-socket)] + (fn [data] (send-data send-socket ip port data)))) + +(def send-msg (make-send server-address server-port)) + +; statsd client functions +(defn increment + ([metric] (increment metric 1)) + ([metric value] + (send-msg (str metric ":" value "|c")))) + +(defn decrement + ([metric] (increment metric -1)) + ([metric value] + (send-msg (str metric ":" value "|c")))) + +(defn timing [metric value] + (send-msg (str metric ":" value "|ms"))) + +(defn gauge [metric value] + (send-msg (str metric ":" value "|g"))) +