From 2de70a9ba0218cb04e07f706103af939efbdc9f0 Mon Sep 17 00:00:00 2001 From: Judith Date: Mon, 21 Nov 2022 19:32:15 +0100 Subject: [PATCH 1/5] separate index type tests --- .circleci/config.yml | 42 ++++++++++++++++++++- bin/run-unittests | 6 --- src/datahike/config.cljc | 57 ++++++++++++++++------------- test/datahike/test/config.clj | 44 ---------------------- test/datahike/test/config_test.cljc | 24 ++++++------ tests.edn | 16 ++++---- 6 files changed, 91 insertions(+), 98 deletions(-) delete mode 100755 bin/run-unittests delete mode 100644 test/datahike/test/config.clj diff --git a/.circleci/config.yml b/.circleci/config.yml index b393f995b..f3abf47d1 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -72,6 +72,40 @@ jobs: - .m2 - .npm - replikativ + persistent-set-test: + executor: tools/clojurecli + steps: + - attach_workspace: + at: /home/circleci + - run: + name: Retrieve ssh-fingerprints + command: mkdir ~/.ssh && ssh-keyscan github.com >> ~/.ssh/known_hosts + no_output_timeout: 1m + - run: + name: Run Unittests for persistent sorted set index + command: ./bin/run-pss-tests + no_output_timeout: 5m + - save_cache: + key: deps-{{ checksum "deps.edn" }} + paths: + - /home/circleci/.m2 + hitchhiker-tree-test: + executor: tools/clojurecli + steps: + - attach_workspace: + at: /home/circleci + - run: + name: Retrieve ssh-fingerprints + command: mkdir ~/.ssh && ssh-keyscan github.com >> ~/.ssh/known_hosts + no_output_timeout: 1m + - run: + name: Run Unittests for hitchhiker-tree index + command: ./bin/run-hht-tests + no_output_timeout: 5m + - save_cache: + key: deps-{{ checksum "deps.edn" }} + paths: + - /home/circleci/.m2 backward-compatibility-test: executor: tools/clojurecli steps: @@ -82,7 +116,7 @@ jobs: command: mkdir ~/.ssh && ssh-keyscan github.com >> ~/.ssh/known_hosts no_output_timeout: 1m - run: - name: Run Unittests + name: Run Backward compatibility test command: ./bin/run-backward-compatibility-tests no_output_timeout: 5m - save_cache: @@ -112,7 +146,11 @@ workflows: context: dockerhub-deploy requires: - setup - - tools/unittest: + - persistent-set-test: + context: dockerhub-deploy + requires: + - build + - hitchhiker-tree-test: context: dockerhub-deploy requires: - build diff --git a/bin/run-unittests b/bin/run-unittests deleted file mode 100755 index a7f17b0b8..000000000 --- a/bin/run-unittests +++ /dev/null @@ -1,6 +0,0 @@ -#!/usr/bin/env bash - -set -o errexit -set -o pipefail - -TIMBRE_LEVEL=':fatal' ./bin/kaocha --focus :clj "$@" diff --git a/src/datahike/config.cljc b/src/datahike/config.cljc index 36dd680cf..5cc9dd778 100644 --- a/src/datahike/config.cljc +++ b/src/datahike/config.cljc @@ -8,9 +8,16 @@ [datahike.index :as di]) (:import [java.net URI])) -(def ^:dynamic default-index :datahike.index/persistent-set) -(def ^:dynamic default-search-cache-size 10000) -(def ^:dynamic default-store-cache-size 1000) +(def ^:dynamic *default-index* :datahike.index/persistent-set) +(def ^:dynamic *default-schema-flexibility* :write) +(def ^:dynamic *default-keep-history?* true) +(def ^:dynamic *default-attribute-refs?* false) +(def ^:dynamic *default-search-cache-size* 10000) +(def ^:dynamic *default-store-cache-size* 1000) +(def ^:dynamic *default-crypto-hash?* false) +(def ^:dynamic *default-store* :mem) ;; store-less = in-memory? +(def ^:dynamic *default-db-name* nil) ;; when nil creates random name +(def ^:dynamic *default-db-branch* :db) ;; when nil creates random name (s/def ::index #{:datahike.index/hitchhiker-tree :datahike.index/persistent-set}) (s/def ::keep-history? boolean?) @@ -74,13 +81,13 @@ :index index :index-config (di/default-index-config index) :keep-history? temporal-index - :attribute-refs? false + :attribute-refs? *default-attribute-refs?* :initial-tx initial-tx :schema-flexibility (if (true? schema-on-read) :read :write) - :crypto-hash? false - :branch :db - :search-cache-size default-search-cache-size - :store-cache-size default-store-cache-size}) + :branch *default-db-branch* + :crypto-hash? *default-crypto-hash?* + :search-cache-size *default-search-cache-size* + :store-cache-size *default-store-cache-size*}) (defn int-from-env [key default] @@ -115,14 +122,14 @@ {:store nil :keep-history? false :schema-flexibility :read - :name (z/rand-german-mammal) + :name (or *default-db-name* (z/rand-german-mammal)) :attribute-refs? false - :index default-index - :search-cache-size default-search-cache-size - :store-cache-size default-store-cache-size - :crypto-hash? false - :branch :db - :index-config (di/default-index-config default-index)}) + :index *default-index* + :search-cache-size *default-search-cache-size* + :store-cache-size *default-store-cache-size* + :crypto-hash? *default-crypto-hash?* + :branch *default-db-branch* + :index-config (di/default-index-config *default-index*)}) (defn remove-nils "Thanks to https://stackoverflow.com/a/34221816" @@ -145,22 +152,22 @@ (apply from-deprecated config-as-arg (first opts)) config-as-arg) store-config (ds/default-config (merge - {:backend (keyword (:datahike-store-backend env :mem))} + {:backend (keyword (:datahike-store-backend env *default-store*))} (:store config-as-arg))) index (if (:datahike-index env) (keyword "datahike.index" (:datahike-index env)) - default-index) + *default-index*) config {:store store-config :initial-tx (:datahike-intial-tx env) - :keep-history? (bool-from-env :datahike-keep-history true) - :attribute-refs? (bool-from-env :datahike-attribute-refs false) - :name (:datahike-name env (z/rand-german-mammal)) - :schema-flexibility (keyword (:datahike-schema-flexibility env :write)) + :keep-history? (bool-from-env :datahike-keep-history *default-keep-history?*) + :attribute-refs? (bool-from-env :datahike-attribute-refs *default-attribute-refs?*) + :name (:datahike-name env (or *default-db-name* (z/rand-german-mammal))) + :schema-flexibility (keyword (:datahike-schema-flexibility env *default-schema-flexibility*)) :index index - :crypto-hash? false - :branch :db - :search-cache-size (int-from-env :datahike-search-cache-size default-search-cache-size) - :store-cache-size (int-from-env :datahike-store-cache-size default-store-cache-size) + :branch *default-db-branch* + :crypto-hash? *default-crypto-hash?* + :search-cache-size (int-from-env :datahike-search-cache-size *default-search-cache-size*) + :store-cache-size (int-from-env :datahike-store-cache-size *default-store-cache-size*) :index-config (if-let [index-config (map-from-env :datahike-index-config nil)] index-config (di/default-index-config index))} diff --git a/test/datahike/test/config.clj b/test/datahike/test/config.clj deleted file mode 100644 index 88eb96ce0..000000000 --- a/test/datahike/test/config.clj +++ /dev/null @@ -1,44 +0,0 @@ -(ns datahike.test.config - (:require [clojure.test :refer :all] - [datahike.index :refer [init-index]] - [datahike.store :refer [default-config]])) - -;; Can be set via kaocha config in tests.edn -;; e.g. -;; - '[{:backend :mem :index :datahike.index/persistent-set}]' to only run on in-memory database with persistent-set index -;; - '[{:backend :mem} {:index :datahike.index/persistent-set}]' to run all configs with either in-memory backend, or persistent-set index -(def ^:dynamic user-filter-maps []) - -;; For now disables configurations the tests are not adjusted for -;; Should eventually not filter out anything -;; Configs can also be filtered on a test-to-test basis -(def system-config-filter - (fn [config] (and (not (and (= :datahike.index/persistent-set (:index config)) - (= :file (get-in config [:store :backend])))) - (= :attribute-refs? false) - (= :keep-history? false) - (= :schema-flexibility :write)))) - -(def configs - (->> (for [index (keys (methods init-index)) - backend (keys (methods default-config)) - history? [true false] - refs? [true false] - schema [:read :write]] - {:keep-history? history? - :attribute-refs? refs? - :schema-flexibility schema - :index index - :store (default-config {:backend backend})}) - (filter system-config-filter) - (filter (fn [config] (some (fn [m] (every? #(fn [[k v]] (= (k config) v)) - m)) - user-filter-maps))))) - -(defn config-str [{:keys [keep-history? attribute-refs? schema-flexibility index store] :as _config}] - (str "schema-on-" (name schema-flexibility) - (when attribute-refs? " reference") - " database with " - (when keep-history? "history, ") - (subs (name index) 15) " index, and " - (:backend store) " backend")) diff --git a/test/datahike/test/config_test.cljc b/test/datahike/test/config_test.cljc index b2b0d3be0..6ff38978c 100644 --- a/test/datahike/test/config_test.cljc +++ b/test/datahike/test/config_test.cljc @@ -41,8 +41,8 @@ :schema-flexibility :write :crypto-hash? false :branch :db - :search-cache-size c/default-search-cache-size - :store-cache-size c/default-store-cache-size}] + :search-cache-size c/*default-search-cache-size* + :store-cache-size c/*default-store-cache-size*}] (is (= (merge default-new-cfg {:store {:backend :mem :id "deprecated-test"}}) (c/from-deprecated mem-cfg))) @@ -56,16 +56,16 @@ (let [config (c/load-config)] (is (= (merge {:store {:backend :mem :id "default"} - :attribute-refs? false - :keep-history? true - :schema-flexibility :write - :index c/default-index - :crypto-hash? false - :branch :db - :search-cache-size c/default-search-cache-size - :store-cache-size c/default-store-cache-size} - (when (seq (di/default-index-config c/default-index)) - {:index-config (di/default-index-config c/default-index)})) + :attribute-refs? c/*default-attribute-refs?* + :keep-history? c/*default-keep-history?* + :schema-flexibility c/*default-schema-flexibility* + :index c/*default-index* + :crypto-hash? c/*default-crypto-hash?* + :branch c/*default-db-branch* + :search-cache-size c/*default-search-cache-size* + :store-cache-size c/*default-store-cache-size*} + (when (seq (di/default-index-config c/*default-index*)) + {:index-config (di/default-index-config c/*default-index*)})) (-> config (dissoc :name))))))) (deftest core-config-test diff --git a/tests.edn b/tests.edn index 070181591..d5a618b5a 100644 --- a/tests.edn +++ b/tests.edn @@ -1,17 +1,15 @@ #kaocha/v1 - #meta-merge [{:tests [{:id :clj + #meta-merge [{:tests [{:id :clj-pss :focus-meta [:focused] - :ns-patterns ["datahike.test."]} + :ns-patterns ["datahike.test."] + :bindings {datahike.config/*default-index* :datahike.index/persistent-set}} + {:id :clj-hht + :focus-meta [:focused] + :ns-patterns ["datahike.test."] + :bindings {datahike.config/*default-index* :datahike.index/hitchhiker-tree}} #_{:id :cljs :type :kaocha.type/cljs :ns-patterns ["datahike.test."]} - {:id :quick - :focus-meta [:focused] - :ns-patterns ["datahike.test."] - :bindings {datahike.test.config/*user-filter-map* [{:index :datahike.index/persistent-set - :backend :mem - :schema-flexibility :read - }]}} {:id :integration :focus-meta [:focused] :test-paths ["test/datahike/integration_test"]}] From 8eec4d3006f801cd00c1addba000f901c3758b88 Mon Sep 17 00:00:00 2001 From: Judith Date: Mon, 21 Nov 2022 19:57:25 +0100 Subject: [PATCH 2/5] Do not use tools/unittest --- .circleci/config.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index f3abf47d1..a7de6c7db 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -172,7 +172,8 @@ workflows: only: main requires: - tools/format - - tools/unittest + - persistent-set-test + - hitchhiker-tree-test - backward-compatibility-test - tools/integrationtest - tools/release: From 836304290d81fb82310505a7d4d4c26a10149ece Mon Sep 17 00:00:00 2001 From: Judith Date: Tue, 22 Nov 2022 19:25:09 +0100 Subject: [PATCH 3/5] Remove focused flag --- tests.edn | 2 -- 1 file changed, 2 deletions(-) diff --git a/tests.edn b/tests.edn index d5a618b5a..f8b1e5976 100644 --- a/tests.edn +++ b/tests.edn @@ -4,14 +4,12 @@ :ns-patterns ["datahike.test."] :bindings {datahike.config/*default-index* :datahike.index/persistent-set}} {:id :clj-hht - :focus-meta [:focused] :ns-patterns ["datahike.test."] :bindings {datahike.config/*default-index* :datahike.index/hitchhiker-tree}} #_{:id :cljs :type :kaocha.type/cljs :ns-patterns ["datahike.test."]} {:id :integration - :focus-meta [:focused] :test-paths ["test/datahike/integration_test"]}] :reporter kaocha.report/documentation} #include "tests.user.edn"] From d9fc407b0ac1059cd2fe821966a8eadd1c204b4e Mon Sep 17 00:00:00 2001 From: Judith Date: Tue, 22 Nov 2022 19:36:44 +0100 Subject: [PATCH 4/5] Remove unnecessary ssh bits --- .circleci/config.yml | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index a7de6c7db..9119a6e34 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -78,11 +78,7 @@ jobs: - attach_workspace: at: /home/circleci - run: - name: Retrieve ssh-fingerprints - command: mkdir ~/.ssh && ssh-keyscan github.com >> ~/.ssh/known_hosts - no_output_timeout: 1m - - run: - name: Run Unittests for persistent sorted set index + name: Run unittests for persistent sorted set index command: ./bin/run-pss-tests no_output_timeout: 5m - save_cache: @@ -95,11 +91,7 @@ jobs: - attach_workspace: at: /home/circleci - run: - name: Retrieve ssh-fingerprints - command: mkdir ~/.ssh && ssh-keyscan github.com >> ~/.ssh/known_hosts - no_output_timeout: 1m - - run: - name: Run Unittests for hitchhiker-tree index + name: Run unittests for hitchhiker-tree index command: ./bin/run-hht-tests no_output_timeout: 5m - save_cache: @@ -116,7 +108,7 @@ jobs: command: mkdir ~/.ssh && ssh-keyscan github.com >> ~/.ssh/known_hosts no_output_timeout: 1m - run: - name: Run Backward compatibility test + name: Run backward compatibility test command: ./bin/run-backward-compatibility-tests no_output_timeout: 5m - save_cache: From caa7d97785410cd063ac06159014da4f8a2fa836 Mon Sep 17 00:00:00 2001 From: Judith Massa Date: Tue, 10 Jan 2023 20:09:55 +0100 Subject: [PATCH 5/5] Fix alignment --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 3ca495c53..d6b50ede1 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -107,7 +107,7 @@ jobs: paths: - replikativ/dhi persistent-set-test: - executor: tools/clojurecli + executor: tools/clojurecli steps: - attach_workspace: at: /home/circleci