From f744a49c68a53381c603a9f4eed47f49aea3eceb Mon Sep 17 00:00:00 2001 From: Nikita Sivukhin Date: Sat, 3 Aug 2024 11:30:49 +0400 Subject: [PATCH 1/3] add embedded replica test --- .../src/__tests__/client.test.ts | 33 ++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/packages/libsql-client/src/__tests__/client.test.ts b/packages/libsql-client/src/__tests__/client.test.ts index f069068..0e6bcfc 100644 --- a/packages/libsql-client/src/__tests__/client.test.ts +++ b/packages/libsql-client/src/__tests__/client.test.ts @@ -31,8 +31,10 @@ const isFile = config.url.startsWith("file:"); // - "sqld" is sqld const server = process.env.SERVER ?? "test_v3"; +const isSqld = server === "sqld"; const hasHrana2 = server !== "test_v1"; -const hasHrana3 = server !== "test_v1" && server !== "test_v2"; +const hasHrana3 = + server !== "test_v1" && server !== "test_v2" && server !== "sqld"; const hasNetworkErrors = isWs && (server === "test_v1" || server === "test_v2" || server === "test_v3"); @@ -1426,3 +1428,32 @@ describe("transaction()", () => { c.close(); } }); + +(isSqld ? test : test.skip)("embedded replica test", async () => { + const remote = createClient(config); + const embedded = createClient({ + ...config, + url: "file:///tmp/local.db", + syncUrl: config.url, + }); + await remote.execute("CREATE TABLE embedded(a)"); + await embedded.sync(); + + let embedded1 = await embedded.execute("SELECT * FROM embedded"); + expect(embedded1.columns).toStrictEqual(["a"]); + expect(embedded1.rows.length).toStrictEqual(0); + + await remote.execute("INSERT INTO embedded VALUES (1), (2), (3)"); + let embedded2 = await embedded.execute("SELECT * FROM embedded"); + expect(embedded2.columns).toStrictEqual(["a"]); + expect(embedded2.rows.length).toStrictEqual(0); + + let remote1 = await remote.execute("SELECT * FROM embedded"); + expect(remote1.columns).toStrictEqual(["a"]); + expect(remote1.rows.length).toStrictEqual(3); + + await embedded.sync(); + let embedded3 = await embedded.execute("SELECT * FROM embedded"); + expect(embedded3.columns).toStrictEqual(["a"]); + expect(embedded3.rows.length).toStrictEqual(3); +}); From 56a5049f9d34c1acfb80ec4832345a60229a25a1 Mon Sep 17 00:00:00 2001 From: Nikita Sivukhin Date: Sat, 3 Aug 2024 11:30:59 +0400 Subject: [PATCH 2/3] add GH workflow with tests against sqld --- .github/workflows/ci.yaml | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index f4277c0..0b6d94c 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -5,6 +5,36 @@ on: pull_request: jobs: + "test-against-sqld": + name: "Tests against sqld" + runs-on: ubuntu-latest + timeout-minutes: 2 + defaults: + run: + working-directory: ./packages/libsql-client + env: { "NODE_OPTIONS": "--trace-warnings" } + steps: + - name: "Checkout this repo" + uses: actions/checkout@v3 + - name: "Setup Node.js" + uses: actions/setup-node@v3 + with: + node-version: "18.x" + - name: "Build core" + run: "npm ci && npm run build" + working-directory: ./packages/libsql-core + - name: "Install npm dependencies" + run: "npm ci" + - name: "Build" + run: "npm run build" + - name: Run Docker container in the background + run: docker run -d -p 8080:8080 -e SQLD_NODE=primary ghcr.io/tursodatabase/libsql-server:latest + - name: Verify container is running + run: docker ps + - name: "Test against sqld" + run: "npm test" + env: { "URL": "ws://localhost:8080", "SERVER": "sqld" } + "wasm-test": name: "Build and test Wasm on Node.js" runs-on: ubuntu-latest From e0f5f1de220739cd32eddac0264aa72a0dc8052c Mon Sep 17 00:00:00 2001 From: Nikita Sivukhin Date: Sun, 4 Aug 2024 19:40:05 +0400 Subject: [PATCH 3/3] test sqld against http --- .github/workflows/ci.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 0b6d94c..d66dd25 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -33,7 +33,7 @@ jobs: run: docker ps - name: "Test against sqld" run: "npm test" - env: { "URL": "ws://localhost:8080", "SERVER": "sqld" } + env: { "URL": "http://localhost:8080", "SERVER": "sqld" } "wasm-test": name: "Build and test Wasm on Node.js"