mirror of
https://github.com/yu-i-i/overleaf-cep.git
synced 2026-11-14 22:23:42 +01:00
Adding 2025 and 2026 incremental compiles options (#35850)
* feat: adding 2025 and 2026 incremental compiles options * feat: remove dmtcp from compiler list and autoselect checkpointing version with labs inclusion * feat: updating seccomp profile for checkpointing * feat: disable non-premium dmtcp compiles, and align checkpoint version detection between clsi and web * feat: adding in reminder of checkpoint experiment, and using session based split test retrieval * Increase Packer build.sh timeout from 1h15m to 1h30m as build takes approx 1h * fix: moving checkpointing check from tag name based to hasCheckpointing flag set as part of allowed_images, and removing uneeded seccomp rule * feat: move variant/ image selection to CLSI, and have web control only what options to set for a compile. removing uneeded extra variants from webs list of allowed images * feat: adding compile timer as a query string as well --------- Co-authored-by: Tim Gibbon <tim.gibbon@overleaf.com> GitOrigin-RevId: cdbdf76a62dcd5a585925f18d64b6cb9cd6ed373
This commit is contained in:
committed by
Copybot
co-authored by
Tim Gibbon
parent
35271cb33c
commit
baa9cf78d9
@@ -198,6 +198,10 @@ describe('ClsiManager', function () {
|
||||
clsiCookie: { key: 'clsiserver' },
|
||||
safeCompilers: ['pdflatex', 'latex', 'xelatex', 'lualatex'],
|
||||
defaultLatexCompiler: 'pdflatex',
|
||||
allowedImageNames: [
|
||||
{ imageName: 'mock-image-name', hasCheckpointing: true },
|
||||
{ imageName: 'mock-image-name-no-checkpointing' },
|
||||
],
|
||||
}
|
||||
ctx.ClsiCacheHandler = {
|
||||
clearCache: sinon.stub().resolves(),
|
||||
@@ -1117,6 +1121,152 @@ describe('ClsiManager', function () {
|
||||
})
|
||||
})
|
||||
|
||||
describe('with the checkpointing option', function () {
|
||||
it('should ask the clsi to enable checkpointing, leaving the image alone', async function (ctx) {
|
||||
await ctx.ClsiManager.promises.sendRequest(
|
||||
null,
|
||||
ctx.project._id,
|
||||
ctx.user_id,
|
||||
{
|
||||
timeout: 100,
|
||||
compileGroup: 'priority',
|
||||
checkpointing: true,
|
||||
}
|
||||
)
|
||||
|
||||
expect(ctx.FetchUtils.fetchStringWithResponse).to.have.been.calledWith(
|
||||
sinon.match.any,
|
||||
sinon.match({
|
||||
json: {
|
||||
compile: {
|
||||
options: {
|
||||
imageName: ctx.project.imageName,
|
||||
enableCheckpoint: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
})
|
||||
)
|
||||
})
|
||||
|
||||
it('should not enable checkpointing for a standard compileGroup', async function (ctx) {
|
||||
await ctx.ClsiManager.promises.sendRequest(
|
||||
null,
|
||||
ctx.project._id,
|
||||
ctx.user_id,
|
||||
{
|
||||
timeout: 100,
|
||||
compileGroup: 'standard',
|
||||
checkpointing: true,
|
||||
}
|
||||
)
|
||||
|
||||
expect(ctx.FetchUtils.fetchStringWithResponse).to.have.been.calledWith(
|
||||
sinon.match.any,
|
||||
sinon.match({
|
||||
json: {
|
||||
compile: { options: { enableCheckpoint: false } },
|
||||
},
|
||||
})
|
||||
)
|
||||
})
|
||||
|
||||
it('should not enable checkpointing without the option', async function (ctx) {
|
||||
await ctx.ClsiManager.promises.sendRequest(
|
||||
null,
|
||||
ctx.project._id,
|
||||
ctx.user_id,
|
||||
{
|
||||
timeout: 100,
|
||||
compileGroup: 'priority',
|
||||
}
|
||||
)
|
||||
|
||||
expect(ctx.FetchUtils.fetchStringWithResponse).to.have.been.calledWith(
|
||||
sinon.match.any,
|
||||
sinon.match({
|
||||
json: {
|
||||
compile: {
|
||||
options: {
|
||||
imageName: ctx.project.imageName,
|
||||
enableCheckpoint: false,
|
||||
},
|
||||
},
|
||||
},
|
||||
})
|
||||
)
|
||||
})
|
||||
|
||||
it('should not enable checkpointing when the image has no checkpointing build', async function (ctx) {
|
||||
ctx.project.imageName = 'mock-image-name-no-checkpointing'
|
||||
await ctx.ClsiManager.promises.sendRequest(
|
||||
null,
|
||||
ctx.project._id,
|
||||
ctx.user_id,
|
||||
{
|
||||
timeout: 100,
|
||||
compileGroup: 'priority',
|
||||
checkpointing: true,
|
||||
}
|
||||
)
|
||||
|
||||
expect(ctx.FetchUtils.fetchStringWithResponse).to.have.been.calledWith(
|
||||
sinon.match.any,
|
||||
sinon.match({
|
||||
json: {
|
||||
compile: { options: { enableCheckpoint: false } },
|
||||
},
|
||||
})
|
||||
)
|
||||
})
|
||||
|
||||
it('should not enable checkpointing when the project has no image', async function (ctx) {
|
||||
delete ctx.project.imageName
|
||||
await ctx.ClsiManager.promises.sendRequest(
|
||||
null,
|
||||
ctx.project._id,
|
||||
ctx.user_id,
|
||||
{
|
||||
timeout: 100,
|
||||
compileGroup: 'priority',
|
||||
checkpointing: true,
|
||||
}
|
||||
)
|
||||
|
||||
expect(ctx.FetchUtils.fetchStringWithResponse).to.have.been.calledWith(
|
||||
sinon.match.any,
|
||||
sinon.match({
|
||||
json: {
|
||||
compile: { options: { enableCheckpoint: false } },
|
||||
},
|
||||
})
|
||||
)
|
||||
})
|
||||
|
||||
it('should look up the image ignoring the registry host', async function (ctx) {
|
||||
ctx.project.imageName = 'quay.io/sharelatex/mock-image-name'
|
||||
await ctx.ClsiManager.promises.sendRequest(
|
||||
null,
|
||||
ctx.project._id,
|
||||
ctx.user_id,
|
||||
{
|
||||
timeout: 100,
|
||||
compileGroup: 'priority',
|
||||
checkpointing: true,
|
||||
}
|
||||
)
|
||||
|
||||
expect(ctx.FetchUtils.fetchStringWithResponse).to.have.been.calledWith(
|
||||
sinon.match.any,
|
||||
sinon.match({
|
||||
json: {
|
||||
compile: { options: { enableCheckpoint: true } },
|
||||
},
|
||||
})
|
||||
)
|
||||
})
|
||||
})
|
||||
|
||||
describe('with the png2pdf option', function () {
|
||||
beforeEach(async function (ctx) {
|
||||
await ctx.ClsiManager.promises.sendRequest(
|
||||
|
||||
Reference in New Issue
Block a user