more protective and more tests
This commit is contained in:
parent
07d2000eb3
commit
9a72e63932
2 changed files with 45 additions and 9 deletions
|
@ -1,5 +1,24 @@
|
||||||
(ns bigbrother.core
|
(ns bigbrother.core
|
||||||
"This file provide helpers to manage time spend in functions"
|
"This file provide helpers to manage time spend in functions
|
||||||
|
|
||||||
|
## Concepts
|
||||||
|
|
||||||
|
You count the time between a start and an end time.
|
||||||
|
Typically:
|
||||||
|
|
||||||
|
```
|
||||||
|
start
|
||||||
|
action1
|
||||||
|
log action1 finished
|
||||||
|
action2
|
||||||
|
log action2 finished
|
||||||
|
action1
|
||||||
|
log action1 finished
|
||||||
|
action3
|
||||||
|
log action3 finished
|
||||||
|
end
|
||||||
|
```
|
||||||
|
"
|
||||||
(:require [clojure.tools.logging :as log]
|
(:require [clojure.tools.logging :as log]
|
||||||
[clojure.data.json :as json]
|
[clojure.data.json :as json]
|
||||||
[overtone.at-at :refer [every mk-pool]]
|
[overtone.at-at :refer [every mk-pool]]
|
||||||
|
@ -29,6 +48,7 @@
|
||||||
(def log-mmetric max-metrics/log-mmetric)
|
(def log-mmetric max-metrics/log-mmetric)
|
||||||
|
|
||||||
(defn timer-loop-finished
|
(defn timer-loop-finished
|
||||||
|
"The loop is finished"
|
||||||
([]
|
([]
|
||||||
;; increment the number of loop
|
;; increment the number of loop
|
||||||
(swap! n inc)
|
(swap! n inc)
|
||||||
|
@ -77,22 +97,26 @@
|
||||||
(defn ok [] (fn [_] "ok"))
|
(defn ok [] (fn [_] "ok"))
|
||||||
(defn warning [] (fn [_] "warning"))
|
(defn warning [] (fn [_] "warning"))
|
||||||
(defn critical [] (fn [_] "critical"))
|
(defn critical [] (fn [_] "critical"))
|
||||||
|
(defn informational [] (fn [_] "informational"))
|
||||||
|
|
||||||
(defn- to-riemann-event [[k v]]
|
(defn- to-riemann-event [[k v]]
|
||||||
(when (number? v)
|
(when (number? v)
|
||||||
(let [lvl-fn (get @level-by-key k)
|
(let [lvl-fn (get @level-by-key k)
|
||||||
level (if lvl-fn (lvl-fn v) "ok")]
|
level (if lvl-fn (lvl-fn v) "informational")]
|
||||||
(into
|
(into
|
||||||
@riemann-conf
|
@riemann-conf
|
||||||
{:service (str @riemann-service " " (name k))
|
{:service (str @riemann-service " " (name k))
|
||||||
:state level
|
:state level
|
||||||
:metric v}))))
|
:metric v}))))
|
||||||
|
|
||||||
(defn send-to-riemann [m]
|
(defn send-to-riemann [m]
|
||||||
(let [result-map (into @default-map m)
|
(let [result-map (into @default-map m)
|
||||||
events (remove nil? (map to-riemann-event result-map))]
|
events (remove nil? (map to-riemann-event result-map))]
|
||||||
(when @riemann-conn
|
(when @riemann-conn
|
||||||
(r/send-events @riemann-conn events))))
|
(try
|
||||||
|
(r/send-events @riemann-conn events)
|
||||||
|
(catch Exception e
|
||||||
|
(log/error e))))))
|
||||||
|
|
||||||
|
|
||||||
(defn reset-accumulators! []
|
(defn reset-accumulators! []
|
||||||
|
|
|
@ -27,11 +27,16 @@
|
||||||
(log-time session :end)
|
(log-time session :end)
|
||||||
(telescreen-off session)
|
(telescreen-off session)
|
||||||
(end-session! session))
|
(end-session! session))
|
||||||
(let [result (resume-map 1000)]
|
(let [result (resume-map 1000)
|
||||||
|
result2 (resume-map 2000)
|
||||||
|
]
|
||||||
(is (contains? result :nb))
|
(is (contains? result :nb))
|
||||||
(is (contains? result :x1))
|
(is (contains? result :x1))
|
||||||
(is (contains? result :x2))
|
(is (contains? result :x2))
|
||||||
(is (>= (:total result) (:x2 result))))))
|
(is (= (:x1 result) (:x1 result2)))
|
||||||
|
(is (= (:x2 result) (:x2 result2)))
|
||||||
|
(is (>= (:total result) (:x2 result)))
|
||||||
|
(is (= (/ (:nb result) 2) (:nb result2))))))
|
||||||
|
|
||||||
(deftest check-metrics
|
(deftest check-metrics
|
||||||
(do
|
(do
|
||||||
|
@ -46,13 +51,16 @@
|
||||||
(log-metric :foo 3)
|
(log-metric :foo 3)
|
||||||
(log-metric :bar 1)
|
(log-metric :bar 1)
|
||||||
(timer-loop-finished)
|
(timer-loop-finished)
|
||||||
(let [result (resume-map 1000)]
|
(let [result (resume-map 1000)
|
||||||
|
result2 (resume-map 2000)
|
||||||
|
]
|
||||||
(is (contains? result :foo))
|
(is (contains? result :foo))
|
||||||
(is (contains? result :bar))
|
(is (contains? result :bar))
|
||||||
(is (contains? result :nb))
|
(is (contains? result :nb))
|
||||||
(is (= 2.0 (:foo result)))
|
(is (= 2.0 (:foo result)))
|
||||||
(is (= 2.0 (:bar result)))
|
(is (= 2.0 (:bar result)))
|
||||||
(is (= 3.0 (:nb result))))))
|
(is (= 3.0 (:nb result)))
|
||||||
|
(is (= (/ (:nb result) 2) (:nb result2))))))
|
||||||
|
|
||||||
(deftest check-mmetrics
|
(deftest check-mmetrics
|
||||||
(do
|
(do
|
||||||
|
@ -66,12 +74,16 @@
|
||||||
(log-mmetric :foo 60)
|
(log-mmetric :foo 60)
|
||||||
(log-mmetric :bar 6)
|
(log-mmetric :bar 6)
|
||||||
(timer-loop-finished)
|
(timer-loop-finished)
|
||||||
(let [result (resume-map 1000)]
|
(let [result (resume-map 1000)
|
||||||
|
result2 (resume-map 2000)
|
||||||
|
]
|
||||||
(is (contains? result :foo))
|
(is (contains? result :foo))
|
||||||
(is (contains? result :bar))
|
(is (contains? result :bar))
|
||||||
(is (contains? result :nb))
|
(is (contains? result :nb))
|
||||||
(is (= 80 (:foo result)))
|
(is (= 80 (:foo result)))
|
||||||
|
(is (= (:foo result) (:foo result2)))
|
||||||
(is (= 6 (:bar result)))
|
(is (= 6 (:bar result)))
|
||||||
|
(is (= (:bar result) (:bar result2)))
|
||||||
(is (= 3.0 (:nb result))))))
|
(is (= 3.0 (:nb result))))))
|
||||||
|
|
||||||
(deftest check-counters
|
(deftest check-counters
|
||||||
|
|
Loading…
Reference in a new issue