@cardano-sdk/e2e 0.16.5 → 0.16.6-patch.1
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/CHANGELOG.md +13 -5
- package/dist/cjs/tools/multi-delegation-data-gen/index.js +2 -14
- 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 +0 -1
- 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 +0 -12
- 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 +1 -2
- 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 +1 -6
- package/dist/cjs/tools/multi-delegation-data-gen/utils/utils.js.map +1 -1
- package/dist/cjs/tsconfig.tsbuildinfo +1 -1
- package/dist/esm/tools/multi-delegation-data-gen/index.js +2 -14
- 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 +0 -1
- 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 +0 -12
- 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 +1 -2
- 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 +1 -6
- package/dist/esm/tools/multi-delegation-data-gen/utils/utils.js.map +1 -1
- package/dist/esm/tsconfig.tsbuildinfo +1 -1
- package/package.json +19 -22
- package/src/tools/multi-delegation-data-gen/example.json +0 -1
- package/src/tools/multi-delegation-data-gen/index.ts +4 -26
- package/src/tools/multi-delegation-data-gen/utils/config.ts +0 -13
- package/src/tools/multi-delegation-data-gen/utils/utils.ts +2 -11
- package/test/long-running/cache-invalidation.test.ts +13 -64
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cardano-sdk/e2e",
|
|
3
|
-
"version": "0.16.
|
|
3
|
+
"version": "0.16.6-patch.1",
|
|
4
4
|
"description": "End to end tests for the cardano-js-sdk packages.",
|
|
5
5
|
"engines": {
|
|
6
6
|
"node": ">=16.0"
|
|
@@ -81,19 +81,18 @@
|
|
|
81
81
|
"dependencies": {
|
|
82
82
|
"@cardano-foundation/ledgerjs-hw-app-cardano": "^6.0.0",
|
|
83
83
|
"@cardano-ogmios/client": "5.6.0",
|
|
84
|
-
"@cardano-sdk/cardano-services": "~0.14.
|
|
85
|
-
"@cardano-sdk/cardano-services-client": "~0.10.
|
|
86
|
-
"@cardano-sdk/core": "~0.15.
|
|
87
|
-
"@cardano-sdk/crypto": "~0.1.
|
|
88
|
-
"@cardano-sdk/hardware-ledger": "~0.2.
|
|
89
|
-
"@cardano-sdk/
|
|
90
|
-
"@cardano-sdk/
|
|
91
|
-
"@cardano-sdk/
|
|
92
|
-
"@cardano-sdk/
|
|
93
|
-
"@cardano-sdk/util": "~0.13.
|
|
94
|
-
"@cardano-sdk/util-
|
|
95
|
-
"@cardano-sdk/
|
|
96
|
-
"@cardano-sdk/wallet": "~0.18.1",
|
|
84
|
+
"@cardano-sdk/cardano-services": "~0.14.2",
|
|
85
|
+
"@cardano-sdk/cardano-services-client": "~0.10.2",
|
|
86
|
+
"@cardano-sdk/core": "~0.15.2",
|
|
87
|
+
"@cardano-sdk/crypto": "~0.1.8",
|
|
88
|
+
"@cardano-sdk/hardware-ledger": "~0.2.15-patch.1",
|
|
89
|
+
"@cardano-sdk/key-management": "~0.7.12-patch.1",
|
|
90
|
+
"@cardano-sdk/ogmios": "~0.12.8",
|
|
91
|
+
"@cardano-sdk/tx-construction": "~0.8.7-patch.1",
|
|
92
|
+
"@cardano-sdk/util": "~0.12.1",
|
|
93
|
+
"@cardano-sdk/util-dev": "~0.13.6",
|
|
94
|
+
"@cardano-sdk/util-rxjs": "~0.5.2",
|
|
95
|
+
"@cardano-sdk/wallet": "~0.17.6-patch.1",
|
|
97
96
|
"@vespaiach/axios-fetch-adapter": "^0.3.0",
|
|
98
97
|
"axios": "^0.27.2",
|
|
99
98
|
"bunyan": "^1.8.15",
|
|
@@ -123,10 +122,10 @@
|
|
|
123
122
|
"@babel/core": "^7.18.2",
|
|
124
123
|
"@babel/preset-env": "^7.18.2",
|
|
125
124
|
"@babel/preset-typescript": "^7.17.12",
|
|
126
|
-
"@cardano-sdk/dapp-connector": "~0.9.
|
|
127
|
-
"@cardano-sdk/projection": "~0.6.
|
|
128
|
-
"@cardano-sdk/projection-typeorm": "~0.3.
|
|
129
|
-
"@cardano-sdk/web-extension": "~0.13.
|
|
125
|
+
"@cardano-sdk/dapp-connector": "~0.9.9",
|
|
126
|
+
"@cardano-sdk/projection": "~0.6.12",
|
|
127
|
+
"@cardano-sdk/projection-typeorm": "~0.3.8",
|
|
128
|
+
"@cardano-sdk/web-extension": "~0.13.7-patch.1",
|
|
130
129
|
"@dcspark/cardano-multiplatform-lib-browser": "^3.1.1",
|
|
131
130
|
"@emurgo/cardano-message-signing-asmjs": "^1.0.1",
|
|
132
131
|
"@types/bunyan": "^1.8.8",
|
|
@@ -148,10 +147,8 @@
|
|
|
148
147
|
"babel-loader": "^8.2.5",
|
|
149
148
|
"blake2b-no-wasm": "2.1.4",
|
|
150
149
|
"buffer": "^6.0.3",
|
|
151
|
-
"chromedriver": "114.0.
|
|
150
|
+
"chromedriver": "^114.0.0",
|
|
152
151
|
"copy-webpack-plugin": "^10.2.4",
|
|
153
|
-
"dockerode": "^3.3.1",
|
|
154
|
-
"dockerode-utils": "^0.0.7",
|
|
155
152
|
"eslint": "^7.32.0",
|
|
156
153
|
"events": "^3.3.0",
|
|
157
154
|
"expect-webdriverio": "^3.2.1",
|
|
@@ -177,5 +174,5 @@
|
|
|
177
174
|
"webpack-cli": "^4.9.2",
|
|
178
175
|
"webpack-merge": "^5.8.0"
|
|
179
176
|
},
|
|
180
|
-
"gitHead": "
|
|
177
|
+
"gitHead": "343f43d15e3733575be8054e51f504308de7571d"
|
|
181
178
|
}
|
|
@@ -18,8 +18,7 @@ import {
|
|
|
18
18
|
} from './utils';
|
|
19
19
|
|
|
20
20
|
import { Cardano } from '@cardano-sdk/core';
|
|
21
|
-
import {
|
|
22
|
-
import { roundRobinRandomImprove } from '@cardano-sdk/input-selection';
|
|
21
|
+
import { PersonalWallet } from '@cardano-sdk/wallet';
|
|
23
22
|
import { walletReady } from '../../';
|
|
24
23
|
import chalk from 'chalk';
|
|
25
24
|
|
|
@@ -72,15 +71,9 @@ const monitor = new TerminalProgressMonitor();
|
|
|
72
71
|
|
|
73
72
|
const stakeAddresses = await generateStakeAddresses(delegationWallet, config.stakeDistribution.length, monitor);
|
|
74
73
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
config.startingFunds,
|
|
79
|
-
config.stakeDistribution,
|
|
80
|
-
stakeAddresses,
|
|
81
|
-
monitor,
|
|
82
|
-
pools
|
|
83
|
-
);
|
|
74
|
+
await delegateToMultiplePools(delegationWallet, stakeAddresses, monitor);
|
|
75
|
+
|
|
76
|
+
await distributeStake(delegationWallet, config.startingFunds, config.stakeDistribution, stakeAddresses, monitor);
|
|
84
77
|
|
|
85
78
|
monitor.startTask('Waiting for delegation to be updated on the wallet.');
|
|
86
79
|
await rewardAccountStatuses(delegationWallet.delegation.rewardAccounts$, [
|
|
@@ -89,21 +82,6 @@ const monitor = new TerminalProgressMonitor();
|
|
|
89
82
|
]);
|
|
90
83
|
monitor.endTask('Delegation updated.', TaskResult.Success);
|
|
91
84
|
|
|
92
|
-
if (config.changeAddressResolver === 'dynamic') {
|
|
93
|
-
monitor.logInfo(`Using dynamic change address resolution: Portfolio: ${JSON.stringify(portfolio)}`);
|
|
94
|
-
const selector = roundRobinRandomImprove({
|
|
95
|
-
changeAddressResolver: new DynamicChangeAddressResolver(
|
|
96
|
-
delegationWallet.addresses$,
|
|
97
|
-
delegationWallet.delegation.distribution$,
|
|
98
|
-
async () => portfolio,
|
|
99
|
-
console
|
|
100
|
-
)
|
|
101
|
-
});
|
|
102
|
-
delegationWallet.setInputSelector(selector);
|
|
103
|
-
} else {
|
|
104
|
-
monitor.logInfo('Using static change address resolution');
|
|
105
|
-
}
|
|
106
|
-
|
|
107
85
|
monitor.logInfo('Setup phase ended. Starting interactions...');
|
|
108
86
|
|
|
109
87
|
// Initial setup done, log starting state.
|
|
@@ -23,14 +23,6 @@ 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
|
-
|
|
34
26
|
export type ValueTransferConfig = {
|
|
35
27
|
amount: { max: number; min: number };
|
|
36
28
|
count: { max: number; min: number };
|
|
@@ -38,11 +30,6 @@ export type ValueTransferConfig = {
|
|
|
38
30
|
};
|
|
39
31
|
|
|
40
32
|
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
|
-
},
|
|
46
33
|
iterations: {
|
|
47
34
|
default: 10,
|
|
48
35
|
doc: 'How many iterations will be executed before stopping the test.',
|
|
@@ -263,16 +263,14 @@ export const generateStakeAddresses = async (
|
|
|
263
263
|
* @param stakeDistribution The stake distribution to be followed.
|
|
264
264
|
* @param stakeAddresses The list of stake addresses.
|
|
265
265
|
* @param monitor The progress monitor.
|
|
266
|
-
* @param pools The pools we are delegating to.
|
|
267
266
|
*/
|
|
268
267
|
export const distributeStake = async (
|
|
269
268
|
delegationWallet: PersonalWallet,
|
|
270
269
|
startingFunds: number,
|
|
271
270
|
stakeDistribution: Array<number>,
|
|
272
271
|
stakeAddresses: Array<GroupedAddress>,
|
|
273
|
-
monitor: TerminalProgressMonitor
|
|
274
|
-
|
|
275
|
-
): Promise<Cardano.Cip17DelegationPortfolio> => {
|
|
272
|
+
monitor: TerminalProgressMonitor
|
|
273
|
+
) => {
|
|
276
274
|
// TODO: Replace with delegatePortfolio once LW-6702 is merged.
|
|
277
275
|
const totalWeight = stakeDistribution.reduce((sum, current) => sum + current, 0);
|
|
278
276
|
const stakeDistributionSsPercent = stakeDistribution.map((value) => value / totalWeight);
|
|
@@ -280,11 +278,6 @@ export const distributeStake = async (
|
|
|
280
278
|
|
|
281
279
|
const txBuilder = delegationWallet.createTxBuilder();
|
|
282
280
|
|
|
283
|
-
const portfolio: Cardano.Cip17DelegationPortfolio = {
|
|
284
|
-
name: 'Portfolio',
|
|
285
|
-
pools: stakeDistributionSsPercent.map((weight, index) => ({ id: pools[index].hexId, weight }))
|
|
286
|
-
};
|
|
287
|
-
|
|
288
281
|
let i = 0;
|
|
289
282
|
const startingFundsMinusFee = startingFunds - 5_000_000;
|
|
290
283
|
for (const { address } of stakeAddresses) {
|
|
@@ -298,8 +291,6 @@ export const distributeStake = async (
|
|
|
298
291
|
await submitAndConfirm(delegationWallet, signedTx);
|
|
299
292
|
|
|
300
293
|
monitor.endTask('Funds distributed', TaskResult.Success);
|
|
301
|
-
|
|
302
|
-
return portfolio;
|
|
303
294
|
};
|
|
304
295
|
|
|
305
296
|
/**
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/* eslint-disable max-statements */
|
|
1
2
|
import { AddressType, KeyRole } from '@cardano-sdk/key-management';
|
|
2
3
|
import { Cardano } from '@cardano-sdk/core';
|
|
3
4
|
import {
|
|
@@ -12,72 +13,24 @@ import {
|
|
|
12
13
|
walletReady,
|
|
13
14
|
walletVariables
|
|
14
15
|
} from '../../src';
|
|
15
|
-
import { containerExec } from 'dockerode-utils';
|
|
16
|
-
import { getRandomPort } from 'get-port-please';
|
|
17
16
|
import { logger } from '@cardano-sdk/util-dev';
|
|
18
|
-
import Docker from 'dockerode';
|
|
19
|
-
import path from 'path';
|
|
20
17
|
|
|
18
|
+
const env = getEnv(walletVariables);
|
|
21
19
|
const vrf = Cardano.VrfVkHex('2ee5a4c423224bb9c42107fc18a60556d6a83cec1d9dd37a71f56af7198fc759');
|
|
22
20
|
|
|
21
|
+
const wallet1Params: KeyAgentFactoryProps = {
|
|
22
|
+
accountIndex: 0,
|
|
23
|
+
chainId: env.KEY_MANAGEMENT_PARAMS.chainId,
|
|
24
|
+
mnemonic:
|
|
25
|
+
// eslint-disable-next-line max-len
|
|
26
|
+
'phrase raw learn suspect inmate powder combine apology regular hero gain chronic fruit ritual short screen goddess odor keen creek brand today kit machine',
|
|
27
|
+
passphrase: 'some_passphrase'
|
|
28
|
+
};
|
|
29
|
+
|
|
23
30
|
describe('cache invalidation', () => {
|
|
24
|
-
let testProviderServer: Docker.Container;
|
|
25
31
|
let wallet1: TestWallet;
|
|
26
32
|
|
|
27
33
|
beforeAll(async () => {
|
|
28
|
-
const port = await getRandomPort();
|
|
29
|
-
|
|
30
|
-
// Get environment from original provider server container
|
|
31
|
-
const docker = new Docker();
|
|
32
|
-
const originalProviderServer = docker.getContainer('local-network-e2e-provider-server-1');
|
|
33
|
-
const cmdOutput = await containerExec(originalProviderServer, [
|
|
34
|
-
'node',
|
|
35
|
-
'-e',
|
|
36
|
-
'console.log(`sdk_token${JSON.stringify(process.env)}sdk_token`)'
|
|
37
|
-
]);
|
|
38
|
-
const matchResult = cmdOutput[0].match(/sdk_token(.*)sdk_token/);
|
|
39
|
-
|
|
40
|
-
if (!matchResult) throw new Error('Error getting original container environment');
|
|
41
|
-
|
|
42
|
-
const [, encodedEnv] = matchResult;
|
|
43
|
-
|
|
44
|
-
const Env = Object.entries({
|
|
45
|
-
...JSON.parse(encodedEnv),
|
|
46
|
-
DISABLE_DB_CACHE: 'false',
|
|
47
|
-
LOGGER_MIN_SEVERITY: 'debug'
|
|
48
|
-
}).map(([key, value]) => `${key}=${value}`);
|
|
49
|
-
|
|
50
|
-
const network = docker.getNetwork('local-network-e2e_default');
|
|
51
|
-
|
|
52
|
-
// Test container
|
|
53
|
-
testProviderServer = await docker.createContainer({
|
|
54
|
-
Env,
|
|
55
|
-
HostConfig: {
|
|
56
|
-
Binds: [`${path.join(__dirname, '..', '..', '..', '..', 'compose', 'placeholder-secrets')}:/run/secrets`],
|
|
57
|
-
PortBindings: { '3000/tcp': [{ HostPort: port.toString() }] }
|
|
58
|
-
},
|
|
59
|
-
Image: 'local-network-e2e-provider-server',
|
|
60
|
-
name: 'local-network-e2e-provider-server-test'
|
|
61
|
-
});
|
|
62
|
-
|
|
63
|
-
await network.connect({ Container: testProviderServer.id });
|
|
64
|
-
await testProviderServer.start();
|
|
65
|
-
|
|
66
|
-
const override = Object.fromEntries(
|
|
67
|
-
Object.entries(process.env)
|
|
68
|
-
.filter(([key]) => walletVariables.includes(key as typeof walletVariables[number]))
|
|
69
|
-
.map(([key, value]) => [key, value?.replace('localhost:4000/', `localhost:${port}/`)])
|
|
70
|
-
);
|
|
71
|
-
const env = getEnv(walletVariables, { override });
|
|
72
|
-
const wallet1Params: KeyAgentFactoryProps = {
|
|
73
|
-
accountIndex: 0,
|
|
74
|
-
chainId: env.KEY_MANAGEMENT_PARAMS.chainId,
|
|
75
|
-
mnemonic:
|
|
76
|
-
// eslint-disable-next-line max-len
|
|
77
|
-
'phrase raw learn suspect inmate powder combine apology regular hero gain chronic fruit ritual short screen goddess odor keen creek brand today kit machine',
|
|
78
|
-
passphrase: 'some_passphrase'
|
|
79
|
-
};
|
|
80
|
-
|
|
81
34
|
jest.setTimeout(180_000);
|
|
82
35
|
|
|
83
36
|
wallet1 = await getWallet({
|
|
@@ -92,13 +45,9 @@ describe('cache invalidation', () => {
|
|
|
92
45
|
await waitForWalletStateSettle(wallet1.wallet);
|
|
93
46
|
});
|
|
94
47
|
|
|
95
|
-
afterAll(
|
|
96
|
-
wallet1.wallet.shutdown();
|
|
97
|
-
await testProviderServer.stop();
|
|
98
|
-
await testProviderServer.remove();
|
|
99
|
-
});
|
|
48
|
+
afterAll(() => wallet1.wallet.shutdown());
|
|
100
49
|
|
|
101
|
-
test('cache is invalidated on epoch rollover', async () => {
|
|
50
|
+
test.skip('cache is invalidated on epoch rollover', async () => {
|
|
102
51
|
const wallet = wallet1.wallet;
|
|
103
52
|
|
|
104
53
|
await walletReady(wallet);
|