aboutsummaryrefslogtreecommitdiff
path: root/test/com/github/ivarref/yoltq/error_poller_test.clj
blob: 18f0aa77a65b3d5a8d14a29309414954e66f2898 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
(ns com.github.ivarref.yoltq.error-poller-test
  (:require [clojure.test :refer [deftest is]]
            [com.github.ivarref.yoltq.error-poller :as ep]
            [clojure.tools.logging :as log]
            [com.github.ivarref.yoltq.log-init :as logconfig]
            [clojure.edn :as edn]))


(deftest error-poller
  (logconfig/init-logging!
    [[#{"datomic.*" "com.datomic.*" "org.apache.*"} :warn]
     [#{"*"} (edn/read-string
               (System/getProperty "TAOENSSO_TIMBRE_MIN_LEVEL_EDN" ":info"))]])
  (let [cfg {:system-error-callback-backoff 100}
        time (atom 0)
        tick! (fn [& [amount]]
                (swap! time + (or amount 1)))
        verify (fn [state now-ns error-count expected-callback]
                 (let [{:keys [errors state run-callback] :as res} (ep/handle-error-count state cfg now-ns error-count)]
                   (log/info errors "=>" state "::" run-callback)
                   (is (= expected-callback run-callback))
                   res))]
    (-> {}
        (verify (tick!) 0 nil)
        (verify (tick!) 1 nil)
        (verify (tick!) 1 nil)
        (verify (tick!) 1 :error)
        (verify (tick! 100) 0 nil)
        (verify (tick!) 0 :error)
        (verify (tick!) 0 :recovery)
        (verify (tick!) 1 nil)
        (verify (tick!) 1 nil)
        (verify (tick!) 1 :error)
        (verify (tick! 100) 1 nil)
        (verify (tick!) 1 :error))))