Compiler support: fix issue with incorrect ttl value in config (#100)

This commit is contained in:
Pavel 2021-11-10 17:49:42 +03:00 committed by GitHub
parent aa21abe465
commit 6e0a8c011f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 52 additions and 12 deletions

14
package-lock.json generated
View File

@ -10,7 +10,7 @@
"license": "Apache-2.0", "license": "Apache-2.0",
"dependencies": { "dependencies": {
"@chainsafe/libp2p-noise": "4.0.0", "@chainsafe/libp2p-noise": "4.0.0",
"@fluencelabs/avm": "0.16.6", "@fluencelabs/avm": "0.16.7",
"async": "3.2.0", "async": "3.2.0",
"base64-js": "1.5.1", "base64-js": "1.5.1",
"bs58": "4.0.1", "bs58": "4.0.1",
@ -646,9 +646,9 @@
} }
}, },
"node_modules/@fluencelabs/avm": { "node_modules/@fluencelabs/avm": {
"version": "0.16.6", "version": "0.16.7",
"resolved": "https://registry.npmjs.org/@fluencelabs/avm/-/avm-0.16.6.tgz", "resolved": "https://registry.npmjs.org/@fluencelabs/avm/-/avm-0.16.7.tgz",
"integrity": "sha512-RDNXW/VYAXh+E7B7+S4pTTc/1IcvtlID2xyBs/3TDlxkjbVxM7+vMcFL6cJZOzZZl+3oAWXL3ibDhE5Elcq6ug==", "integrity": "sha512-tSbEBRdHTz6PCxLuzEWe3ayZQeDiuJu/Dw0qJmdpYe6eJf0jSwUnAnRaEOv2d0ILnzT1b4us9tCKOhac41YlLg==",
"dependencies": { "dependencies": {
"base64-js": "1.5.1" "base64-js": "1.5.1"
} }
@ -8689,9 +8689,9 @@
} }
}, },
"@fluencelabs/avm": { "@fluencelabs/avm": {
"version": "0.16.6", "version": "0.16.7",
"resolved": "https://registry.npmjs.org/@fluencelabs/avm/-/avm-0.16.6.tgz", "resolved": "https://registry.npmjs.org/@fluencelabs/avm/-/avm-0.16.7.tgz",
"integrity": "sha512-RDNXW/VYAXh+E7B7+S4pTTc/1IcvtlID2xyBs/3TDlxkjbVxM7+vMcFL6cJZOzZZl+3oAWXL3ibDhE5Elcq6ug==", "integrity": "sha512-tSbEBRdHTz6PCxLuzEWe3ayZQeDiuJu/Dw0qJmdpYe6eJf0jSwUnAnRaEOv2d0ILnzT1b4us9tCKOhac41YlLg==",
"requires": { "requires": {
"base64-js": "1.5.1" "base64-js": "1.5.1"
} }

View File

@ -20,8 +20,8 @@
"author": "Fluence Labs", "author": "Fluence Labs",
"license": "Apache-2.0", "license": "Apache-2.0",
"dependencies": { "dependencies": {
"@fluencelabs/avm": "0.16.7",
"@chainsafe/libp2p-noise": "4.0.0", "@chainsafe/libp2p-noise": "4.0.0",
"@fluencelabs/avm": "0.16.6",
"async": "3.2.0", "async": "3.2.0",
"base64-js": "1.5.1", "base64-js": "1.5.1",
"bs58": "4.0.1", "bs58": "4.0.1",

View File

@ -0,0 +1,36 @@
import each from 'jest-each';
import { Fluence, FluencePeer } from '../..';
import { forTests } from '../../internal/compilerSupport/v2';
const peer = new FluencePeer();
const cfg = { ttl: 1000 };
describe('Compiler support tests', () => {
each`
rawArgs | numArgs | expectedArgs | expectedConfig | isExpectedPeerDefault
${[]} | ${0} | ${[]} | ${undefined} | ${true}
${[cfg]} | ${0} | ${[]} | ${cfg} | ${true}
${[peer]} | ${0} | ${[]} | ${undefined} | ${false}
${[peer, cfg]} | ${0} | ${[]} | ${cfg} | ${false}
${['a']} | ${1} | ${['a']} | ${undefined} | ${true}
${['a', cfg]} | ${1} | ${['a']} | ${cfg} | ${true}
${[peer, 'a']} | ${1} | ${['a']} | ${undefined} | ${false}
${[peer, 'a', cfg]} | ${1} | ${['a']} | ${cfg} | ${false}
`.test(
//
'raw rawArgs: $rawArgs, numArgs: $numArgs. expected args: $expectedArgs, config: $expectedConfig, default peer?: $isExpectedPeerDefault',
async ({ rawArgs, numArgs, expectedArgs, expectedConfig, isExpectedPeerDefault }) => {
// arrange
const testFn = forTests.extractFunctionArgs;
// act
const { peer, config, args } = testFn(rawArgs, numArgs);
const isActualPeerDefault = Fluence.getPeer() === peer;
// assert
expect(config).toStrictEqual(expectedConfig);
expect(args).toStrictEqual(expectedArgs);
expect(isActualPeerDefault).toStrictEqual(isExpectedPeerDefault);
},
);
});

View File

@ -420,7 +420,7 @@ export class FluencePeer {
const result = runInterpreter(this.getStatus().peerId, this._interpreter, particle, prevData); const result = runInterpreter(this.getStatus().peerId, this._interpreter, particle, prevData);
// Do not continue if there was an error in particle interpretation // Do not continue if there was an error in particle interpretation
if (isInterpretationSuccessful(result)) { if (!isInterpretationSuccessful(result)) {
item.onStageChange({ stage: 'interpreterError', errorMessage: result.errorMessage }); item.onStageChange({ stage: 'interpreterError', errorMessage: result.errorMessage });
return; return;
} }
@ -575,7 +575,7 @@ export class FluencePeer {
} }
function isInterpretationSuccessful(result: InterpreterResult) { function isInterpretationSuccessful(result: InterpreterResult) {
return result.retCode !== 0 || result?.errorMessage?.length > 0; return result.retCode === 0;
} }
function serviceFnKey(serviceId: string, fnName: string) { function serviceFnKey(serviceId: string, fnName: string) {

View File

@ -460,11 +460,11 @@ const extractFunctionArgs = (
if (FluencePeer.isInstance(args[0])) { if (FluencePeer.isInstance(args[0])) {
peer = args[0]; peer = args[0];
structuredArgs = args.slice(1, numberOfExpectedArgs + 1); structuredArgs = args.slice(1, numberOfExpectedArgs + 1);
config = args[numberOfExpectedArgs + 2]; config = args[numberOfExpectedArgs + 1];
} else { } else {
peer = Fluence.getPeer(); peer = Fluence.getPeer();
structuredArgs = args.slice(0, numberOfExpectedArgs); structuredArgs = args.slice(0, numberOfExpectedArgs);
config = args[numberOfExpectedArgs + 1]; config = args[numberOfExpectedArgs];
} }
return { return {
@ -530,3 +530,7 @@ const extractRegisterServiceArgs = (
function throwForReq(req: CallServiceData, message: string) { function throwForReq(req: CallServiceData, message: string) {
throw new Error(`${message}, serviceId='${req.serviceId}' fnName='${req.fnName}' args='${req.args}'`); throw new Error(`${message}, serviceId='${req.serviceId}' fnName='${req.fnName}' args='${req.args}'`);
} }
export const forTests = {
extractFunctionArgs,
};