| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- /* eslint-disable
- standard/no-callback-literal,
- */
- // TODO: This file was created by bulk-decaffeinate.
- // Fix any style issues and re-enable lint.
- /*
- * decaffeinate suggestions:
- * DS102: Remove unnecessary code created because of implicit returns
- * DS207: Consider shorter variations of null checks
- * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
- */
- const request = require('request')
- const Settings = require('settings-sharelatex')
- const async = require('async')
- const fs = require('fs')
- const _ = require('lodash')
- const concurentCompiles = 5
- const totalCompiles = 50
- const buildUrl = (path) =>
- `http://${Settings.internal.clsi.host}:${Settings.internal.clsi.port}/${path}`
- const mainTexContent = fs.readFileSync('./bulk.tex', 'utf-8')
- const compileTimes = []
- let failedCount = 0
- const getAverageCompileTime = function () {
- const totalTime = _.reduce(compileTimes, (sum, time) => sum + time, 0)
- return totalTime / compileTimes.length
- }
- const makeRequest = function (compileNumber, callback) {
- let bulkBodyCount = 7
- let bodyContent = ''
- while (--bulkBodyCount) {
- bodyContent = bodyContent += mainTexContent
- }
- const startTime = new Date()
- return 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 != null) {
- failedCount++
- return callback('failed')
- }
- const totalTime = new Date() - startTime
- console.log(totalTime + 'ms')
- compileTimes.push(totalTime)
- return callback(err)
- }
- )
- }
- const jobs = _.map(__range__(1, totalCompiles, true), (i) => (cb) =>
- makeRequest(i, cb)
- )
- const startTime = new Date()
- async.parallelLimit(jobs, concurentCompiles, (err) => {
- if (err != null) {
- 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`)
- return console.log(`total failures = ${failedCount}`)
- })
- function __range__(left, right, inclusive) {
- const range = []
- const ascending = left < right
- const end = !inclusive ? right : ascending ? right + 1 : right - 1
- for (let i = left; ascending ? i < end : i > end; ascending ? i++ : i--) {
- range.push(i)
- }
- return range
- }
|