From 73bc209af1f4e898bf4043787990e167a243656d Mon Sep 17 00:00:00 2001 From: Cam Saul <cammsaul@gmail.com> Date: Thu, 8 Mar 2018 18:34:40 -0800 Subject: [PATCH] Add `lein run refresh-integration-test-db-metadata` cmd & update metadata --- .gitignore | 3 +- .../test/__runner__/test_db_fixture.db.h2.db | Bin 5242880 -> 1048576 bytes src/metabase/cmd.clj | 8 +++- .../refresh_integration_test_db_metadata.clj | 41 ++++++++++++++++++ 4 files changed, 50 insertions(+), 2 deletions(-) create mode 100644 src/metabase/cmd/refresh_integration_test_db_metadata.clj diff --git a/.gitignore b/.gitignore index a45c2e8a816..f82f949b170 100644 --- a/.gitignore +++ b/.gitignore @@ -52,4 +52,5 @@ bin/release/aws-eb/metabase-aws-eb.zip coverage-summary.json .DS_Store bin/node_modules/ -*.log \ No newline at end of file +*.log +*.trace.db diff --git a/frontend/test/__runner__/test_db_fixture.db.h2.db b/frontend/test/__runner__/test_db_fixture.db.h2.db index 66876709fb7c85c5d9f9dbd49d36cadd87dccce6..63c055fc2f3b22ff86205785a80e70d60c6ab571 100644 GIT binary patch delta 3940 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 delta 44517 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 Nz^6F^XXd7w{|$GJ_Tc~k diff --git a/src/metabase/cmd.clj b/src/metabase/cmd.clj index 92a17ce113c..0efcf920bfa 100644 --- a/src/metabase/cmd.clj +++ b/src/metabase/cmd.clj @@ -40,7 +40,7 @@ [] ;; override env var that would normally make Jetty block forever (require 'environ.core) - (intern 'environ.core 'env (assoc environ.core/env :mb-jetty-join "false")) + (intern 'environ.core 'env (assoc @(resolve 'environ.core/env) :mb-jetty-join "false")) (u/profile "start-normally" ((resolve 'metabase.core/start-normally)))) (defn ^:command reset-password @@ -49,6 +49,12 @@ (require 'metabase.cmd.reset-password) ((resolve 'metabase.cmd.reset-password/reset-password!) email-address)) +(defn ^:command refresh-integration-test-db-metadata + "Re-sync the frontend integration test DB's metadata for the Sample Dataset." + [] + (require 'metabase.cmd.refresh-integration-test-db-metadata) + ((resolve 'metabase.cmd.refresh-integration-test-db-metadata/refresh-integration-test-db-metadata))) + (defn ^:command help "Show this help message listing valid Metabase commands." [] diff --git a/src/metabase/cmd/refresh_integration_test_db_metadata.clj b/src/metabase/cmd/refresh_integration_test_db_metadata.clj new file mode 100644 index 00000000000..7cfd8c45ff5 --- /dev/null +++ b/src/metabase/cmd/refresh_integration_test_db_metadata.clj @@ -0,0 +1,41 @@ +(ns metabase.cmd.refresh-integration-test-db-metadata + (:require [clojure.java.io :as io] + [environ.core :refer [env]] + [metabase + [db :as mdb] + [util :as u]] + [metabase.models + [database :refer [Database]] + [field :refer [Field]] + [table :refer [Table]]] + [metabase.sample-data :as sample-data] + [metabase.sync :as sync] + [toucan.db :as db])) + +(defn- test-fixture-db-path + "Get the path to the test fixture DB that we'll use for `MB_DB_FILE`. Throw an Exception if the file doesn't exist." + [] + (let [path (str (System/getProperty "user.dir") "/frontend/test/__runner__/test_db_fixture.db")] + (when-not (or (.exists (io/file (str path ".h2.db"))) + (.exists (io/file (str path ".mv.db")))) + (throw (Exception. (str "Could not find frontend integration test DB at path: " path ".h2.db (or .mv.db)")))) + path)) + +(defn ^:command refresh-integration-test-db-metadata + "Re-sync the frontend integration test DB's metadata for the Sample Dataset." + [] + (let [db-path (test-fixture-db-path)] + ;; now set the path at MB_DB_FILE + (intern 'environ.core 'env (assoc env :mb-db-type "h2", :mb-db-file db-path)) + ;; set up the DB, make sure sample dataset is added + (mdb/setup-db!) + (sample-data/add-sample-dataset!) + (sample-data/update-sample-dataset-if-needed!) + ;; clear out all Fingerprints so we force analysis to run again. Clear out special type and has_field_values as + ;; well so we can be sure those will be set to the correct values + (db/debug-print-queries + (db/update! Field {:set {:fingerprint_version 0, :special_type nil, :has_field_values nil}})) + ;; now re-run sync + (sync/sync-database! (Database :is_sample true)) + ;; done! + (println "Finished."))) -- GitLab