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