mirror of
https://github.com/overleaf/overleaf.git
synced 2024-11-21 20:47:08 -05:00
72 lines
1.8 KiB
CoffeeScript
72 lines
1.8 KiB
CoffeeScript
|
request = require "request"
|
||
|
Settings = require "settings-sharelatex"
|
||
|
async = require("async")
|
||
|
fs = require("fs")
|
||
|
_ = require("underscore")
|
||
|
concurentCompiles = 5
|
||
|
totalCompiles = 50
|
||
|
|
||
|
buildUrl = (path) -> "http://#{Settings.internal.clsi.host}:#{Settings.internal.clsi.port}/#{path}"
|
||
|
|
||
|
mainTexContent = fs.readFileSync("./bulk.tex", "utf-8")
|
||
|
|
||
|
compileTimes = []
|
||
|
failedCount = 0
|
||
|
|
||
|
getAverageCompileTime = ->
|
||
|
totalTime = _.reduce compileTimes, (sum, time)->
|
||
|
sum + time
|
||
|
, 0
|
||
|
return totalTime / compileTimes.length
|
||
|
|
||
|
makeRequest = (compileNumber, callback)->
|
||
|
bulkBodyCount = 7
|
||
|
bodyContent = ""
|
||
|
while --bulkBodyCount
|
||
|
bodyContent = bodyContent+=mainTexContent
|
||
|
|
||
|
|
||
|
startTime = new Date()
|
||
|
request.post {
|
||
|
url: buildUrl("project/loadcompile-#{compileNumber}/compile")
|
||
|
json:
|
||
|
compile:
|
||
|
resources: [
|
||
|
path: "main.tex"
|
||
|
content: """
|
||
|
\\documentclass{article}
|
||
|
\\begin{document}
|
||
|
#{bodyContent}
|
||
|
\\end{document}
|
||
|
"""
|
||
|
]
|
||
|
}, (err, response, body)->
|
||
|
if response.statusCode != 200
|
||
|
failedCount++
|
||
|
return callback("compile #{compileNumber} failed")
|
||
|
if err?
|
||
|
failedCount++
|
||
|
return callback("failed")
|
||
|
totalTime = new Date() - startTime
|
||
|
console.log totalTime+"ms"
|
||
|
compileTimes.push(totalTime)
|
||
|
callback(err)
|
||
|
|
||
|
|
||
|
jobs = _.map [1..totalCompiles], (i)->
|
||
|
return (cb)->
|
||
|
makeRequest(i, cb)
|
||
|
|
||
|
startTime = new Date()
|
||
|
async.parallelLimit jobs, concurentCompiles, (err)->
|
||
|
if err?
|
||
|
console.error err
|
||
|
console.log("total time taken = #{(new Date() - startTime)/1000}s")
|
||
|
console.log("total compiles = #{totalCompiles}")
|
||
|
console.log("concurent compiles = #{concurentCompiles}")
|
||
|
console.log("average time = #{getAverageCompileTime()/1000}s")
|
||
|
console.log("max time = #{_.max(compileTimes)/1000}s")
|
||
|
console.log("min time = #{_.min(compileTimes)/1000}s")
|
||
|
console.log("total failures = #{failedCount}")
|
||
|
|