From aae4ca12c80de6312ca93d3e74c4fa019120b51f Mon Sep 17 00:00:00 2001 From: Ryan Senior <ryan@metabase.com> Date: Mon, 29 Oct 2018 13:45:11 -0500 Subject: [PATCH] Fix for a transient test issue on Snowflake [ci drivers] Specifically two tests with a between date filter are failing. Only sometimes and only when running the full test suite. The guess right now is it's grabbing an old connection with a previous test report-timezone already preset on the connection. This commit flushes the connection pool before running the test (only on Snowflake). --- .../middleware/parameters/mbql_test.clj | 29 +++++++++++-------- .../query_processor_test/filter_test.clj | 17 +++++++---- 2 files changed, 28 insertions(+), 18 deletions(-) diff --git a/test/metabase/query_processor/middleware/parameters/mbql_test.clj b/test/metabase/query_processor/middleware/parameters/mbql_test.clj index 04d7d147565..75af45f3446 100644 --- a/test/metabase/query_processor/middleware/parameters/mbql_test.clj +++ b/test/metabase/query_processor/middleware/parameters/mbql_test.clj @@ -6,7 +6,9 @@ [query-processor-test :refer [first-row format-rows-by non-timeseries-engines rows]]] [metabase.mbql.normalize :as normalize] [metabase.query-processor.middleware.parameters.mbql :as mbql-params] - [metabase.test.data :as data] + [metabase.test + [data :as data] + [util :as tu]] [metabase.test.data.datasets :as datasets] [metabase.util.date :as du])) @@ -138,17 +140,20 @@ ;; check that date ranges work correctly (datasets/expect-with-engines params-test-engines [29] - (first-row - (format-rows-by [int] - (qp/process-query {:database (data/id) - :type :query - :query {:source-table (data/id :checkins) - :aggregation [[:count]]} - :parameters [{:hash "abc123" - :name "foo" - :type "date" - :target [:dimension [:field-id (data/id :checkins :date)]] - :value "2015-04-01~2015-05-01"}]})))) + (do + ;; Prevent an issue with Snowflake were a previous connection's report-timezone setting can affect this test's results + (when (= :snowflake datasets/*engine*) (tu/clear-connection-pool (data/id))) + (first-row + (format-rows-by [int] + (qp/process-query {:database (data/id) + :type :query + :query {:source-table (data/id :checkins) + :aggregation [[:count]]} + :parameters [{:hash "abc123" + :name "foo" + :type "date" + :target [:dimension [:field-id (data/id :checkins :date)]] + :value "2015-04-01~2015-05-01"}]}))))) ;; check that IDs work correctly (passed in as numbers) (datasets/expect-with-engines params-test-engines diff --git a/test/metabase/query_processor_test/filter_test.clj b/test/metabase/query_processor_test/filter_test.clj index 913484cd938..184ee0aba0e 100644 --- a/test/metabase/query_processor_test/filter_test.clj +++ b/test/metabase/query_processor_test/filter_test.clj @@ -1,7 +1,9 @@ (ns metabase.query-processor-test.filter-test "Tests for the `:filter` clause." (:require [metabase.query-processor-test :refer :all] - [metabase.test.data :as data] + [metabase.test + [data :as data] + [util :as tu]] [metabase.test.data.datasets :as datasets])) ;;; ------------------------------------------------ "FILTER" CLAUSE ------------------------------------------------- @@ -92,11 +94,14 @@ :columns ["count"] :cols [(aggregate-col :count)] :native_form true} - (->> (data/run-mbql-query checkins - {:aggregation [[:count]] - :filter [:between [:datetime-field $date :day] "2015-04-01" "2015-05-01"]}) - booleanize-native-form - (format-rows-by [int]))) + (do + ;; Prevent an issue with Snowflake were a previous connection's report-timezone setting can affect this test's results + (when (= :snowflake datasets/*engine*) (tu/clear-connection-pool (data/id))) + (->> (data/run-mbql-query checkins + {:aggregation [[:count]] + :filter [:between [:datetime-field $date :day] "2015-04-01" "2015-05-01"]}) + booleanize-native-form + (format-rows-by [int])))) ;;; FILTER -- "OR", "<=", "=" (expect-with-non-timeseries-dbs -- GitLab