Revert "test(server): switch to forks with 2 max workers"

This reverts commit 4ac22678df9a467023aef3028bfd6b0d0318398a.
This commit is contained in:
Elian Doran 2026-03-05 23:37:28 +02:00
parent 5d2daecee0
commit 432f86ea4b
No known key found for this signature in database

View File

@ -1,28 +1,24 @@
"use strict";
/**
* @module sql
*/
import type { Database as DatabaseType, RunResult,Statement } from "better-sqlite3";
import Database from "better-sqlite3";
import fs from "fs";
import becca_loader from "../becca/becca_loader.js";
import cls from "./cls.js";
import config from "./config.js";
import dataDir from "./data_dir.js";
import entity_changes from "./entity_changes.js";
import log from "./log.js";
import type { Statement, Database as DatabaseType, RunResult } from "better-sqlite3";
import dataDir from "./data_dir.js";
import cls from "./cls.js";
import fs from "fs";
import Database from "better-sqlite3";
import ws from "./ws.js";
import becca_loader from "../becca/becca_loader.js";
import entity_changes from "./entity_changes.js";
import config from "./config.js";
const dbOpts: Database.Options = {
nativeBinding: process.env.BETTERSQLITE3_NATIVE_PATH || undefined
};
const INTEGRATION_TEST_SAVEPOINT = "trilium_test_reset";
// The resolved path used to build the current test connection (for savepoint-based resets).
let integrationTestDbPath: string | null = null;
let dbConnection: DatabaseType = buildDatabase();
let statementCache: Record<string, Statement> = {};
@ -41,33 +37,17 @@ function buildDatabase() {
}
function buildIntegrationTestDatabase(dbPath?: string) {
const resolvedPath = dbPath ?? dataDir.DOCUMENT_PATH;
const dbBuffer = fs.readFileSync(resolvedPath);
const db = new Database(dbBuffer, dbOpts);
integrationTestDbPath = resolvedPath;
// Establish a savepoint so subsequent rebuilds can roll back instantly
// instead of re-reading the file and allocating a new connection.
db.exec(`SAVEPOINT ${INTEGRATION_TEST_SAVEPOINT}`);
return db;
const dbBuffer = fs.readFileSync(dbPath ?? dataDir.DOCUMENT_PATH);
return new Database(dbBuffer, dbOpts);
}
function rebuildIntegrationTestDatabase(dbPath?: string) {
const resolvedPath = dbPath ?? dataDir.DOCUMENT_PATH;
if (dbConnection && resolvedPath === integrationTestDbPath) {
// Fast path: roll back all changes to the initial state without
// closing the connection or re-reading from disk.
dbConnection.exec(`ROLLBACK TO SAVEPOINT ${INTEGRATION_TEST_SAVEPOINT}`);
} else {
// Path changed (e.g. migration tests using a different fixture DB):
// close the old connection and open a fresh one.
if (dbConnection) {
dbConnection.close();
}
// This allows a database that is read normally but is kept in memory and discards all modifications.
dbConnection = buildIntegrationTestDatabase(dbPath);
if (dbConnection) {
dbConnection.close();
}
// This allows a database that is read normally but is kept in memory and discards all modifications.
dbConnection = buildIntegrationTestDatabase(dbPath);
statementCache = {};
}
@ -149,7 +129,7 @@ function upsert<T extends {}>(tableName: string, primaryKey: string, rec: T) {
* @returns the corresponding {@link Statement}.
*/
function stmt(sql: string, isRaw?: boolean) {
const key = (isRaw ? `raw/${ sql}` : sql);
const key = (isRaw ? "raw/" + sql : sql);
if (!(key in statementCache)) {
statementCache[key] = dbConnection.prepare(sql);
@ -189,11 +169,11 @@ function getManyRows<T>(query: string, params: Params): T[] {
let j = 1;
for (const param of curParams) {
curParamsObj[`param${ j++}`] = param;
curParamsObj["param" + j++] = param;
}
let i = 1;
const questionMarks = curParams.map(() => `:param${ i++}`).join(",");
const questionMarks = curParams.map(() => ":param" + i++).join(",");
const curQuery = query.replace(/\?\?\?/g, questionMarks);
const statement = curParams.length === PARAM_LIMIT ? stmt(curQuery) : dbConnection.prepare(curQuery);
@ -260,11 +240,11 @@ function executeMany(query: string, params: Params) {
let j = 1;
for (const param of curParams) {
curParamsObj[`param${ j++}`] = param;
curParamsObj["param" + j++] = param;
}
let i = 1;
const questionMarks = curParams.map(() => `:param${ i++}`).join(",");
const questionMarks = curParams.map(() => ":param" + i++).join(",");
const curQuery = query.replace(/\?\?\?/g, questionMarks);
dbConnection.prepare(curQuery).run(curParamsObj);