mirror of
https://github.com/fluencelabs/examples
synced 2025-04-26 03:02:15 +00:00
echo greeter
This commit is contained in:
parent
98adfe858f
commit
cf839b51d8
8
aqua-examples/echo-greeter/client-peer/.prettierrc.js
Normal file
8
aqua-examples/echo-greeter/client-peer/.prettierrc.js
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
module.exports = {
|
||||||
|
semi: true,
|
||||||
|
trailingComma: 'all',
|
||||||
|
singleQuote: true,
|
||||||
|
printWidth: 120,
|
||||||
|
tabWidth: 4,
|
||||||
|
useTabs: false,
|
||||||
|
};
|
5
aqua-examples/echo-greeter/client-peer/jest.config.js
Normal file
5
aqua-examples/echo-greeter/client-peer/jest.config.js
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
module.exports = {
|
||||||
|
preset: 'ts-jest',
|
||||||
|
testEnvironment: 'node',
|
||||||
|
testPathIgnorePatterns: ['dist'],
|
||||||
|
};
|
7452
aqua-examples/echo-greeter/client-peer/package-lock.json
generated
7452
aqua-examples/echo-greeter/client-peer/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -18,14 +18,11 @@
|
|||||||
"it-all": "^1.0.5"
|
"it-all": "^1.0.5"
|
||||||
},
|
},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"compile-aqua": "aqua -i ../aqua -o src/_aqua",
|
"prestart": "npm run compile-aqua",
|
||||||
"prebuild": "npm run compile-aqua",
|
"start": "node -r ts-node/register src/index.ts",
|
||||||
"build": "tsc",
|
"test": "jest",
|
||||||
"prestart:local": "npm run build",
|
"compile-aqua": "aqua --import . -i ../aqua/ -o ./src/_aqua",
|
||||||
"start:local": "node dist/src/index.js local",
|
"watch-aqua": "chokidar \"**/*.aqua\" -c \"npm run compile-aqua\""
|
||||||
"prestart:remote": "npm run build",
|
|
||||||
"start:remote": "node dist/src/index.js krasnodar",
|
|
||||||
"start": "npm run start:remote"
|
|
||||||
},
|
},
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
@ -42,8 +39,13 @@
|
|||||||
},
|
},
|
||||||
"homepage": "git+https://github.com/fluencelabs/examples/aqua-examples/echo-greeter#readme",
|
"homepage": "git+https://github.com/fluencelabs/examples/aqua-examples/echo-greeter#readme",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@fluencelabs/aqua": "^0.6.0-275",
|
"@fluencelabs/aqua": "^0.6.0-272",
|
||||||
"@fluencelabs/aqua-lib": "^0.4.0",
|
"@fluencelabs/aqua-lib": "^0.4.0",
|
||||||
"typescript": "^4.5.5"
|
"chokidar-cli": "^3.0.0",
|
||||||
|
"ts-node": "^10.2.1",
|
||||||
|
"typescript": "^4.4.2",
|
||||||
|
"@types/jest": "^27.0.3",
|
||||||
|
"jest": "^27.4.0",
|
||||||
|
"ts-jest": "^27.0.7"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,34 @@
|
|||||||
|
import { main } from '../main';
|
||||||
|
|
||||||
|
describe('smoke test', () => {
|
||||||
|
it('should work', async () => {
|
||||||
|
console.log = jest.fn();
|
||||||
|
|
||||||
|
await main();
|
||||||
|
|
||||||
|
expect(console.log).toBeCalledTimes(6);
|
||||||
|
expect(console.log).toHaveBeenNthCalledWith(2, expect.stringMatching('echo result'), 'Jim,John,Jake,');
|
||||||
|
expect(console.log).toHaveBeenNthCalledWith(3, expect.stringMatching('greeting result'), 'Hi, Jim');
|
||||||
|
expect(console.log).toHaveBeenNthCalledWith(4, expect.stringMatching('seq result'), [
|
||||||
|
'Hi, Jim',
|
||||||
|
'Hi, John',
|
||||||
|
'Hi, Jake',
|
||||||
|
]);
|
||||||
|
expect(console.log).toHaveBeenNthCalledWith(5, expect.stringMatching('par result'), [
|
||||||
|
'Hi, Jim',
|
||||||
|
'Hi, Jim',
|
||||||
|
'Hi, John',
|
||||||
|
'Hi, John',
|
||||||
|
'Hi, Jake',
|
||||||
|
'Hi, Jake',
|
||||||
|
]);
|
||||||
|
expect(console.log).toHaveBeenNthCalledWith(6, expect.stringMatching('par improved signature result'), [
|
||||||
|
'Hi, Jim',
|
||||||
|
'Bye, Jim',
|
||||||
|
'Hi, John',
|
||||||
|
'Bye, John',
|
||||||
|
'Hi, Jake',
|
||||||
|
'Bye, Jake',
|
||||||
|
]);
|
||||||
|
});
|
||||||
|
});
|
@ -1,149 +1,4 @@
|
|||||||
/*
|
import { main } from './main';
|
||||||
* Copyright 2021 Fluence Labs Limited
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
import { setLogLevel, Fluence, FluencePeer } from "@fluencelabs/fluence";
|
|
||||||
import { krasnodar, Node } from "@fluencelabs/fluence-network-environment";
|
|
||||||
import {
|
|
||||||
echo,
|
|
||||||
greeting,
|
|
||||||
echo_greeting_seq,
|
|
||||||
echo_greeting_par,
|
|
||||||
echo_greeting_par_alternative,
|
|
||||||
echo_greeting_par_improved,
|
|
||||||
} from "./_aqua/echo_greeter";
|
|
||||||
|
|
||||||
interface EchoResult {
|
|
||||||
echo: string;
|
|
||||||
}
|
|
||||||
interface NodeServicePair {
|
|
||||||
node: string;
|
|
||||||
service_id: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
interface EchoService {
|
|
||||||
node: string;
|
|
||||||
service_id: string;
|
|
||||||
names: Array<string>;
|
|
||||||
}
|
|
||||||
|
|
||||||
interface GreetingService {
|
|
||||||
node: string;
|
|
||||||
service_id: string;
|
|
||||||
greet: boolean;
|
|
||||||
}
|
|
||||||
|
|
||||||
let greeting_topos: Array<NodeServicePair> = [
|
|
||||||
{
|
|
||||||
node: "12D3KooWFtf3rfCDAfWwt6oLZYZbDfn9Vn7bv7g6QjjQxUUEFVBt",
|
|
||||||
service_id: "5cf520ff-dd65-47d7-a51a-2bf08dfe2ede",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
node: "12D3KooWJd3HaMJ1rpLY1kQvcjRPEvnDwcXrH8mJvk7ypcZXqXGE",
|
|
||||||
service_id: "5a03906b-3217-40a2-93fb-7e83be735408",
|
|
||||||
},
|
|
||||||
];
|
|
||||||
let echo_topos: Array<NodeServicePair> = [
|
|
||||||
{
|
|
||||||
node: "12D3KooWFtf3rfCDAfWwt6oLZYZbDfn9Vn7bv7g6QjjQxUUEFVBt",
|
|
||||||
service_id: "fb5f7126-e1ee-4ecf-81e7-20804cb7203b",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
node: "12D3KooWJd3HaMJ1rpLY1kQvcjRPEvnDwcXrH8mJvk7ypcZXqXGE",
|
|
||||||
service_id: "893a6fb8-43b9-4b11-8786-93300bd68bc8",
|
|
||||||
},
|
|
||||||
];
|
|
||||||
let echo_service: EchoService = {
|
|
||||||
node: echo_topos[0].node,
|
|
||||||
service_id: echo_topos[0].service_id,
|
|
||||||
names: ["Jim", "John", "Jake"],
|
|
||||||
};
|
|
||||||
let greeting_services: Array<GreetingService> = [
|
|
||||||
{
|
|
||||||
node: greeting_topos[0].node,
|
|
||||||
service_id: greeting_topos[0].service_id,
|
|
||||||
greet: true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
node: greeting_topos[1].node,
|
|
||||||
service_id: greeting_topos[1].service_id,
|
|
||||||
greet: false,
|
|
||||||
},
|
|
||||||
];
|
|
||||||
|
|
||||||
let names: Array<string> = ["Jim", "John", "Jake"];
|
|
||||||
|
|
||||||
// let greeting_service =
|
|
||||||
|
|
||||||
async function main() {
|
|
||||||
// console.log("hello");
|
|
||||||
// setLogLevel('DEBUG');
|
|
||||||
|
|
||||||
await Fluence.start({ connectTo: krasnodar[2] });
|
|
||||||
console.log(
|
|
||||||
"created a fluence client %s with relay %s",
|
|
||||||
Fluence.getStatus().peerId,
|
|
||||||
Fluence.getStatus().relayPeerId
|
|
||||||
);
|
|
||||||
|
|
||||||
let echo_result = await echo(
|
|
||||||
names,
|
|
||||||
echo_topos[0].node,
|
|
||||||
echo_topos[0].service_id
|
|
||||||
);
|
|
||||||
|
|
||||||
let result = "";
|
|
||||||
|
|
||||||
for (let item of echo_result) {
|
|
||||||
result += item.echo + ",";
|
|
||||||
}
|
|
||||||
console.log("echo result : ", result);
|
|
||||||
|
|
||||||
let greeting_result = await greeting(
|
|
||||||
names[0],
|
|
||||||
true,
|
|
||||||
greeting_topos[0].node,
|
|
||||||
greeting_topos[0].service_id
|
|
||||||
);
|
|
||||||
console.log("greeting result : ", greeting_result);
|
|
||||||
|
|
||||||
// echo_greeting_par(greet: bool, echo_service: EchoServiceInput, greeting_services: []NodeServicePair) -> []string:
|
|
||||||
let seq_result = await echo_greeting_seq(
|
|
||||||
names,
|
|
||||||
true,
|
|
||||||
echo_topos[0].node,
|
|
||||||
echo_topos[0].service_id,
|
|
||||||
greeting_topos[0].service_id
|
|
||||||
);
|
|
||||||
console.log("seq result : ", seq_result);
|
|
||||||
|
|
||||||
let par_result = await echo_greeting_par(
|
|
||||||
true,
|
|
||||||
echo_service,
|
|
||||||
greeting_services
|
|
||||||
);
|
|
||||||
console.log("par result : ", par_result);
|
|
||||||
|
|
||||||
par_result = await echo_greeting_par_improved(
|
|
||||||
echo_service,
|
|
||||||
greeting_services
|
|
||||||
);
|
|
||||||
console.log("par improved signature result : ", par_result);
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
main()
|
main()
|
||||||
.then(() => process.exit(0))
|
.then(() => process.exit(0))
|
||||||
|
128
aqua-examples/echo-greeter/client-peer/src/main.ts
Normal file
128
aqua-examples/echo-greeter/client-peer/src/main.ts
Normal file
@ -0,0 +1,128 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2021 Fluence Labs Limited
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
import { setLogLevel, Fluence, FluencePeer } from '@fluencelabs/fluence';
|
||||||
|
import { krasnodar, Node } from '@fluencelabs/fluence-network-environment';
|
||||||
|
import {
|
||||||
|
echo,
|
||||||
|
greeting,
|
||||||
|
echo_greeting_seq,
|
||||||
|
echo_greeting_par,
|
||||||
|
echo_greeting_par_alternative,
|
||||||
|
echo_greeting_par_improved,
|
||||||
|
} from './_aqua/echo_greeter';
|
||||||
|
|
||||||
|
interface EchoResult {
|
||||||
|
echo: string;
|
||||||
|
}
|
||||||
|
interface NodeServicePair {
|
||||||
|
node: string;
|
||||||
|
service_id: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface EchoService {
|
||||||
|
node: string;
|
||||||
|
service_id: string;
|
||||||
|
names: Array<string>;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface GreetingService {
|
||||||
|
node: string;
|
||||||
|
service_id: string;
|
||||||
|
greet: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
|
let greeting_topos: Array<NodeServicePair> = [
|
||||||
|
{
|
||||||
|
node: '12D3KooWFtf3rfCDAfWwt6oLZYZbDfn9Vn7bv7g6QjjQxUUEFVBt',
|
||||||
|
service_id: '5cf520ff-dd65-47d7-a51a-2bf08dfe2ede',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
node: '12D3KooWJd3HaMJ1rpLY1kQvcjRPEvnDwcXrH8mJvk7ypcZXqXGE',
|
||||||
|
service_id: '5a03906b-3217-40a2-93fb-7e83be735408',
|
||||||
|
},
|
||||||
|
];
|
||||||
|
let echo_topos: Array<NodeServicePair> = [
|
||||||
|
{
|
||||||
|
node: '12D3KooWFtf3rfCDAfWwt6oLZYZbDfn9Vn7bv7g6QjjQxUUEFVBt',
|
||||||
|
service_id: 'fb5f7126-e1ee-4ecf-81e7-20804cb7203b',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
node: '12D3KooWJd3HaMJ1rpLY1kQvcjRPEvnDwcXrH8mJvk7ypcZXqXGE',
|
||||||
|
service_id: '893a6fb8-43b9-4b11-8786-93300bd68bc8',
|
||||||
|
},
|
||||||
|
];
|
||||||
|
let echo_service: EchoService = {
|
||||||
|
node: echo_topos[0].node,
|
||||||
|
service_id: echo_topos[0].service_id,
|
||||||
|
names: ['Jim', 'John', 'Jake'],
|
||||||
|
};
|
||||||
|
let greeting_services: Array<GreetingService> = [
|
||||||
|
{
|
||||||
|
node: greeting_topos[0].node,
|
||||||
|
service_id: greeting_topos[0].service_id,
|
||||||
|
greet: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
node: greeting_topos[1].node,
|
||||||
|
service_id: greeting_topos[1].service_id,
|
||||||
|
greet: false,
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
let names: Array<string> = ['Jim', 'John', 'Jake'];
|
||||||
|
|
||||||
|
export async function main() {
|
||||||
|
// console.log("hello");
|
||||||
|
// setLogLevel('DEBUG');
|
||||||
|
|
||||||
|
await Fluence.start({ connectTo: krasnodar[2] });
|
||||||
|
console.log(
|
||||||
|
'created a fluence client %s with relay %s',
|
||||||
|
Fluence.getStatus().peerId,
|
||||||
|
Fluence.getStatus().relayPeerId,
|
||||||
|
);
|
||||||
|
|
||||||
|
let echo_result = await echo(names, echo_topos[0].node, echo_topos[0].service_id);
|
||||||
|
|
||||||
|
let result = '';
|
||||||
|
|
||||||
|
for (let item of echo_result) {
|
||||||
|
result += item.echo + ',';
|
||||||
|
}
|
||||||
|
console.log('echo result : ', result);
|
||||||
|
|
||||||
|
let greeting_result = await greeting(names[0], true, greeting_topos[0].node, greeting_topos[0].service_id);
|
||||||
|
console.log('greeting result : ', greeting_result);
|
||||||
|
|
||||||
|
// echo_greeting_par(greet: bool, echo_service: EchoServiceInput, greeting_services: []NodeServicePair) -> []string:
|
||||||
|
let seq_result = await echo_greeting_seq(
|
||||||
|
names,
|
||||||
|
true,
|
||||||
|
echo_topos[0].node,
|
||||||
|
echo_topos[0].service_id,
|
||||||
|
greeting_topos[0].service_id,
|
||||||
|
);
|
||||||
|
console.log('seq result : ', seq_result);
|
||||||
|
|
||||||
|
let par_result = await echo_greeting_par(true, echo_service, greeting_services);
|
||||||
|
console.log('par result : ', par_result);
|
||||||
|
|
||||||
|
par_result = await echo_greeting_par_improved(echo_service, greeting_services);
|
||||||
|
console.log('par improved signature result : ', par_result);
|
||||||
|
|
||||||
|
await Fluence.stop();
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user