|
6 | 6 | [puppetlabs.puppetdb.cli.services :as svcs] |
7 | 7 | [puppetlabs.puppetdb.testutils.db :refer [with-test-db *db*]] |
8 | 8 | [puppetlabs.puppetdb.testutils.http |
9 | | - :refer [call-with-http-app query-response]] |
| 9 | + :refer [call-with-http-app query-response with-http-app*]] |
10 | 10 | [puppetlabs.puppetdb.testutils.services |
11 | 11 | :refer [call-with-puppetdb-instance create-temp-config *server*]] |
| 12 | + [puppetlabs.puppetdb.utils :refer [println-err]] |
12 | 13 | [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))) |
14 | 18 |
|
15 | 19 | (defn logs-include? |
16 | 20 | "Returns true if only one instance of unique-msg is found in the log." |
|
37 | 41 | (defn prep-logs [logs] |
38 | 42 | (->> @logs (map :message) keep-only-pdbquery-logs)) |
39 | 43 |
|
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))))] |
49 | 66 |
|
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))) |
53 | 68 |
|
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))) |
58 | 72 |
|
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)))))))))) |
63 | 76 |
|
64 | 77 | (deftest no-queries-are-logged-when-log-queires-is-false |
65 | 78 | (tk-log/with-logged-event-maps logs |
|
0 commit comments