-
Notifications
You must be signed in to change notification settings - Fork 0
/
relaytesters.js
71 lines (58 loc) · 2.31 KB
/
relaytesters.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
const prompts = require('prompts');
const axios = require('axios');
const fs = require('fs/promises');
const pocketJS = require('@pokt-network/pocket-js')
const {Pocket, Configuration, HttpRpcProvider} = pocketJS;
const {ChainType} = require('./rpcdata/chains')
const promptQuestions = [
{
type: 'text',
name: 'pocket_rpc_endpoint',
message: 'What is your pocket rpc endpoint? (Grab from Portal)',
initial: '',
clearFirst: true,
},
{
type: 'list',
name: 'node_addresses',
message: 'Enter your node addresses, example: address 1, address 2:',
initial: '',
separator: ','
},
];
function getKeyByValue(object, value) {
return Object.keys(object).find(key => object[key] === value);
}
async function testNodes() {
const {pocket_rpc_endpoint, node_addresses} = await prompts(promptQuestions);
const dispatch = new URL(pocket_rpc_endpoint);
const rpcProvider = new HttpRpcProvider(dispatch);
const configuration = new Configuration(5, 1000, 0, 40000);
const pocketInstance = new Pocket([dispatch], rpcProvider, configuration);
for (const nodeAddress of node_addresses) {
const {node} = await pocketInstance.rpc().query.getNode(nodeAddress);
const {chains, serviceURL} = node;
const {href} = serviceURL;
const asyncCalls = chains.map(async id => {
const payload = JSON.parse((await fs.readFile(`./rpcdata/${id}.json`, 'utf-8')).replace(/(\r\n|\n|\r)/gm, ""));
payload.payload.data = JSON.stringify(payload.payload.data);
return axios.post(`${href}v1/client/sim`, payload).catch((e) => {
})
});
const results = await Promise.all(asyncCalls);
console.log(`Testing out Node: ${nodeAddress}`);
console.log(`Detected node service url as: ${href}`);
results.forEach((result, index) => {
const networkName = getKeyByValue(ChainType, chains[index]).replace("_", " ")
console.log(`${networkName}: ${(result && result.status && result.status == 200) ? 'Successfully relayed' : 'Failed to relay'}`)
});
console.log();
console.log();
}
}
testNodes().then(() => {
console.log("Program finish");
}).catch((e) => {
console.log(e);
console.log("Something went wrong");
})