lxc_manager_node/testAPI.js

62 lines
1.3 KiB
JavaScript

const request = require('request');
var callRunner = (function(){
let started = 0;
let completed = 0;
let errors = 0;
let noRunner = 0;
let func = function(code, callback) {
// code | `string` block of code to send runner or
// `number` sleep timeout in seconds
let sleepTime = 0;
let id = started++;
callback = callback || function(){};
if(/^\+?(0|[1-9]\d*)$/.test(code)){
sleepTime = code;
code = null;
}
console.log(id, ': Running...');
let httpOptions = {
url: 'http://codeland.bytedev.co:2000/api/run?once=true',
form: {
code: code || `python3 -c "
from time import sleep
sleep(${sleepTime})
"`,
}
};
return request.post(httpOptions, function(error, response, body){
completed++;
let res = ``;
if(response.statusCode == 503){
noRunner++;
}else if(error || response.statusCode !== 200){
errors++;
body = JSON.parse(body);
res = (Buffer.from(body.res, 'base64').toString('ascii'));
}
console.log(`${id} with results ${res}. Errors ${errors}. No runner ${noRunner}. Completed ${completed}`);
callback()
});
};
return func;
})();
let __do = function(till){
if(!till) return ;
callRunner(String(Math.random())[3]);
setTimeout(__do, 1500, --till);
};
__do(30)