-
-
Notifications
You must be signed in to change notification settings - Fork 332
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
CI: Run gen-server tests with Postgres #1336
Changes from 7 commits
bde7c37
7575c20
a608fc5
046dd49
dfac3ae
95995fd
8729626
8662fdf
144f3a1
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||
---|---|---|---|---|---|---|
|
@@ -23,6 +23,8 @@ jobs: | |||||
- ':lint:python:client:common:smoke:stubs:' | ||||||
- ':server-1-of-2:' | ||||||
- ':server-2-of-2:' | ||||||
- ':gen-server-1-of-2:' | ||||||
- ':gen-server-2-of-2:' | ||||||
- ':nbrowser-^[A-D]:' | ||||||
- ':nbrowser-^[E-L]:' | ||||||
- ':nbrowser-^[M-N]:' | ||||||
|
@@ -63,7 +65,7 @@ jobs: | |||||
run: yarn run lint:ci | ||||||
|
||||||
- name: Make sure bucket is versioned | ||||||
if: contains(matrix.tests, ':server-') | ||||||
if: contains(matrix.tests, ':server-') || contains(matrix.tests, ':gen-server-') | ||||||
env: | ||||||
AWS_ACCESS_KEY_ID: administrator | ||||||
AWS_SECRET_ACCESS_KEY: administrator | ||||||
|
@@ -96,12 +98,31 @@ jobs: | |||||
if: contains(matrix.tests, ':stubs:') | ||||||
run: MOCHA_WEBDRIVER_HEADLESS=1 yarn run test:stubs | ||||||
|
||||||
- name: Run gen-server tests with minio and redis | ||||||
if: contains(matrix.tests, ':gen-server-') | ||||||
run: | | ||||||
PGPASSWORD=db_password psql -h localhost -U db_user -w db_name -c "SHOW ALL;" | grep ' jit ' | ||||||
export TEST_SPLITS=$(echo $TESTS | sed "s/.*:gen-server-\([^:]*\).*/\1/") | ||||||
yarn run test:gen-server | ||||||
TYPEORM_TYPE=postgres TYPEORM_HOST=localhost TYPEORM_DATABASE=db_name TYPEORM_USERNAME=db_user TYPEORM_PASSWORD=db_password yarn run test:gen-server | ||||||
env: | ||||||
MOCHA_WEBDRIVER_HEADLESS: 1 | ||||||
TESTS: ${{ matrix.tests }} | ||||||
GRIST_DOCS_MINIO_ACCESS_KEY: administrator | ||||||
GRIST_DOCS_MINIO_SECRET_KEY: administrator | ||||||
TEST_REDIS_URL: "redis://localhost/11" | ||||||
GRIST_DOCS_MINIO_USE_SSL: 0 | ||||||
GRIST_DOCS_MINIO_ENDPOINT: localhost | ||||||
GRIST_DOCS_MINIO_PORT: 9000 | ||||||
GRIST_DOCS_MINIO_BUCKET: grist-docs-test | ||||||
|
||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. What do you think about splitting this up into two steps (e.g. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I also think it logically makes more sense to split them, but I put them together to avoid excessive duplication in the There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Would yaml's anchor / alias solve your issue? This resource help understanding the concept: https://www.educative.io/blog/advanced-yaml-syntax-cheatsheet - name: Run gen-server tests with minio and redis with sqlite
if: contains(matrix.tests, ':gen-server-')
run: |
export TEST_SPLITS=$(echo $TESTS | sed "s/.*:gen-server-\([^:]*\).*/\1/")
yarn run test:gen-server
env: &gen-server-env-vars
MOCHA_WEBDRIVER_HEADLESS: 1
TESTS: ${{ matrix.tests }}
GRIST_DOCS_MINIO_ACCESS_KEY: administrator
GRIST_DOCS_MINIO_SECRET_KEY: administrator
TEST_REDIS_URL: "redis://localhost/11"
GRIST_DOCS_MINIO_USE_SSL: 0
GRIST_DOCS_MINIO_ENDPOINT: localhost
GRIST_DOCS_MINIO_PORT: 9000
GRIST_DOCS_MINIO_BUCKET: grist-docs-test
- name: Run gen-server tests with minio and redis with postgresql
if: contains(matrix.tests, ':gen-server-')
run: |
PGPASSWORD=db_password psql -h localhost -U db_user -w db_name -c "SHOW ALL;" | grep ' jit '
export TEST_SPLITS=$(echo $TESTS | sed "s/.*:gen-server-\([^:]*\).*/\1/")
yarn run test:gen-server
env:
<<: *gen-server-env-vars
TYPEORM_TYPE: postgres
TYPEORM_HOST: localhost
TYPEORM_DATABASE: db_name
TYPEORM_USERNAME: db_user
TYPEORM_PASSWORD: db_password
# Also change the TEST_REDIS_URL value? And you might want to factorize a bit more… or not… Sometimes we have to choose a tradeoff between readability and factorization. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @fflorent Sadly anchors are not supported by GH actions: actions/runner#1182 |
||||||
- name: Run server tests with minio and redis | ||||||
if: contains(matrix.tests, ':server-') | ||||||
run: | | ||||||
export TEST_SPLITS=$(echo $TESTS | sed "s/.*:server-\([^:]*\).*/\1/") | ||||||
MOCHA_WEBDRIVER_HEADLESS=1 yarn run test:server | ||||||
yarn run test:server | ||||||
env: | ||||||
MOCHA_WEBDRIVER_HEADLESS: 1 | ||||||
TESTS: ${{ matrix.tests }} | ||||||
GRIST_DOCS_MINIO_ACCESS_KEY: administrator | ||||||
GRIST_DOCS_MINIO_SECRET_KEY: administrator | ||||||
|
@@ -167,6 +188,24 @@ jobs: | |||||
--health-timeout 5s | ||||||
--health-retries 5 | ||||||
|
||||||
postgresql: | ||||||
image: postgres:latest | ||||||
env: | ||||||
POSTGRES_USER: db_user | ||||||
POSTGRES_PASSWORD: db_password | ||||||
POSTGRES_DB: db_name | ||||||
# JIT is enabled by default since Postgres 17 and has a huge negative impact on performance, | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. It affects not only test performance. See https://support.getgrist.com/self-managed/#what-is-a-home-database |
||||||
# making many tests timeout. | ||||||
# https://support.getgrist.com/self-managed/#what-is-a-home-database | ||||||
POSTGRES_INITDB_ARGS: "-c jit=off" | ||||||
ports: | ||||||
- 5432:5432 | ||||||
options: >- | ||||||
--health-cmd "pg_isready -U db_user" | ||||||
--health-interval 10s | ||||||
--health-timeout 5s | ||||||
--health-retries 5 | ||||||
|
||||||
candidate: | ||||||
needs: build_and_test | ||||||
if: ${{ success() && github.event_name == 'push' }} | ||||||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What is this? Looks like a print for a test, I just want to be sure of that :)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
An extra bit of info to confirm JIT is turned off successfully. For me it was useful for debugging CI problems, and I just kept it.