mirror of
https://github.com/taoensso/telemere.git
synced 2025-12-25 12:58:25 +00:00
[new] Add explicit :extra-kvs to signals
I.e. groups together all user-level kvs for convenience.
This commit is contained in:
parent
04725e4a47
commit
50378146c0
4 changed files with 28 additions and 27 deletions
|
|
@ -29,7 +29,7 @@ Default keys:
|
|||
|
||||
`:sample-rate` - ?rate ∈ℝ[0,1] for combined call AND handler sampling (0.75 => allow 75% of signals, nil => allow all)
|
||||
|
||||
<user-kvs> - Arb user-level ?kvs given to signal call
|
||||
<extra-kvs> - Arb user-level ?kvs given to signal call
|
||||
|
||||
If anything is unclear, please ping me (@ptaoussanis) so that I can improve these docs!
|
||||
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ Signal options (shared by `signal!`, `event!`, ...):
|
|||
`:middleware` - ?[(fn [signal])=>modified-signal ...] call middleware
|
||||
`:trace?` - Should tracing be enabled for `:run` form?
|
||||
|
||||
<user-kvs> - Arb user-level ?kvs to incl. in signal
|
||||
<extra-kvs> - Arb user-level ?kvs to incl. in signal
|
||||
|
||||
If anything is unclear, please ping me (@ptaoussanis) so that I can improve these docs!
|
||||
|
||||
|
|
|
|||
|
|
@ -197,7 +197,7 @@
|
|||
location ns line column file,
|
||||
sample-rate, kind id level, ctx parent,
|
||||
data msg_ error run-form run-val,
|
||||
end-instant run-nsecs])
|
||||
end-instant run-nsecs extra-kvs])
|
||||
|
||||
(deftype #_defrecord WrappedSignal
|
||||
;; Internal type to implement `sigs/IFilterableSignal`,
|
||||
|
|
@ -327,7 +327,7 @@
|
|||
[instant uid,
|
||||
location ns line column file,
|
||||
sample-rate, kind id level, ctx parent,
|
||||
user-opts data msg_,
|
||||
extra-kvs data msg_,
|
||||
run-form run-result error]
|
||||
|
||||
(let [signal
|
||||
|
|
@ -349,15 +349,15 @@
|
|||
sample-rate, kind id level, ctx parent,
|
||||
data msg_,
|
||||
run-err run-form run-val,
|
||||
end-instant run-nsecs))
|
||||
end-instant run-nsecs extra-kvs))
|
||||
|
||||
(Signal. 1 instant uid,
|
||||
location ns line column file,
|
||||
sample-rate, kind id level, ctx parent,
|
||||
data msg_, error nil nil instant nil))]
|
||||
data msg_, error nil nil instant nil extra-kvs))]
|
||||
|
||||
(if user-opts
|
||||
(reduce-kv assoc signal user-opts)
|
||||
(if extra-kvs
|
||||
(reduce-kv assoc signal extra-kvs)
|
||||
(do signal))))
|
||||
|
||||
(comment
|
||||
|
|
@ -380,7 +380,7 @@
|
|||
[#_defaults #_elide? #_allow? #_expansion-id, ; Undocumented
|
||||
elidable? location instant uid middleware,
|
||||
sample-rate kind ns id level when rate-limit,
|
||||
ctx parent trace?, do let data msg error run & user-opts]}])
|
||||
ctx parent trace?, do let data msg error run & extra-kvs]}])
|
||||
|
||||
:event! ; [id] [id level-or-opts] => allowed?
|
||||
'([id ]
|
||||
|
|
@ -390,7 +390,7 @@
|
|||
[#_defaults #_elide? #_allow? #_expansion-id,
|
||||
elidable? location instant uid middleware,
|
||||
sample-rate kind ns id level when rate-limit,
|
||||
ctx parent trace?, do let data msg error #_run & user-opts]}])
|
||||
ctx parent trace?, do let data msg error #_run & extra-kvs]}])
|
||||
|
||||
:log! ; [msg] [level-or-opts msg] => allowed?
|
||||
'([ msg]
|
||||
|
|
@ -399,7 +399,7 @@
|
|||
[#_defaults #_elide? #_allow? #_expansion-id,
|
||||
elidable? location instant uid middleware,
|
||||
sample-rate kind ns id level when rate-limit,
|
||||
ctx parent trace?, do let data msg error #_run & user-opts]}
|
||||
ctx parent trace?, do let data msg error #_run & extra-kvs]}
|
||||
msg])
|
||||
|
||||
:error! ; [error] [id-or-opts error] => given error
|
||||
|
|
@ -409,7 +409,7 @@
|
|||
[#_defaults #_elide? #_allow? #_expansion-id,
|
||||
elidable? location instant uid middleware,
|
||||
sample-rate kind ns id level when rate-limit,
|
||||
ctx parent trace?, do let data msg error #_run & user-opts]}
|
||||
ctx parent trace?, do let data msg error #_run & extra-kvs]}
|
||||
error])
|
||||
|
||||
(:trace! :spy!) ; [form] [id-or-opts form] => run result (value or throw)
|
||||
|
|
@ -419,7 +419,7 @@
|
|||
[#_defaults #_elide? #_allow? #_expansion-id,
|
||||
elidable? location instant uid middleware,
|
||||
sample-rate kind ns id level when rate-limit,
|
||||
ctx parent trace?, do let data msg error run & user-opts]}
|
||||
ctx parent trace?, do let data msg error run & extra-kvs]}
|
||||
form])
|
||||
|
||||
:catch->error! ; [form] [id-or-opts form] => run result (value or throw)
|
||||
|
|
@ -429,7 +429,7 @@
|
|||
[#_defaults #_elide? #_allow? #_expansion-id, rethrow? catch-val,
|
||||
elidable? location instant uid middleware,
|
||||
sample-rate kind ns id level when rate-limit,
|
||||
ctx parent trace?, do let data msg error #_run & user-opts]}
|
||||
ctx parent trace?, do let data msg error #_run & extra-kvs]}
|
||||
form])
|
||||
|
||||
:uncaught->error! ; [] [id-or-opts] => nil
|
||||
|
|
@ -439,7 +439,7 @@
|
|||
[#_defaults #_elide? #_allow? #_expansion-id,
|
||||
elidable? location instant uid middleware,
|
||||
sample-rate kind ns id level when rate-limit,
|
||||
ctx parent trace?, do let data msg error #_run & user-opts]}])
|
||||
ctx parent trace?, do let data msg error #_run & extra-kvs]}])
|
||||
|
||||
(enc/unexpected-arg! macro-id))))
|
||||
|
||||
|
|
@ -529,7 +529,7 @@
|
|||
let-form (or let-form '[])
|
||||
msg-form (parse-msg-form msg-form)
|
||||
|
||||
user-opts-form
|
||||
extra-kvs-form
|
||||
(not-empty
|
||||
(dissoc opts
|
||||
:elidable? :location :instant :uid :middleware,
|
||||
|
|
@ -544,7 +544,7 @@
|
|||
(new-signal ~'__instant ~'__uid
|
||||
~location ~ns ~line ~column ~file,
|
||||
~sample-rate-form, ~kind-form ~'__id ~level-form, ~ctx-form ~parent-form,
|
||||
~user-opts-form ~data-form ~msg-form,
|
||||
~extra-kvs-form ~data-form ~msg-form,
|
||||
'~run-form ~'__run-result ~error-form))))]
|
||||
|
||||
#_ ; Sacrifice some perf to de-dupe (possibly large) `run-form`
|
||||
|
|
|
|||
|
|
@ -101,9 +101,10 @@
|
|||
(is (> (inst-ms end) (inst-ms start)) "End instant is start + run-nsecs")
|
||||
(is (< (inst-ms end) 1e6) "End instant is start + run-nsecs")])]))
|
||||
|
||||
(testing "User opts assoced directly to signal"
|
||||
(let [[rv [sv]] (ws (sig! {:level :info, :my-opt1 "v1", :my-opt2 "v2"}))]
|
||||
(is (sm? sv {:level :info, :my-opt1 "v1", :my-opt2 "v2"}))))
|
||||
(testing "Support arb extra user kvs"
|
||||
(let [[rv [sv]] (ws (sig! {:level :info, :my-k1 "v1", :my-k2 "v2"}))]
|
||||
(is (sm? sv {:level :info, :my-k1 "v1", :my-k2 "v2"
|
||||
:extra-kvs {:my-k1 "v1", :my-k2 "v2"}}))))
|
||||
|
||||
(testing "`:msg` basics"
|
||||
(let [c (enc/counter)
|
||||
|
|
@ -122,7 +123,7 @@
|
|||
|
||||
(testing "`:data` basics"
|
||||
(vec
|
||||
(for [dk [:data :my-opt]] ; User opts share same behaviour as data
|
||||
(for [dk [:data :my-k1]] ; User kvs share same behaviour as data
|
||||
(let [c (enc/counter)
|
||||
[rv1 [sv1]] (ws (sig! {:level :info, :run (c), dk {:c1 (c)}}))
|
||||
[rv2 [sv2]] (ws (sig! {:level :info, :run (c), dk (delay {:c2 (c)})}))
|
||||
|
|
@ -165,9 +166,9 @@
|
|||
(is (= rv5 9)) (is (= (:msg_ sv5) nil))
|
||||
(is (= @c 12) "5x run + 4x let (1x suppressed) + 3x msg (1x suppressed)")]))
|
||||
|
||||
(testing "`:do` + `:let` + `:data`/`:my-opt`"
|
||||
(testing "`:do` + `:let` + `:data`/`:my-k1`"
|
||||
(vec
|
||||
(for [dk [:data :my-opt]]
|
||||
(for [dk [:data :my-k1]]
|
||||
(let [c (enc/counter)
|
||||
[rv1 [sv1]] (ws (sig! {:level :info, :run (c), :do (c), :let [n (c)], dk {:n n, :c1 (c)}}))
|
||||
[rv2 [sv2]] (ws (sig! {:level :info, :run (c), :do (c), :let [n (c)], dk (delay {:n n, :c2 (c)})}))
|
||||
|
|
@ -184,9 +185,9 @@
|
|||
(is (= rv6 13)) (is (= (force (get sv6 dk)) [:n 15, :c6 17]))
|
||||
(is (= @c 18) "6x run + 4x do (2x suppressed) + 4x let (2x suppressed) + 4x data (2x suppressed)")]))))
|
||||
|
||||
(testing "Manual `let` (unconditional) + `:data`/`:my-opt`"
|
||||
(testing "Manual `let` (unconditional) + `:data`/`:my-k1`"
|
||||
(vec
|
||||
(for [dk [:data :my-opt]]
|
||||
(for [dk [:data :my-k1]]
|
||||
(let [c (enc/counter)
|
||||
[rv1 [sv1]] (ws (let [n (c)] (sig! {:level :info, :run (c), dk {:n n, :c1 (c)}})))
|
||||
[rv2 [sv2]] (ws (let [n (c)] (sig! {:level :info, :run (c), dk (delay {:n n, :c2 (c)})})))
|
||||
|
|
@ -318,9 +319,9 @@
|
|||
(is (= @sv_ :nx))
|
||||
(is (sm? @error_ {:handler-id :hid1, :error ex1-pred}))])
|
||||
|
||||
(testing "Throwing user opt"
|
||||
(testing "Throwing user kv"
|
||||
(reset-state!)
|
||||
[(is (true? (sig! {:level :info, :my-opt (ex1!)})))
|
||||
[(is (true? (sig! {:level :info, :my-k1 (ex1!)})))
|
||||
(is (= @sv_ :nx))
|
||||
(is (sm? @error_ {:handler-id :hid1, :error ex1-pred}))])])])))
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue