From 1c957b18f65db6bbba8be1c04f06f1f8255b5bfb Mon Sep 17 00:00:00 2001 From: glasstiger Date: Wed, 26 Jun 2024 15:49:29 +0100 Subject: [PATCH 01/69] questdb submodule --- .github/workflows/ci.yml | 31 ++++++++++++++++++++++--------- .gitmodules | 3 +++ 2 files changed, 25 insertions(+), 9 deletions(-) create mode 100644 .gitmodules diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f04c4a1a2..6dfc3f46f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -7,16 +7,29 @@ jobs: CI: name: Monorepo CI flow runs-on: ubuntu-latest - services: - questdb: - image: questdb/questdb:nightly - ports: - - 9000:9000 - env: - QDB_TELEMETRY_ENABLED: false + +# services: +# questdb: +# image: questdb/questdb:nightly +# ports: +# - 9000:9000 +# env: +# QDB_TELEMETRY_ENABLED: false steps: - uses: actions/checkout@v4 + with: + submodules: "true" + + - uses: actions/setup-java@v4 + with: + java-version: '17' + distribution: 'temurin' + cache: maven + + - name: Build QuestDB + run: cd questdb; mvn clean + - uses: actions/setup-node@v4 with: node-version: "20" @@ -37,8 +50,8 @@ jobs: - name: Run @questdb/web-console unit tests run: yarn workspace @questdb/web-console run test:prod - - name: Run browser-tests test - run: node packages/web-console/serve-dist.js & yarn workspace browser-tests test +# - name: Run browser-tests test +# run: node packages/web-console/serve-dist.js & yarn workspace browser-tests test - name: Publish @questdb/web-console to npm if: github.ref == 'refs/heads/main' diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 000000000..33c80c21c --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "packages/browser-tests/questdb"] + path = packages/browser-tests/questdb + url = https://github.com/questdb/questdb.git From 592873242056a84c7a6cdb893d062201f197cf75 Mon Sep 17 00:00:00 2001 From: glasstiger Date: Wed, 26 Jun 2024 15:53:07 +0100 Subject: [PATCH 02/69] run maven --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6dfc3f46f..00de33947 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -28,7 +28,7 @@ jobs: cache: maven - name: Build QuestDB - run: cd questdb; mvn clean + run: cd packages/browser-tests/questdb; mvn clean - uses: actions/setup-node@v4 with: From 549d078ae950566c0e4806706201d8723aa7df79 Mon Sep 17 00:00:00 2001 From: glasstiger Date: Wed, 26 Jun 2024 15:54:55 +0100 Subject: [PATCH 03/69] run maven --- .github/workflows/ci.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 00de33947..969e069a2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -27,6 +27,9 @@ jobs: distribution: 'temurin' cache: maven + - name: Build QuestDB + run: ls -la packages/browser-tests/questdb + - name: Build QuestDB run: cd packages/browser-tests/questdb; mvn clean From af2435f7285aa3cecab791cb1a701de24872d078 Mon Sep 17 00:00:00 2001 From: glasstiger Date: Wed, 26 Jun 2024 16:08:39 +0100 Subject: [PATCH 04/69] run maven --- .github/workflows/ci.yml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 969e069a2..bb94ed4c2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -28,11 +28,8 @@ jobs: cache: maven - name: Build QuestDB - run: ls -la packages/browser-tests/questdb + run: mvn clean --file packages/browser-tests/questdb/pom.xml - - name: Build QuestDB - run: cd packages/browser-tests/questdb; mvn clean - - uses: actions/setup-node@v4 with: node-version: "20" From 43ae6bbb1e7df509487e7db3201207f456d9e424 Mon Sep 17 00:00:00 2001 From: glasstiger Date: Wed, 26 Jun 2024 16:14:02 +0100 Subject: [PATCH 05/69] run maven --- pom.xml | 74 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 pom.xml diff --git a/pom.xml b/pom.xml new file mode 100644 index 000000000..5d8db2c4f --- /dev/null +++ b/pom.xml @@ -0,0 +1,74 @@ + + + + 4.0.0 + + ui + ui + 1.0-SNAPSHOT + + ui + https://questdb.io + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 5780b44bdfe70de732a3c1b72feaa18725c9ca6b Mon Sep 17 00:00:00 2001 From: glasstiger Date: Wed, 26 Jun 2024 16:17:32 +0100 Subject: [PATCH 06/69] run maven --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index bb94ed4c2..7298ac1be 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -19,7 +19,7 @@ jobs: steps: - uses: actions/checkout@v4 with: - submodules: "true" + submodules: "recursive" - uses: actions/setup-java@v4 with: From 5b3f0d0ef11db3b4f0039924b0868d424f55a6c9 Mon Sep 17 00:00:00 2001 From: glasstiger Date: Wed, 26 Jun 2024 16:18:28 +0100 Subject: [PATCH 07/69] run maven --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7298ac1be..a189a96cf 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -28,7 +28,7 @@ jobs: cache: maven - name: Build QuestDB - run: mvn clean --file packages/browser-tests/questdb/pom.xml + run: ls -la packages/browser-tests/questdb; mvn clean --file packages/browser-tests/questdb/pom.xml - uses: actions/setup-node@v4 with: From 1250d17fb24c61f4adb1b434feebb3ae2a717b93 Mon Sep 17 00:00:00 2001 From: glasstiger Date: Wed, 26 Jun 2024 16:19:20 +0100 Subject: [PATCH 08/69] run maven --- .github/workflows/ci.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a189a96cf..a38820ba6 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -27,8 +27,11 @@ jobs: distribution: 'temurin' cache: maven + - name: List QuestDB + run: ls -la packages/browser-tests/questdb + - name: Build QuestDB - run: ls -la packages/browser-tests/questdb; mvn clean --file packages/browser-tests/questdb/pom.xml + run: mvn clean --file packages/browser-tests/questdb/pom.xml - uses: actions/setup-node@v4 with: From b1f30195ebb86ab775b68075ff514f43bd3c5740 Mon Sep 17 00:00:00 2001 From: glasstiger Date: Wed, 26 Jun 2024 16:25:04 +0100 Subject: [PATCH 09/69] run maven --- .github/workflows/ci.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a38820ba6..042a1f471 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,6 +21,9 @@ jobs: with: submodules: "recursive" + - name: Init Submodule + run: git submodule update --init --recursive + - uses: actions/setup-java@v4 with: java-version: '17' From 485b4e123dd8ab73492ead754370bd1f206d8add Mon Sep 17 00:00:00 2001 From: glasstiger Date: Wed, 26 Jun 2024 16:26:58 +0100 Subject: [PATCH 10/69] run maven --- .github/workflows/ci.yml | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 042a1f471..30b1e43f5 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -24,15 +24,18 @@ jobs: - name: Init Submodule run: git submodule update --init --recursive + - name: List a + run: ls -la packages/browser-tests + + - name: List b + run: ls -la packages/browser-tests/questdb + - uses: actions/setup-java@v4 with: java-version: '17' distribution: 'temurin' cache: maven - - name: List QuestDB - run: ls -la packages/browser-tests/questdb - - name: Build QuestDB run: mvn clean --file packages/browser-tests/questdb/pom.xml From f317a877935ee81f6fcee9f2f10c8fc4fc70f652 Mon Sep 17 00:00:00 2001 From: glasstiger Date: Wed, 26 Jun 2024 16:31:30 +0100 Subject: [PATCH 11/69] run maven --- .github/workflows/ci.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 30b1e43f5..ddcb05ff7 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -22,7 +22,9 @@ jobs: submodules: "recursive" - name: Init Submodule - run: git submodule update --init --recursive + run: git submodule init + - name: Update Submodule + run: git submodule update - name: List a run: ls -la packages/browser-tests From 958f8af5481557622b86a0cc19f3d8d4e061c865 Mon Sep 17 00:00:00 2001 From: glasstiger Date: Wed, 26 Jun 2024 16:32:50 +0100 Subject: [PATCH 12/69] run maven --- packages/browser-tests/questdb | 1 + 1 file changed, 1 insertion(+) create mode 160000 packages/browser-tests/questdb diff --git a/packages/browser-tests/questdb b/packages/browser-tests/questdb new file mode 160000 index 000000000..76cf15df5 --- /dev/null +++ b/packages/browser-tests/questdb @@ -0,0 +1 @@ +Subproject commit 76cf15df555618782ff58c3763a20e21e865ec80 From d587e7954949cd1bde34ac609141ea946c855d3c Mon Sep 17 00:00:00 2001 From: glasstiger Date: Wed, 26 Jun 2024 16:43:34 +0100 Subject: [PATCH 13/69] run maven --- .github/workflows/ci.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ddcb05ff7..a7ef053ce 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,10 +21,10 @@ jobs: with: submodules: "recursive" - - name: Init Submodule - run: git submodule init - - name: Update Submodule - run: git submodule update +# - name: Init Submodule +# run: git submodule init +# - name: Update Submodule +# run: git submodule update - name: List a run: ls -la packages/browser-tests From de5344105fa18c049979efd9c2d21e322a2b4efc Mon Sep 17 00:00:00 2001 From: glasstiger Date: Wed, 26 Jun 2024 16:48:18 +0100 Subject: [PATCH 14/69] run maven --- .github/workflows/ci.yml | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a7ef053ce..7e35d4c96 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,17 +21,6 @@ jobs: with: submodules: "recursive" -# - name: Init Submodule -# run: git submodule init -# - name: Update Submodule -# run: git submodule update - - - name: List a - run: ls -la packages/browser-tests - - - name: List b - run: ls -la packages/browser-tests/questdb - - uses: actions/setup-java@v4 with: java-version: '17' @@ -39,7 +28,7 @@ jobs: cache: maven - name: Build QuestDB - run: mvn clean --file packages/browser-tests/questdb/pom.xml + run: mvn clean package -f packages/browser-tests/questdb/pom.xml -DskipTests -P build-ent-binaries - uses: actions/setup-node@v4 with: From 77773780603008c53e19b0df7c9d23c3e1e5dd52 Mon Sep 17 00:00:00 2001 From: glasstiger Date: Wed, 26 Jun 2024 16:54:18 +0100 Subject: [PATCH 15/69] run maven --- .github/workflows/ci.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7e35d4c96..f00389128 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -28,7 +28,10 @@ jobs: cache: maven - name: Build QuestDB - run: mvn clean package -f packages/browser-tests/questdb/pom.xml -DskipTests -P build-ent-binaries + run: mvn clean package -f packages/browser-tests/questdb/pom.xml -DskipTests -P build-binaries + + - name: List QuestDB + run: ls -la packages/browser-tests/questdb/core/target - uses: actions/setup-node@v4 with: From 00615f3122216609412dba3189bde4d1b682cde6 Mon Sep 17 00:00:00 2001 From: glasstiger Date: Wed, 26 Jun 2024 17:03:15 +0100 Subject: [PATCH 16/69] run maven --- .github/workflows/ci.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f00389128..72933960e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -31,7 +31,10 @@ jobs: run: mvn clean package -f packages/browser-tests/questdb/pom.xml -DskipTests -P build-binaries - name: List QuestDB - run: ls -la packages/browser-tests/questdb/core/target + run: | + ls -la packages/browser-tests/questdb + ls -la packages/browser-tests/questdb/core + ls -la packages/browser-tests/questdb/core/target - uses: actions/setup-node@v4 with: From 8eee5852e2970f47d8efb07cf0097874bc5f7301 Mon Sep 17 00:00:00 2001 From: glasstiger Date: Wed, 26 Jun 2024 17:08:59 +0100 Subject: [PATCH 17/69] run maven --- .github/workflows/ci.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 72933960e..15122e855 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -30,11 +30,11 @@ jobs: - name: Build QuestDB run: mvn clean package -f packages/browser-tests/questdb/pom.xml -DskipTests -P build-binaries + - name: Extract QuestDB + run: tar -xzf packages/browser-tests/questdb/core/target/questdb-*-no-jre-bin.tar.gz + - name: List QuestDB - run: | - ls -la packages/browser-tests/questdb - ls -la packages/browser-tests/questdb/core - ls -la packages/browser-tests/questdb/core/target + run: ls -la packages/browser-tests/questdb/core/target - uses: actions/setup-node@v4 with: From 6afdf42c9be6d437c84b4c0446ce8d3be5d9d2de Mon Sep 17 00:00:00 2001 From: glasstiger Date: Wed, 26 Jun 2024 17:17:34 +0100 Subject: [PATCH 18/69] run maven --- .github/workflows/ci.yml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 15122e855..3c84bdb3f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -31,10 +31,13 @@ jobs: run: mvn clean package -f packages/browser-tests/questdb/pom.xml -DskipTests -P build-binaries - name: Extract QuestDB - run: tar -xzf packages/browser-tests/questdb/core/target/questdb-*-no-jre-bin.tar.gz + run: tar xzf packages/browser-tests/questdb/core/target/questdb-*-rt-linux-amd64.tar.gz - name: List QuestDB - run: ls -la packages/browser-tests/questdb/core/target + run: | + ls -la packages/browser-tests/questdb/core/target + ls -la . + ls -la questdb-* - uses: actions/setup-node@v4 with: From 5c33aeb426c565407fe469f9c4be2cba5972bf61 Mon Sep 17 00:00:00 2001 From: glasstiger Date: Wed, 26 Jun 2024 18:07:49 +0100 Subject: [PATCH 19/69] run maven --- .github/workflows/ci.yml | 27 +++++++++++---------------- 1 file changed, 11 insertions(+), 16 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3c84bdb3f..e70536e74 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -8,14 +8,6 @@ jobs: name: Monorepo CI flow runs-on: ubuntu-latest -# services: -# questdb: -# image: questdb/questdb:nightly -# ports: -# - 9000:9000 -# env: -# QDB_TELEMETRY_ENABLED: false - steps: - uses: actions/checkout@v4 with: @@ -31,13 +23,13 @@ jobs: run: mvn clean package -f packages/browser-tests/questdb/pom.xml -DskipTests -P build-binaries - name: Extract QuestDB - run: tar xzf packages/browser-tests/questdb/core/target/questdb-*-rt-linux-amd64.tar.gz + run: tar -xzf packages/browser-tests/questdb/core/target/questdb-*-rt-linux-amd64.tar.gz -C tmp/ + + - name: Create DB Root + run: mkdir tmp/dbroot - - name: List QuestDB - run: | - ls -la packages/browser-tests/questdb/core/target - ls -la . - ls -la questdb-* + - name: Start QuestDB + run: ./tmp/questdb-*-rt-linux-amd64.tar.gz/bin/questdb.sh start -d ./tmp/dbroot - uses: actions/setup-node@v4 with: @@ -59,8 +51,11 @@ jobs: - name: Run @questdb/web-console unit tests run: yarn workspace @questdb/web-console run test:prod -# - name: Run browser-tests test -# run: node packages/web-console/serve-dist.js & yarn workspace browser-tests test + - name: Run browser-tests test + run: node packages/web-console/serve-dist.js & yarn workspace browser-tests test + + - name: Stop QuestDB + run: ./tmp/questdb-*-rt-linux-amd64.tar.gz/bin/questdb.sh stop - name: Publish @questdb/web-console to npm if: github.ref == 'refs/heads/main' From deb4c5ec68f7721accdd44e5d977d5fa2fafa1cb Mon Sep 17 00:00:00 2001 From: glasstiger Date: Wed, 26 Jun 2024 18:24:16 +0100 Subject: [PATCH 20/69] tmp dir --- tmp/.gitignore | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 tmp/.gitignore diff --git a/tmp/.gitignore b/tmp/.gitignore new file mode 100644 index 000000000..5e7d2734c --- /dev/null +++ b/tmp/.gitignore @@ -0,0 +1,4 @@ +# Ignore everything in this directory +* +# Except this file +!.gitignore From e2f9d371bad0d83cc3bfddbf809549141bb1e5e8 Mon Sep 17 00:00:00 2001 From: glasstiger Date: Wed, 26 Jun 2024 18:27:58 +0100 Subject: [PATCH 21/69] tmp dir --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e70536e74..91c992ab6 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -29,7 +29,7 @@ jobs: run: mkdir tmp/dbroot - name: Start QuestDB - run: ./tmp/questdb-*-rt-linux-amd64.tar.gz/bin/questdb.sh start -d ./tmp/dbroot + run: ./tmp/questdb-*-rt-linux-amd64/bin/questdb.sh start -d ./tmp/dbroot - uses: actions/setup-node@v4 with: From 2b8db47a9a6c35f22f4abfe0185ec674a70f0dc0 Mon Sep 17 00:00:00 2001 From: glasstiger Date: Wed, 26 Jun 2024 18:33:02 +0100 Subject: [PATCH 22/69] stop questdb instance --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 91c992ab6..1e3304d30 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -55,7 +55,7 @@ jobs: run: node packages/web-console/serve-dist.js & yarn workspace browser-tests test - name: Stop QuestDB - run: ./tmp/questdb-*-rt-linux-amd64.tar.gz/bin/questdb.sh stop + run: ./tmp/questdb-*-rt-linux-amd64/bin/questdb.sh stop - name: Publish @questdb/web-console to npm if: github.ref == 'refs/heads/main' From 3e78264c9b7e232eecedf8d9ec8d950c7d5bbb68 Mon Sep 17 00:00:00 2001 From: glasstiger Date: Wed, 26 Jun 2024 18:38:46 +0100 Subject: [PATCH 23/69] pom.xml --- pom.xml | 61 --------------------------------------------------------- 1 file changed, 61 deletions(-) diff --git a/pom.xml b/pom.xml index 5d8db2c4f..d91800636 100644 --- a/pom.xml +++ b/pom.xml @@ -10,65 +10,4 @@ ui https://questdb.io - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - From ee381490076cafd49014b7340372b273994fa23b Mon Sep 17 00:00:00 2001 From: glasstiger Date: Wed, 26 Jun 2024 18:48:09 +0100 Subject: [PATCH 24/69] CI change --- .github/workflows/ci.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1e3304d30..62d602c1f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -30,6 +30,8 @@ jobs: - name: Start QuestDB run: ./tmp/questdb-*-rt-linux-amd64/bin/questdb.sh start -d ./tmp/dbroot + with: + post: ./tmp/questdb-*-rt-linux-amd64/bin/questdb.sh stop - uses: actions/setup-node@v4 with: @@ -54,8 +56,8 @@ jobs: - name: Run browser-tests test run: node packages/web-console/serve-dist.js & yarn workspace browser-tests test - - name: Stop QuestDB - run: ./tmp/questdb-*-rt-linux-amd64/bin/questdb.sh stop +# - name: Stop QuestDB +# run: ./tmp/questdb-*-rt-linux-amd64/bin/questdb.sh stop - name: Publish @questdb/web-console to npm if: github.ref == 'refs/heads/main' From 2b9d4d7389a59d2687f8869b38f6b407bf6d60a3 Mon Sep 17 00:00:00 2001 From: glasstiger Date: Wed, 26 Jun 2024 18:58:05 +0100 Subject: [PATCH 25/69] CI change --- .github/workflows/ci.yml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 62d602c1f..1e3304d30 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -30,8 +30,6 @@ jobs: - name: Start QuestDB run: ./tmp/questdb-*-rt-linux-amd64/bin/questdb.sh start -d ./tmp/dbroot - with: - post: ./tmp/questdb-*-rt-linux-amd64/bin/questdb.sh stop - uses: actions/setup-node@v4 with: @@ -56,8 +54,8 @@ jobs: - name: Run browser-tests test run: node packages/web-console/serve-dist.js & yarn workspace browser-tests test -# - name: Stop QuestDB -# run: ./tmp/questdb-*-rt-linux-amd64/bin/questdb.sh stop + - name: Stop QuestDB + run: ./tmp/questdb-*-rt-linux-amd64/bin/questdb.sh stop - name: Publish @questdb/web-console to npm if: github.ref == 'refs/heads/main' From 6c92bef5b9f45d50c670630d689a50cace3a656c Mon Sep 17 00:00:00 2001 From: glasstiger Date: Wed, 26 Jun 2024 19:04:40 +0100 Subject: [PATCH 26/69] CI change --- packages/browser-tests/cypress.config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/browser-tests/cypress.config.js b/packages/browser-tests/cypress.config.js index 3b2d0ba37..ff336654d 100644 --- a/packages/browser-tests/cypress.config.js +++ b/packages/browser-tests/cypress.config.js @@ -5,7 +5,7 @@ const { module.exports = defineConfig({ e2e: { - defaultCommandTimeout: 10000, + defaultCommandTimeout: 30000, screenshotOnRunFailure: false, video: false, baseUrl: "http://localhost:9999", From 3d0f45d33054b3277d22ada70ead82af5906b4c1 Mon Sep 17 00:00:00 2001 From: glasstiger Date: Wed, 26 Jun 2024 19:38:45 +0100 Subject: [PATCH 27/69] CI change --- .github/workflows/ci.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1e3304d30..b4ba11265 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -54,6 +54,13 @@ jobs: - name: Run browser-tests test run: node packages/web-console/serve-dist.js & yarn workspace browser-tests test + - name: Save QuestDB log on test failure + if: failure() + uses: actions/upload-artifact@v1 + with: + name: server log + path: tmp/dbroot/log/* + - name: Stop QuestDB run: ./tmp/questdb-*-rt-linux-amd64/bin/questdb.sh stop From d3642bcbb7daebc7869f46780c586cd56076eea3 Mon Sep 17 00:00:00 2001 From: glasstiger Date: Wed, 26 Jun 2024 19:46:18 +0100 Subject: [PATCH 28/69] CI change --- .github/workflows/ci.yml | 9 +++++++++ packages/browser-tests/cypress.config.js | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b4ba11265..f6947d3cd 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -54,6 +54,14 @@ jobs: - name: Run browser-tests test run: node packages/web-console/serve-dist.js & yarn workspace browser-tests test + - name: List Log Files + if: true + run: ls -la tmp/dbroot/log + + - name: Print Log Files + if: true + run: cat tmp/dbroot/log/* + - name: Save QuestDB log on test failure if: failure() uses: actions/upload-artifact@v1 @@ -62,6 +70,7 @@ jobs: path: tmp/dbroot/log/* - name: Stop QuestDB + if: true run: ./tmp/questdb-*-rt-linux-amd64/bin/questdb.sh stop - name: Publish @questdb/web-console to npm diff --git a/packages/browser-tests/cypress.config.js b/packages/browser-tests/cypress.config.js index ff336654d..1a9173d22 100644 --- a/packages/browser-tests/cypress.config.js +++ b/packages/browser-tests/cypress.config.js @@ -5,7 +5,7 @@ const { module.exports = defineConfig({ e2e: { - defaultCommandTimeout: 30000, + defaultCommandTimeout: 9000, screenshotOnRunFailure: false, video: false, baseUrl: "http://localhost:9999", From 0021dcec932a468359544996a4187817c867d58b Mon Sep 17 00:00:00 2001 From: glasstiger Date: Wed, 26 Jun 2024 19:52:08 +0100 Subject: [PATCH 29/69] CI change --- .github/workflows/ci.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f6947d3cd..5235a510b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -55,22 +55,22 @@ jobs: run: node packages/web-console/serve-dist.js & yarn workspace browser-tests test - name: List Log Files - if: true + if: success() || failure() run: ls -la tmp/dbroot/log - name: Print Log Files - if: true + if: success() || failure() run: cat tmp/dbroot/log/* - name: Save QuestDB log on test failure if: failure() - uses: actions/upload-artifact@v1 + uses: actions/upload-artifact@v4 with: - name: server log + name: server-log path: tmp/dbroot/log/* - name: Stop QuestDB - if: true + if: success() || failure() run: ./tmp/questdb-*-rt-linux-amd64/bin/questdb.sh stop - name: Publish @questdb/web-console to npm From 10a6a678b1fb0a961f8ac11041bf6c2cceae5af1 Mon Sep 17 00:00:00 2001 From: glasstiger Date: Wed, 26 Jun 2024 20:03:04 +0100 Subject: [PATCH 30/69] CI change --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5235a510b..14962cb34 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -66,7 +66,7 @@ jobs: if: failure() uses: actions/upload-artifact@v4 with: - name: server-log + name: questdb-log path: tmp/dbroot/log/* - name: Stop QuestDB From 47895f83076e9c872b71404f676d4e8769d7866f Mon Sep 17 00:00:00 2001 From: glasstiger Date: Thu, 27 Jun 2024 10:16:30 +0100 Subject: [PATCH 31/69] CI change --- .github/workflows/check_oss_submodule.yml | 17 +++++++++++++++++ packages/browser-tests/cypress.config.js | 2 +- 2 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/check_oss_submodule.yml diff --git a/.github/workflows/check_oss_submodule.yml b/.github/workflows/check_oss_submodule.yml new file mode 100644 index 000000000..1ee2b4fcc --- /dev/null +++ b/.github/workflows/check_oss_submodule.yml @@ -0,0 +1,17 @@ +name: Check OSS Submodule + +on: + push: + +jobs: + check_oss_submodule: + name: Check if OSS is on master + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + with: + submodules: "recursive" + + - name: Check OSS branch + run: echo ${{ github.ref_name }} diff --git a/packages/browser-tests/cypress.config.js b/packages/browser-tests/cypress.config.js index 1a9173d22..ff336654d 100644 --- a/packages/browser-tests/cypress.config.js +++ b/packages/browser-tests/cypress.config.js @@ -5,7 +5,7 @@ const { module.exports = defineConfig({ e2e: { - defaultCommandTimeout: 9000, + defaultCommandTimeout: 30000, screenshotOnRunFailure: false, video: false, baseUrl: "http://localhost:9999", From 1048a068aa716b49ea0fee252b7f5874339dd466 Mon Sep 17 00:00:00 2001 From: glasstiger Date: Thu, 27 Jun 2024 11:08:19 +0100 Subject: [PATCH 32/69] CI change --- .github/workflows/check_oss_submodule.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/check_oss_submodule.yml b/.github/workflows/check_oss_submodule.yml index 1ee2b4fcc..f78f94ab9 100644 --- a/.github/workflows/check_oss_submodule.yml +++ b/.github/workflows/check_oss_submodule.yml @@ -13,5 +13,9 @@ jobs: with: submodules: "recursive" - - name: Check OSS branch + - name: Print name of OSS branch run: echo ${{ github.ref_name }} + + - name: Check OSS branch + if: github.ref_name != 'master' + run: exit 1 From 6bc10ed4593416cfd31797869981d2b5d16788a1 Mon Sep 17 00:00:00 2001 From: glasstiger Date: Thu, 27 Jun 2024 11:26:34 +0100 Subject: [PATCH 33/69] CI change --- .github/workflows/check_oss_submodule.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/check_oss_submodule.yml b/.github/workflows/check_oss_submodule.yml index f78f94ab9..9fc3dc480 100644 --- a/.github/workflows/check_oss_submodule.yml +++ b/.github/workflows/check_oss_submodule.yml @@ -18,4 +18,4 @@ jobs: - name: Check OSS branch if: github.ref_name != 'master' - run: exit 1 + run: exit 0 From 5ecc29445de657d297d1ed793aef04fd4bb57ab4 Mon Sep 17 00:00:00 2001 From: glasstiger Date: Thu, 27 Jun 2024 11:27:35 +0100 Subject: [PATCH 34/69] CI change --- .github/workflows/check_oss_submodule.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/check_oss_submodule.yml b/.github/workflows/check_oss_submodule.yml index 9fc3dc480..f78f94ab9 100644 --- a/.github/workflows/check_oss_submodule.yml +++ b/.github/workflows/check_oss_submodule.yml @@ -18,4 +18,4 @@ jobs: - name: Check OSS branch if: github.ref_name != 'master' - run: exit 0 + run: exit 1 From 2d9effbfb381e29ce8b5279ae6689f119ebc5971 Mon Sep 17 00:00:00 2001 From: glasstiger Date: Thu, 27 Jun 2024 12:45:51 +0100 Subject: [PATCH 35/69] CI change --- .github/workflows/check_oss_submodule.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/check_oss_submodule.yml b/.github/workflows/check_oss_submodule.yml index f78f94ab9..249ad2586 100644 --- a/.github/workflows/check_oss_submodule.yml +++ b/.github/workflows/check_oss_submodule.yml @@ -13,6 +13,11 @@ jobs: with: submodules: "recursive" + - name: Print name of OSS branch + run: | + TEST_STUFF=$(ls -la) + echo $TEST_STUFF + - name: Print name of OSS branch run: echo ${{ github.ref_name }} From 58ae685c437d8ad00911e0943cc467ece4d1658e Mon Sep 17 00:00:00 2001 From: glasstiger Date: Thu, 27 Jun 2024 12:54:00 +0100 Subject: [PATCH 36/69] CI change --- .github/workflows/check_oss_submodule.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/check_oss_submodule.yml b/.github/workflows/check_oss_submodule.yml index 249ad2586..154095e61 100644 --- a/.github/workflows/check_oss_submodule.yml +++ b/.github/workflows/check_oss_submodule.yml @@ -15,7 +15,7 @@ jobs: - name: Print name of OSS branch run: | - TEST_STUFF=$(ls -la) + TEST_STUFF=$(git submodule foreach 'git branch') echo $TEST_STUFF - name: Print name of OSS branch From 78923fc88c5ed0b3ad52388f10910071cca836ce Mon Sep 17 00:00:00 2001 From: glasstiger Date: Thu, 27 Jun 2024 12:57:33 +0100 Subject: [PATCH 37/69] CI change --- .github/workflows/check_oss_submodule.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/check_oss_submodule.yml b/.github/workflows/check_oss_submodule.yml index 154095e61..c33ec382e 100644 --- a/.github/workflows/check_oss_submodule.yml +++ b/.github/workflows/check_oss_submodule.yml @@ -15,7 +15,7 @@ jobs: - name: Print name of OSS branch run: | - TEST_STUFF=$(git submodule foreach 'git branch') + TEST_STUFF=$(cd packages/browser-tests/questdb; git branch) echo $TEST_STUFF - name: Print name of OSS branch From f303b52d2af8c79631f9269fec1e6751a4c039ba Mon Sep 17 00:00:00 2001 From: glasstiger Date: Thu, 27 Jun 2024 12:59:57 +0100 Subject: [PATCH 38/69] CI change --- .github/workflows/check_oss_submodule.yml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/.github/workflows/check_oss_submodule.yml b/.github/workflows/check_oss_submodule.yml index c33ec382e..485c695b5 100644 --- a/.github/workflows/check_oss_submodule.yml +++ b/.github/workflows/check_oss_submodule.yml @@ -13,10 +13,11 @@ jobs: with: submodules: "recursive" - - name: Print name of OSS branch - run: | - TEST_STUFF=$(cd packages/browser-tests/questdb; git branch) - echo $TEST_STUFF + - name: Get stuff + run: TEST_STUFF=$(cd packages/browser-tests/questdb; git branch) + + - name: Print stuff + run: echo $TEST_STUFF - name: Print name of OSS branch run: echo ${{ github.ref_name }} From d3184e3898765900add29ed3d208448af972a834 Mon Sep 17 00:00:00 2001 From: glasstiger Date: Thu, 27 Jun 2024 13:17:44 +0100 Subject: [PATCH 39/69] CI change --- .github/workflows/check_oss_submodule.yml | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/.github/workflows/check_oss_submodule.yml b/.github/workflows/check_oss_submodule.yml index 485c695b5..7e7493994 100644 --- a/.github/workflows/check_oss_submodule.yml +++ b/.github/workflows/check_oss_submodule.yml @@ -13,11 +13,10 @@ jobs: with: submodules: "recursive" - - name: Get stuff - run: TEST_STUFF=$(cd packages/browser-tests/questdb; git branch) - - - name: Print stuff - run: echo $TEST_STUFF + - name: Stuff + run: | + TEST_STUFF=$(cd packages/browser-tests/questdb; git rev-parse --abbrev-ref HEAD) + echo $TEST_STUFF - name: Print name of OSS branch run: echo ${{ github.ref_name }} From 1baee8d18096a73b5f718087ef405a2e8bbbb868 Mon Sep 17 00:00:00 2001 From: glasstiger Date: Thu, 27 Jun 2024 13:20:26 +0100 Subject: [PATCH 40/69] CI change --- .github/workflows/check_oss_submodule.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/check_oss_submodule.yml b/.github/workflows/check_oss_submodule.yml index 7e7493994..8bf77e4bc 100644 --- a/.github/workflows/check_oss_submodule.yml +++ b/.github/workflows/check_oss_submodule.yml @@ -15,7 +15,7 @@ jobs: - name: Stuff run: | - TEST_STUFF=$(cd packages/browser-tests/questdb; git rev-parse --abbrev-ref HEAD) + TEST_STUFF=$(cd packages/browser-tests/questdb; git symbolic-ref --short HEAD) echo $TEST_STUFF - name: Print name of OSS branch From a5bbadc5062e64f16ac20e457eba8e5c1bcda34a Mon Sep 17 00:00:00 2001 From: glasstiger Date: Thu, 27 Jun 2024 13:22:34 +0100 Subject: [PATCH 41/69] CI change --- .github/workflows/check_oss_submodule.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/check_oss_submodule.yml b/.github/workflows/check_oss_submodule.yml index 8bf77e4bc..34ab09248 100644 --- a/.github/workflows/check_oss_submodule.yml +++ b/.github/workflows/check_oss_submodule.yml @@ -15,7 +15,7 @@ jobs: - name: Stuff run: | - TEST_STUFF=$(cd packages/browser-tests/questdb; git symbolic-ref --short HEAD) + TEST_STUFF=$(cd packages/browser-tests/questdb; git branch) echo $TEST_STUFF - name: Print name of OSS branch From 663b9cc279a16829a13959470d6ffe3aa23241c9 Mon Sep 17 00:00:00 2001 From: glasstiger Date: Thu, 27 Jun 2024 13:48:56 +0100 Subject: [PATCH 42/69] CI change --- .github/workflows/check_oss_submodule.yml | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/.github/workflows/check_oss_submodule.yml b/.github/workflows/check_oss_submodule.yml index 34ab09248..4439ec8f7 100644 --- a/.github/workflows/check_oss_submodule.yml +++ b/.github/workflows/check_oss_submodule.yml @@ -13,14 +13,20 @@ jobs: with: submodules: "recursive" - - name: Stuff + - name: Get current prefix + id: branch-prefix run: | - TEST_STUFF=$(cd packages/browser-tests/questdb; git branch) - echo $TEST_STUFF + prefix=$(echo $GITHUB_REF) + echo "::set-output name=prefix::$prefix" - - name: Print name of OSS branch - run: echo ${{ github.ref_name }} +# - name: Stuff +# run: | +# TEST_STUFF=$(cd packages/browser-tests/questdb; git branch) +# if: ${{ ! startsWith($TEST_STUFF, 'refs/tags/') }} +# +# - name: Print name of OSS branch +# run: echo ${{ github.ref_name }} - name: Check OSS branch - if: github.ref_name != 'master' + if: ${{ steps.branch-prefix.output.prefix != 'master' }} run: exit 1 From 841367f854d257546ccfd0e2e962f2292869059c Mon Sep 17 00:00:00 2001 From: glasstiger Date: Thu, 27 Jun 2024 13:55:05 +0100 Subject: [PATCH 43/69] CI change --- .github/workflows/check_oss_submodule.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/check_oss_submodule.yml b/.github/workflows/check_oss_submodule.yml index 4439ec8f7..59e31d963 100644 --- a/.github/workflows/check_oss_submodule.yml +++ b/.github/workflows/check_oss_submodule.yml @@ -23,9 +23,9 @@ jobs: # run: | # TEST_STUFF=$(cd packages/browser-tests/questdb; git branch) # if: ${{ ! startsWith($TEST_STUFF, 'refs/tags/') }} -# -# - name: Print name of OSS branch -# run: echo ${{ github.ref_name }} + + - name: Print name of OSS branch + run: echo ${{ steps.branch-prefix.output.prefix }} - name: Check OSS branch if: ${{ steps.branch-prefix.output.prefix != 'master' }} From 99acc77f1f92e7dd19a837d5c9b7ffa76bca8243 Mon Sep 17 00:00:00 2001 From: glasstiger Date: Thu, 27 Jun 2024 13:56:58 +0100 Subject: [PATCH 44/69] CI change --- .github/workflows/check_oss_submodule.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/check_oss_submodule.yml b/.github/workflows/check_oss_submodule.yml index 59e31d963..8f795e039 100644 --- a/.github/workflows/check_oss_submodule.yml +++ b/.github/workflows/check_oss_submodule.yml @@ -16,7 +16,7 @@ jobs: - name: Get current prefix id: branch-prefix run: | - prefix=$(echo $GITHUB_REF) + prefix=$(echo `git branch`) echo "::set-output name=prefix::$prefix" # - name: Stuff From 04a8f05d24a7252e7752247886b9fe80c676967d Mon Sep 17 00:00:00 2001 From: glasstiger Date: Thu, 27 Jun 2024 14:16:57 +0100 Subject: [PATCH 45/69] CI change --- .github/workflows/check_oss_submodule.yml | 21 ++++++++++++--------- oss_master_check.sh | 11 +++++++++++ 2 files changed, 23 insertions(+), 9 deletions(-) create mode 100755 oss_master_check.sh diff --git a/.github/workflows/check_oss_submodule.yml b/.github/workflows/check_oss_submodule.yml index 8f795e039..a5e346263 100644 --- a/.github/workflows/check_oss_submodule.yml +++ b/.github/workflows/check_oss_submodule.yml @@ -13,20 +13,23 @@ jobs: with: submodules: "recursive" - - name: Get current prefix - id: branch-prefix - run: | - prefix=$(echo `git branch`) - echo "::set-output name=prefix::$prefix" +# - name: Get current prefix +# id: branch-prefix +# run: | +# prefix=$(echo `git branch`) +# echo "::set-output name=prefix::$prefix" # - name: Stuff # run: | # TEST_STUFF=$(cd packages/browser-tests/questdb; git branch) # if: ${{ ! startsWith($TEST_STUFF, 'refs/tags/') }} - - name: Print name of OSS branch - run: echo ${{ steps.branch-prefix.output.prefix }} +# - name: Print name of OSS branch +# run: echo ${{ steps.branch-prefix.output.prefix }} + +# - name: Check OSS branch +# if: ${{ steps.branch-prefix.output.prefix != 'master' }} +# run: exit 1 - name: Check OSS branch - if: ${{ steps.branch-prefix.output.prefix != 'master' }} - run: exit 1 + run: ./oss_master_check.sh diff --git a/oss_master_check.sh b/oss_master_check.sh new file mode 100755 index 000000000..1145c27f5 --- /dev/null +++ b/oss_master_check.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +cd packages/browser-tests/questdb || exit 2 +BRANCH=`git symbolic-ref --short HEAD` + +if [[ $BRANCH = "master" ]] +then + exit 0 +else + exit 1 +fi From 44bf6753aea383249ff351f6b3c0c7ab5ecf3793 Mon Sep 17 00:00:00 2001 From: glasstiger Date: Thu, 27 Jun 2024 14:18:22 +0100 Subject: [PATCH 46/69] CI change --- oss_master_check.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/oss_master_check.sh b/oss_master_check.sh index 1145c27f5..b3fc613eb 100755 --- a/oss_master_check.sh +++ b/oss_master_check.sh @@ -1,7 +1,7 @@ #!/bin/bash cd packages/browser-tests/questdb || exit 2 -BRANCH=`git symbolic-ref --short HEAD` +BRANCH=`git rev-parse --abbrev-ref HEAD` if [[ $BRANCH = "master" ]] then From d8a04974f23444cc469420ba1476f41d40e1f98b Mon Sep 17 00:00:00 2001 From: glasstiger Date: Thu, 27 Jun 2024 14:19:57 +0100 Subject: [PATCH 47/69] CI change --- oss_master_check.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/oss_master_check.sh b/oss_master_check.sh index b3fc613eb..7829c5df0 100755 --- a/oss_master_check.sh +++ b/oss_master_check.sh @@ -2,6 +2,7 @@ cd packages/browser-tests/questdb || exit 2 BRANCH=`git rev-parse --abbrev-ref HEAD` +echo Branch name: $BRANCH if [[ $BRANCH = "master" ]] then From d13b1cdfe9fef2e77455c93541c4909121d1d4e3 Mon Sep 17 00:00:00 2001 From: glasstiger Date: Thu, 27 Jun 2024 14:22:17 +0100 Subject: [PATCH 48/69] CI change --- oss_master_check.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/oss_master_check.sh b/oss_master_check.sh index 7829c5df0..4671db5dd 100755 --- a/oss_master_check.sh +++ b/oss_master_check.sh @@ -1,7 +1,8 @@ #!/bin/bash cd packages/browser-tests/questdb || exit 2 -BRANCH=`git rev-parse --abbrev-ref HEAD` +#BRANCH=`git rev-parse --abbrev-ref HEAD` +BRANCH=`git branch` echo Branch name: $BRANCH if [[ $BRANCH = "master" ]] From d5a0f621445d221368463a345e1a231432933526 Mon Sep 17 00:00:00 2001 From: glasstiger Date: Thu, 27 Jun 2024 14:47:33 +0100 Subject: [PATCH 49/69] CI change --- .github/workflows/check_oss_submodule.yml | 8 +- submodule_is_mergeable.py | 109 ++++++++++++++++++++++ 2 files changed, 116 insertions(+), 1 deletion(-) create mode 100755 submodule_is_mergeable.py diff --git a/.github/workflows/check_oss_submodule.yml b/.github/workflows/check_oss_submodule.yml index a5e346263..392722822 100644 --- a/.github/workflows/check_oss_submodule.yml +++ b/.github/workflows/check_oss_submodule.yml @@ -31,5 +31,11 @@ jobs: # if: ${{ steps.branch-prefix.output.prefix != 'master' }} # run: exit 1 +# - name: Check OSS branch +# run: ./oss_master_check.sh + - name: Check OSS branch - run: ./oss_master_check.sh + run: | + python3 -m pip install -U pip + python3 -m pip install --upgrade pygit2==1.14.1 + python3 submodule_is_mergeable.py diff --git a/submodule_is_mergeable.py b/submodule_is_mergeable.py new file mode 100755 index 000000000..c32c95e0e --- /dev/null +++ b/submodule_is_mergeable.py @@ -0,0 +1,109 @@ +#!/usr/bin/env python3 + +""" +Ensure that the PR's `questdb` submodule is mergeable. + +================================================ +This script does not modify the repo in any way. +================================================ + +This is achieved if the commit that the submodule points to respects that it: +* Is a commit that is in the `questdb` master branch's history. +* Is no more than ACCEPTABLE_LAG commits behind. +* Is same or newer as the current commit pointed to currently. + +Before running, you may first need to install dependencies: + + $ python3 -m pip install -U pip + $ python3 -m pip install -U pygit2 + +To run, from the root of the repo, call: + + git fetch + (cd questdb && git fetch) + python3 ci/submodule_is_mergeable.py + +On error, will return non-zero exit code and fail the CI run. +""" + +import sys +sys.dont_write_bytecode = True +import pygit2 + + +# Number of commits that the submodule can be behind the OSS master branch +# If it's older than this, it really ought to be updated. +ACCEPTABLE_LAG = 5 + + +def get_last_master_commits(questdb_repo: pygit2.Repository) -> [pygit2.Oid]: + commit_ids = [] + oss_master_ref = questdb_repo.references['refs/remotes/origin/master'] + origin_master_head: pygit2.Oid = oss_master_ref.peel().id + for index, commit in enumerate(questdb_repo.walk(origin_master_head)): + # print(f'{commit.id}\t{commit.message}') + commit_ids.append(commit.id) + if index > ACCEPTABLE_LAG: + break + return commit_ids + + +def check_commit_is_from_recent_master(oss_master_commits: [pygit2.Oid], oss_head: pygit2.Oid): + if oss_head not in oss_master_commits: + sys.stderr.write('The `questdb` submodule is not mergeable.\n') + sys.stderr.write( + f'The submodule\'s commit ({oss_head}) is not one of the ' + + f'last {ACCEPTABLE_LAG} commits in the `questdb` master branch.\n') + for commit in oss_master_commits: + sys.stderr.write(f' * {commit}\n') + sys.exit(1) + + +def check_not_older( + ent_repo: pygit2.Repository, + oss_master_commits: [pygit2.Oid], + oss_head: pygit2.Oid): + ent_main_head = ent_repo.references['refs/remotes/origin/main'].peel().id + ent_main_tree = ent_repo[ent_main_head].tree + questdb_main_commit_id = ent_main_tree['questdb'].id + + if questdb_main_commit_id not in oss_master_commits: + sys.stderr.write( + 'The submodule pointed to by `main` is not in the ' + + f'last {ACCEPTABLE_LAG} commits from the `questdb` master branch.\n') + return + + old_index = oss_master_commits.index(questdb_main_commit_id) + new_index = oss_master_commits.index(oss_head) + if new_index > old_index: + sys.stderr.write('The `questdb` submodule is not mergeable.\n') + sys.stderr.write( + f'This branch\'s `questdb` submodule\'s commit is older than ' + + f'the commit pointed to by the `main` branch.\n') + sys.stderr.write( + f' * This branch points to: {oss_head}\n' + + f' * The `main` branch to: {questdb_main_commit_id}\n') + sys.exit(1) + + +def main(): + # Open up the enterprise and submodule repos. + ent_repo = pygit2.Repository('.git') + questdb_repo: pygit2.Repository = ent_repo.lookup_submodule('questdb').open() + + # The current commit id pointed to by the submodule in this branch. + oss_head: pygit2.Oid = questdb_repo.head.target + + # The last few commits in the `questdb` origin/master branch. + oss_master_commits = get_last_master_commits(questdb_repo) + + # Check that the submodule's commit is from that list. + check_commit_is_from_recent_master(oss_master_commits, oss_head) + + # Check that the submodule's commit is not older than the current commit + # from the `main` branch of the enterprise repo. + check_not_older(ent_repo, oss_master_commits, oss_head) + + +if __name__ == '__main__': + main() From 57f57f664a25dbe216ab83e49e80ddbd8d385d15 Mon Sep 17 00:00:00 2001 From: glasstiger Date: Thu, 27 Jun 2024 14:49:11 +0100 Subject: [PATCH 50/69] CI change --- .gitmodules | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitmodules b/.gitmodules index 33c80c21c..7f2bb490b 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,3 @@ -[submodule "packages/browser-tests/questdb"] +[submodule "questdb"] path = packages/browser-tests/questdb url = https://github.com/questdb/questdb.git From ecd2d80fa29fdadca81a0fe74df4f4e3c89f0eeb Mon Sep 17 00:00:00 2001 From: glasstiger Date: Thu, 27 Jun 2024 14:53:02 +0100 Subject: [PATCH 51/69] CI change --- packages/browser-tests/questdb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/browser-tests/questdb b/packages/browser-tests/questdb index 76cf15df5..03345738a 160000 --- a/packages/browser-tests/questdb +++ b/packages/browser-tests/questdb @@ -1 +1 @@ -Subproject commit 76cf15df555618782ff58c3763a20e21e865ec80 +Subproject commit 03345738a1bbcc0689ea2c56742a03abc4220182 From 288a54de0d2b55335875ef1797e59001487c42a2 Mon Sep 17 00:00:00 2001 From: glasstiger Date: Thu, 27 Jun 2024 15:15:44 +0100 Subject: [PATCH 52/69] CI change --- packages/browser-tests/questdb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/browser-tests/questdb b/packages/browser-tests/questdb index 03345738a..30a7f8861 160000 --- a/packages/browser-tests/questdb +++ b/packages/browser-tests/questdb @@ -1 +1 @@ -Subproject commit 03345738a1bbcc0689ea2c56742a03abc4220182 +Subproject commit 30a7f886118b4158622f6db3dcf75d32b397f516 From b7290192219518881bc388f1bd38465630c71d4d Mon Sep 17 00:00:00 2001 From: glasstiger Date: Thu, 27 Jun 2024 15:17:34 +0100 Subject: [PATCH 53/69] CI change --- packages/browser-tests/questdb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/browser-tests/questdb b/packages/browser-tests/questdb index 30a7f8861..03345738a 160000 --- a/packages/browser-tests/questdb +++ b/packages/browser-tests/questdb @@ -1 +1 @@ -Subproject commit 30a7f886118b4158622f6db3dcf75d32b397f516 +Subproject commit 03345738a1bbcc0689ea2c56742a03abc4220182 From d55195a628f01aa3042cd00389e839265f1248cc Mon Sep 17 00:00:00 2001 From: Maciej Bodek Date: Thu, 27 Jun 2024 16:51:52 +0200 Subject: [PATCH 54/69] Fix: append query at the end in Example Queries --- packages/web-console/src/scenes/Editor/QueryPicker/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/web-console/src/scenes/Editor/QueryPicker/index.tsx b/packages/web-console/src/scenes/Editor/QueryPicker/index.tsx index 182e6d944..7ba409ffc 100644 --- a/packages/web-console/src/scenes/Editor/QueryPicker/index.tsx +++ b/packages/web-console/src/scenes/Editor/QueryPicker/index.tsx @@ -131,7 +131,7 @@ const QueryPicker = ({ hidePicker, queries, ref }: Props) => { const addQuery = useCallback( (query: Query) => { hidePicker() - appendQuery(query.value) + appendQuery(query.value, { appendAt: "end" }) }, [hidePicker], ) From 98cdea91aac9f27dd1b1547bf9c94ba09047aab5 Mon Sep 17 00:00:00 2001 From: glasstiger Date: Thu, 27 Jun 2024 15:53:12 +0100 Subject: [PATCH 55/69] CI change --- submodule_is_mergeable.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/submodule_is_mergeable.py b/submodule_is_mergeable.py index c32c95e0e..f77636424 100755 --- a/submodule_is_mergeable.py +++ b/submodule_is_mergeable.py @@ -102,7 +102,7 @@ def main(): # Check that the submodule's commit is not older than the current commit # from the `main` branch of the enterprise repo. - check_not_older(ent_repo, oss_master_commits, oss_head) + # check_not_older(ent_repo, oss_master_commits, oss_head) if __name__ == '__main__': From 37a9c08fba8f1ad1db310e412852dcd8d6abfce1 Mon Sep 17 00:00:00 2001 From: glasstiger Date: Thu, 27 Jun 2024 16:05:44 +0100 Subject: [PATCH 56/69] CI change --- .github/workflows/check_oss_submodule.yml | 21 --------------------- .github/workflows/ci.yml | 4 ---- oss_master_check.sh | 13 ------------- 3 files changed, 38 deletions(-) delete mode 100755 oss_master_check.sh diff --git a/.github/workflows/check_oss_submodule.yml b/.github/workflows/check_oss_submodule.yml index 392722822..6d51856b0 100644 --- a/.github/workflows/check_oss_submodule.yml +++ b/.github/workflows/check_oss_submodule.yml @@ -13,27 +13,6 @@ jobs: with: submodules: "recursive" -# - name: Get current prefix -# id: branch-prefix -# run: | -# prefix=$(echo `git branch`) -# echo "::set-output name=prefix::$prefix" - -# - name: Stuff -# run: | -# TEST_STUFF=$(cd packages/browser-tests/questdb; git branch) -# if: ${{ ! startsWith($TEST_STUFF, 'refs/tags/') }} - -# - name: Print name of OSS branch -# run: echo ${{ steps.branch-prefix.output.prefix }} - -# - name: Check OSS branch -# if: ${{ steps.branch-prefix.output.prefix != 'master' }} -# run: exit 1 - -# - name: Check OSS branch -# run: ./oss_master_check.sh - - name: Check OSS branch run: | python3 -m pip install -U pip diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 14962cb34..a0f362657 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -54,10 +54,6 @@ jobs: - name: Run browser-tests test run: node packages/web-console/serve-dist.js & yarn workspace browser-tests test - - name: List Log Files - if: success() || failure() - run: ls -la tmp/dbroot/log - - name: Print Log Files if: success() || failure() run: cat tmp/dbroot/log/* diff --git a/oss_master_check.sh b/oss_master_check.sh deleted file mode 100755 index 4671db5dd..000000000 --- a/oss_master_check.sh +++ /dev/null @@ -1,13 +0,0 @@ -#!/bin/bash - -cd packages/browser-tests/questdb || exit 2 -#BRANCH=`git rev-parse --abbrev-ref HEAD` -BRANCH=`git branch` -echo Branch name: $BRANCH - -if [[ $BRANCH = "master" ]] -then - exit 0 -else - exit 1 -fi From 8fa41505654b4511e289364afba061feef95ff2f Mon Sep 17 00:00:00 2001 From: Maciej Bodek Date: Thu, 27 Jun 2024 18:23:28 +0200 Subject: [PATCH 57/69] Update tests to pass with the `appendAt: end` example query fix --- packages/browser-tests/cypress/commands.js | 4 ++ .../integration/console/editor.spec.js | 41 ++++++++++--------- .../createSchemaCompletionProvider.ts | 24 ++++++++--- 3 files changed, 43 insertions(+), 26 deletions(-) diff --git a/packages/browser-tests/cypress/commands.js b/packages/browser-tests/cypress/commands.js index fcd3d6760..16ff3312e 100644 --- a/packages/browser-tests/cypress/commands.js +++ b/packages/browser-tests/cypress/commands.js @@ -77,6 +77,10 @@ Cypress.Commands.add("selectQuery", (n) => .click() ); +Cypress.Commands.add("getMountedEditor", () => + cy.get(".monaco-scrollable-element") +); + Cypress.Commands.add("getEditor", () => cy.get(".monaco-editor[role='code'] ")); Cypress.Commands.add("getEditorContent", () => diff --git a/packages/browser-tests/cypress/integration/console/editor.spec.js b/packages/browser-tests/cypress/integration/console/editor.spec.js index 6baa7cd46..c5faadf07 100644 --- a/packages/browser-tests/cypress/integration/console/editor.spec.js +++ b/packages/browser-tests/cypress/integration/console/editor.spec.js @@ -5,11 +5,11 @@ const baseUrl = "http://localhost:9999"; describe("appendQuery", () => { const consoleConfiguration = { savedQueries: [ - { name: "query 1", value: "first query" }, - { name: "query 1", value: "second query" }, + { name: "query 1", value: "first query;" }, + { name: "query 2", value: "second query;" }, { - name: "query 1", - value: "multi\nline\nquery", + name: "query 3", + value: "multi\nline\nquery;", }, ], }; @@ -29,13 +29,14 @@ describe("appendQuery", () => { cy.getEditor().should("be.visible"); }); - afterEach(() => { + beforeEach(() => { + cy.getMountedEditor(); cy.clearEditor(); }); it("should append and select first query", () => { cy.selectQuery(0); - const expected = `${queries[0]}\n`; + const expected = `\n${queries[0]}`; cy.getEditorContent().should("have.value", expected); cy.getSelectedLines().should("have.length", 1); cy.matchImageSnapshot(); // screenshot diff @@ -43,14 +44,14 @@ describe("appendQuery", () => { it("should append and select second query", () => { cy.selectQuery(1); - const expected = `${queries[1]}\n`; + const expected = `\n${queries[1]}`; cy.getEditorContent().should("have.value", expected); cy.getSelectedLines().should("have.length", 1); }); it("should append and select multiline query", () => { cy.selectQuery(2); - const expected = `${queries[2]}\n`; + const expected = `\n${queries[2]}`; cy.getEditorContent().should("have.value", expected); // monaco editor visually selects all 3 lines, but creates 4 elements to visualise selection cy.getSelectedLines().should("have.length", 4); @@ -58,19 +59,19 @@ describe("appendQuery", () => { it("should correctly append and select query after multiple inserts", () => { cy.selectQuery(1); - cy.selectQuery(2); - cy.typeQuery(`{ctrl}g2{enter}`); // go to line 2 cy.selectQuery(1); - const expected = `${queries[1]}\n\n${queries[1]}\n\n${queries[2]}\n`; + cy.typeQuery(`{ctrl}g2{enter}`); // go to line 2 + cy.selectQuery(2); + const expected = `\n${queries[1]}\n\n${queries[1]}\n\n${queries[2]}`; cy.getEditorContent().should("have.value", expected); - cy.getSelectedLines().should("have.length", 1); + cy.getSelectedLines().should("have.length", 4); }); it("should correctly append and select query when position is first line which is empty", () => { cy.typeQuery(`{enter}--b{upArrow}`); cy.selectQuery(0); cy.selectQuery(1); - const expected = `${queries[0]}\n\n${queries[1]}\n\n--b`; + const expected = `\n--b\n${queries[0]}\n\n${queries[1]}`; cy.getEditorContent().should("have.value", expected); cy.getSelectedLines().should("have.length", 1); }); @@ -78,7 +79,7 @@ describe("appendQuery", () => { it("should correctly append and select query when position is first line which is not empty", () => { cy.typeQuery(`--a`); cy.selectQuery(0); - const expected = `--a\n\n${queries[0]}\n`; + const expected = `--a\n${queries[0]}`; cy.getEditorContent().should("have.value", expected); cy.getSelectedLines().should("have.length", 1); }); @@ -86,7 +87,7 @@ describe("appendQuery", () => { it("should correctly append and select query when position is first line which is not empty and there's more content after", () => { cy.typeQuery(`--a{enter}{enter}--b{upArrow}{upArrow}`); cy.selectQuery(0); - const expected = `--a\n\n${queries[0]}\n\n--b`; + const expected = `--a\n\n--b\n${queries[0]}`; cy.getEditorContent().should("have.value", expected); cy.getSelectedLines().should("have.length", 1); }); @@ -94,7 +95,7 @@ describe("appendQuery", () => { it("should correctly append and add surrounding new lines when position is middle line which is empty", () => { cy.typeQuery(`--a{enter}{enter}--b{upArrow}`); cy.selectQuery(0); - const expected = `--a\n\n${queries[0]}\n\n--b`; + const expected = `--a\n\n--b\n\n${queries[0]}`; cy.getEditorContent().should("have.value", expected); cy.getSelectedLines().should("have.length", 1); }); @@ -102,7 +103,7 @@ describe("appendQuery", () => { it("should correctly append and add surrounding new lines when position is last line which is empty", () => { cy.typeQuery(`--a{enter}--b`); cy.selectQuery(0); - const expected = `--a\n--b\n\n${queries[0]}\n`; + const expected = `--a\n--b\n\n${queries[0]}`; cy.getEditorContent().should("have.value", expected); cy.getSelectedLines().should("have.length", 1); cy.matchImageSnapshot(); @@ -111,7 +112,7 @@ describe("appendQuery", () => { it("should correctly append and add surrounding new lines when there are two lines and position is last line which is empty", () => { cy.typeQuery(`--a{enter}`); cy.selectQuery(0); - const expected = `--a\n\n${queries[0]}\n`; + const expected = `--a\n\n\n${queries[0]}`; cy.getEditorContent().should("have.value", expected); cy.getSelectedLines().should("have.length", 1); }); @@ -120,7 +121,7 @@ describe("appendQuery", () => { cy.typeQuery(`--a{enter}--b{enter}{enter}--c`); cy.typeQuery(`{ctrl}g2{enter}{rightArrow}`); // go to line 2 cy.selectQuery(0); - const expected = `--a\n--b\n\n${queries[0]}\n\n--c`; + const expected = `--a\n--b\n\n--c\n\n${queries[0]}`; cy.getEditorContent().should("have.value", expected); cy.getSelectedLines().should("have.length", 1); }); @@ -153,7 +154,7 @@ describe("&query URL param", () => { cy.getSelectedLines().should("have.length", 4); }); - it.skip("should not append query if it already exists in editor", () => { + it("should not append query if it already exists in editor", () => { cy.visit(baseUrl); const query = "select x\nfrom long_sequence(1);\n\n-- a\n-- b\n-- c"; cy.typeQuery(query).clickRun(); diff --git a/packages/web-console/src/scenes/Editor/Monaco/questdb-sql/createSchemaCompletionProvider.ts b/packages/web-console/src/scenes/Editor/Monaco/questdb-sql/createSchemaCompletionProvider.ts index 675334395..0de5ec4dc 100644 --- a/packages/web-console/src/scenes/Editor/Monaco/questdb-sql/createSchemaCompletionProvider.ts +++ b/packages/web-console/src/scenes/Editor/Monaco/questdb-sql/createSchemaCompletionProvider.ts @@ -23,8 +23,23 @@ export const createSchemaCompletionProvider = ( const queryAtCursor = getQueryFromCursor(editor) + // get text value in the current line + const textInLine = model.getValueInRange({ + startLineNumber: position.lineNumber, + startColumn: 1, + endLineNumber: position.lineNumber, + endColumn: position.column, + }) + let tableContext: string[] = [] + const isWhitespaceOnly = /^\s*$/.test(textInLine) + const isLineComment = /(-- |--|\/\/ |\/\/)$/gim.test(textInLine) + + if (isWhitespaceOnly || isLineComment) { + return null + } + if (queryAtCursor) { const matches = findMatches(model, queryAtCursor.query) if (matches.length > 0) { @@ -79,16 +94,13 @@ export const createSchemaCompletionProvider = ( endLineNumber: position.lineNumber, endColumn: position.column, }) - // check if `textInLine` contains whitespaces only - const isWhitespaceOnly = /^\s*$/.test(textInLine) if ( - (/(FROM|INTO|(ALTER|BACKUP|DROP|REINDEX|RENAME|TRUNCATE|VACUUM) TABLE|JOIN|UPDATE)\s$/gim.test( + /(FROM|INTO|(ALTER|BACKUP|DROP|REINDEX|RENAME|TRUNCATE|VACUUM) TABLE|JOIN|UPDATE)\s$/gim.test( textUntilPosition, ) || - (/'$/gim.test(textUntilPosition) && - !textUntilPosition.endsWith("= '"))) && - !isWhitespaceOnly + (/'$/gim.test(textUntilPosition) && + !textUntilPosition.endsWith("= '")) ) { return { suggestions: getTableCompletions({ From 331e9b094571c8ebf594267d53359b67d1df6a55 Mon Sep 17 00:00:00 2001 From: Maciej Bodek Date: Thu, 27 Jun 2024 19:14:43 +0200 Subject: [PATCH 58/69] Update the scroll test --- .../cypress/integration/console/editor.spec.js | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/packages/browser-tests/cypress/integration/console/editor.spec.js b/packages/browser-tests/cypress/integration/console/editor.spec.js index c5faadf07..69a829b5c 100644 --- a/packages/browser-tests/cypress/integration/console/editor.spec.js +++ b/packages/browser-tests/cypress/integration/console/editor.spec.js @@ -26,7 +26,7 @@ describe("appendQuery", () => { ).as("getConsoleConfiguration"); cy.visit(baseUrl); - cy.getEditor().should("be.visible"); + cy.getEditorContent().should("be.visible"); }); beforeEach(() => { @@ -165,14 +165,11 @@ describe("&query URL param", () => { it("should append query and scroll to it", () => { cy.visit(baseUrl); - cy.typeQuery("--\n".repeat(20)); // take space so that query is not visible later - const query = "select x from long_sequence(1);"; - cy.typeQuery(query).clickRun(); // save by running + cy.typeQuery("select x from long_sequence(1);"); + cy.typeQuery("\n".repeat(20)).clickRun(); // take space so that query is not visible later, save by running const appendedQuery = "-- hello world"; - cy.visit( - `${baseUrl}?query=${encodeURIComponent(appendedQuery)}&executeQuery=true` - ); + cy.visit(`${baseUrl}?query=${encodeURIComponent(appendedQuery)}`); cy.getVisibleLines() .invoke("text") .should("match", /hello.world$/); // not matching on appendedQuery, because query should be selected for which Monaco adds special chars between words @@ -185,7 +182,7 @@ describe("autocomplete", () => { }); beforeEach(() => { - cy.getEditor().should("be.visible"); + cy.getEditorContent().should("be.visible"); cy.clearEditor(); }); From 9545a91fc90ff51167e4981ef4add6583622dc07 Mon Sep 17 00:00:00 2001 From: Maciej Bodek Date: Fri, 28 Jun 2024 13:03:20 +0200 Subject: [PATCH 59/69] Bring back `F9` test suite --- .pnp.cjs | 25 +++++++++++++++++- ...vents-npm-1.13.0-d74f2d882d-085e2e4f45.zip | Bin 0 -> 41085 bytes packages/browser-tests/cypress/commands.js | 10 +++---- .../integration/console/editor.spec.js | 2 +- packages/browser-tests/package.json | 3 +++ yarn.lock | 10 +++++++ 6 files changed, 41 insertions(+), 9 deletions(-) create mode 100644 .yarn/cache/cypress-real-events-npm-1.13.0-d74f2d882d-085e2e4f45.zip diff --git a/.pnp.cjs b/.pnp.cjs index f867b767a..f6683d490 100755 --- a/.pnp.cjs +++ b/.pnp.cjs @@ -13597,7 +13597,8 @@ const RAW_RUNTIME_STATE = "packageDependencies": [\ ["browser-tests", "workspace:packages/browser-tests"],\ ["@simonsmith/cypress-image-snapshot", "virtual:eeb440888f0c831c010bf83e71c16458314f99874c6109e2303fb2248287f56d6750dd5ddd598c74aba008850cb93bae79351d816a9905f40e024f392c8ad6b5#npm:8.1.2"],\ - ["cypress", "npm:10.11.0"]\ + ["cypress", "npm:10.11.0"],\ + ["cypress-real-events", "virtual:eeb440888f0c831c010bf83e71c16458314f99874c6109e2303fb2248287f56d6750dd5ddd598c74aba008850cb93bae79351d816a9905f40e024f392c8ad6b5#npm:1.13.0"]\ ],\ "linkType": "SOFT"\ }]\ @@ -15081,6 +15082,28 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ + ["cypress-real-events", [\ + ["npm:1.13.0", {\ + "packageLocation": "./.yarn/cache/cypress-real-events-npm-1.13.0-d74f2d882d-085e2e4f45.zip/node_modules/cypress-real-events/",\ + "packageDependencies": [\ + ["cypress-real-events", "npm:1.13.0"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:eeb440888f0c831c010bf83e71c16458314f99874c6109e2303fb2248287f56d6750dd5ddd598c74aba008850cb93bae79351d816a9905f40e024f392c8ad6b5#npm:1.13.0", {\ + "packageLocation": "./.yarn/__virtual__/cypress-real-events-virtual-07869643c0/0/cache/cypress-real-events-npm-1.13.0-d74f2d882d-085e2e4f45.zip/node_modules/cypress-real-events/",\ + "packageDependencies": [\ + ["cypress-real-events", "virtual:eeb440888f0c831c010bf83e71c16458314f99874c6109e2303fb2248287f56d6750dd5ddd598c74aba008850cb93bae79351d816a9905f40e024f392c8ad6b5#npm:1.13.0"],\ + ["@types/cypress", null],\ + ["cypress", "npm:10.11.0"]\ + ],\ + "packagePeers": [\ + "@types/cypress",\ + "cypress"\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["dashdash", [\ ["npm:1.14.1", {\ "packageLocation": "./.yarn/cache/dashdash-npm-1.14.1-be8f10a286-137b287fa0.zip/node_modules/dashdash/",\ diff --git a/.yarn/cache/cypress-real-events-npm-1.13.0-d74f2d882d-085e2e4f45.zip b/.yarn/cache/cypress-real-events-npm-1.13.0-d74f2d882d-085e2e4f45.zip new file mode 100644 index 0000000000000000000000000000000000000000..ecf15239a2cc398105e21393baae932f73cfe2c5 GIT binary patch literal 41085 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%0AiGBC>ZI1CJZC`}f$XpJy*Lx1zA)g(TIuMR;0J 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 A>;M1& literal 0 HcmV?d00001 diff --git a/packages/browser-tests/cypress/commands.js b/packages/browser-tests/cypress/commands.js index 16ff3312e..f07bce5b9 100644 --- a/packages/browser-tests/cypress/commands.js +++ b/packages/browser-tests/cypress/commands.js @@ -2,6 +2,8 @@ const { addMatchImageSnapshotCommand, } = require("@simonsmith/cypress-image-snapshot/command"); +require("cypress-real-events"); + addMatchImageSnapshotCommand({ failureThreshold: 0.3, blackout: [".notifications", 'button[class*="BuildVersion"'], @@ -120,13 +122,7 @@ Cypress.Commands.add("matchErrorMarkerPosition", ({ left, width }) => Cypress.Commands.add("F9", () => { cy.intercept("/exec*").as("exec"); - return cy - .getEditor() - .trigger("keydown", { - keyCode: 120, - }) - .wait("@exec") - .wait(501); + return cy.getEditor().realPress("F9").wait("@exec").wait(501); }); Cypress.Commands.add("getSelectedLines", () => cy.get(".selected-text")); diff --git a/packages/browser-tests/cypress/integration/console/editor.spec.js b/packages/browser-tests/cypress/integration/console/editor.spec.js index 69a829b5c..400217ee0 100644 --- a/packages/browser-tests/cypress/integration/console/editor.spec.js +++ b/packages/browser-tests/cypress/integration/console/editor.spec.js @@ -269,7 +269,7 @@ describe("errors", () => { }); }); -describe.skip("running query with F9", () => { +describe("running query with F9", () => { before(() => { cy.visit(baseUrl); }); diff --git a/packages/browser-tests/package.json b/packages/browser-tests/package.json index a36b6fd4b..756a6b8a5 100644 --- a/packages/browser-tests/package.json +++ b/packages/browser-tests/package.json @@ -9,5 +9,8 @@ "devDependencies": { "@simonsmith/cypress-image-snapshot": "^8.0.1", "cypress": "^10.11.0" + }, + "dependencies": { + "cypress-real-events": "^1.13.0" } } diff --git a/yarn.lock b/yarn.lock index 1d695132b..680339df6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7989,6 +7989,7 @@ __metadata: dependencies: "@simonsmith/cypress-image-snapshot": "npm:^8.0.1" cypress: "npm:^10.11.0" + cypress-real-events: "npm:^1.13.0" languageName: unknown linkType: soft @@ -9233,6 +9234,15 @@ __metadata: languageName: node linkType: hard +"cypress-real-events@npm:^1.13.0": + version: 1.13.0 + resolution: "cypress-real-events@npm:1.13.0" + peerDependencies: + cypress: ^4.x || ^5.x || ^6.x || ^7.x || ^8.x || ^9.x || ^10.x || ^11.x || ^12.x || ^13.x + checksum: 10/085e2e4f456fdf4173fd07fc2602ce44d661256628a5b40e89092e9792533f46b808f97106d9f9ea0272279b5c10db4eef3f0606e3705d3638d552d0999425de + languageName: node + linkType: hard + "cypress@npm:^10.11.0": version: 10.11.0 resolution: "cypress@npm:10.11.0" From 2c3fb4bc7eb3c289e5db33880fe64dea241707f8 Mon Sep 17 00:00:00 2001 From: Maciej Bodek Date: Fri, 28 Jun 2024 13:10:32 +0200 Subject: [PATCH 60/69] Update `F9` before code --- .../browser-tests/cypress/integration/console/editor.spec.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/browser-tests/cypress/integration/console/editor.spec.js b/packages/browser-tests/cypress/integration/console/editor.spec.js index 400217ee0..fcf41f194 100644 --- a/packages/browser-tests/cypress/integration/console/editor.spec.js +++ b/packages/browser-tests/cypress/integration/console/editor.spec.js @@ -274,7 +274,8 @@ describe("running query with F9", () => { cy.visit(baseUrl); }); - afterEach(() => { + beforeEach(() => { + cy.getEditorContent().should("be.visible"); cy.clearEditor(); }); From 5e8121de08bfa706e383071689fdf32be87dd928 Mon Sep 17 00:00:00 2001 From: Maciej Bodek Date: Fri, 28 Jun 2024 13:44:32 +0200 Subject: [PATCH 61/69] Update `cy.typeQuery()` --- packages/browser-tests/cypress/commands.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/browser-tests/cypress/commands.js b/packages/browser-tests/cypress/commands.js index f07bce5b9..82deb9d41 100644 --- a/packages/browser-tests/cypress/commands.js +++ b/packages/browser-tests/cypress/commands.js @@ -52,7 +52,7 @@ Cypress.Commands.add("getGridCol", (n) => Cypress.Commands.add("getGridRows", () => cy.get(".qg-r").filter(":visible")); Cypress.Commands.add("typeQuery", (query) => - cy.getEditor().click({ force: true }).type(query) + cy.getEditor().realClick().type(query) ); Cypress.Commands.add("runLine", () => { From 69149f3496da6f51d0cd2ea0c6a624ab69c779a9 Mon Sep 17 00:00:00 2001 From: Maciej Bodek Date: Fri, 28 Jun 2024 16:37:33 +0200 Subject: [PATCH 62/69] Streamline test config for queryParams sheet --- .../integration/console/editor.spec.js | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/packages/browser-tests/cypress/integration/console/editor.spec.js b/packages/browser-tests/cypress/integration/console/editor.spec.js index fcf41f194..fb467a652 100644 --- a/packages/browser-tests/cypress/integration/console/editor.spec.js +++ b/packages/browser-tests/cypress/integration/console/editor.spec.js @@ -30,7 +30,7 @@ describe("appendQuery", () => { }); beforeEach(() => { - cy.getMountedEditor(); + cy.getEditorContent().should("be.visible"); cy.clearEditor(); }); @@ -127,22 +127,23 @@ describe("appendQuery", () => { }); }); -describe("&query URL param", () => { - afterEach(() => { +describe.only("&query URL param", () => { + beforeEach(() => { + cy.visit(baseUrl); + cy.getEditorContent().should("be.visible"); cy.clearEditor(); }); it("should append and select single line query", () => { - cy.visit(baseUrl); cy.typeQuery("select x from long_sequence(1)"); // running query caches it, it's available after refresh const query = encodeURIComponent("select x+1 from long_sequence(1)"); cy.visit(`${baseUrl}/?query=${query}&executeQuery=true`); + cy.getEditorContent().should("be.visible"); cy.getGridRow(0).should("contain", "2"); cy.getSelectedLines().should("have.length", 1); }); it("should append and select multiline query", () => { - cy.visit(baseUrl); cy.typeQuery( `select x\nfrom long_sequence(1);\n\n-- a\n-- b\n-- c\n${"{upArrow}".repeat( 5 @@ -150,26 +151,26 @@ describe("&query URL param", () => { ); const query = encodeURIComponent("select x+1\nfrom\nlong_sequence(1);"); cy.visit(`${baseUrl}?query=${query}&executeQuery=true`); + cy.getEditorContent().should("be.visible"); cy.getGridRow(0).should("contain", "2"); cy.getSelectedLines().should("have.length", 4); }); it("should not append query if it already exists in editor", () => { - cy.visit(baseUrl); const query = "select x\nfrom long_sequence(1);\n\n-- a\n-- b\n-- c"; cy.typeQuery(query).clickRun(); cy.visit(`${baseUrl}?query=${encodeURIComponent(query)}&executeQuery=true`); + cy.getEditorContent().should("be.visible"); cy.getEditorContent().should("have.value", query); }); it("should append query and scroll to it", () => { - cy.visit(baseUrl); - cy.typeQuery("select x from long_sequence(1);"); cy.typeQuery("\n".repeat(20)).clickRun(); // take space so that query is not visible later, save by running const appendedQuery = "-- hello world"; cy.visit(`${baseUrl}?query=${encodeURIComponent(appendedQuery)}`); + cy.getEditorContent().should("be.visible"); cy.getVisibleLines() .invoke("text") .should("match", /hello.world$/); // not matching on appendedQuery, because query should be selected for which Monaco adds special chars between words @@ -249,7 +250,8 @@ describe("errors", () => { cy.visit(baseUrl); }); - afterEach(() => { + beforeEach(() => { + cy.getEditorContent().should("be.visible"); cy.clearEditor(); }); From 5a756814e3f33fd3da7201da7d6e43455d02fa6c Mon Sep 17 00:00:00 2001 From: Maciej Bodek Date: Fri, 28 Jun 2024 16:39:22 +0200 Subject: [PATCH 63/69] fix: cleanup after testing --- .../browser-tests/cypress/integration/console/editor.spec.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/browser-tests/cypress/integration/console/editor.spec.js b/packages/browser-tests/cypress/integration/console/editor.spec.js index fb467a652..ef935f529 100644 --- a/packages/browser-tests/cypress/integration/console/editor.spec.js +++ b/packages/browser-tests/cypress/integration/console/editor.spec.js @@ -127,7 +127,7 @@ describe("appendQuery", () => { }); }); -describe.only("&query URL param", () => { +describe("&query URL param", () => { beforeEach(() => { cy.visit(baseUrl); cy.getEditorContent().should("be.visible"); From 74a6c0a740bff40b568066df5395991729267be7 Mon Sep 17 00:00:00 2001 From: Maciej Bodek Date: Fri, 28 Jun 2024 17:00:02 +0200 Subject: [PATCH 64/69] Updata autocomplete tests --- .../cypress/integration/console/editor.spec.js | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/packages/browser-tests/cypress/integration/console/editor.spec.js b/packages/browser-tests/cypress/integration/console/editor.spec.js index ef935f529..ef1a1c491 100644 --- a/packages/browser-tests/cypress/integration/console/editor.spec.js +++ b/packages/browser-tests/cypress/integration/console/editor.spec.js @@ -180,6 +180,10 @@ describe("&query URL param", () => { describe("autocomplete", () => { before(() => { cy.visit(baseUrl); + cy.getEditorContent().should("be.visible"); + ["my_secrets", "my_secrets2", "my_publics"].forEach((table) => { + cy.typeQuery(`drop table if exists "${table}"`).runLine().clearEditor(); + }); }); beforeEach(() => { @@ -213,12 +217,16 @@ describe("autocomplete", () => { .clearEditor(); cy.visit(baseUrl); - cy.typeQuery("\nselect "); + cy.typeQuery("select * from "); cy.getAutocomplete() // Tables .should("not.contain", "telemetry") .should("contain", "my_secrets") .should("contain", "my_publics") + .clearEditor(); + + cy.typeQuery("select * "); + cy.getAutocomplete() // Columns .should("contain", "secret") .should("contain", "public") @@ -238,10 +246,6 @@ describe("autocomplete", () => { .should("contain", "my_publics.public") .should("contain", "my_secrets.secret") .clearEditor(); - - cy.typeQuery('drop table "my_secrets"').runLine().clearEditor(); - cy.typeQuery('drop table "my_secrets2"').runLine().clearEditor(); - cy.typeQuery('drop table "my_publics"').runLine().clearEditor(); }); }); From 17cffa98480377bdb369eccf67c8f428155f48c0 Mon Sep 17 00:00:00 2001 From: Maciej Bodek Date: Fri, 28 Jun 2024 17:10:11 +0200 Subject: [PATCH 65/69] Change autocomplete spec --- .../integration/console/editor.spec.js | 27 ++++++++----------- 1 file changed, 11 insertions(+), 16 deletions(-) diff --git a/packages/browser-tests/cypress/integration/console/editor.spec.js b/packages/browser-tests/cypress/integration/console/editor.spec.js index ef1a1c491..fb1d6aac5 100644 --- a/packages/browser-tests/cypress/integration/console/editor.spec.js +++ b/packages/browser-tests/cypress/integration/console/editor.spec.js @@ -177,13 +177,23 @@ describe("&query URL param", () => { }); }); -describe("autocomplete", () => { +describe.only("autocomplete", () => { before(() => { cy.visit(baseUrl); cy.getEditorContent().should("be.visible"); ["my_secrets", "my_secrets2", "my_publics"].forEach((table) => { cy.typeQuery(`drop table if exists "${table}"`).runLine().clearEditor(); }); + [ + 'create table "my_publics" ("public" string);', + // We're creating another table with the same column name. + // The autocomplete should merge the column completions into one + // and respond with something like `secret (my_secrets, my_secrets2)` + 'create table "my_secrets" ("secret" string);', + 'create table "my_secrets2" ("secret" string);', + ].forEach((query) => { + cy.typeQuery(query).runLine().clearEditor(); + }); }); beforeEach(() => { @@ -201,21 +211,6 @@ describe("autocomplete", () => { }); it("should work when tables list is not empty", () => { - cy.typeQuery('create table "my_secrets" ("secret" string);') - .clickRun() - .clearEditor(); - - // We're creating another table with the same column name. - // The autocomplete should merge the column completions into one - // and respond with something like `secret (my_secrets, my_secrets2)` - cy.typeQuery('create table "my_secrets2" ("secret" string);') - .clickRun() - .clearEditor(); - - cy.typeQuery('create table "my_publics" ("public" string);') - .clickRun() - .clearEditor(); - cy.visit(baseUrl); cy.typeQuery("select * from "); cy.getAutocomplete() From e43310f9c99765957b6b57010877c1c80bb21a24 Mon Sep 17 00:00:00 2001 From: Maciej Bodek Date: Fri, 28 Jun 2024 17:10:58 +0200 Subject: [PATCH 66/69] remove skipping --- .../browser-tests/cypress/integration/console/editor.spec.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/browser-tests/cypress/integration/console/editor.spec.js b/packages/browser-tests/cypress/integration/console/editor.spec.js index fb1d6aac5..9400714b4 100644 --- a/packages/browser-tests/cypress/integration/console/editor.spec.js +++ b/packages/browser-tests/cypress/integration/console/editor.spec.js @@ -177,7 +177,7 @@ describe("&query URL param", () => { }); }); -describe.only("autocomplete", () => { +describe("autocomplete", () => { before(() => { cy.visit(baseUrl); cy.getEditorContent().should("be.visible"); From a64a1bc2240b2527cb882bfb51d36f5840718cb7 Mon Sep 17 00:00:00 2001 From: glasstiger Date: Mon, 1 Jul 2024 09:34:13 +0100 Subject: [PATCH 67/69] script to run cypress test locally --- run_browser_tests.sh | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100755 run_browser_tests.sh diff --git a/run_browser_tests.sh b/run_browser_tests.sh new file mode 100755 index 000000000..8c51ce570 --- /dev/null +++ b/run_browser_tests.sh @@ -0,0 +1,35 @@ +#!/bin/bash -x + +# Run it from the 'ui' directory as: +# ./run_browser_tests.sh + +# You can also run it without building the QuestDB project (if it is already built): +# ./run_browser_tests.sh -skipQuestDBBuild + +rm -rf packages/browser-tests/cypress/snapshots/* +rm -rf tmp/questdb-* +rm -rf tmp/dbroot + +if [[ $1 = "-skipQuestDBBuild" ]] +then + echo "Skipping QuestDB build" +else + mvn clean package -f packages/browser-tests/questdb/pom.xml -DskipTests -P build-binaries +fi + +tar xzf packages/browser-tests/questdb/core/target/questdb-*-rt-*.tar.gz -C tmp/ +mkdir tmp/dbroot + +yarn install --immutable --immutable-cache +yarn workspace @questdb/react-components run build +yarn workspace @questdb/web-console run build + +./tmp/questdb-*/bin/questdb.sh start -d ./tmp/dbroot +node packages/web-console/serve-dist.js & +PID="$!" +echo "Proxy started, PID=$PID" + +yarn workspace browser-tests test + +kill -SIGTERM $PID +./tmp/questdb-*/bin/questdb.sh stop From 965aeb72e3c7ed90fe3c57c8a8af0b50f02c9493 Mon Sep 17 00:00:00 2001 From: Maciej Bodek Date: Mon, 1 Jul 2024 13:53:03 +0200 Subject: [PATCH 68/69] change external intercepts --- packages/browser-tests/cypress/commands.js | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/packages/browser-tests/cypress/commands.js b/packages/browser-tests/cypress/commands.js index 82deb9d41..b5091713a 100644 --- a/packages/browser-tests/cypress/commands.js +++ b/packages/browser-tests/cypress/commands.js @@ -26,13 +26,23 @@ beforeEach(() => { cy.intercept( { method: "GET", - url: "/**", - hostname: "api.github.com", + url: "/github/latest", + hostname: "github-api.questdb.io", }, (req) => { req.reply("{}"); } ); + cy.intercept( + { + method: "GET", + url: "/news", + hostname: "cloud.questdb.com", + }, + (req) => { + req.reply("[]"); + } + ); }); Cypress.Commands.add("getGrid", () => From f3847cdc914f323e141e00befcbd9d3adaf38e69 Mon Sep 17 00:00:00 2001 From: Maciej Bodek Date: Mon, 1 Jul 2024 14:27:36 +0200 Subject: [PATCH 69/69] Split the autocomplete tests --- .../cypress/integration/console/editor.spec.js | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/packages/browser-tests/cypress/integration/console/editor.spec.js b/packages/browser-tests/cypress/integration/console/editor.spec.js index 9400714b4..d303e2e7c 100644 --- a/packages/browser-tests/cypress/integration/console/editor.spec.js +++ b/packages/browser-tests/cypress/integration/console/editor.spec.js @@ -179,7 +179,6 @@ describe("&query URL param", () => { describe("autocomplete", () => { before(() => { - cy.visit(baseUrl); cy.getEditorContent().should("be.visible"); ["my_secrets", "my_secrets2", "my_publics"].forEach((table) => { cy.typeQuery(`drop table if exists "${table}"`).runLine().clearEditor(); @@ -197,11 +196,12 @@ describe("autocomplete", () => { }); beforeEach(() => { + cy.visit(baseUrl); cy.getEditorContent().should("be.visible"); cy.clearEditor(); }); - it("should work when tables list is empty", () => { + it("should work when provided table name doesn't exist", () => { cy.typeQuery("select * from teletubies") .getAutocomplete() .should("not.be.visible") @@ -210,17 +210,18 @@ describe("autocomplete", () => { cy.matchImageSnapshot(); }); - it("should work when tables list is not empty", () => { - cy.visit(baseUrl); + it("should suggest the existing tables on 'from' clause", () => { cy.typeQuery("select * from "); cy.getAutocomplete() - // Tables + // tables .should("not.contain", "telemetry") .should("contain", "my_secrets") .should("contain", "my_publics") .clearEditor(); + }); - cy.typeQuery("select * "); + it("should suggest columns and tables on 'select' clause", () => { + cy.typeQuery("select "); cy.getAutocomplete() // Columns .should("contain", "secret") @@ -229,13 +230,17 @@ describe("autocomplete", () => { // list the tables containing `secret` column .should("contain", "my_secrets, my_secrets2") .clearEditor(); + }); + it("should suggest correct columns on 'where' filter", () => { cy.typeQuery("select * from my_secrets where "); cy.getAutocomplete() .should("contain", "secret") .should("not.contain", "public") .clearEditor(); + }); + it("should suggest correct columns on 'on' clause", () => { cy.typeQuery("select * from my_secrets join my_publics on "); cy.getAutocomplete() .should("contain", "my_publics.public")