diff --git a/server/.github/codecov.yml b/server/.github/codecov.yml index 320137b2a..af5858d33 100644 --- a/server/.github/codecov.yml +++ b/server/.github/codecov.yml @@ -7,21 +7,15 @@ coverage: round: down range: "50...100" status: + patch: + default: + informational: true project: default: target: 80 threshold: 2 base: auto - flags: - - unit - paths: - - "src" - # advanced settings - branches: - - master - if_ci_failed: error #success, failure, error, ignore - informational: false - only_pulls: false + informational: true parsers: gcov: diff --git a/server/.github/workflows/tests.yml b/server/.github/workflows/tests.yml index 915accc65..70fb127b6 100644 --- a/server/.github/workflows/tests.yml +++ b/server/.github/workflows/tests.yml @@ -38,12 +38,12 @@ jobs: - name: Move Config File run: mv ./.github/test.conf.json5 ./test.conf.json5 - - name: Lint Code - run: pnpm lint - - name: Run Tests run: pnpm test + - name: Lint Code + run: pnpm lint + - name: Upload Coverage if: always() run: | diff --git a/server/.taprc b/server/.taprc index b9ffbb62e..4a98402d9 100644 --- a/server/.taprc +++ b/server/.taprc @@ -1,6 +1,6 @@ files: "src/test-utils/single-process-tap.ts" test-env: [NODE_ENV=test, TCHIS_CONF_LOCATION=test.conf.json5] -timeout: 120 # might need to be increased +timeout: 240 # Was increased for slow github runners. Might be insufferable for real world use. ts: true before: "./src/test-utils/hack-setup.js" check-coverage: true diff --git a/server/src/external/mongo/db.ts b/server/src/external/mongo/db.ts index dbb22ec10..42b603c77 100644 --- a/server/src/external/mongo/db.ts +++ b/server/src/external/mongo/db.ts @@ -35,6 +35,7 @@ import CreateLogCtx from "lib/logger/logger"; import { OrphanScoreDocument } from "lib/score-import/import-types/common/types"; import { GetMilisecondsSince } from "utils/misc"; import { ServerConfig } from "lib/setup/config"; +import { ONE_MINUTE } from "lib/constants/time"; const logger = CreateLogCtx(__filename); @@ -45,21 +46,19 @@ if (process.env.NODE_ENV === "test") { dbName = `testingdb`; } -let dbtime: bigint; -/* istanbul ignore next */ -if (process.env.NODE_ENV !== "test") { - logger.info(`Connecting to database ${ServerConfig.MONGO_CONNECTION_URL}/${dbName}...`); - dbtime = process.hrtime.bigint(); -} +logger.info(`Connecting to database ${ServerConfig.MONGO_CONNECTION_URL}/${dbName}...`); +const dbtime = process.hrtime.bigint(); -export const monkDB = monk(`${ServerConfig.MONGO_CONNECTION_URL}/${dbName}`); +// By default the connectTimeoutMS is 30 seconds. This has been upped to 2 minutes, due to poor performance +// inside githubs test runners. +export const monkDB = monk(`${ServerConfig.MONGO_CONNECTION_URL}/${dbName}`, { + serverSelectionTimeoutMS: ONE_MINUTE * 2, +}); /* istanbul ignore next */ monkDB .then(() => { - if (process.env.NODE_ENV !== "test") { - logger.info(`Database connection successful: took ${GetMilisecondsSince(dbtime!)}ms`); - } + logger.info(`Database connection successful: took ${GetMilisecondsSince(dbtime)}ms`); }) .catch((err) => { logger.crit(err); diff --git a/server/src/external/redis/redis.ts b/server/src/external/redis/redis.ts index 4a6eb9ada..9c6ac5188 100644 --- a/server/src/external/redis/redis.ts +++ b/server/src/external/redis/redis.ts @@ -15,7 +15,7 @@ function EmitCritical() { } } -const ref = setTimeout(EmitCritical, 10000); +const ref = setTimeout(EmitCritical, 30000); RedisClient.on("connect", () => { logger.verbose(`Connected to Redis.`); diff --git a/server/src/lib/logger/logger.ts b/server/src/lib/logger/logger.ts index 996fc783d..e48f63ac5 100644 --- a/server/src/lib/logger/logger.ts +++ b/server/src/lib/logger/logger.ts @@ -98,26 +98,24 @@ const consoleFormatRoute = format.combine( }) ); -let tports: ( +const tports: ( | winston.transports.ConsoleTransportInstance | winston.transports.FileTransportInstance -)[] = []; +)[] = [ + new transports.File({ + filename: "logs/tachi-error.log", + level: "error", + format: defaultFormatRoute, + }), + new transports.File({ filename: "logs/tachi.log", format: defaultFormatRoute }), +]; -/* istanbul ignore next */ -if (IN_TESTING) { - tports = [new transports.File({ filename: "logs/tachi-test.log", format: defaultFormatRoute })]; -} else { - tports = [ - new transports.File({ - filename: "logs/tachi-error.log", - level: "error", - format: defaultFormatRoute, - }), - new transports.File({ filename: "logs/tachi.log", format: defaultFormatRoute }), +if (!ServerConfig.NO_CONSOLE) { + tports.push( new transports.Console({ format: consoleFormatRoute, - }), - ]; + }) + ); } export const rootLogger = winston.createLogger({ diff --git a/server/src/lib/setup/config.ts b/server/src/lib/setup/config.ts index 239960f3f..bfaf13289 100644 --- a/server/src/lib/setup/config.ts +++ b/server/src/lib/setup/config.ts @@ -66,6 +66,7 @@ export interface TachiConfig { SERVER_TYPE_INFO: StaticConfig.ServerConfig; RATE_LIMIT: integer; OPTIONS_ALWAYS_SUCCEEDS?: boolean; + NO_CONSOLE?: boolean; } const isValidOauth2 = p.optional({ @@ -95,6 +96,7 @@ const err = p(config, { TYPE: p.isIn("ktchi", "btchi", "omni"), RATE_LIMIT: p.optional(p.isPositiveInteger), OPTIONS_ALWAYS_SUCCEEDS: "*boolean", + NO_CONSOLE: "*boolean", }); if (err) {