Merge pull request #171 from overleaf/bg-fix-format

fix format and lint checks
This commit is contained in:
Brian Gough 2020-06-02 11:48:11 +01:00 committed by GitHub
commit fccb20ff56
8 changed files with 63 additions and 66 deletions

View file

@ -5,7 +5,7 @@
* DS207: Consider shorter variations of null checks * DS207: Consider shorter variations of null checks
* Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
*/ */
let tenMinutes const tenMinutes = 10 * 60 * 1000
const Metrics = require('metrics-sharelatex') const Metrics = require('metrics-sharelatex')
Metrics.initialize('clsi') Metrics.initialize('clsi')
@ -49,31 +49,29 @@ app.use(function(req, res, next) {
return next() return next()
}) })
app.param('project_id', function(req, res, next, project_id) { app.param('project_id', function(req, res, next, projectId) {
if (project_id != null ? project_id.match(/^[a-zA-Z0-9_-]+$/) : undefined) { if (projectId != null ? projectId.match(/^[a-zA-Z0-9_-]+$/) : undefined) {
return next() return next()
} else { } else {
return next(new Error('invalid project id')) return next(new Error('invalid project id'))
} }
}) })
app.param('user_id', function(req, res, next, user_id) { app.param('user_id', function(req, res, next, userId) {
if (user_id != null ? user_id.match(/^[0-9a-f]{24}$/) : undefined) { if (userId != null ? userId.match(/^[0-9a-f]{24}$/) : undefined) {
return next() return next()
} else { } else {
return next(new Error('invalid user id')) return next(new Error('invalid user id'))
} }
}) })
app.param('build_id', function(req, res, next, build_id) { app.param('build_id', function(req, res, next, buildId) {
if ( if (
build_id != null buildId != null ? buildId.match(OutputCacheManager.BUILD_REGEX) : undefined
? build_id.match(OutputCacheManager.BUILD_REGEX)
: undefined
) { ) {
return next() return next()
} else { } else {
return next(new Error(`invalid build id ${build_id}`)) return next(new Error(`invalid build id ${buildId}`))
} }
}) })
@ -207,15 +205,15 @@ if (Settings.processLifespanLimitMs) {
}, Settings.processLifespanLimitMs) }, Settings.processLifespanLimitMs)
} }
function runSmokeTest() {
if (Settings.processTooOld) return
logger.log('running smoke tests')
smokeTest.triggerRun(err => {
if (err) logger.error({ err }, 'smoke tests failed')
setTimeout(runSmokeTest, 30 * 1000)
})
}
if (Settings.smokeTest) { if (Settings.smokeTest) {
function runSmokeTest() {
if (Settings.processTooOld) return
logger.log('running smoke tests')
smokeTest.triggerRun(err => {
if (err) logger.error({ err }, 'smoke tests failed')
setTimeout(runSmokeTest, 30 * 1000)
})
}
runSmokeTest() runSmokeTest()
} }
@ -308,29 +306,31 @@ const host =
x1 => x1.host x1 => x1.host
) || 'localhost' ) || 'localhost'
const load_tcp_port = Settings.internal.load_balancer_agent.load_port const loadTcpPort = Settings.internal.load_balancer_agent.load_port
const load_http_port = Settings.internal.load_balancer_agent.local_port const loadHttpPort = Settings.internal.load_balancer_agent.local_port
if (!module.parent) { if (!module.parent) {
// Called directly // Called directly
app.listen(port, host, error => app.listen(port, host, error => {
logger.info(`CLSI starting up, listening on ${host}:${port}`) if (error) {
) logger.fatal({ error }, `Error starting CLSI on ${host}:${port}`)
} else {
loadTcpServer.listen(load_tcp_port, host, function(error) { logger.info(`CLSI starting up, listening on ${host}:${port}`)
if (error != null) {
throw error
} }
return logger.info(`Load tcp agent listening on load port ${load_tcp_port}`)
}) })
loadHttpServer.listen(load_http_port, host, function(error) { loadTcpServer.listen(loadTcpPort, host, function(error) {
if (error != null) { if (error != null) {
throw error throw error
} }
return logger.info( return logger.info(`Load tcp agent listening on load port ${loadTcpPort}`)
`Load http agent listening on load port ${load_http_port}` })
)
loadHttpServer.listen(loadHttpPort, host, function(error) {
if (error != null) {
throw error
}
return logger.info(`Load http agent listening on load port ${loadHttpPort}`)
}) })
} }
@ -339,7 +339,7 @@ module.exports = app
setInterval(() => { setInterval(() => {
ProjectPersistenceManager.refreshExpiryTimeout() ProjectPersistenceManager.refreshExpiryTimeout()
ProjectPersistenceManager.clearExpiredProjects() ProjectPersistenceManager.clearExpiredProjects()
}, (tenMinutes = 10 * 60 * 1000)) }, tenMinutes)
function __guard__(value, transform) { function __guard__(value, transform) {
return typeof value !== 'undefined' && value !== null return typeof value !== 'undefined' && value !== null

View file

@ -412,7 +412,7 @@ module.exports = DockerRunner = {
}) })
} }
) )
var inspectContainer = (isRetry) => var inspectContainer = isRetry =>
container.inspect(function(error, stats) { container.inspect(function(error, stats) {
if ((error != null ? error.statusCode : undefined) === 404) { if ((error != null ? error.statusCode : undefined) === 404) {
return createAndStartContainer() return createAndStartContainer()

View file

@ -132,7 +132,8 @@ module.exports = LatexRunner = {
LatexRunner.writeLogOutput(project_id, directory, output, () => { LatexRunner.writeLogOutput(project_id, directory, output, () => {
return callback(error, output, stats, timings) return callback(error, output, stats, timings)
}) })
})) }
))
}, },
writeLogOutput(project_id, directory, output, callback) { writeLogOutput(project_id, directory, output, callback) {
@ -142,9 +143,9 @@ module.exports = LatexRunner = {
// internal method for writing non-empty log files // internal method for writing non-empty log files
function _writeFile(file, content, cb) { function _writeFile(file, content, cb) {
if (content && content.length > 0) { if (content && content.length > 0) {
fs.writeFile(file, content, (err) => { fs.writeFile(file, content, err => {
if (err) { if (err) {
logger.error({ project_id, file }, "error writing log file") // don't fail on error logger.error({ project_id, file }, 'error writing log file') // don't fail on error
} }
cb() cb()
}) })
@ -153,8 +154,8 @@ module.exports = LatexRunner = {
} }
} }
// write stdout and stderr, ignoring errors // write stdout and stderr, ignoring errors
_writeFile(Path.join(directory, "output.stdout"), output.stdout, () => { _writeFile(Path.join(directory, 'output.stdout'), output.stdout, () => {
_writeFile(Path.join(directory, "output.stderr"), output.stderr, () => { _writeFile(Path.join(directory, 'output.stderr'), output.stderr, () => {
callback() callback()
}) })
}) })

View file

@ -12,6 +12,7 @@
* DS207: Consider shorter variations of null checks * DS207: Consider shorter variations of null checks
* Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
*/ */
let UrlFetcher
const request = require('request').defaults({ jar: false }) const request = require('request').defaults({ jar: false })
const fs = require('fs') const fs = require('fs')
const logger = require('logger-sharelatex') const logger = require('logger-sharelatex')

View file

@ -9,7 +9,7 @@ module.exports = {
username: 'clsi', username: 'clsi',
dialect: 'sqlite', dialect: 'sqlite',
storage: storage:
process.env.SQLITE_PATH || Path.resolve(__dirname + '/../db/db.sqlite'), process.env.SQLITE_PATH || Path.resolve(__dirname, '../db/db.sqlite'),
pool: { pool: {
max: 1, max: 1,
min: 1 min: 1
@ -26,10 +26,10 @@ module.exports = {
parseInt(process.env.PROCESS_LIFE_SPAN_LIMIT_MS) || 60 * 60 * 24 * 1000 * 2, parseInt(process.env.PROCESS_LIFE_SPAN_LIMIT_MS) || 60 * 60 * 24 * 1000 * 2,
path: { path: {
compilesDir: Path.resolve(__dirname + '/../compiles'), compilesDir: Path.resolve(__dirname, '../compiles'),
clsiCacheDir: Path.resolve(__dirname + '/../cache'), clsiCacheDir: Path.resolve(__dirname, '../cache'),
synctexBaseDir(project_id) { synctexBaseDir(projectId) {
return Path.join(this.compilesDir, project_id) return Path.join(this.compilesDir, projectId)
} }
}, },
@ -63,7 +63,7 @@ module.exports = {
} }
if (process.env.DOCKER_RUNNER) { if (process.env.DOCKER_RUNNER) {
let seccomp_profile_path let seccompProfilePath
module.exports.clsi = { module.exports.clsi = {
dockerRunner: process.env.DOCKER_RUNNER === 'true', dockerRunner: process.env.DOCKER_RUNNER === 'true',
docker: { docker: {
@ -81,16 +81,14 @@ if (process.env.DOCKER_RUNNER) {
} }
try { try {
seccomp_profile_path = Path.resolve( seccompProfilePath = Path.resolve(__dirname, '../seccomp/clsi-profile.json')
__dirname + '/../seccomp/clsi-profile.json'
)
module.exports.clsi.docker.seccomp_profile = JSON.stringify( module.exports.clsi.docker.seccomp_profile = JSON.stringify(
JSON.parse(require('fs').readFileSync(seccomp_profile_path)) JSON.parse(require('fs').readFileSync(seccompProfilePath))
) )
} catch (error) { } catch (error) {
console.log( console.log(
error, error,
`could not load seccom profile from ${seccomp_profile_path}` `could not load seccom profile from ${seccompProfilePath}`
) )
} }

View file

@ -38,7 +38,7 @@ describe('LatexRunner', function() {
}) })
}, },
'./CommandRunner': (this.CommandRunner = {}), './CommandRunner': (this.CommandRunner = {}),
'fs': (this.fs = { fs: (this.fs = {
writeFile: sinon.stub().callsArg(2) writeFile: sinon.stub().callsArg(2)
}) })
} }
@ -55,7 +55,10 @@ describe('LatexRunner', function() {
return describe('runLatex', function() { return describe('runLatex', function() {
beforeEach(function() { beforeEach(function() {
return (this.CommandRunner.run = sinon.stub().callsArg(6)) return (this.CommandRunner.run = sinon.stub().callsArgWith(6, null, {
stdout: 'this is stdout',
stderr: 'this is stderr'
}))
}) })
describe('normally', function() { describe('normally', function() {
@ -74,7 +77,7 @@ describe('LatexRunner', function() {
) )
}) })
return it('should run the latex command', function() { it('should run the latex command', function() {
return this.CommandRunner.run return this.CommandRunner.run
.calledWith( .calledWith(
this.project_id, this.project_id,
@ -87,18 +90,12 @@ describe('LatexRunner', function() {
.should.equal(true) .should.equal(true)
}) })
it('should record the stdout and stderr', function () { it('should record the stdout and stderr', function() {
this.fs.writeFile this.fs.writeFile
.calledWith( .calledWith(this.directory + '/' + 'output.stdout', 'this is stdout')
this.directory + '/' + 'output.stdout',
"this is stdout"
)
.should.equal(true) .should.equal(true)
this.fs.writeFile this.fs.writeFile
.calledWith( .calledWith(this.directory + '/' + 'output.stderr', 'this is stderr')
this.directory + '/' + 'output.stderr',
"this is stderr"
)
.should.equal(true) .should.equal(true)
}) })
}) })

View file

@ -262,19 +262,19 @@ describe('ResourceWriter', function() {
.should.equal(true) .should.equal(true)
}) })
it('should delete the stdout log file', function () { it('should delete the stdout log file', function() {
return this.ResourceWriter._deleteFileIfNotDirectory return this.ResourceWriter._deleteFileIfNotDirectory
.calledWith(path.join(this.basePath, 'output.stdout')) .calledWith(path.join(this.basePath, 'output.stdout'))
.should.equal(true) .should.equal(true)
}) })
it('should delete the stderr log file', function () { it('should delete the stderr log file', function() {
return this.ResourceWriter._deleteFileIfNotDirectory return this.ResourceWriter._deleteFileIfNotDirectory
.calledWith(path.join(this.basePath, 'output.stderr')) .calledWith(path.join(this.basePath, 'output.stderr'))
.should.equal(true) .should.equal(true)
}) })
it('should delete the extra files', function () { it('should delete the extra files', function() {
return this.ResourceWriter._deleteFileIfNotDirectory return this.ResourceWriter._deleteFileIfNotDirectory
.calledWith(path.join(this.basePath, 'extra/file.tex')) .calledWith(path.join(this.basePath, 'extra/file.tex'))
.should.equal(true) .should.equal(true)

View file

@ -48,7 +48,7 @@ describe('UrlFetcher', function() {
}) })
it('should call pipeUrlToFile multiple times on error', function(done) { it('should call pipeUrlToFile multiple times on error', function(done) {
error = new Error("couldn't download file") const error = new Error("couldn't download file")
this.UrlFetcher.pipeUrlToFile.callsArgWith(2, error) this.UrlFetcher.pipeUrlToFile.callsArgWith(2, error)
this.UrlFetcher.pipeUrlToFileWithRetry(this.url, this.path, err => { this.UrlFetcher.pipeUrlToFileWithRetry(this.url, this.path, err => {
expect(err).to.equal(error) expect(err).to.equal(error)