diff --git a/test_runner/pg_clients/README.md b/test_runner/pg_clients/README.md new file mode 100644 index 0000000000..dc316a17ef --- /dev/null +++ b/test_runner/pg_clients/README.md @@ -0,0 +1,10 @@ +# pg_clients + +To run a single test locally: + +```bash +export BENCHMARK_CONNSTR=postgres://user:pass@ep-abc-xyz-123.us-east-2.aws.neon.build/neondb + +# will filter only tests with "serverless" in the name +./scripts/pytest -m remote_cluster -k serverless +``` diff --git a/test_runner/pg_clients/test_pg_clients.py b/test_runner/pg_clients/test_pg_clients.py index f44fdd1724..18e3f379da 100644 --- a/test_runner/pg_clients/test_pg_clients.py +++ b/test_runner/pg_clients/test_pg_clients.py @@ -22,6 +22,7 @@ from fixtures.utils import subprocess_capture ), "swift/PostgresNIOExample", "typescript/postgresql-client", + "typescript/serverless-driver", ], ) def test_pg_clients(test_output_dir: Path, remote_pg: RemotePostgres, client: str): diff --git a/test_runner/pg_clients/typescript/serverless-driver/.dockerignore b/test_runner/pg_clients/typescript/serverless-driver/.dockerignore new file mode 100644 index 0000000000..c2658d7d1b --- /dev/null +++ b/test_runner/pg_clients/typescript/serverless-driver/.dockerignore @@ -0,0 +1 @@ +node_modules/ diff --git a/test_runner/pg_clients/typescript/serverless-driver/.gitignore b/test_runner/pg_clients/typescript/serverless-driver/.gitignore new file mode 100644 index 0000000000..c2658d7d1b --- /dev/null +++ b/test_runner/pg_clients/typescript/serverless-driver/.gitignore @@ -0,0 +1 @@ +node_modules/ diff --git a/test_runner/pg_clients/typescript/serverless-driver/Dockerfile b/test_runner/pg_clients/typescript/serverless-driver/Dockerfile new file mode 100644 index 0000000000..a5ad832a5c --- /dev/null +++ b/test_runner/pg_clients/typescript/serverless-driver/Dockerfile @@ -0,0 +1,7 @@ +FROM node:18 +WORKDIR /source + +COPY . . +RUN npm clean-install + +CMD ["/source/index.js"] diff --git a/test_runner/pg_clients/typescript/serverless-driver/index.js b/test_runner/pg_clients/typescript/serverless-driver/index.js new file mode 100755 index 0000000000..91db4037e1 --- /dev/null +++ b/test_runner/pg_clients/typescript/serverless-driver/index.js @@ -0,0 +1,20 @@ +#! /usr/bin/env node + +import { Client } from '@neondatabase/serverless' + +(async () => { + const client = new Client({ + host: process.env.NEON_HOST, + database: process.env.NEON_DATABASE, + user: process.env.NEON_USER, + password: process.env.NEON_PASSWORD, + }); + client.connect(); + const result = await client.query({ + text: 'select 1', + rowMode: 'array', + }); + const rows = result.rows; + await client.end(); + console.log(rows[0][0]); +})() diff --git a/test_runner/pg_clients/typescript/serverless-driver/package-lock.json b/test_runner/pg_clients/typescript/serverless-driver/package-lock.json new file mode 100644 index 0000000000..c4d03bffcb --- /dev/null +++ b/test_runner/pg_clients/typescript/serverless-driver/package-lock.json @@ -0,0 +1,51 @@ +{ + "name": "serverless-driver", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "dependencies": { + "@neondatabase/serverless": "^0.2.8", + "ws": "^8.13.0" + } + }, + "node_modules/@neondatabase/serverless": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/@neondatabase/serverless/-/serverless-0.2.8.tgz", + "integrity": "sha512-+yWjIOJsFnrtt2xvtLVEzWM2lfvemawk/DBg4mD2cZOF/IC6Jn4wEctZyk60TscZMSxfozNkPoxmZvBmNuQ0vA==" + }, + "node_modules/ws": { + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", + "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + } + }, + "dependencies": { + "@neondatabase/serverless": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/@neondatabase/serverless/-/serverless-0.2.8.tgz", + "integrity": "sha512-+yWjIOJsFnrtt2xvtLVEzWM2lfvemawk/DBg4mD2cZOF/IC6Jn4wEctZyk60TscZMSxfozNkPoxmZvBmNuQ0vA==" + }, + "ws": { + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", + "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", + "requires": {} + } + } +} diff --git a/test_runner/pg_clients/typescript/serverless-driver/package.json b/test_runner/pg_clients/typescript/serverless-driver/package.json new file mode 100644 index 0000000000..2b01a22d3e --- /dev/null +++ b/test_runner/pg_clients/typescript/serverless-driver/package.json @@ -0,0 +1,7 @@ +{ + "type": "module", + "dependencies": { + "@neondatabase/serverless": "^0.2.8", + "ws": "^8.13.0" + } +}