diff --git a/modules/drivers/bigquery-cloud-sdk/test/metabase/driver/bigquery_cloud_sdk/query_processor_test.clj b/modules/drivers/bigquery-cloud-sdk/test/metabase/driver/bigquery_cloud_sdk/query_processor_test.clj index 43705167ccac0cd013f8ed58454c46d5db841813..9569934e64752ec854999f0a25f3ed06e00677be 100644 --- a/modules/drivers/bigquery-cloud-sdk/test/metabase/driver/bigquery_cloud_sdk/query_processor_test.clj +++ b/modules/drivers/bigquery-cloud-sdk/test/metabase/driver/bigquery_cloud_sdk/query_processor_test.clj @@ -16,6 +16,7 @@ [metabase.sync :as sync] [metabase.test :as mt] [metabase.test.data.bigquery-cloud-sdk :as bigquery.tx] + [metabase.test.util :as tu] [metabase.test.util.timezone :as tu.tz] [metabase.util :as u] [metabase.util.honeysql-extensions :as hx] @@ -487,7 +488,7 @@ (defn- do-with-datetime-timestamp-table [f] (driver/with-driver :bigquery-cloud-sdk - (let [table-name (name (munge (gensym "table_")))] + (let [table-name (format "table_%s" (tu/random-name))] (mt/with-temp-copy-of-db (try (bigquery.tx/execute! diff --git a/modules/drivers/bigquery-cloud-sdk/test/metabase/driver/bigquery_cloud_sdk_test.clj b/modules/drivers/bigquery-cloud-sdk/test/metabase/driver/bigquery_cloud_sdk_test.clj index 1d941a95625198a39d9b11ad2c4a20afc6778bad..29b37c262740329e97e145b6d0b329bfc5984f60 100644 --- a/modules/drivers/bigquery-cloud-sdk/test/metabase/driver/bigquery_cloud_sdk_test.clj +++ b/modules/drivers/bigquery-cloud-sdk/test/metabase/driver/bigquery_cloud_sdk_test.clj @@ -76,7 +76,7 @@ (defn- do-with-view [f] (driver/with-driver :bigquery-cloud-sdk - (let [view-name (name (munge (gensym "view_")))] + (let [view-name (format "view_%s" (tu/random-name))] (mt/with-temp-copy-of-db (try (bigquery.tx/execute! diff --git a/modules/drivers/bigquery/test/metabase/driver/bigquery/query_processor_test.clj b/modules/drivers/bigquery/test/metabase/driver/bigquery/query_processor_test.clj index 9125d43a6b2c946a21ae6c7d7f5460f2d176e351..6b5c6aa917d0f29fd9f6366de174a72ce742bff4 100644 --- a/modules/drivers/bigquery/test/metabase/driver/bigquery/query_processor_test.clj +++ b/modules/drivers/bigquery/test/metabase/driver/bigquery/query_processor_test.clj @@ -16,6 +16,7 @@ [metabase.sync :as sync] [metabase.test :as mt] [metabase.test.data.bigquery :as bigquery.tx] + [metabase.test.util :as tu] [metabase.test.util.timezone :as tu.tz] [metabase.util :as u] [metabase.util.honeysql-extensions :as hx] @@ -223,27 +224,27 @@ (deftest remove-remark-test (mt/test-driver :bigquery (is (= (str - "SELECT `v3_test_data.venues`.`id` AS `id`," - " `v3_test_data.venues`.`name` AS `name` " - "FROM `v3_test_data.venues` " - "LIMIT 1") - (tt/with-temp* [Database [db {:engine :bigquery - :details (assoc (:details (mt/db)) - :include-user-id-and-hash false)}] - Table [table {:name "venues" :db_id (u/the-id db)}] - Field [_ {:table_id (u/the-id table) - :name "id" - :base_type "type/Integer"}] - Field [_ {:table_id (u/the-id table) - :name "name" - :base_type "type/Text"}]] - (query->native - {:database (u/the-id db) - :type :query - :query {:source-table (u/the-id table) - :limit 1} - :info {:executed-by 1000 - :query-hash (byte-array [1 2 3 4])}})))))) + "SELECT `v3_test_data.venues`.`id` AS `id`," + " `v3_test_data.venues`.`name` AS `name` " + "FROM `v3_test_data.venues` " + "LIMIT 1") + (tt/with-temp* [Database [db {:engine :bigquery + :details (assoc (:details (mt/db)) + :include-user-id-and-hash false)}] + Table [table {:name "venues" :db_id (u/the-id db)}] + Field [_ {:table_id (u/the-id table) + :name "id" + :base_type "type/Integer"}] + Field [_ {:table_id (u/the-id table) + :name "name" + :base_type "type/Text"}]] + (query->native + {:database (u/the-id db) + :type :query + :query {:source-table (u/the-id table) + :limit 1} + :info {:executed-by 1000 + :query-hash (byte-array [1 2 3 4])}})))))) (deftest unprepare-params-test (mt/test-driver :bigquery @@ -487,7 +488,7 @@ (defn- do-with-datetime-timestamp-table [f] (driver/with-driver :bigquery - (let [table-name (name (munge (gensym "table_")))] + (let [table-name (format "table_%s" (tu/random-name))] (mt/with-temp-copy-of-db (try (bigquery.tx/execute! diff --git a/modules/drivers/bigquery/test/metabase/driver/bigquery_test.clj b/modules/drivers/bigquery/test/metabase/driver/bigquery_test.clj index 58ce619f3ca4926c881310b9ca4056562dc09a23..aa21255fe620866c0981d2a9c46acb55068af40e 100644 --- a/modules/drivers/bigquery/test/metabase/driver/bigquery_test.clj +++ b/modules/drivers/bigquery/test/metabase/driver/bigquery_test.clj @@ -58,7 +58,7 @@ (defn- do-with-view [f] (driver/with-driver :bigquery - (let [view-name (name (munge (gensym "view_")))] + (let [view-name (format "view_%s" (tu/random-name))] (mt/with-temp-copy-of-db (try (bigquery.tx/execute! diff --git a/modules/drivers/bigquery/test/metabase/test/data/bigquery.clj b/modules/drivers/bigquery/test/metabase/test/data/bigquery.clj index f091da47d104abf488a5abe92b767958d836492a..cec0a003ce0a362f9a6cb28e29c9f9b3559139af 100644 --- a/modules/drivers/bigquery/test/metabase/test/data/bigquery.clj +++ b/modules/drivers/bigquery/test/metabase/test/data/bigquery.clj @@ -33,10 +33,27 @@ ;;; ----------------------------------------------- Connection Details ----------------------------------------------- +;; keep track of databases we have already created +(def ^:private existing-datasets + (atom #{})) + +(def ^:private current-dataset-version-prefix "v3_") + +(defn- prefix-legacydriver-if-new + "Adds a legacydriver_ prefix to the db-name, if the `existing-dataset` atom does not contain it. This is to ensure + that transient datasets created and destroyed by these tests do not interfere with parallel test runs for the new + BigQuery driver (which are also creating and destroying datasets that would have the same name, if not for this + change). If the `db-name` is already an existing one, however, the assumption is it's not transient (i.e. not being + created and destroyed at test time), and hence, it can keep its name without modification." + [db-name] + (if (contains? @existing-datasets db-name) + db-name + (str/replace-first db-name current-dataset-version-prefix (str current-dataset-version-prefix "legacydriver_")))) + (defn- normalize-name ^String [db-or-table-or-field identifier] (let [s (str/replace (name identifier) "-" "_")] (case db-or-table-or-field - :db (str "v3_" s) + :db (prefix-legacydriver-if-new (str current-dataset-version-prefix s)) (:table :field) s))) (def ^:private details @@ -325,10 +342,6 @@ :when (not (str/includes? dataset-name "checkins_interval_"))] dataset-name)) -;; keep track of databases we haven't created yet -(def ^:private existing-datasets - (atom #{})) - (defmethod tx/create-db! :bigquery [_ {:keys [database-name table-definitions]} & _] {:pre [(seq database-name) (sequential? table-definitions)]} ;; fetch existing datasets if we haven't done so yet