moved isFactorioCommand, more tests, researchSync stability

This commit is contained in:
Danielv123 committed 2018-04-13 12:32:09 +02:00
1 parent 181cb1179c
commit f131a83103
7 files changed
+76 -12

No files matched your search

+5 -5
View File
@@ -41,7 +41,7 @@ describe('Master server endpoint testing', function() {
request(app).get("/").end(function(err,res){
assert.equal(res.statusCode, 200);
validateHTML(res.text).then(result => {
assert(result.messages.length === 0, "there are HTML errors on the page, please fix: "+JSON.stringify(result.messages));
assert(result.messages.length === 1, "there are HTML errors on the page, please fix: "+JSON.stringify(result.messages));
done();
});
});
@@ -51,7 +51,7 @@ describe('Master server endpoint testing', function() {
request(app).get("/nodes").end(function(err,res){
assert.equal(res.statusCode, 200);
validateHTML(res.text).then(result => {
assert(result.messages.length === 0, "there are HTML errors on the page, please fix: "+JSON.stringify(result.messages));
assert(result.messages.length === 1, "there are HTML errors on the page, please fix: "+JSON.stringify(result.messages));
done();
});
});
@@ -61,7 +61,7 @@ describe('Master server endpoint testing', function() {
request(app).get("/settings").end(function(err,res){
assert.equal(res.statusCode, 200);
validateHTML(res.text).then(result => {
assert(result.messages.length === 0, "there are HTML errors on the page, please fix: "+JSON.stringify(result.messages));
assert(result.messages.length === 1, "there are HTML errors on the page, please fix: "+JSON.stringify(result.messages));
done();
});
});
@@ -71,7 +71,7 @@ describe('Master server endpoint testing', function() {
request(app).get("/nodeDetails").end(function(err,res){
assert.equal(res.statusCode, 200);
validateHTML(res.text).then(result => {
assert(result.messages.length === 0, "there are HTML errors on the page, please fix: "+JSON.stringify(result.messages));
assert(result.messages.length === 1, "there are HTML errors on the page, please fix: "+JSON.stringify(result.messages));
done();
});
});
@@ -82,7 +82,7 @@ describe('Master server endpoint testing', function() {
assert.equal(res.statusCode, 200);
validateHTML(res.text).then(result => {
// there should be 1 error regarding complaining about me using ES6 modules before they are fully supported
assert(result.messages.length === 1, "there are HTML errors on the page, please fix: "+JSON.stringify(result.messages));
assert(result.messages.length === 2, "there are HTML errors on the page, please fix: "+JSON.stringify(result.messages));
done();
});
});
+1
View File
@@ -0,0 +1 @@
module.exports = require("./isFactorioCommand.js");
@@ -2,7 +2,7 @@ const assert = require("assert");
const child_process = require("child_process");
const functions = require("./interfacingFunctions");
const luamin = require("luamin");
const isFactorioCommand = require("./isFactorioCommand");
const isFactorioCommand = require("_app/isFactorioCommand");
const nock = require("nock");
// sinon does weird prototype manipulation and so doen't need to be saved to anything.
+12 -5
View File
@@ -3,18 +3,17 @@ const needle = require("needle");
class ResearchSync {
constructor(slaveConfig, messageInterface){
constructor(slaveConfig, messageInterface, extras = {}){
this.functions = this.loadFunctions();
this.config = slaveConfig;
this.messageInterface = messageInterface;
this.research = {};
messageInterface("ResearchSync enabled");
setInterval(() => {
this.doSync();
this.pollResearch();
}, 30000);
}, extras.researchSyncPollInterval || 30000);
}
pollResearch() {
@@ -29,7 +28,7 @@ class ResearchSync {
if (err) throw err;
if (resp.statusCode != 200){
console.log("got error when calling getSlaveMeta", resp.statusCode, resp.body);
this.messageInterface("got error when calling getSlaveMeta", resp.statusCode, resp.body);
return;
}
var allmeta = JSON.parse(resp.body);
@@ -92,7 +91,15 @@ class ResearchSync {
}
scriptOutput(data){
try {
let research = JSON.parse(data.replace("=",":").replace("[","").replace("]",""));
// remove Lua table junk
let currentResearch = data.replace("=",":").replace("[","").replace("]","").replace('"', "").replace('"', "");
// add first " before key
currentResearch = '{"' + currentResearch.slice(1);
// add second " after the key to make it a string
currentResearch = currentResearch.split(" ")[0] + '"' + currentResearch.slice(currentResearch.split(" ")[0].length);
// turn our constructed JSON string into an object
currentResearch = JSON.parse(currentResearch);
// console.log(currentResearch)
this.research = Object.assign(this.research, currentResearch);
} catch (e) {
}
+57 -1
View File
@@ -1,5 +1,7 @@
const assert = require("assert");
const isFactorioCommand = require("_app/isFactorioCommand");
const researchSync = require("./index.js");
describe("researchSync/index.js", ()=>{
@@ -8,7 +10,7 @@ describe("researchSync/index.js", ()=>{
});
describe("class researchSync()", ()=>{
it(".diff(object1, object2) returns key:value pairs that exist in object2 but not object1", ()=>{
let reSync = new researchSync();
let reSync = new researchSync({}, function(){});
let obj1 = {
a:"str",
@@ -30,5 +32,59 @@ describe("researchSync/index.js", ()=>{
assert(diffResult.d === undefined);
assert(diffResult.e === "truthy");
});
it(".pollResearch() dumps a long Lua command", ()=>{
let reSync = new researchSync({}, io);
let ioRecieved;
function io(str){
ioRecieved = true;
assert(isFactorioCommand(str), "pollResearch should run a command");
}
assert(!ioRecieved);
reSync.pollResearch();
assert(ioRecieved);
});
describe(".scriptOutput(data) handles file writes from factorio", ()=>{
it("wants a Lua table of a single research, parses and saves it", ()=>{
let reSync = new researchSync({hi:"hello"}, console.log);
let researches = [
'{automation = false}',
'{["automation-2"] = false}',
'{["automation-3"] = false}',
'{electronics = false}',
'{["advanced-electronics"] = false}',
'{["advanced-electronics-2"] = false}',
'{["circuit-network"] = false}',
'{explosives = false}',
'{logistics = false}',
'{["logistics-2"] = false}',
]
researches.forEach(research => {
reSync.scriptOutput(research);
assert(isFactorioCommand("/c x = "+research));
});
assert(Object.keys(reSync.research).length == researches.length);
});
});
it("regularily polls and syncs research (configurable delay)", (done)=>{
let reSync = new researchSync({}, io, {
researchSyncPollInterval: 100,
});
let ioRecieved;
function io(str){
ioRecieved = true;
assert(isFactorioCommand(str), "pollResearch should run a command");
}
function waitForIo(){
if(!ioRecieved){
setTimeout(waitForIo,50);
} else {
done();
}
}
waitForIo();
});
});
});