From fde4e0d3cfaf900961cbee6fcf25b2c09f7f09b3 Mon Sep 17 00:00:00 2001 From: rcmerci Date: Fri, 30 Aug 2024 22:30:44 +0800 Subject: [PATCH] test(rtc): add insert-300-blocks case --- src/main/frontend/worker/rtc/client.cljs | 4 ++-- src/main/frontend/worker/rtc/const.cljs | 5 ++++- src/main/frontend/worker/rtc/skeleton.cljs | 2 +- src/rtc_e2e_test/basic_edits_test.cljs | 4 +++- src/rtc_e2e_test/client1_edits.cljs | 17 ++++++++++++++- src/rtc_e2e_test/const.cljs | 25 ++++++++++++++++++++-- 6 files changed, 49 insertions(+), 8 deletions(-) diff --git a/src/main/frontend/worker/rtc/client.cljs b/src/main/frontend/worker/rtc/client.cljs index 29924668fd..00f1c7a5d6 100644 --- a/src/main/frontend/worker/rtc/client.cljs +++ b/src/main/frontend/worker/rtc/client.cljs @@ -347,7 +347,7 @@ (rollback repo block-ops-map-coll) ;; else (do (rollback repo block-ops-map-coll) - (throw (ex-info "Unavailable" {:remote-ex remote-ex}))))) + (throw (ex-info "Unavailable1" {:remote-ex remote-ex}))))) (do (assert (pos? (:t r)) r) (r.remote-update/apply-remote-update @@ -367,7 +367,7 @@ :graph-lock-missing (throw r.ex/ex-remote-graph-lock-missing) :rtc.exception/get-s3-object-failed nil ;;else - (throw (ex-info "Unavailable" {:remote-ex remote-ex})))) + (throw (ex-info "Unavailable3" {:remote-ex remote-ex})))) (do (assert (pos? (:t r)) r) (r.remote-update/apply-remote-update graph-uuid repo conn date-formatter {:type :remote-update :value r} add-log-fn) diff --git a/src/main/frontend/worker/rtc/const.cljs b/src/main/frontend/worker/rtc/const.cljs index e674076dda..2660b20449 100644 --- a/src/main/frontend/worker/rtc/const.cljs +++ b/src/main/frontend/worker/rtc/const.cljs @@ -259,4 +259,7 @@ (def data-to-ws-encoder (m/encoder data-to-ws-schema (mt/transformer mt/string-transformer (mt/key-transformer {:encode m/-keyword->string})))) -(def data-to-ws-coercer (m/coercer data-to-ws-schema mt/string-transformer nil #(m/-fail! ::data-to-ws-schema %))) +(def data-to-ws-coercer (m/coercer data-to-ws-schema mt/string-transformer nil + #(do + (prn ::data-to-ws-schema %) + (m/-fail! ::data-to-ws-schema %)))) diff --git a/src/main/frontend/worker/rtc/skeleton.cljs b/src/main/frontend/worker/rtc/skeleton.cljs index ae9e6742d3..798a448e93 100644 --- a/src/main/frontend/worker/rtc/skeleton.cljs +++ b/src/main/frontend/worker/rtc/skeleton.cljs @@ -73,7 +73,7 @@ :db-ident-blocks db-ident-blocks :schema-version (get-schema-version db)}))] (if-let [remote-ex (:ex-data r)] - (throw (ex-info "Unavailable" {:remote-ex remote-ex})) + (throw (ex-info "Unavailable2" {:remote-ex remote-ex})) (let [server-only-db-ident-blocks (some-> (:server-only-db-ident-blocks r) ldb/read-transit-str)] (when (seq server-only-db-ident-blocks) diff --git a/src/rtc_e2e_test/basic_edits_test.cljs b/src/rtc_e2e_test/basic_edits_test.cljs index 6be323d874..b46aff19c4 100644 --- a/src/rtc_e2e_test/basic_edits_test.cljs +++ b/src/rtc_e2e_test/basic_edits_test.cljs @@ -25,7 +25,9 @@ (testing "start rtc for client1" (m/? client1-edits/step2--task-start-rtc)) (testing "wait page1 synced" - (m/? client1-edits/step3--task-wait-page1-synced)) + (m/? client1-edits/step3--task-wait-page1-to-remote)) + (testing "insert 300 blocks" + (m/? client1-edits/step4--task-insert-300-blocks-to-remote)) (done)) (m/sp (testing "start rtc for client2" diff --git a/src/rtc_e2e_test/client1_edits.cljs b/src/rtc_e2e_test/client1_edits.cljs index 2b7b59e75e..18cb352d7d 100644 --- a/src/rtc_e2e_test/client1_edits.cljs +++ b/src/rtc_e2e_test/client1_edits.cljs @@ -34,13 +34,28 @@ (let [r (m/? (rtc-core/new-task--rtc-start const/downloaded-test-repo const/test-token))] (is (nil? r))))) -(def step3--task-wait-page1-synced +(def step3--task-wait-page1-to-remote (m/sp (let [r (m/? (m/timeout (m/reduce (fn [_ v] (when (and (= :rtc.log/push-local-update (:type v)) (empty? (client-op/get-all-ops const/downloaded-test-repo))) + (is (nil? (:ex-data v))) (reduced v))) rtc-log-and-state/rtc-log-flow) 6000 :timeout))] (is (not= :timeout r))))) + +(def step4--task-insert-300-blocks-to-remote + (m/sp + (let [conn (helper/get-downloaded-test-conn)] + (batch-tx/with-batch-tx-mode conn {:e2e-test const/downloaded-test-repo :skip-store-conn true} + (d/transact! conn (const/tx-data-map :insert-300-blocks))) + (m/? (m/timeout + (m/reduce (fn [_ v] + (when (and (= :rtc.log/push-local-update (:type v)) + (empty? (client-op/get-all-ops const/downloaded-test-repo))) + (is (nil? (:ex-data v))) + (reduced v))) + rtc-log-and-state/rtc-log-flow) + 10000 :timeout))))) diff --git a/src/rtc_e2e_test/const.cljs b/src/rtc_e2e_test/const.cljs index 90f3613983..093919b8ba 100644 --- a/src/rtc_e2e_test/const.cljs +++ b/src/rtc_e2e_test/const.cljs @@ -1,5 +1,6 @@ (ns const - "Consts for rtc e2e tests") + "Consts for rtc e2e tests" + (:require [logseq.db.frontend.order :as db-order])) (assert (exists? js/__karma__)) (def seed js/__karma__.config.seed) @@ -17,6 +18,7 @@ ;;; tests data (def page1-uuid #uuid "c051d36f-98b3-4afb-b52a-d5a06bd8591d") +(def page2-uuid #uuid "91d3e320-d2a6-47ae-96a7-8a366ab96cbb") (def block1-uuid #uuid "aa6d5e60-5d3a-4468-812f-bd60dc9639fb") @@ -37,4 +39,23 @@ :block/title "block1" :block/parent "page" :block/order "a0" - :block/page "page"}]}) + :block/page "page"}] + :insert-300-blocks + (cons {:db/id "page" + :block/uuid page2-uuid + :block/name "insert-400-blocks" + :block/title "insert-400-blocks" + :block/created-at 1725024677501 + :block/updated-at 1725024677501 + :block/type "page" + :block/format :markdown} + (map (fn [i order] + {:block/uuid (random-uuid) + :block/created-at 1725024677501 + :block/updated-at 1725024677501 + :block/format :markdown + :block/title (str "x" i) + :block/parent "page" + :block/order order + :block/page "page"}) + (range 300) (db-order/gen-n-keys 300 "a0" "a1")))})