@cardano-sdk/e2e 0.16.6-patch.0 → 0.16.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.example +4 -6
- package/CHANGELOG.md +11 -9
- package/README.md +2 -18
- package/dist/cjs/environment.d.ts +1 -1
- package/dist/cjs/environment.d.ts.map +1 -1
- package/dist/cjs/environment.js +1 -15
- package/dist/cjs/environment.js.map +1 -1
- package/dist/cjs/factories.d.ts +0 -2
- package/dist/cjs/factories.d.ts.map +1 -1
- package/dist/cjs/factories.js +6 -12
- package/dist/cjs/factories.js.map +1 -1
- package/dist/cjs/index.d.ts +0 -1
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +0 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/scripts/is-local-network-ready.js +5 -28
- package/dist/cjs/scripts/is-local-network-ready.js.map +1 -1
- package/dist/cjs/tools/multi-delegation-data-gen/index.js +13 -3
- package/dist/cjs/tools/multi-delegation-data-gen/index.js.map +1 -1
- package/dist/cjs/tools/multi-delegation-data-gen/utils/config.d.ts +1 -0
- package/dist/cjs/tools/multi-delegation-data-gen/utils/config.d.ts.map +1 -1
- package/dist/cjs/tools/multi-delegation-data-gen/utils/config.js +12 -0
- package/dist/cjs/tools/multi-delegation-data-gen/utils/config.js.map +1 -1
- package/dist/cjs/tools/multi-delegation-data-gen/utils/utils.d.ts +2 -5
- package/dist/cjs/tools/multi-delegation-data-gen/utils/utils.d.ts.map +1 -1
- package/dist/cjs/tools/multi-delegation-data-gen/utils/utils.js +12 -49
- package/dist/cjs/tools/multi-delegation-data-gen/utils/utils.js.map +1 -1
- package/dist/cjs/tsconfig.tsbuildinfo +1 -1
- package/dist/cjs/util/util.d.ts +0 -1
- package/dist/cjs/util/util.d.ts.map +1 -1
- package/dist/cjs/util/util.js +2 -43
- package/dist/cjs/util/util.js.map +1 -1
- package/dist/esm/environment.d.ts +1 -1
- package/dist/esm/environment.d.ts.map +1 -1
- package/dist/esm/environment.js +1 -15
- package/dist/esm/environment.js.map +1 -1
- package/dist/esm/factories.d.ts +0 -2
- package/dist/esm/factories.d.ts.map +1 -1
- package/dist/esm/factories.js +6 -12
- package/dist/esm/factories.js.map +1 -1
- package/dist/esm/index.d.ts +0 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +0 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/scripts/is-local-network-ready.js +5 -5
- package/dist/esm/scripts/is-local-network-ready.js.map +1 -1
- package/dist/esm/tools/multi-delegation-data-gen/index.js +14 -4
- package/dist/esm/tools/multi-delegation-data-gen/index.js.map +1 -1
- package/dist/esm/tools/multi-delegation-data-gen/utils/config.d.ts +1 -0
- package/dist/esm/tools/multi-delegation-data-gen/utils/config.d.ts.map +1 -1
- package/dist/esm/tools/multi-delegation-data-gen/utils/config.js +12 -0
- package/dist/esm/tools/multi-delegation-data-gen/utils/config.js.map +1 -1
- package/dist/esm/tools/multi-delegation-data-gen/utils/utils.d.ts +2 -5
- package/dist/esm/tools/multi-delegation-data-gen/utils/utils.d.ts.map +1 -1
- package/dist/esm/tools/multi-delegation-data-gen/utils/utils.js +11 -45
- package/dist/esm/tools/multi-delegation-data-gen/utils/utils.js.map +1 -1
- package/dist/esm/tsconfig.tsbuildinfo +1 -1
- package/dist/esm/util/util.d.ts +0 -1
- package/dist/esm/util/util.d.ts.map +1 -1
- package/dist/esm/util/util.js +3 -20
- package/dist/esm/util/util.js.map +1 -1
- package/docker-compose.yml +3 -21
- package/local-network/scripts/mint-handles.sh +108 -6
- package/local-network/scripts/mint-tokens.sh +21 -2
- package/local-network/scripts/mnemonic_keys.sh +14 -0
- package/local-network/scripts/setup-wallets.sh +18 -0
- package/local-network/scripts/start.sh +1 -2
- package/package.json +22 -20
- package/src/environment.ts +1 -19
- package/src/factories.ts +5 -13
- package/src/index.ts +0 -1
- package/src/scripts/is-local-network-ready.ts +6 -8
- package/src/tools/multi-delegation-data-gen/example.json +1 -0
- package/src/tools/multi-delegation-data-gen/index.ts +18 -8
- package/src/tools/multi-delegation-data-gen/utils/config.ts +13 -0
- package/src/tools/multi-delegation-data-gen/utils/utils.ts +13 -110
- package/src/util/util.ts +2 -29
- package/test/k6/endpoints/asset/get-asset.test.js +15 -14
- package/test/k6/endpoints/asset/get-assets.test.js +269 -269
- package/test/k6/endpoints/chain-history/blocks/by-hashes.test.js +12 -11
- package/test/k6/endpoints/chain-history/txs/by-addresses.test.js +18 -15
- package/test/k6/endpoints/chain-history/txs/by-hashes.test.js +12 -11
- package/test/k6/endpoints/network-info/era-summaries.test.js +11 -10
- package/test/k6/endpoints/network-info/genesis-parameters.test.js +11 -10
- package/test/k6/endpoints/network-info/ledger-tip.test.js +11 -10
- package/test/k6/endpoints/network-info/lovelace-supply.test.js +11 -10
- package/test/k6/endpoints/network-info/protocol-parameters.test.js +11 -10
- package/test/k6/endpoints/network-info/stake.test.js +11 -10
- package/test/k6/endpoints/rewards/account-balance.test.js +12 -11
- package/test/k6/endpoints/stake-pool/stats.test.js +11 -10
- package/test/k6/endpoints/utxo/utxo-by-addresses.test.js +16 -11
- package/test/k6/scenarios/tx-submission.test.js +47 -46
- package/test/k6/scenarios/wallet-creation.test.js +127 -120
- package/test/k6/scenarios/wallet-restoration.test.js +264 -126
- package/test/long-running/cache-invalidation.test.ts +64 -13
- package/test/providers/HandleProvider.test.ts +39 -0
- package/test/wallet/PersonalWallet/handle.test.ts +38 -16
- package/test/web-extension/webpack.config.base.js +0 -4
- package/dist/cjs/FaucetProvider/index.d.ts +0 -3
- package/dist/cjs/FaucetProvider/index.d.ts.map +0 -1
- package/dist/cjs/FaucetProvider/index.js +0 -19
- package/dist/cjs/FaucetProvider/index.js.map +0 -1
- package/dist/cjs/FaucetProvider/providers/cardanoWalletFaucetProvider.d.ts +0 -15
- package/dist/cjs/FaucetProvider/providers/cardanoWalletFaucetProvider.d.ts.map +0 -1
- package/dist/cjs/FaucetProvider/providers/cardanoWalletFaucetProvider.js +0 -148
- package/dist/cjs/FaucetProvider/providers/cardanoWalletFaucetProvider.js.map +0 -1
- package/dist/cjs/FaucetProvider/types.d.ts +0 -22
- package/dist/cjs/FaucetProvider/types.d.ts.map +0 -1
- package/dist/cjs/FaucetProvider/types.js +0 -14
- package/dist/cjs/FaucetProvider/types.js.map +0 -1
- package/dist/esm/FaucetProvider/index.d.ts +0 -3
- package/dist/esm/FaucetProvider/index.d.ts.map +0 -1
- package/dist/esm/FaucetProvider/index.js +0 -3
- package/dist/esm/FaucetProvider/index.js.map +0 -1
- package/dist/esm/FaucetProvider/providers/cardanoWalletFaucetProvider.d.ts +0 -15
- package/dist/esm/FaucetProvider/providers/cardanoWalletFaucetProvider.d.ts.map +0 -1
- package/dist/esm/FaucetProvider/providers/cardanoWalletFaucetProvider.js +0 -141
- package/dist/esm/FaucetProvider/providers/cardanoWalletFaucetProvider.js.map +0 -1
- package/dist/esm/FaucetProvider/types.d.ts +0 -22
- package/dist/esm/FaucetProvider/types.d.ts.map +0 -1
- package/dist/esm/FaucetProvider/types.js +0 -10
- package/dist/esm/FaucetProvider/types.js.map +0 -1
- package/local-network/faucet/README.md +0 -12
- package/local-network/faucet/faucet-addresses.json +0 -45
- package/local-network/faucet/faucet-mnemonic.json +0 -6
- package/local-network/faucet/faucet-send-funds.json +0 -23
- package/local-network/scripts/is-faucet-ready.sh +0 -29
- package/src/FaucetProvider/index.ts +0 -2
- package/src/FaucetProvider/providers/cardanoWalletFaucetProvider.ts +0 -233
- package/src/FaucetProvider/types.ts +0 -94
|
@@ -5,9 +5,7 @@ import {
|
|
|
5
5
|
TaskResult,
|
|
6
6
|
TerminalProgressMonitor,
|
|
7
7
|
createDelegationWallet,
|
|
8
|
-
delegateToMultiplePools,
|
|
9
8
|
distributeStake,
|
|
10
|
-
generateStakeAddresses,
|
|
11
9
|
getOutputPathName,
|
|
12
10
|
loadConfiguration,
|
|
13
11
|
logState,
|
|
@@ -18,7 +16,8 @@ import {
|
|
|
18
16
|
} from './utils';
|
|
19
17
|
|
|
20
18
|
import { Cardano } from '@cardano-sdk/core';
|
|
21
|
-
import { PersonalWallet } from '@cardano-sdk/wallet';
|
|
19
|
+
import { DynamicChangeAddressResolver, PersonalWallet } from '@cardano-sdk/wallet';
|
|
20
|
+
import { roundRobinRandomImprove } from '@cardano-sdk/input-selection';
|
|
22
21
|
import { walletReady } from '../../';
|
|
23
22
|
import chalk from 'chalk';
|
|
24
23
|
|
|
@@ -69,11 +68,7 @@ const monitor = new TerminalProgressMonitor();
|
|
|
69
68
|
|
|
70
69
|
monitor.endTask('Delegation wallet ready.', TaskResult.Success);
|
|
71
70
|
|
|
72
|
-
const
|
|
73
|
-
|
|
74
|
-
await delegateToMultiplePools(delegationWallet, stakeAddresses, monitor);
|
|
75
|
-
|
|
76
|
-
await distributeStake(delegationWallet, config.startingFunds, config.stakeDistribution, stakeAddresses, monitor);
|
|
71
|
+
const portfolio = await distributeStake(delegationWallet, config.stakeDistribution, monitor);
|
|
77
72
|
|
|
78
73
|
monitor.startTask('Waiting for delegation to be updated on the wallet.');
|
|
79
74
|
await rewardAccountStatuses(delegationWallet.delegation.rewardAccounts$, [
|
|
@@ -82,6 +77,21 @@ const monitor = new TerminalProgressMonitor();
|
|
|
82
77
|
]);
|
|
83
78
|
monitor.endTask('Delegation updated.', TaskResult.Success);
|
|
84
79
|
|
|
80
|
+
if (config.changeAddressResolver === 'dynamic') {
|
|
81
|
+
monitor.logInfo(`Using dynamic change address resolution: Portfolio: ${JSON.stringify(portfolio)}`);
|
|
82
|
+
const selector = roundRobinRandomImprove({
|
|
83
|
+
changeAddressResolver: new DynamicChangeAddressResolver(
|
|
84
|
+
delegationWallet.addresses$,
|
|
85
|
+
delegationWallet.delegation.distribution$,
|
|
86
|
+
async () => portfolio,
|
|
87
|
+
console
|
|
88
|
+
)
|
|
89
|
+
});
|
|
90
|
+
delegationWallet.setInputSelector(selector);
|
|
91
|
+
} else {
|
|
92
|
+
monitor.logInfo('Using static change address resolution');
|
|
93
|
+
}
|
|
94
|
+
|
|
85
95
|
monitor.logInfo('Setup phase ended. Starting interactions...');
|
|
86
96
|
|
|
87
97
|
// Initial setup done, log starting state.
|
|
@@ -23,6 +23,14 @@ convict.addFormat({
|
|
|
23
23
|
}
|
|
24
24
|
});
|
|
25
25
|
|
|
26
|
+
convict.addFormat({
|
|
27
|
+
name: 'changeAddressResolver',
|
|
28
|
+
validate(val) {
|
|
29
|
+
if (val !== 'static' && val !== 'dynamic')
|
|
30
|
+
throw new TypeError('changeAddressResolver must be set to either static or dynamic');
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
|
|
26
34
|
export type ValueTransferConfig = {
|
|
27
35
|
amount: { max: number; min: number };
|
|
28
36
|
count: { max: number; min: number };
|
|
@@ -30,6 +38,11 @@ export type ValueTransferConfig = {
|
|
|
30
38
|
};
|
|
31
39
|
|
|
32
40
|
export const configLoader = convict({
|
|
41
|
+
changeAddressResolver: {
|
|
42
|
+
default: 'static',
|
|
43
|
+
doc: 'Whether to use the static or dynamic strategy to resolve change addresses.',
|
|
44
|
+
format: 'changeAddressResolver'
|
|
45
|
+
},
|
|
33
46
|
iterations: {
|
|
34
47
|
default: 10,
|
|
35
48
|
doc: 'How many iterations will be executed before stopping the test.',
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
/* eslint-disable no-console, max-statements, max-params, @typescript-eslint/no-floating-promises */
|
|
2
2
|
import { ValueTransferConfig, configLoader } from './config';
|
|
3
3
|
|
|
4
|
-
import { AddressType, AsyncKeyAgent, GroupedAddress, util } from '@cardano-sdk/key-management';
|
|
5
4
|
import { Cardano } from '@cardano-sdk/core';
|
|
6
5
|
import { Files, Paths } from './files';
|
|
7
6
|
import {
|
|
@@ -18,35 +17,9 @@ import { Observable, filter, firstValueFrom, map } from 'rxjs';
|
|
|
18
17
|
import { PersonalWallet } from '@cardano-sdk/wallet';
|
|
19
18
|
import { TaskResult, TerminalProgressMonitor } from './terminal-progress-monitor';
|
|
20
19
|
import { logger } from '@cardano-sdk/util-dev';
|
|
20
|
+
import { util } from '@cardano-sdk/key-management';
|
|
21
21
|
import chalk from 'chalk';
|
|
22
22
|
|
|
23
|
-
/**
|
|
24
|
-
* Gets grouped addresses with increasing stake key index.
|
|
25
|
-
*
|
|
26
|
-
* @param keyAgent The key agent to be used to generate the addresses.
|
|
27
|
-
* @param addressCount Number of addresses to be generated.
|
|
28
|
-
*/
|
|
29
|
-
export const getStakeAddresses = async (
|
|
30
|
-
keyAgent: AsyncKeyAgent,
|
|
31
|
-
addressCount: number
|
|
32
|
-
): Promise<Array<GroupedAddress>> => {
|
|
33
|
-
const addresses = new Array<GroupedAddress>();
|
|
34
|
-
|
|
35
|
-
for (let i = 0; i < addressCount; ++i) {
|
|
36
|
-
const address = await keyAgent.deriveAddress(
|
|
37
|
-
{
|
|
38
|
-
index: 0,
|
|
39
|
-
type: AddressType.External
|
|
40
|
-
},
|
|
41
|
-
i
|
|
42
|
-
);
|
|
43
|
-
|
|
44
|
-
addresses.push(address);
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
return addresses;
|
|
48
|
-
};
|
|
49
|
-
|
|
50
23
|
/**
|
|
51
24
|
* Gets a list of the available pool.
|
|
52
25
|
*
|
|
@@ -83,43 +56,6 @@ export const rewardAccountStatuses = async (
|
|
|
83
56
|
timeout
|
|
84
57
|
);
|
|
85
58
|
|
|
86
|
-
/**
|
|
87
|
-
* Registers and delegates reward accounts to different pools.
|
|
88
|
-
*/
|
|
89
|
-
export const delegateToMultiplePools = async (
|
|
90
|
-
fundingWallet: PersonalWallet,
|
|
91
|
-
rewardAccounts: GroupedAddress[],
|
|
92
|
-
monitor: TerminalProgressMonitor
|
|
93
|
-
) => {
|
|
94
|
-
const stakeKeyRegCertificates = rewardAccounts.map(({ rewardAccount }) =>
|
|
95
|
-
Cardano.createStakeKeyRegistrationCert(rewardAccount)
|
|
96
|
-
);
|
|
97
|
-
const poolIds = await getPoolIds(fundingWallet, rewardAccounts.length);
|
|
98
|
-
const delegationCertificates = rewardAccounts.map((account) =>
|
|
99
|
-
Cardano.createDelegationCert(account.rewardAccount, poolIds[account.stakeKeyDerivationPath!.index].id)
|
|
100
|
-
);
|
|
101
|
-
|
|
102
|
-
monitor.logInfo(
|
|
103
|
-
`Registering accounts: [${chalk.green(rewardAccounts.map(({ rewardAccount }) => rewardAccount).join(', '))}]`
|
|
104
|
-
);
|
|
105
|
-
|
|
106
|
-
monitor.startTask(
|
|
107
|
-
`Delegating to pools [${chalk.green(poolIds.map(({ id }) => id).join(', '))}] and registering ${chalk.green(
|
|
108
|
-
stakeKeyRegCertificates.length
|
|
109
|
-
)} stake keys`
|
|
110
|
-
);
|
|
111
|
-
|
|
112
|
-
const txBuilder = fundingWallet.createTxBuilder();
|
|
113
|
-
|
|
114
|
-
txBuilder.partialTxBody.certificates = [...stakeKeyRegCertificates, ...delegationCertificates];
|
|
115
|
-
const { tx } = await txBuilder.build().sign();
|
|
116
|
-
await submitAndConfirm(fundingWallet, tx);
|
|
117
|
-
|
|
118
|
-
monitor.endTask('Stake keys delegated', TaskResult.Success);
|
|
119
|
-
|
|
120
|
-
return poolIds;
|
|
121
|
-
};
|
|
122
|
-
|
|
123
59
|
const env = getEnv(walletVariables);
|
|
124
60
|
|
|
125
61
|
/**
|
|
@@ -231,66 +167,33 @@ export const transferStartingFunds = async (
|
|
|
231
167
|
monitor.endTask('Funds transferred', TaskResult.Success);
|
|
232
168
|
};
|
|
233
169
|
|
|
234
|
-
/**
|
|
235
|
-
* Generates a list of stake addresses.
|
|
236
|
-
*
|
|
237
|
-
* @param delegationWallet The delegation wallets.
|
|
238
|
-
* @param stakeKeyCount The number of stake keys to use in the generation of the addresses.
|
|
239
|
-
* @param monitor The progress monitor.
|
|
240
|
-
*/
|
|
241
|
-
export const generateStakeAddresses = async (
|
|
242
|
-
delegationWallet: PersonalWallet,
|
|
243
|
-
stakeKeyCount: number,
|
|
244
|
-
monitor: TerminalProgressMonitor
|
|
245
|
-
) => {
|
|
246
|
-
monitor.startTask('Generating stake addresses.');
|
|
247
|
-
|
|
248
|
-
const stakeAddresses = await getStakeAddresses(delegationWallet.keyAgent, stakeKeyCount);
|
|
249
|
-
|
|
250
|
-
monitor.endTask(
|
|
251
|
-
`Stake addresses generated: [${chalk.green!(stakeAddresses.map(({ rewardAccount }) => rewardAccount).join(', '))}]`,
|
|
252
|
-
TaskResult.Success
|
|
253
|
-
);
|
|
254
|
-
|
|
255
|
-
return stakeAddresses;
|
|
256
|
-
};
|
|
257
|
-
|
|
258
170
|
/**
|
|
259
171
|
* Distribute the stake among different addresses.
|
|
260
172
|
*
|
|
261
173
|
* @param delegationWallet The delegation wallets.
|
|
262
|
-
* @param startingFunds The total starting funds.
|
|
263
174
|
* @param stakeDistribution The stake distribution to be followed.
|
|
264
|
-
* @param stakeAddresses The list of stake addresses.
|
|
265
175
|
* @param monitor The progress monitor.
|
|
266
176
|
*/
|
|
267
177
|
export const distributeStake = async (
|
|
268
178
|
delegationWallet: PersonalWallet,
|
|
269
|
-
startingFunds: number,
|
|
270
179
|
stakeDistribution: Array<number>,
|
|
271
|
-
stakeAddresses: Array<GroupedAddress>,
|
|
272
180
|
monitor: TerminalProgressMonitor
|
|
273
|
-
) => {
|
|
274
|
-
|
|
275
|
-
const totalWeight = stakeDistribution.reduce((sum, current) => sum + current, 0);
|
|
276
|
-
const stakeDistributionSsPercent = stakeDistribution.map((value) => value / totalWeight);
|
|
277
|
-
monitor.startTask(`Distribute ${startingFunds} among stake addresses [${stakeDistribution.join(', ')}].`);
|
|
278
|
-
|
|
279
|
-
const txBuilder = delegationWallet.createTxBuilder();
|
|
280
|
-
|
|
281
|
-
let i = 0;
|
|
282
|
-
const startingFundsMinusFee = startingFunds - 5_000_000;
|
|
283
|
-
for (const { address } of stakeAddresses) {
|
|
284
|
-
const coinsToBeDeposited = stakeDistributionSsPercent[i] * startingFundsMinusFee;
|
|
285
|
-
txBuilder.addOutput(txBuilder.buildOutput().address(address).coin(BigInt(coinsToBeDeposited)).toTxOut());
|
|
286
|
-
++i;
|
|
287
|
-
}
|
|
181
|
+
): Promise<Cardano.Cip17DelegationPortfolio> => {
|
|
182
|
+
const pools = await getPoolIds(delegationWallet, stakeDistribution.length);
|
|
288
183
|
|
|
289
|
-
const
|
|
184
|
+
const portfolio: Cardano.Cip17DelegationPortfolio = {
|
|
185
|
+
name: 'Portfolio',
|
|
186
|
+
pools: pools.map((pool, index) => ({ id: pool.hexId, weight: stakeDistribution[index] }))
|
|
187
|
+
};
|
|
290
188
|
|
|
291
|
-
|
|
189
|
+
logger.debug('Delegating portfolio', portfolio);
|
|
190
|
+
|
|
191
|
+
const { tx } = await delegationWallet.createTxBuilder().delegatePortfolio(portfolio).build().sign();
|
|
192
|
+
await submitAndConfirm(delegationWallet, tx);
|
|
292
193
|
|
|
293
194
|
monitor.endTask('Funds distributed', TaskResult.Success);
|
|
195
|
+
|
|
196
|
+
return portfolio;
|
|
294
197
|
};
|
|
295
198
|
|
|
296
199
|
/**
|
package/src/util/util.ts
CHANGED
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
2
|
import * as Crypto from '@cardano-sdk/crypto';
|
|
3
|
-
import * as envalid from 'envalid';
|
|
4
3
|
import { Cardano, createSlotEpochCalc } from '@cardano-sdk/core';
|
|
5
4
|
import {
|
|
6
5
|
EMPTY,
|
|
7
6
|
Observable,
|
|
8
|
-
catchError,
|
|
9
7
|
combineLatest,
|
|
10
8
|
distinctUntilChanged,
|
|
11
9
|
filter,
|
|
@@ -22,7 +20,7 @@ import { FAST_OPERATION_TIMEOUT_DEFAULT, SYNC_TIMEOUT_DEFAULT } from '../default
|
|
|
22
20
|
import { FinalizeTxProps, ObservableWallet, PersonalWallet } from '@cardano-sdk/wallet';
|
|
23
21
|
import { InMemoryKeyAgent, TransactionSigner } from '@cardano-sdk/key-management';
|
|
24
22
|
import { InitializeTxProps } from '@cardano-sdk/tx-construction';
|
|
25
|
-
import { TestWallet,
|
|
23
|
+
import { TestWallet, networkInfoProviderFactory } from '../factories';
|
|
26
24
|
import { getEnv, walletVariables } from '../environment';
|
|
27
25
|
import { logger } from '@cardano-sdk/util-dev';
|
|
28
26
|
import sortBy from 'lodash/sortBy';
|
|
@@ -35,10 +33,7 @@ export const firstValueFromTimed = <T>(
|
|
|
35
33
|
timeoutAfter = FAST_OPERATION_TIMEOUT_DEFAULT
|
|
36
34
|
) =>
|
|
37
35
|
firstValueFrom(
|
|
38
|
-
observable$.pipe(
|
|
39
|
-
timeout(timeoutAfter),
|
|
40
|
-
catchError(() => throwError(() => new Error(timeoutMessage)))
|
|
41
|
-
)
|
|
36
|
+
observable$.pipe(timeout({ each: timeoutAfter, with: () => throwError(() => new Error(timeoutMessage)) }))
|
|
42
37
|
);
|
|
43
38
|
|
|
44
39
|
export const waitForWalletStateSettle = (wallet: ObservableWallet, syncTimeout: number = SYNC_TIMEOUT_DEFAULT) =>
|
|
@@ -136,28 +131,6 @@ export type RequestCoinsProps = {
|
|
|
136
131
|
coins: Cardano.Lovelace;
|
|
137
132
|
};
|
|
138
133
|
|
|
139
|
-
export const requestCoins = async ({ coins, wallet }: RequestCoinsProps) => {
|
|
140
|
-
const [{ address }] = await firstValueFrom(wallet.addresses$);
|
|
141
|
-
logger.info(`Address ${address} will be funded with ${coins} tLovelace.`);
|
|
142
|
-
|
|
143
|
-
const { FAUCET_PROVIDER, FAUCET_PROVIDER_PARAMS } = envalid.cleanEnv(process.env, {
|
|
144
|
-
FAUCET_PROVIDER: envalid.str(),
|
|
145
|
-
FAUCET_PROVIDER_PARAMS: envalid.json({ default: {} })
|
|
146
|
-
});
|
|
147
|
-
|
|
148
|
-
const faucetProvider = await faucetProviderFactory.create(FAUCET_PROVIDER, FAUCET_PROVIDER_PARAMS, logger);
|
|
149
|
-
await faucetProvider.start();
|
|
150
|
-
const healthCheck = await faucetProvider.healthCheck();
|
|
151
|
-
if (!healthCheck.ok) throw new Error('Faucet provider could not be started.');
|
|
152
|
-
// Request coins from faucet. This will block until the transaction is in the ledger,
|
|
153
|
-
// and has the given amount of confirmation, which means the funds can be used immediately after
|
|
154
|
-
// this call.
|
|
155
|
-
// TODO: change FaucetProvider signature to accept Cardano.Lovelace
|
|
156
|
-
const requestResult = await faucetProvider.request(address, Number.parseInt(coins.toString()), 3, 30_000);
|
|
157
|
-
await txConfirmed(wallet, requestResult);
|
|
158
|
-
await faucetProvider.close();
|
|
159
|
-
};
|
|
160
|
-
|
|
161
134
|
export type TransferCoinsProps = {
|
|
162
135
|
fromWallet: ObservableWallet;
|
|
163
136
|
toWallet: ObservableWallet;
|
|
@@ -1,22 +1,23 @@
|
|
|
1
1
|
import http from 'k6/http';
|
|
2
2
|
|
|
3
|
+
// eslint-disable-next-line no-undef
|
|
3
4
|
const PROVIDER_SERVER_URL = __ENV.PROVIDER_SERVER_URL;
|
|
4
5
|
|
|
5
6
|
export const options = {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
thresholds: {
|
|
8
|
+
http_req_duration: ['p(95)<500'],
|
|
9
|
+
http_req_failed: ['rate<0.01']
|
|
10
|
+
}
|
|
10
11
|
};
|
|
11
12
|
|
|
12
13
|
export default function () {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
}
|
|
14
|
+
const body = JSON.stringify({
|
|
15
|
+
assetId: '0645beb92789851be85bfad30a6a9d9a0a98e0e8d41cff86727efb9f317374326c616365',
|
|
16
|
+
extraData: { nftMetadata: true, tokenMetadata: true }
|
|
17
|
+
});
|
|
18
|
+
http.post(`${PROVIDER_SERVER_URL}/asset/get-asset`, body, {
|
|
19
|
+
headers: {
|
|
20
|
+
'content-type': 'application/json'
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
}
|