Skip to content

Commit 4bd3682

Browse files
50x template calls #19
1 parent 92c6a59 commit 4bd3682

2 files changed

Lines changed: 28 additions & 14 deletions

File tree

test/database.test.ts

Lines changed: 23 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,11 @@
44

55
import { SQLiteCloudError, SQLiteCloudConnection } from '../src/index'
66
import { Database, ErrorCallback } from '../src/database'
7-
import { CHINOOK_DATABASE_URL, TESTING_DATABASE_URL } from './protocol.test'
7+
import { CHINOOK_DATABASE_URL, TESTING_DATABASE_URL, LONG_TIMEOUT } from './protocol.test'
8+
89
import * as dotenv from 'dotenv'
910
dotenv.config()
1011

11-
const LONG_TIMEOUT = 30 * 1000
12-
1312
/* eslint-disable @typescript-eslint/no-unsafe-member-access */
1413

1514
import { join } from 'path'
@@ -266,12 +265,27 @@ describe('Database', () => {
266265
const results = await database.sql`SELECT * FROM people WHERE name = 'Eva' OR name = ${name} OR age < 30`
267266
expect(results).toHaveLength(11)
268267
})
268+
})
269269

270-
it('template string with multiple queries', async () => {
271-
for (let i = 0; i < 2; i++) {
272-
const results = await database.sql`SELECT * FROM people ORDER BY RANDOM() LIMIT 12`
273-
expect(results).toHaveLength(12)
274-
}
275-
})
270+
describe('stress testing', () => {
271+
it(
272+
'50x sql async with random selects',
273+
async () => {
274+
const numQueries = 50
275+
const startTime = Date.now()
276+
277+
const table = 'people'
278+
for (let i = 0; i < numQueries; i++) {
279+
const results = await database.sql`SELECT * FROM ${table} ORDER BY RANDOM() LIMIT 12`
280+
expect(results).toHaveLength(12)
281+
expect(Object.keys(results[0])).toEqual(['id', 'name', 'age', 'hobby'])
282+
}
283+
284+
const queryMs = (Date.now() - startTime) / numQueries
285+
console.log(`${numQueries}x template selects, ${queryMs.toFixed(0)}ms per query`)
286+
expect(queryMs).toBeLessThan(500)
287+
},
288+
LONG_TIMEOUT
289+
)
276290
})
277291
})

test/protocol.test.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ export const TESTING_DATABASE_URL = process.env.TESTING_DATABASE_URL as string
1414
console.assert(CHINOOK_DATABASE_URL, 'CHINOOK_DATABASE_URL is not defined')
1515
console.assert(TESTING_DATABASE_URL, 'TESTING_DATABASE_URL is not defined')
1616

17-
const LONG_TIMEOUT = 100 * 1000 // 100 seconds
17+
export const LONG_TIMEOUT = 100 * 1000 // 100 seconds
1818

1919
export function getChinoookConfig(): SQLiteCloudConfig {
2020
return parseConnectionString(CHINOOK_DATABASE_URL)
@@ -270,9 +270,9 @@ describe('protocol', () => {
270270

271271
describe('connection stress testing', () => {
272272
it(
273-
'run individual selects',
273+
'50x individual selects',
274274
async () => {
275-
const numQueries = 150
275+
const numQueries = 50
276276
const startTime = Date.now()
277277
for (let i = 0; i < numQueries; i++) {
278278
let rowset = await connection.sendCommands('SELECT * FROM albums ORDER BY RANDOM() LIMIT 4;')
@@ -287,9 +287,9 @@ describe('protocol', () => {
287287
)
288288

289289
it(
290-
'run batched selects',
290+
'50x batched selects',
291291
async () => {
292-
const numQueries = 150
292+
const numQueries = 50
293293
const startTime = Date.now()
294294
for (let i = 0; i < numQueries; i++) {
295295
let rowset = await connection.sendCommands(

0 commit comments

Comments
 (0)