I got a Postgres db in docker, API service in docker, local xk6-sql and linux xk6-sql build in azure pipelines Locally (xk6 on windows laptop and docker desktop) all requests and db queries work fine in any order, but when i run the same test on linux agent in azure, xk6-sql can’t read or write the rows which were read ot written by the service in db (the SELECT
query returns empty object) and vice versa - API responses return empty body/value reading from xk6 edited table rows
Tried sleeps after every operation, tried SELECT pg_terminate_backend(pg_stat_activity.pid) FROM pg_stat_activity WHERE pid <> pg_backend_pid()
to reset all locks but it doesn’t work …Where else should i dig?
here’s the yaml deployment in linux
- bash: |
cd $(dirname "${{ parameters.testFilePath}}")
sudo gpg -k
sudo gpg --no-default-keyring --keyring /usr/share/keyrings/k6-archive-keyring.gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys C5AD17C747E3415A3642D57D77C6C491D6AC1D69
echo "deb [signed-by=/usr/share/keyrings/k6-archive-keyring.gpg] https://dl.k6.io/deb stable main" | sudo tee /etc/apt/sources.list.d/k6.list
sudo apt-get update
sudo apt-get install k6
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
go install go.k6.io/xk6/cmd/xk6@latest
xk6 build --with github.com/szkiba/xk6-dashboard@latest
go install github.com/grafana/xk6-dashboard/cmd/k6-web-dashboard@latest
xk6 build --with github.com/grafana/xk6-sql --with github.com/grafana/xk6-sql-driver-postgres
displayName: Install xk6
- bash: |
cd $(dirname "${{ parameters.testFilePath }}")
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin:/usr/bin/go
K6_WEB_DASHBOARD=true K6_WEB_DASHBOARD_PERIOD=1s K6_WEB_DASHBOARD_EXPORT=$(System.DefaultWorkingDirectory)/k6-test-results/html-report.html ./k6 run --out json=$(System.DefaultWorkingDirectory)/k6-test-results/test-result.json ${{ parameters.testFilePath }}
displayName: Run Tests in K6`
--------------------------------------test-----------------------------------------
//Service inserting values in db.a
//xk6 INSERT query in db.b
let tenant = db.query("SELECT * FROM db.a WHERE tenant_id = $1;", "35acae14-f7cb-468a-9866-1fc45713149a");
let aggr = db.query("SELECT * FROM db.b WHERE tenant_id = $1;", "07f48e4f-5b73-4a83-93b7-5f2231f817b6");
try {
console.log('tenant by ads-service', Object.toString(tenant))
console.log('tenant by ads-service', String.fromCharCode(...tenant[0].tenant_id))
} catch (error) {}
try {
console.log('tenant by xk6-postgres', Object.toString(tenant))
console.log('tenant by xk6-postgres',String.fromCharCode(...tenant[0].tenant_id))
} catch (error) {}
//Local output
INFO[0025] tenant by ads-service function Object() { [native code] } source=console
INFO[0025] tenant by ads-service 35acae14-f7cb-468a-9866-1fc45713149a source=console
INFO[0025] tenant by xk6-postgres function Object() { [native code] } source=console
INFO[0025] tenant by xk6-postgres 07f48e4f-5b73-4a83-93b7-5f2231f817b6 source=console
//CI output
level=info msg="tenant by ads-service function Object() { [native code] }" source=console
//^it returns empty object like []
level=info msg="tenant by xk6-postgres function Object() { [native code] }" source=console
level=info msg="tenant by xk6-postgres 2238d116-b461-4430-919c-cb15320b9152" source=console