From f52a04b4dc89ad078e7ad0637262b1069d8f6cd4 Mon Sep 17 00:00:00 2001 From: Peter Taoussanis Date: Wed, 4 Sep 2024 14:43:55 +0200 Subject: [PATCH] [fix] [#18] Support `{:uid :auto}` for non-tracing signal creators --- .../main/resources/signal-docstrings/signal-options.txt | 1 + projects/main/src/taoensso/telemere/impl.cljc | 2 +- projects/main/test/taoensso/telemere_tests.cljc | 6 +++++- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/projects/main/resources/signal-docstrings/signal-options.txt b/projects/main/resources/signal-docstrings/signal-options.txt index 8e07489..ccb7c61 100644 --- a/projects/main/resources/signal-docstrings/signal-options.txt +++ b/projects/main/resources/signal-docstrings/signal-options.txt @@ -5,6 +5,7 @@ Signal options (shared by all signal creators): `:kind` -------- Signal ?kind ∈ #{nil :event :error :log :trace :spy ...} `:id` ---------- ?id of signal (common to all signals created at callsite, contrast with `:uid`) `:uid` --------- ?id of signal instance (unique to each signal created at callsite, contrast with `:id`) + Defaults to `:auto` for tracing signals, and nil otherwise `:msg` --------- Arb app-level ?message to incl. in signal: str or vec of strs to join (with `\space`) `:data` -------- Arb app-level ?data to incl. in signal: usu. a map diff --git a/projects/main/src/taoensso/telemere/impl.cljc b/projects/main/src/taoensso/telemere/impl.cljc index 73f28cd..2eea9a6 100644 --- a/projects/main/src/taoensso/telemere/impl.cljc +++ b/projects/main/src/taoensso/telemere/impl.cljc @@ -669,7 +669,7 @@ (enc/cond! (not trace?) ; Don't trace `[~'__otel-context1 nil - ~'__uid ~uid-form ; Given or nil + ~'__uid ~(auto-> uid-form `(taoensso.telemere/*uid-fn* (if ~'__root0 false true))) ~'__root1 ~'__root0 ; Retain, but don't establish ~'__run-result ~(when run-form diff --git a/projects/main/test/taoensso/telemere_tests.cljc b/projects/main/test/taoensso/telemere_tests.cljc index 62b826f..f6d1da4 100644 --- a/projects/main/test/taoensso/telemere_tests.cljc +++ b/projects/main/test/taoensso/telemere_tests.cljc @@ -427,7 +427,11 @@ (let [sv (with-sig (sig! {:level :info, :parent {:id :id1, :foo :bar}}))] (is (sm? sv {:parent {:id :id1 :uid :submap/nx, :foo :bar}}) "Manual `:parent/id`")) (let [sv (with-sig (sig! {:level :info, :parent {:uid :uid1, :foo :bar}}))] (is (sm? sv {:parent {:id :submap/nx :uid :uid1, :foo :bar}}) "Manual `:parent/uid`")) (let [sv (with-sig (sig! {:level :info, :root {:id :id1, :foo :bar}}))] (is (sm? sv {:root {:id :id1 :uid :submap/nx, :foo :bar}}) "Manual `:root/id`")) - (let [sv (with-sig (sig! {:level :info, :root {:uid :uid1, :foo :bar}}))] (is (sm? sv {:root {:id :submap/nx :uid :uid1, :foo :bar}}) "Manual `:root/uid`"))]) + (let [sv (with-sig (sig! {:level :info, :root {:uid :uid1, :foo :bar}}))] (is (sm? sv {:root {:id :submap/nx :uid :uid1, :foo :bar}}) "Manual `:root/uid`")) + (let [sv (with-sig (sig! {:level :info})) ] (is (sm? sv {:uid nil}))) + (let [sv (with-sig (sig! {:level :info, :uid :auto})) ] (is (sm? sv {:uid (enc/pred string?)}))) + (let [sv (binding [tel/*uid-fn* (fn [_] "my-uid")] + (with-sig (sig! {:level :info, :uid :auto}))) ] (is (sm? sv {:uid "my-uid"})))]) (testing "Auto parent/root" [(testing "Tracing disabled"