Skip to content

Commit 7d89c9a

Browse files
committed
(PDB-5216) Rework setting-log-queries-triggers-ast-sql-logging test
Rework the test in preparation for extending its coverage, and to improve the constraints a bit. Rely on a list of test cases. Extract and check the UUID format. Make sure all events have that expected UUID.
1 parent 9ed5170 commit 7d89c9a

File tree

1 file changed

+35
-22
lines changed

1 file changed

+35
-22
lines changed

test/puppetlabs/puppetdb/http/query_logging_test.clj

Lines changed: 35 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,15 @@
66
[puppetlabs.puppetdb.cli.services :as svcs]
77
[puppetlabs.puppetdb.testutils.db :refer [with-test-db *db*]]
88
[puppetlabs.puppetdb.testutils.http
9-
:refer [call-with-http-app query-response]]
9+
:refer [call-with-http-app query-response with-http-app*]]
1010
[puppetlabs.puppetdb.testutils.services
1111
:refer [call-with-puppetdb-instance create-temp-config *server*]]
12+
[puppetlabs.puppetdb.utils :refer [println-err]]
1213
[puppetlabs.trapperkeeper.app :refer [get-service]]
13-
[puppetlabs.trapperkeeper.testutils.logging :as tk-log]))
14+
[puppetlabs.trapperkeeper.testutils.logging :as tk-log
15+
:refer [with-logged-event-maps]])
16+
(:import
17+
(java.util UUID)))
1418

1519
(defn logs-include?
1620
"Returns true if only one instance of unique-msg is found in the log."
@@ -37,29 +41,38 @@
3741
(defn prep-logs [logs]
3842
(->> @logs (map :message) keep-only-pdbquery-logs))
3943

40-
(deftest setting-log-queries-triggers-ast-sql-logging
41-
(tk-log/with-logged-event-maps logs
42-
(tk-log/with-log-level "puppetlabs.puppetdb.query-eng" :debug
43-
(with-test-db
44-
(call-with-http-app
45-
(fn []
46-
;; make a couple http queries to trigger a debug AST and SQL log message for each
47-
(is (= 200 (:status (query-response :get "/v4" ["from" "nodes"]))))
48-
(is (= 200 (:status (query-response :get "/v4" ["from" "facts"]))))
44+
(deftest queries-are-logged-when-log-queries-is-true
45+
(tk-log/with-log-level "puppetlabs.puppetdb.query-eng" :debug
46+
(with-test-db
47+
(with-http-app* #(assoc % :log-queries true)
48+
(doseq [[query ast-exp sql-exp]
49+
[[["/v4" ["from" "nodes"]]
50+
"\"from\" \"nodes\""
51+
"latest_report_noop_pending"]
52+
[["/v4" ["from" "facts"]]
53+
"\"from\" \"facts\""
54+
"(jsonb_each((stable||volatile)))"]]]
55+
(with-logged-event-maps events
56+
(is (= 200 (:status (apply query-response :get query))))
57+
58+
(let [events @events
59+
uuid (some->> events
60+
(some #(->> % :message (re-find #"^PDBQuery:([^:]+):")))
61+
second)
62+
qev-matching (fn [expected]
63+
(fn [{:keys [message] :as event}]
64+
(and (str/starts-with? message (str "PDBQuery:" uuid ":"))
65+
(str/includes? message expected))))]
4966

50-
(let [logs (prep-logs logs)]
51-
(testing "uuids match for the AST and SQL logged per query"
52-
(is (= [2 2] (vals (count-logs-uuids logs)))))
67+
(is (uuid? (UUID/fromString uuid)))
5368

54-
(testing "AST/SQL is logged for both queries above"
55-
;; match the AST/SQL logs for nodes query
56-
(is (logs-include? logs "\"from\" \"nodes\""))
57-
(is (logs-include? logs "latest_report_noop_pending"))
69+
(let [asts (filter (qev-matching ast-exp) events)]
70+
(when-not (is (= 1 (count asts)))
71+
(println-err "Unexpected log:" events)))
5872

59-
;; match the AST/SQL logs for facts query
60-
(is (logs-include? logs "\"from\" \"facts\""))
61-
(is (logs-include? logs "(jsonb_each((stable||volatile)))")))))
62-
#(assoc % :log-queries true))))))
73+
(let [sqls (filter (qev-matching sql-exp) events)]
74+
(when-not (is (= 1 (count sqls)))
75+
(println-err "Unexpected log:" events))))))))))
6376

6477
(deftest no-queries-are-logged-when-log-queires-is-false
6578
(tk-log/with-logged-event-maps logs

0 commit comments

Comments
 (0)