| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- 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}")
|