mirror of
https://github.com/fluencelabs/aqua-playground
synced 2025-06-14 06:11:29 +00:00
test via
This commit is contained in:
23
aqua/examples/via.aqua
Normal file
23
aqua/examples/via.aqua
Normal file
@ -0,0 +1,23 @@
|
||||
import "@fluencelabs/aqua-lib/builtin.aqua"
|
||||
|
||||
service CustomId("cid"):
|
||||
id(s: string) -> string
|
||||
|
||||
func viaArr(node_id: string, viaAr: []string) -> Info:
|
||||
on node_id via viaAr:
|
||||
p <- Peer.identify()
|
||||
<- p
|
||||
|
||||
|
||||
func viaStream(node_id: string, viaStr: []string) -> Info:
|
||||
str: *string
|
||||
for v <- viaStr:
|
||||
str <- CustomId.id(v)
|
||||
on node_id via str:
|
||||
p <- Peer.identify()
|
||||
<- p
|
||||
|
||||
func viaOpt(relay: string, node_id: string, viaOpt: ?string) -> Info:
|
||||
on node_id via viaOpt:
|
||||
p <- Peer.identify()
|
||||
<- p
|
107
src/compiled/examples/foldJoin.ts
Normal file
107
src/compiled/examples/foldJoin.ts
Normal file
@ -0,0 +1,107 @@
|
||||
/**
|
||||
*
|
||||
* This file is auto-generated. Do not edit manually: changes may be erased.
|
||||
* Generated by Aqua compiler: https://github.com/fluencelabs/aqua/.
|
||||
* If you find any bugs, please write an issue on GitHub: https://github.com/fluencelabs/aqua/issues
|
||||
* Aqua version: 0.1.4-SNAPSHOT
|
||||
*
|
||||
*/
|
||||
import { FluenceClient, PeerIdB58 } from '@fluencelabs/fluence';
|
||||
import { RequestFlowBuilder } from '@fluencelabs/fluence/dist/api.unstable';
|
||||
import { RequestFlow } from '@fluencelabs/fluence/dist/internal/RequestFlow';
|
||||
|
||||
|
||||
|
||||
export async function getTwoResults(client: FluenceClient, relay: string): Promise<number[]> {
|
||||
let request: RequestFlow;
|
||||
const promise = new Promise<number[]>((resolve, reject) => {
|
||||
request = new RequestFlowBuilder()
|
||||
.disableInjections()
|
||||
.withRawScript(
|
||||
`
|
||||
(xor
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(call %init_peer_id% ("getDataSrv" "-relay-") [] -relay-)
|
||||
(call %init_peer_id% ("getDataSrv" "relay") [] relay)
|
||||
)
|
||||
(call -relay- ("op" "identity") [])
|
||||
)
|
||||
(xor
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(call relay ("op" "string_to_b58") [%init_peer_id%] k)
|
||||
(call relay ("kad" "neighborhood") [k false] nodes)
|
||||
)
|
||||
(fold nodes n
|
||||
(par
|
||||
(xor
|
||||
(call n ("peer" "timestamp_sec") [] $res)
|
||||
(null)
|
||||
)
|
||||
(next n)
|
||||
)
|
||||
)
|
||||
)
|
||||
(call relay ("op" "identity") [$res.$.[0]!])
|
||||
)
|
||||
(call relay ("op" "identity") [$res.$.[1]!])
|
||||
)
|
||||
(call relay ("op" "identity") [$res.$.[2]!])
|
||||
)
|
||||
(seq
|
||||
(seq
|
||||
(call -relay- ("op" "identity") [])
|
||||
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 1])
|
||||
)
|
||||
(call -relay- ("op" "identity") [])
|
||||
)
|
||||
)
|
||||
)
|
||||
(call -relay- ("op" "identity") [])
|
||||
)
|
||||
(xor
|
||||
(call %init_peer_id% ("callbackSrv" "response") [$res])
|
||||
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 2])
|
||||
)
|
||||
)
|
||||
(seq
|
||||
(call -relay- ("op" "identity") [])
|
||||
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 3])
|
||||
)
|
||||
)
|
||||
|
||||
`,
|
||||
)
|
||||
.configHandler((h) => {
|
||||
h.on('getDataSrv', '-relay-', () => {
|
||||
return client.relayPeerId!;
|
||||
});
|
||||
h.on('getDataSrv', 'relay', () => {return relay;});
|
||||
h.onEvent('callbackSrv', 'response', (args) => {
|
||||
const [res] = args;
|
||||
resolve(res);
|
||||
});
|
||||
|
||||
h.onEvent('errorHandlingSrv', 'error', (args) => {
|
||||
// assuming error is the single argument
|
||||
const [err] = args;
|
||||
reject(err);
|
||||
});
|
||||
})
|
||||
.handleScriptError(reject)
|
||||
.handleTimeout(() => {
|
||||
reject('Request timed out for getTwoResults');
|
||||
})
|
||||
.build();
|
||||
});
|
||||
await client.initiateFlow(request!);
|
||||
return promise;
|
||||
}
|
||||
|
77
src/compiled/examples/option.ts
Normal file
77
src/compiled/examples/option.ts
Normal file
@ -0,0 +1,77 @@
|
||||
/**
|
||||
*
|
||||
* This file is auto-generated. Do not edit manually: changes may be erased.
|
||||
* Generated by Aqua compiler: https://github.com/fluencelabs/aqua/.
|
||||
* If you find any bugs, please write an issue on GitHub: https://github.com/fluencelabs/aqua/issues
|
||||
* Aqua version: 0.1.4-SNAPSHOT
|
||||
*
|
||||
*/
|
||||
import { FluenceClient, PeerIdB58 } from '@fluencelabs/fluence';
|
||||
import { RequestFlowBuilder } from '@fluencelabs/fluence/dist/api.unstable';
|
||||
import { RequestFlow } from '@fluencelabs/fluence/dist/internal/RequestFlow';
|
||||
|
||||
|
||||
|
||||
export async function useOptional(client: FluenceClient, opt: string | null): Promise<string> {
|
||||
let request: RequestFlow;
|
||||
const promise = new Promise<string>((resolve, reject) => {
|
||||
request = new RequestFlowBuilder()
|
||||
.disableInjections()
|
||||
.withRawScript(
|
||||
`
|
||||
(xor
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(call %init_peer_id% ("getDataSrv" "-relay-") [] -relay-)
|
||||
(call %init_peer_id% ("getDataSrv" "opt") [] opt)
|
||||
)
|
||||
(call %init_peer_id% ("test2" "getStr") [opt] res)
|
||||
)
|
||||
(fold opt i
|
||||
(seq
|
||||
(call %init_peer_id% ("test2" "getStr2") [i])
|
||||
(next i)
|
||||
)
|
||||
)
|
||||
)
|
||||
(xor
|
||||
(call %init_peer_id% ("callbackSrv" "response") [res.$.[0]!])
|
||||
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 1])
|
||||
)
|
||||
)
|
||||
(seq
|
||||
(call -relay- ("op" "identity") [])
|
||||
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 2])
|
||||
)
|
||||
)
|
||||
|
||||
`,
|
||||
)
|
||||
.configHandler((h) => {
|
||||
h.on('getDataSrv', '-relay-', () => {
|
||||
return client.relayPeerId!;
|
||||
});
|
||||
h.on('getDataSrv', 'opt', () => {return opt === null ? [] : [opt];});
|
||||
h.onEvent('callbackSrv', 'response', (args) => {
|
||||
const [res] = args;
|
||||
resolve(res);
|
||||
});
|
||||
|
||||
h.onEvent('errorHandlingSrv', 'error', (args) => {
|
||||
// assuming error is the single argument
|
||||
const [err] = args;
|
||||
reject(err);
|
||||
});
|
||||
})
|
||||
.handleScriptError(reject)
|
||||
.handleTimeout(() => {
|
||||
reject('Request timed out for useOptional');
|
||||
})
|
||||
.build();
|
||||
});
|
||||
await client.initiateFlow(request!);
|
||||
return promise;
|
||||
}
|
||||
|
324
src/compiled/examples/via.ts
Normal file
324
src/compiled/examples/via.ts
Normal file
@ -0,0 +1,324 @@
|
||||
/**
|
||||
*
|
||||
* This file is auto-generated. Do not edit manually: changes may be erased.
|
||||
* Generated by Aqua compiler: https://github.com/fluencelabs/aqua/.
|
||||
* If you find any bugs, please write an issue on GitHub: https://github.com/fluencelabs/aqua/issues
|
||||
* Aqua version: 0.1.4-SNAPSHOT
|
||||
*
|
||||
*/
|
||||
import { FluenceClient, PeerIdB58 } from '@fluencelabs/fluence';
|
||||
import { RequestFlowBuilder } from '@fluencelabs/fluence/dist/api.unstable';
|
||||
import { RequestFlow } from '@fluencelabs/fluence/dist/internal/RequestFlow';
|
||||
|
||||
|
||||
|
||||
export async function viaArr(client: FluenceClient, node_id: string, viaAr: string[]): Promise<{external_addresses:string[]}> {
|
||||
let request: RequestFlow;
|
||||
const promise = new Promise<{external_addresses:string[]}>((resolve, reject) => {
|
||||
request = new RequestFlowBuilder()
|
||||
.disableInjections()
|
||||
.withRawScript(
|
||||
`
|
||||
(xor
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(call %init_peer_id% ("getDataSrv" "-relay-") [] -relay-)
|
||||
(call %init_peer_id% ("getDataSrv" "node_id") [] node_id)
|
||||
)
|
||||
(call %init_peer_id% ("getDataSrv" "viaAr") [] viaAr)
|
||||
)
|
||||
(call -relay- ("op" "identity") [])
|
||||
)
|
||||
(fold viaAr -via-peer-
|
||||
(seq
|
||||
(call -via-peer- ("op" "identity") [])
|
||||
(next -via-peer-)
|
||||
)
|
||||
)
|
||||
)
|
||||
(xor
|
||||
(call node_id ("peer" "identify") [] p)
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(fold viaAr -via-peer-
|
||||
(seq
|
||||
(call -via-peer- ("op" "identity") [])
|
||||
(next -via-peer-)
|
||||
)
|
||||
)
|
||||
(call -relay- ("op" "identity") [])
|
||||
)
|
||||
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 1])
|
||||
)
|
||||
(call -relay- ("op" "identity") [])
|
||||
)
|
||||
)
|
||||
)
|
||||
(fold viaAr -via-peer-
|
||||
(seq
|
||||
(call -via-peer- ("op" "identity") [])
|
||||
(next -via-peer-)
|
||||
)
|
||||
)
|
||||
)
|
||||
(call -relay- ("op" "identity") [])
|
||||
)
|
||||
(xor
|
||||
(call %init_peer_id% ("callbackSrv" "response") [p])
|
||||
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 2])
|
||||
)
|
||||
)
|
||||
(seq
|
||||
(call -relay- ("op" "identity") [])
|
||||
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 3])
|
||||
)
|
||||
)
|
||||
|
||||
`,
|
||||
)
|
||||
.configHandler((h) => {
|
||||
h.on('getDataSrv', '-relay-', () => {
|
||||
return client.relayPeerId!;
|
||||
});
|
||||
h.on('getDataSrv', 'node_id', () => {return node_id;});
|
||||
h.on('getDataSrv', 'viaAr', () => {return viaAr;});
|
||||
h.onEvent('callbackSrv', 'response', (args) => {
|
||||
const [res] = args;
|
||||
resolve(res);
|
||||
});
|
||||
|
||||
h.onEvent('errorHandlingSrv', 'error', (args) => {
|
||||
// assuming error is the single argument
|
||||
const [err] = args;
|
||||
reject(err);
|
||||
});
|
||||
})
|
||||
.handleScriptError(reject)
|
||||
.handleTimeout(() => {
|
||||
reject('Request timed out for viaArr');
|
||||
})
|
||||
.build();
|
||||
});
|
||||
await client.initiateFlow(request!);
|
||||
return promise;
|
||||
}
|
||||
|
||||
|
||||
|
||||
export async function viaStream(client: FluenceClient, node_id: string, viaStr: string[]): Promise<{external_addresses:string[]}> {
|
||||
let request: RequestFlow;
|
||||
const promise = new Promise<{external_addresses:string[]}>((resolve, reject) => {
|
||||
request = new RequestFlowBuilder()
|
||||
.disableInjections()
|
||||
.withRawScript(
|
||||
`
|
||||
(xor
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(call %init_peer_id% ("getDataSrv" "-relay-") [] -relay-)
|
||||
(call %init_peer_id% ("getDataSrv" "node_id") [] node_id)
|
||||
)
|
||||
(call %init_peer_id% ("getDataSrv" "viaStr") [] viaStr)
|
||||
)
|
||||
(fold viaStr v
|
||||
(seq
|
||||
(call %init_peer_id% ("cid" "id") [v] $str)
|
||||
(next v)
|
||||
)
|
||||
)
|
||||
)
|
||||
(call -relay- ("op" "identity") [])
|
||||
)
|
||||
(fold $str -via-peer-
|
||||
(seq
|
||||
(call -via-peer- ("op" "identity") [])
|
||||
(next -via-peer-)
|
||||
)
|
||||
)
|
||||
)
|
||||
(xor
|
||||
(call node_id ("peer" "identify") [] p)
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(fold $str -via-peer-
|
||||
(seq
|
||||
(call -via-peer- ("op" "identity") [])
|
||||
(next -via-peer-)
|
||||
)
|
||||
)
|
||||
(call -relay- ("op" "identity") [])
|
||||
)
|
||||
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 1])
|
||||
)
|
||||
(call -relay- ("op" "identity") [])
|
||||
)
|
||||
)
|
||||
)
|
||||
(fold $str -via-peer-
|
||||
(seq
|
||||
(call -via-peer- ("op" "identity") [])
|
||||
(next -via-peer-)
|
||||
)
|
||||
)
|
||||
)
|
||||
(call -relay- ("op" "identity") [])
|
||||
)
|
||||
(xor
|
||||
(call %init_peer_id% ("callbackSrv" "response") [p])
|
||||
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 2])
|
||||
)
|
||||
)
|
||||
(seq
|
||||
(call -relay- ("op" "identity") [])
|
||||
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 3])
|
||||
)
|
||||
)
|
||||
|
||||
`,
|
||||
)
|
||||
.configHandler((h) => {
|
||||
h.on('getDataSrv', '-relay-', () => {
|
||||
return client.relayPeerId!;
|
||||
});
|
||||
h.on('getDataSrv', 'node_id', () => {return node_id;});
|
||||
h.on('getDataSrv', 'viaStr', () => {return viaStr;});
|
||||
h.onEvent('callbackSrv', 'response', (args) => {
|
||||
const [res] = args;
|
||||
resolve(res);
|
||||
});
|
||||
|
||||
h.onEvent('errorHandlingSrv', 'error', (args) => {
|
||||
// assuming error is the single argument
|
||||
const [err] = args;
|
||||
reject(err);
|
||||
});
|
||||
})
|
||||
.handleScriptError(reject)
|
||||
.handleTimeout(() => {
|
||||
reject('Request timed out for viaStream');
|
||||
})
|
||||
.build();
|
||||
});
|
||||
await client.initiateFlow(request!);
|
||||
return promise;
|
||||
}
|
||||
|
||||
|
||||
|
||||
export async function viaOpt(client: FluenceClient, relay: string, node_id: string, viaOpt: string | null): Promise<{external_addresses:string[]}> {
|
||||
let request: RequestFlow;
|
||||
const promise = new Promise<{external_addresses:string[]}>((resolve, reject) => {
|
||||
request = new RequestFlowBuilder()
|
||||
.disableInjections()
|
||||
.withRawScript(
|
||||
`
|
||||
(xor
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(call %init_peer_id% ("getDataSrv" "-relay-") [] -relay-)
|
||||
(call %init_peer_id% ("getDataSrv" "relay") [] relay)
|
||||
)
|
||||
(call %init_peer_id% ("getDataSrv" "node_id") [] node_id)
|
||||
)
|
||||
(call %init_peer_id% ("getDataSrv" "viaOpt") [] viaOpt)
|
||||
)
|
||||
(call -relay- ("op" "identity") [])
|
||||
)
|
||||
(fold viaOpt -via-peer-
|
||||
(seq
|
||||
(call -via-peer- ("op" "identity") [])
|
||||
(next -via-peer-)
|
||||
)
|
||||
)
|
||||
)
|
||||
(xor
|
||||
(call node_id ("peer" "identify") [] p)
|
||||
(seq
|
||||
(seq
|
||||
(seq
|
||||
(fold viaOpt -via-peer-
|
||||
(seq
|
||||
(call -via-peer- ("op" "identity") [])
|
||||
(next -via-peer-)
|
||||
)
|
||||
)
|
||||
(call -relay- ("op" "identity") [])
|
||||
)
|
||||
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 1])
|
||||
)
|
||||
(call -relay- ("op" "identity") [])
|
||||
)
|
||||
)
|
||||
)
|
||||
(fold viaOpt -via-peer-
|
||||
(seq
|
||||
(call -via-peer- ("op" "identity") [])
|
||||
(next -via-peer-)
|
||||
)
|
||||
)
|
||||
)
|
||||
(call -relay- ("op" "identity") [])
|
||||
)
|
||||
(xor
|
||||
(call %init_peer_id% ("callbackSrv" "response") [p])
|
||||
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 2])
|
||||
)
|
||||
)
|
||||
(seq
|
||||
(call -relay- ("op" "identity") [])
|
||||
(call %init_peer_id% ("errorHandlingSrv" "error") [%last_error% 3])
|
||||
)
|
||||
)
|
||||
|
||||
`,
|
||||
)
|
||||
.configHandler((h) => {
|
||||
h.on('getDataSrv', '-relay-', () => {
|
||||
return client.relayPeerId!;
|
||||
});
|
||||
h.on('getDataSrv', 'relay', () => {return relay;});
|
||||
h.on('getDataSrv', 'node_id', () => {return node_id;});
|
||||
h.on('getDataSrv', 'viaOpt', () => {return viaOpt === null ? [] : [viaOpt];});
|
||||
h.onEvent('callbackSrv', 'response', (args) => {
|
||||
const [res] = args;
|
||||
resolve(res);
|
||||
});
|
||||
|
||||
h.onEvent('errorHandlingSrv', 'error', (args) => {
|
||||
// assuming error is the single argument
|
||||
const [err] = args;
|
||||
reject(err);
|
||||
});
|
||||
})
|
||||
.handleScriptError(reject)
|
||||
.handleTimeout(() => {
|
||||
reject('Request timed out for viaOpt');
|
||||
})
|
||||
.build();
|
||||
});
|
||||
await client.initiateFlow(request!);
|
||||
return promise;
|
||||
}
|
||||
|
17
src/examples/viaCall.ts
Normal file
17
src/examples/viaCall.ts
Normal file
@ -0,0 +1,17 @@
|
||||
import {FluenceClient, registerServiceFunction} from "@fluencelabs/fluence";
|
||||
import {krasnodar} from "@fluencelabs/fluence-network-environment";
|
||||
import {viaArr, viaOpt, viaStream} from "../compiled/examples/via";
|
||||
|
||||
export async function viaCall(client: FluenceClient): Promise<string[][]> {
|
||||
|
||||
registerServiceFunction(client, "cid", "id", (args: any[], _) => {
|
||||
return args[0]
|
||||
})
|
||||
|
||||
let res = await viaArr(client, krasnodar[3].peerId, [krasnodar[2].peerId, krasnodar[1].peerId])
|
||||
let res2 = await viaOpt(client, client.relayPeerId!, krasnodar[3].peerId, krasnodar[2].peerId)
|
||||
let res3 = await viaOpt(client, client.relayPeerId!, krasnodar[3].peerId, krasnodar[2].peerId || null)
|
||||
let res4 = await viaStream(client, krasnodar[3].peerId, [krasnodar[2].peerId, krasnodar[1].peerId])
|
||||
|
||||
return [res.external_addresses, res2.external_addresses, res3.external_addresses, res4.external_addresses]
|
||||
}
|
@ -1,12 +1,12 @@
|
||||
#!/usr/bin/env node
|
||||
|
||||
import {createClient, registerServiceFunction} from "@fluencelabs/fluence";
|
||||
import {testNet} from "@fluencelabs/fluence-network-environment";
|
||||
import {krasnodar} from "@fluencelabs/fluence-network-environment";
|
||||
import {helloWorld} from "./compiled/examples/helloWorld";
|
||||
|
||||
const main = async () => {
|
||||
// each compiled aqua function require a connected client
|
||||
const client = await createClient(testNet[0]);
|
||||
const client = await createClient(krasnodar[0]);
|
||||
|
||||
// example to how register a local service
|
||||
// it could be used in aqua code as follows
|
||||
|
@ -16,6 +16,7 @@ import {streamCall} from "./examples/streamCall";
|
||||
import {topologyCall} from "./examples/topologyCall";
|
||||
import {foldJoinCall} from "./examples/foldJoinCall";
|
||||
import {useOptionalCall} from "./examples/useOptionalCall";
|
||||
import {viaCall} from "./examples/viaCall";
|
||||
let deepEqual = require('deep-equal')
|
||||
|
||||
function checkCall(name: string, expected: any, actual: any, callBackOnError: () => void) {
|
||||
@ -96,6 +97,9 @@ const main = async () => {
|
||||
// option.aqua
|
||||
let optionResult = await useOptionalCall(client)
|
||||
|
||||
// via.aqua
|
||||
let viaResult = await viaCall(client)
|
||||
|
||||
await client.disconnect();
|
||||
|
||||
let success = true;
|
||||
@ -129,6 +133,8 @@ const main = async () => {
|
||||
|
||||
checkCall("useOptional", optionResult, "hello", cb)
|
||||
|
||||
checkCallBy("via", viaResult, (res) => res.every( (val, i, arr) => deepEqual(val, arr[0]) ), cb)
|
||||
|
||||
if (success) {
|
||||
process.exit(0)
|
||||
} else {
|
||||
|
Reference in New Issue
Block a user