diff --git a/services/web/app/src/Features/Compile/CompileController.js b/services/web/app/src/Features/Compile/CompileController.js index cd13a3510f..575891023d 100644 --- a/services/web/app/src/Features/Compile/CompileController.js +++ b/services/web/app/src/Features/Compile/CompileController.js @@ -13,7 +13,6 @@ const ClsiCookieManager = require('./ClsiCookieManager')( Settings.apis.clsi?.backendGroupName ) const Path = require('path') -const SplitTestHandler = require('../SplitTests/SplitTestHandler') const COMPILE_TIMEOUT_MS = 10 * 60 * 1000 @@ -84,38 +83,20 @@ module.exports = CompileController = { return next(error) } Metrics.inc('compile-status', 1, { status }) - SplitTestHandler.getAssignment( - req, - res, - 'zonal-clsi-lb-downloads', - {}, - (_err, assignment) => { - if (Array.isArray(outputFiles)) { - // NOTE: keep this around as a safeguard for rolling back clsi. - outputFiles.forEach(file => { - file.url = file.url.replace(/^\/zone\/\w/, '') - }) - } - let pdfDownloadDomain = Settings.pdfDownloadDomain - if ( - assignment?.variant === 'zonal' && - pdfDownloadDomain && - outputUrlPrefix - ) { - pdfDownloadDomain += outputUrlPrefix - } - res.json({ - status, - outputFiles, - compileGroup: limits?.compileGroup, - clsiServerId, - validationProblems, - stats, - timings, - pdfDownloadDomain, - }) - } - ) + let pdfDownloadDomain = Settings.pdfDownloadDomain + if (pdfDownloadDomain && outputUrlPrefix) { + pdfDownloadDomain += outputUrlPrefix + } + res.json({ + status, + outputFiles, + compileGroup: limits?.compileGroup, + clsiServerId, + validationProblems, + stats, + timings, + pdfDownloadDomain, + }) } ) }, diff --git a/services/web/test/unit/src/Compile/CompileControllerTests.js b/services/web/test/unit/src/Compile/CompileControllerTests.js index 6020acba28..fbc817e200 100644 --- a/services/web/test/unit/src/Compile/CompileControllerTests.js +++ b/services/web/test/unit/src/Compile/CompileControllerTests.js @@ -87,32 +87,36 @@ describe('CompileController', function () { ) }) - describe('zonal downloads', function () { + describe('pdfDownloadDomain', function () { beforeEach(function () { this.settings.pdfDownloadDomain = 'https://compiles.overleaf.test' - this.CompileManager.compile = sinon.stub().callsArgWith( - 3, - null, - (this.status = 'success'), - (this.outputFiles = [ - { - path: 'output.pdf', - url: `/project/${this.projectId}/user/${this.user_id}/build/id/output.pdf`, - type: 'pdf', - }, - ]), - undefined, // clsiServerId - undefined, // limits - undefined, // validationProblems - undefined, // stats - undefined, // timings - '/zone/b' - ) }) - describe('when in the default split test variant and with the old clsi deploy', function () { + describe('when clsi does not emit zone prefix', function () { + beforeEach(function () { + this.CompileController.compile(this.req, this.res, this.next) + }) + + it('should add domain verbatim', function () { + this.res.statusCode.should.equal(200) + this.res.body.should.equal( + JSON.stringify({ + status: this.status, + outputFiles: [ + { + path: 'output.pdf', + url: `/project/${this.projectId}/user/${this.user_id}/build/id/output.pdf`, + type: 'pdf', + }, + ], + pdfDownloadDomain: 'https://compiles.overleaf.test', + }) + ) + }) + }) + + describe('when clsi emits a zone prefix', function () { beforeEach(function () { - this.getAssignment.yields(null, { variant: 'default' }) this.CompileManager.compile = sinon.stub().callsArgWith( 3, null, @@ -120,89 +124,20 @@ describe('CompileController', function () { (this.outputFiles = [ { path: 'output.pdf', - // The previous clsi version sent the zone prefix in the url - url: `/zone/b/project/${this.projectId}/user/${this.user_id}/build/id/output.pdf`, + url: `/project/${this.projectId}/user/${this.user_id}/build/id/output.pdf`, type: 'pdf', }, - ]) + ]), + undefined, // clsiServerId + undefined, // limits + undefined, // validationProblems + undefined, // stats + undefined, // timings + '/zone/b' ) this.CompileController.compile(this.req, this.res, this.next) }) - it('should remove the zone prefix', function () { - this.res.statusCode.should.equal(200) - this.res.body.should.equal( - JSON.stringify({ - status: this.status, - outputFiles: [ - { - path: 'output.pdf', - url: `/project/${this.projectId}/user/${this.user_id}/build/id/output.pdf`, - type: 'pdf', - }, - ], - pdfDownloadDomain: 'https://compiles.overleaf.test', - }) - ) - }) - }) - - describe('when in the default split test variant and not output files were returned', function () { - beforeEach(function () { - this.getAssignment.yields(null, { variant: 'default' }) - this.CompileManager.compile = sinon - .stub() - .callsArgWith( - 3, - null, - (this.status = 'success'), - (this.outputFiles = null) - ) - this.CompileController.compile(this.req, this.res, this.next) - }) - - it('should ignore the output files', function () { - this.res.statusCode.should.equal(200) - this.res.body.should.equal( - JSON.stringify({ - status: this.status, - outputFiles: null, - pdfDownloadDomain: 'https://compiles.overleaf.test', - }) - ) - }) - }) - - describe('when in the default split test variant', function () { - beforeEach(function () { - this.getAssignment.yields(null, { variant: 'default' }) - this.CompileController.compile(this.req, this.res, this.next) - }) - - it('should remove the zone prefix', function () { - this.res.statusCode.should.equal(200) - this.res.body.should.equal( - JSON.stringify({ - status: this.status, - outputFiles: [ - { - path: 'output.pdf', - url: `/project/${this.projectId}/user/${this.user_id}/build/id/output.pdf`, - type: 'pdf', - }, - ], - pdfDownloadDomain: 'https://compiles.overleaf.test', - }) - ) - }) - }) - - describe('when in the zonal split test variant', function () { - beforeEach(function () { - this.getAssignment.yields(null, { variant: 'zonal' }) - this.CompileController.compile(this.req, this.res, this.next) - }) - it('should add the zone prefix', function () { this.res.statusCode.should.equal(200) this.res.body.should.equal(