trying to reproduce dashboard bug

This commit is contained in:
folex 2021-11-23 15:29:47 +03:00
parent 7577170780
commit 187710b12e
3 changed files with 306 additions and 1 deletions

13
package-lock.json generated
View File

@ -29,6 +29,7 @@
"uuid": "8.3.0" "uuid": "8.3.0"
}, },
"devDependencies": { "devDependencies": {
"@fluencelabs/fluence-network-environment": "1.0.10",
"@types/jest": "^26.0.22", "@types/jest": "^26.0.22",
"jest": "^26.6.3", "jest": "^26.6.3",
"ts-jest": "^26.5.4", "ts-jest": "^26.5.4",
@ -653,6 +654,12 @@
"base64-js": "1.5.1" "base64-js": "1.5.1"
} }
}, },
"node_modules/@fluencelabs/fluence-network-environment": {
"version": "1.0.10",
"resolved": "https://registry.npmjs.org/@fluencelabs/fluence-network-environment/-/fluence-network-environment-1.0.10.tgz",
"integrity": "sha512-aaWZDDFIIasSTgdFdw1KEz+boZMSn7pXffUENZNLX4DrP11rC3AEX4c8GnIJQbWqGsouOFZOPna2DSG6o2rLNQ==",
"dev": true
},
"node_modules/@istanbuljs/load-nyc-config": { "node_modules/@istanbuljs/load-nyc-config": {
"version": "1.1.0", "version": "1.1.0",
"resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz",
@ -8694,6 +8701,12 @@
"base64-js": "1.5.1" "base64-js": "1.5.1"
} }
}, },
"@fluencelabs/fluence-network-environment": {
"version": "1.0.10",
"resolved": "https://registry.npmjs.org/@fluencelabs/fluence-network-environment/-/fluence-network-environment-1.0.10.tgz",
"integrity": "sha512-aaWZDDFIIasSTgdFdw1KEz+boZMSn7pXffUENZNLX4DrP11rC3AEX4c8GnIJQbWqGsouOFZOPna2DSG6o2rLNQ==",
"dev": true
},
"@istanbuljs/load-nyc-config": { "@istanbuljs/load-nyc-config": {
"version": "1.1.0", "version": "1.1.0",
"resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz",

View File

@ -44,6 +44,7 @@
"jest": "^26.6.3", "jest": "^26.6.3",
"ts-jest": "^26.5.4", "ts-jest": "^26.5.4",
"typedoc": "^0.21.9", "typedoc": "^0.21.9",
"typescript": "^4.0.0" "typescript": "^4.0.0",
"@fluencelabs/fluence-network-environment": "1.0.10"
} }
} }

View File

@ -5,6 +5,8 @@ import { checkConnection, doNothing, handleTimeout } from '../../internal/utils'
import { Particle } from '../../internal/Particle'; import { Particle } from '../../internal/Particle';
import { registerHandlersHelper } from '../util'; import { registerHandlersHelper } from '../util';
import { krasnodar } from "@fluencelabs/fluence-network-environment";
const anotherPeer = new FluencePeer(); const anotherPeer = new FluencePeer();
describe('Typescript usage suite', () => { describe('Typescript usage suite', () => {
@ -458,6 +460,295 @@ describe('Typescript usage suite', () => {
'Particle is expected to be sent to only the single peer (relay which client is connected to)', 'Particle is expected to be sent to only the single peer (relay which client is connected to)',
); );
}); });
it('Fold: return variable in callback', async () => {
// arrange
const peer = new FluencePeer();
await peer.start({ connectTo: krasnodar[0] });
const promise = new Promise((resolve, reject) => {
const script = `
(seq
(seq
(seq
(call %init_peer_id% ("getDataSrv" "-relay-") [] -relay-)
(call %init_peer_id% ("getDataSrv" "outer") [] outer)
)
(call -relay- ("op" "noop") [])
)
(seq
(call -relay- ("kad" "neighborhood") [-relay-] neighbors)
(fold neighbors n
(par
(seq
(seq
(call -relay- ("op" "noop") [])
(call n ("kad" "neighborhood") [n [] []] neighbors2)
)
(par
(seq
(call -relay- ("op" "noop") [])
(call %init_peer_id% ("op" "return") [neighbors2])
)
(null)
)
)
(next n)
)
)
)
)
`;
const particle = Particle.createNew(script);
let outer = ["1", "2", "3", "4", "5"];
let returns = 0;
registerHandlersHelper(peer, particle, {
getDataSrv: {
"-relay-": _ => {
return peer.getStatus().relayPeerId;
},
"outer": _ => {
return outer;
}
},
op: {
return: (args) => {
console.log("got op return: ", JSON.stringify(args));
returns += 1;
// if (returns == 5) {
// resolve(undefined);
// }
}
}
});
peer.internals.initiateParticle(particle, handleTimeout(reject));
});
await promise;
await peer.stop();
});
it('Fold: incompatible results bug', async () => {
// arrange
const peer = new FluencePeer();
await peer.start({ connectTo: krasnodar[0] });
const promise = new Promise((resolve, reject) => {
const script = `
(xor
(seq
(seq
(call %init_peer_id% ("getDataSrv" "-relay-") [] -relay-)
(call %init_peer_id% ("getDataSrv" "clientId") [] clientId)
)
(xor
(par
(seq
(call -relay- ("kad" "neighborhood") [clientId [] []] neighbors)
(call %init_peer_id% ("op" "noop") [])
)
(fold neighbors n
(par
(seq
(call -relay- ("op" "noop") [])
(xor
(seq
(seq
(call n ("kad" "neighborhood") [n [] []] neighbors2)
(par
(seq
(call -relay- ("op" "noop") [])
(xor
(call %init_peer_id% ("callbackSrv" "logNeighs") [neighbors2])
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 1])
)
)
(null)
)
)
(fold neighbors2 n2
(seq
(seq
(seq
(call -relay- ("op" "noop") [])
(xor
(seq
(seq
(seq
(seq
(seq
(call n2 ("peer" "identify") [] ident)
(call n2 ("dist" "list_blueprints") [] blueprints)
)
(call n2 ("dist" "list_modules") [] modules)
)
(call n2 ("srv" "list") [] services)
)
(call -relay- ("op" "noop") [])
)
(xor
(call %init_peer_id% ("callbackSrv" "collectPeerInfo") [n2 ident services blueprints modules])
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 2])
)
)
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 3])
)
)
(call -relay- ("op" "noop") [])
)
(next n2)
)
)
)
(seq
(call -relay- ("op" "noop") [])
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 4])
)
)
)
(next n)
)
)
)
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 5])
)
)
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 6])
)
`;
const particle = Particle.createNew(script);
let outer = ["1", "2", "3", "4", "5"];
let returns = 0;
registerHandlersHelper(peer, particle, {
getDataSrv: {
"-relay-": _ => {
return peer.getStatus().relayPeerId;
},
"clientId": _ => {
return peer.getStatus().peerId;
},
"outer": _ => {
return outer;
}
},
op: {
return: (args) => {
console.log("got op return: ", JSON.stringify(args));
returns += 1;
// if (returns == 5) {
// resolve(undefined);
// }
}
}
});
peer.internals.initiateParticle(particle, handleTimeout(reject));
});
await promise;
await peer.stop();
});
it('Fold: dashboard', async () => {
// arrange
const peer = new FluencePeer();
await peer.start({ connectTo: krasnodar[0] });
const promise = new Promise((resolve, reject) => {
const script = `
(xor
(seq
(seq
(call %init_peer_id% ("getDataSrv" "-relay-") [] -relay-)
(call %init_peer_id% ("getDataSrv" "clientId") [] clientId)
)
(xor
(par
(seq
(call -relay- ("kad" "neighborhood") [clientId [] []] neighbors)
(call %init_peer_id% ("op" "noop") [])
)
(fold neighbors n
(par
(seq
(call -relay- ("op" "noop") [])
(xor
(seq
(seq
(call n ("kad" "neighborhood") [n [] []] neighbors2)
(par
(seq
(call -relay- ("op" "noop") [])
(xor
(call %init_peer_id% ("callbackSrv" "logNeighs") [neighbors2])
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 1])
)
)
(null)
)
)
(null)
)
(seq
(call -relay- ("op" "noop") [])
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 4])
)
)
)
(next n)
)
)
)
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 5])
)
)
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 6])
)
`;
const particle = Particle.createNew(script);
let outer = ["1", "2", "3", "4", "5"];
let returns = 0;
registerHandlersHelper(peer, particle, {
getDataSrv: {
"-relay-": _ => {
return peer.getStatus().relayPeerId;
},
"clientId": _ => {
return peer.getStatus().peerId;
},
"outer": _ => {
return outer;
}
},
op: {
return: (args) => {
console.log("got op return: ", JSON.stringify(args));
returns += 1;
// if (returns == 5) {
// resolve(undefined);
// }
}
},
"callbackSrv": {
"collectPeerInfo": _ => { console.log("collectPeerInfo") },
"logNeighs": args => { console.log("logNeighs", JSON.stringify(args)) }
},
"errorHandlingSrv": { "error": args => { console.log("errorHandlingSrv", JSON.stringify(args)) } }
});
peer.internals.initiateParticle(particle, handleTimeout(reject));
});
await promise;
await peer.stop();
});
}); });
async function callIncorrectService(peer: FluencePeer): Promise<string[]> { async function callIncorrectService(peer: FluencePeer): Promise<string[]> {