perf: reduce memory usage upon running server tests (#3949)
* perf: reduce memory usage upon running server tests * perf: plug leaks in server/routes * perf: plug leaks in server/scripts * perf: plug leaks in server/policies * perf: plug leaks in server/models * perf: plug leaks in server/middlewares * perf: plug leaks in server/commands * fix: missing await on db.flush * perf: plug leaks in server/queues * chore: remove unused legacy funcs * fix: await on db.flush * perf: await on GC to run in between tests * fix: remove db refs * fix: revert embeds * perf: plug leaks in shared/i18n
This commit is contained in:
@@ -6,13 +6,16 @@ import {
|
||||
buildAttachment,
|
||||
buildDocument,
|
||||
} from "@server/test/factories";
|
||||
import { flushdb, getTestServer } from "@server/test/support";
|
||||
|
||||
const server = getTestServer();
|
||||
import { getTestDatabase, getTestServer } from "@server/test/support";
|
||||
|
||||
jest.mock("@server/utils/s3");
|
||||
|
||||
beforeEach(() => flushdb());
|
||||
const db = getTestDatabase();
|
||||
const server = getTestServer();
|
||||
|
||||
afterAll(server.disconnect);
|
||||
|
||||
beforeEach(db.flush);
|
||||
|
||||
describe("#attachments.create", () => {
|
||||
it("should require authentication", async () => {
|
||||
|
||||
@@ -1,10 +1,14 @@
|
||||
import sharedEnv from "@shared/env";
|
||||
import env from "@server/env";
|
||||
import { buildUser, buildTeam } from "@server/test/factories";
|
||||
import { flushdb, getTestServer } from "@server/test/support";
|
||||
import { getTestDatabase, getTestServer } from "@server/test/support";
|
||||
|
||||
const db = getTestDatabase();
|
||||
const server = getTestServer();
|
||||
beforeEach(() => flushdb());
|
||||
|
||||
afterAll(server.disconnect);
|
||||
|
||||
beforeEach(db.flush);
|
||||
|
||||
describe("#auth.info", () => {
|
||||
it("should return current authentication", async () => {
|
||||
|
||||
@@ -1,10 +1,13 @@
|
||||
import { v4 as uuidv4 } from "uuid";
|
||||
import { buildUser, buildAdmin, buildTeam } from "@server/test/factories";
|
||||
import { flushdb, getTestServer } from "@server/test/support";
|
||||
import { getTestDatabase, getTestServer } from "@server/test/support";
|
||||
|
||||
const db = getTestDatabase();
|
||||
const server = getTestServer();
|
||||
|
||||
beforeEach(() => flushdb());
|
||||
afterAll(server.disconnect);
|
||||
|
||||
beforeEach(db.flush);
|
||||
|
||||
describe("#authenticationProviders.info", () => {
|
||||
it("should return auth provider", async () => {
|
||||
|
||||
@@ -7,10 +7,14 @@ import {
|
||||
buildCollection,
|
||||
buildDocument,
|
||||
} from "@server/test/factories";
|
||||
import { flushdb, seed, getTestServer } from "@server/test/support";
|
||||
import { seed, getTestDatabase, getTestServer } from "@server/test/support";
|
||||
|
||||
const db = getTestDatabase();
|
||||
const server = getTestServer();
|
||||
beforeEach(() => flushdb());
|
||||
|
||||
afterAll(server.disconnect);
|
||||
|
||||
beforeEach(db.flush);
|
||||
|
||||
describe("#collections.list", () => {
|
||||
it("should require authentication", async () => {
|
||||
|
||||
@@ -1,8 +1,11 @@
|
||||
import { flushdb, getTestServer } from "@server/test/support";
|
||||
import { getTestDatabase, getTestServer } from "@server/test/support";
|
||||
|
||||
const db = getTestDatabase();
|
||||
const server = getTestServer();
|
||||
|
||||
beforeEach(() => flushdb());
|
||||
afterAll(server.disconnect);
|
||||
|
||||
beforeEach(db.flush);
|
||||
|
||||
describe("#cron.daily", () => {
|
||||
it("should require authentication", async () => {
|
||||
|
||||
@@ -15,10 +15,14 @@ import {
|
||||
buildDocument,
|
||||
buildViewer,
|
||||
} from "@server/test/factories";
|
||||
import { flushdb, seed, getTestServer } from "@server/test/support";
|
||||
import { seed, getTestDatabase, getTestServer } from "@server/test/support";
|
||||
|
||||
const db = getTestDatabase();
|
||||
const server = getTestServer();
|
||||
beforeEach(() => flushdb());
|
||||
|
||||
afterAll(server.disconnect);
|
||||
|
||||
beforeEach(db.flush);
|
||||
|
||||
describe("#documents.info", () => {
|
||||
it("should return published document", async () => {
|
||||
|
||||
@@ -1,8 +1,12 @@
|
||||
import { buildEvent, buildUser } from "@server/test/factories";
|
||||
import { flushdb, seed, getTestServer } from "@server/test/support";
|
||||
import { seed, getTestDatabase, getTestServer } from "@server/test/support";
|
||||
|
||||
const db = getTestDatabase();
|
||||
const server = getTestServer();
|
||||
beforeEach(() => flushdb());
|
||||
|
||||
afterAll(server.disconnect);
|
||||
|
||||
beforeEach(db.flush);
|
||||
|
||||
describe("#events.list", () => {
|
||||
it("should only return activity events", async () => {
|
||||
|
||||
@@ -10,13 +10,17 @@ import {
|
||||
buildTeam,
|
||||
buildUser,
|
||||
} from "@server/test/factories";
|
||||
import { flushdb, getTestServer } from "@server/test/support";
|
||||
|
||||
import { getTestDatabase, getTestServer } from "@server/test/support";
|
||||
|
||||
const db = getTestDatabase();
|
||||
const server = getTestServer();
|
||||
|
||||
jest.mock("@server/utils/s3");
|
||||
|
||||
beforeEach(() => flushdb());
|
||||
afterAll(server.disconnect);
|
||||
|
||||
beforeEach(db.flush);
|
||||
|
||||
describe("#fileOperations.info", () => {
|
||||
it("should return fileOperation", async () => {
|
||||
|
||||
@@ -1,9 +1,13 @@
|
||||
import { Event } from "@server/models";
|
||||
import { buildUser, buildAdmin, buildGroup } from "@server/test/factories";
|
||||
import { flushdb, getTestServer } from "@server/test/support";
|
||||
import { getTestDatabase, getTestServer } from "@server/test/support";
|
||||
|
||||
const db = getTestDatabase();
|
||||
const server = getTestServer();
|
||||
beforeEach(() => flushdb());
|
||||
|
||||
afterAll(server.disconnect);
|
||||
|
||||
beforeEach(db.flush);
|
||||
|
||||
describe("#groups.create", () => {
|
||||
it("should create a group", async () => {
|
||||
|
||||
@@ -1,16 +1,20 @@
|
||||
import env from "@server/env";
|
||||
import { IntegrationAuthentication, SearchQuery } from "@server/models";
|
||||
import { buildDocument, buildIntegration } from "@server/test/factories";
|
||||
import { flushdb, seed, getTestServer } from "@server/test/support";
|
||||
import { seed, getTestDatabase, getTestServer } from "@server/test/support";
|
||||
import * as Slack from "@server/utils/slack";
|
||||
|
||||
const server = getTestServer();
|
||||
beforeEach(() => flushdb());
|
||||
|
||||
jest.mock("../../utils/slack", () => ({
|
||||
post: jest.fn(),
|
||||
}));
|
||||
|
||||
const db = getTestDatabase();
|
||||
const server = getTestServer();
|
||||
|
||||
afterAll(server.disconnect);
|
||||
|
||||
beforeEach(db.flush);
|
||||
|
||||
describe("#hooks.unfurl", () => {
|
||||
it("should return documents", async () => {
|
||||
const { user, document } = await seed();
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import { flushdb, getTestServer } from "@server/test/support";
|
||||
import { getTestServer } from "@server/test/support";
|
||||
|
||||
const server = getTestServer();
|
||||
|
||||
beforeEach(() => flushdb());
|
||||
afterAll(server.disconnect);
|
||||
|
||||
describe("POST unknown endpoint", () => {
|
||||
it("should be not found", async () => {
|
||||
|
||||
@@ -4,11 +4,15 @@ import {
|
||||
buildUser,
|
||||
buildIntegration,
|
||||
} from "@server/test/factories";
|
||||
import { flushdb, getTestServer } from "@server/test/support";
|
||||
|
||||
import { getTestDatabase, getTestServer } from "@server/test/support";
|
||||
|
||||
const db = getTestDatabase();
|
||||
const server = getTestServer();
|
||||
|
||||
beforeEach(() => flushdb());
|
||||
afterAll(server.disconnect);
|
||||
|
||||
beforeEach(db.flush);
|
||||
|
||||
describe("#integrations.update", () => {
|
||||
it("should allow updating integration events", async () => {
|
||||
|
||||
@@ -1,7 +1,11 @@
|
||||
import { flushdb, seed, getTestServer } from "@server/test/support";
|
||||
import { seed, getTestDatabase, getTestServer } from "@server/test/support";
|
||||
|
||||
const db = getTestDatabase();
|
||||
const server = getTestServer();
|
||||
beforeEach(() => flushdb());
|
||||
|
||||
afterAll(server.disconnect);
|
||||
|
||||
beforeEach(db.flush);
|
||||
|
||||
describe("#pagination", () => {
|
||||
it("should allow offset and limit", async () => {
|
||||
|
||||
@@ -1,9 +1,13 @@
|
||||
import { Revision } from "@server/models";
|
||||
import { buildDocument, buildUser } from "@server/test/factories";
|
||||
import { flushdb, seed, getTestServer } from "@server/test/support";
|
||||
import { seed, getTestDatabase, getTestServer } from "@server/test/support";
|
||||
|
||||
const db = getTestDatabase();
|
||||
const server = getTestServer();
|
||||
beforeEach(() => flushdb());
|
||||
|
||||
afterAll(server.disconnect);
|
||||
|
||||
beforeEach(db.flush);
|
||||
|
||||
describe("#revisions.info", () => {
|
||||
it("should return a document revision", async () => {
|
||||
|
||||
@@ -6,10 +6,15 @@ import {
|
||||
buildAdmin,
|
||||
buildCollection,
|
||||
} from "@server/test/factories";
|
||||
import { flushdb, seed, getTestServer } from "@server/test/support";
|
||||
|
||||
import { seed, getTestDatabase, getTestServer } from "@server/test/support";
|
||||
|
||||
const db = getTestDatabase();
|
||||
const server = getTestServer();
|
||||
beforeEach(() => flushdb());
|
||||
|
||||
afterAll(server.disconnect);
|
||||
|
||||
beforeEach(db.flush);
|
||||
|
||||
describe("#shares.list", () => {
|
||||
it("should only return shares created by user", async () => {
|
||||
|
||||
@@ -1,8 +1,12 @@
|
||||
import { buildUser, buildStar, buildDocument } from "@server/test/factories";
|
||||
import { flushdb, getTestServer } from "@server/test/support";
|
||||
import { getTestDatabase, getTestServer } from "@server/test/support";
|
||||
|
||||
const db = getTestDatabase();
|
||||
const server = getTestServer();
|
||||
beforeEach(() => flushdb());
|
||||
|
||||
afterAll(server.disconnect);
|
||||
|
||||
beforeEach(db.flush);
|
||||
|
||||
describe("#stars.create", () => {
|
||||
it("should create a star", async () => {
|
||||
|
||||
@@ -1,9 +1,13 @@
|
||||
import { TeamDomain } from "@server/models";
|
||||
import { buildAdmin, buildCollection, buildTeam } from "@server/test/factories";
|
||||
import { flushdb, seed, getTestServer } from "@server/test/support";
|
||||
import { seed, getTestDatabase, getTestServer } from "@server/test/support";
|
||||
|
||||
const db = getTestDatabase();
|
||||
const server = getTestServer();
|
||||
beforeEach(() => flushdb());
|
||||
|
||||
afterAll(server.disconnect);
|
||||
|
||||
beforeEach(db.flush);
|
||||
|
||||
describe("#team.update", () => {
|
||||
it("should update team details", async () => {
|
||||
|
||||
@@ -1,20 +1,19 @@
|
||||
import TestServer from "fetch-test-server";
|
||||
import webService from "@server/services/web";
|
||||
import { buildTeam, buildAdmin, buildUser } from "@server/test/factories";
|
||||
import { flushdb, seed } from "@server/test/support";
|
||||
import { seed, getTestDatabase, getTestServer } from "@server/test/support";
|
||||
|
||||
const app = webService();
|
||||
const server = new TestServer(app.callback());
|
||||
beforeEach(() => flushdb());
|
||||
const db = getTestDatabase();
|
||||
const server = getTestServer();
|
||||
|
||||
beforeAll(() => {
|
||||
jest.useFakeTimers().setSystemTime(new Date("2018-01-02T00:00:00.000Z"));
|
||||
});
|
||||
afterAll(() => {
|
||||
jest.useRealTimers();
|
||||
return server.close();
|
||||
server.disconnect();
|
||||
});
|
||||
|
||||
beforeEach(db.flush);
|
||||
|
||||
describe("#users.list", () => {
|
||||
it("should allow filtering by user name", async () => {
|
||||
const user = await buildUser({
|
||||
|
||||
@@ -1,9 +1,13 @@
|
||||
import { View, CollectionUser } from "@server/models";
|
||||
import { buildUser } from "@server/test/factories";
|
||||
import { flushdb, seed, getTestServer } from "@server/test/support";
|
||||
import { seed, getTestDatabase, getTestServer } from "@server/test/support";
|
||||
|
||||
const db = getTestDatabase();
|
||||
const server = getTestServer();
|
||||
beforeEach(() => flushdb());
|
||||
|
||||
afterAll(server.disconnect);
|
||||
|
||||
beforeEach(db.flush);
|
||||
|
||||
describe("#views.list", () => {
|
||||
it("should return views for a document", async () => {
|
||||
|
||||
@@ -1,9 +1,12 @@
|
||||
import { buildUser, buildCollection } from "@server/test/factories";
|
||||
import { flushdb, getTestServer } from "@server/test/support";
|
||||
import { getTestDatabase, getTestServer } from "@server/test/support";
|
||||
|
||||
const db = getTestDatabase();
|
||||
const server = getTestServer();
|
||||
|
||||
beforeEach(() => flushdb());
|
||||
afterAll(server.disconnect);
|
||||
|
||||
beforeEach(db.flush);
|
||||
|
||||
describe("auth/redirect", () => {
|
||||
it("should redirect to home", async () => {
|
||||
|
||||
@@ -3,11 +3,14 @@ import SigninEmail from "@server/emails/templates/SigninEmail";
|
||||
import WelcomeEmail from "@server/emails/templates/WelcomeEmail";
|
||||
import env from "@server/env";
|
||||
import { buildUser, buildGuestUser, buildTeam } from "@server/test/factories";
|
||||
import { flushdb, getTestServer } from "@server/test/support";
|
||||
import { getTestDatabase, getTestServer } from "@server/test/support";
|
||||
|
||||
const db = getTestDatabase();
|
||||
const server = getTestServer();
|
||||
|
||||
beforeEach(() => flushdb());
|
||||
afterAll(server.disconnect);
|
||||
|
||||
beforeEach(db.flush);
|
||||
|
||||
describe("email", () => {
|
||||
it("should require email param", async () => {
|
||||
|
||||
@@ -1,8 +1,12 @@
|
||||
import { buildShare, buildDocument } from "@server/test/factories";
|
||||
import { flushdb, getTestServer } from "@server/test/support";
|
||||
import { getTestDatabase, getTestServer } from "@server/test/support";
|
||||
|
||||
const db = getTestDatabase();
|
||||
const server = getTestServer();
|
||||
beforeEach(() => flushdb());
|
||||
|
||||
afterAll(server.disconnect);
|
||||
|
||||
beforeEach(db.flush);
|
||||
|
||||
describe("/share/:id", () => {
|
||||
it("should return standard title in html when loading unpublished share", async () => {
|
||||
|
||||
Reference in New Issue
Block a user