Ver Fonte

[e2e] enable --notablescan for Server Pro and SaaS E2E tests (#30839)

* [e2e] enable --notablescan for Server Pro and SaaS E2E tests

* [server-ce] remove --notablescan override when downgrading

GitOrigin-RevId: 41eb6060e066b8a531d9e815802f1b4464bf5102
Jakob Ackermann há 6 meses atrás
pai
commit
4be9ecbe14
2 ficheiros alterados com 33 adições e 7 exclusões
  1. 10 5
      server-ce/test/host-admin.js
  2. 23 2
      services/web/scripts/e2e_test_setup.mjs

+ 10 - 5
server-ce/test/host-admin.js

@@ -42,6 +42,7 @@ function defaultDockerComposeOverride() {
         environment: {},
       },
       'git-bridge': {},
+      mongo: {},
     },
   }
 }
@@ -55,7 +56,7 @@ function readDockerComposeOverride() {
     if (error.code !== 'ENOENT') {
       throw error
     }
-    return defaultDockerComposeOverride
+    return defaultDockerComposeOverride()
   }
 }
 
@@ -281,11 +282,15 @@ function setVarsDockerCompose({
   }
 
   if (mongoVersion) {
-    cfg.services.mongo = {
-      image: `mongo:${mongoVersion}`,
-    }
+    cfg.services.mongo.image = `mongo:${mongoVersion}`
+  } else {
+    delete cfg.services.mongo.image
+  }
+
+  if (version === 'latest') {
+    cfg.services.mongo.command = '--replSet overleaf --notablescan'
   } else {
-    delete cfg.services.mongo
+    delete cfg.services.mongo.command
   }
 
   writeDockerComposeOverride(cfg)

+ 23 - 2
services/web/scripts/e2e_test_setup.mjs

@@ -3,7 +3,7 @@ import Path from 'node:path'
 import { fileURLToPath } from 'node:url'
 import { promiseMapWithLimit } from '@overleaf/promise-utils'
 import Settings from '@overleaf/settings'
-import { db } from '../app/src/infrastructure/mongodb.mjs'
+import { connectionPromise, db } from '../app/src/infrastructure/mongodb.mjs'
 import GracefulShutdown from '../app/src/infrastructure/GracefulShutdown.mjs'
 import ProjectDeleter from '../app/src/Features/Project/ProjectDeleter.mjs'
 import SplitTestManager from '../app/src/Features/SplitTests/SplitTestManager.mjs'
@@ -62,7 +62,7 @@ async function deleteUser(email) {
   // Hard-delete the users projects.
   const projects = await db.deletedProjects
     .find(
-      { deletedProjectOwnerId: user._id },
+      { 'deleterData.deletedProjectOwnerId': user._id },
       { projection: { deletedProjectId: 1 } }
     )
     .toArray()
@@ -137,10 +137,31 @@ async function provisionSplitTests() {
   await SplitTestManager.replaceSplitTests(SPLIT_TESTS)
 }
 
+async function checkNoTableScan() {
+  const client = await connectionPromise
+  const { notablescan } = await client
+    .db()
+    .admin()
+    .command({ getParameter: 1, notablescan: 1 })
+  if (!notablescan) {
+    console.error()
+    console.error('!!!  mongo is running without --notablescan')
+    console.error()
+    console.error('To fix this, either')
+    console.error('- run "internal$ bin/e2e_test_setup"')
+    console.error(
+      '- or add MONGO_EXTRA_ARGS=--notablescan in config/local.env and apply with "internal$ bin/up mongo"'
+    )
+    console.error()
+    throw new Error('mongo is running without --notablescan')
+  }
+}
+
 async function main() {
   if (process.env.NODE_ENV !== 'development') {
     throw new Error('only available in dev-env')
   }
+  await checkNoTableScan()
 
   await Promise.all([purgeNewUsers(), provisionUsers(), provisionSplitTests()])
 }