@aztec/end-to-end 0.0.0-test.0 → 0.0.1-commit.03f7ef2
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/dest/bench/client_flows/benchmark.d.ts +61 -0
- package/dest/bench/client_flows/benchmark.d.ts.map +1 -0
- package/dest/bench/client_flows/benchmark.js +261 -0
- package/dest/bench/client_flows/client_flows_benchmark.d.ts +80 -0
- package/dest/bench/client_flows/client_flows_benchmark.d.ts.map +1 -0
- package/dest/bench/client_flows/client_flows_benchmark.js +336 -0
- package/dest/bench/client_flows/config.d.ts +14 -0
- package/dest/bench/client_flows/config.d.ts.map +1 -0
- package/dest/bench/client_flows/config.js +106 -0
- package/dest/bench/client_flows/data_extractor.d.ts +2 -0
- package/dest/bench/client_flows/data_extractor.d.ts.map +1 -0
- package/dest/bench/client_flows/data_extractor.js +77 -0
- package/dest/bench/utils.d.ts +12 -38
- package/dest/bench/utils.d.ts.map +1 -1
- package/dest/bench/utils.js +26 -66
- package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts +21 -13
- package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts.map +1 -1
- package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.js +85 -57
- package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts +20 -25
- package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts.map +1 -1
- package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.js +51 -70
- package/dest/e2e_deploy_contract/deploy_test.d.ts +16 -8
- package/dest/e2e_deploy_contract/deploy_test.d.ts.map +1 -1
- package/dest/e2e_deploy_contract/deploy_test.js +13 -19
- package/dest/e2e_epochs/epochs_test.d.ts +65 -22
- package/dest/e2e_epochs/epochs_test.d.ts.map +1 -1
- package/dest/e2e_epochs/epochs_test.js +233 -49
- package/dest/e2e_fees/bridging_race.notest.d.ts +2 -0
- package/dest/e2e_fees/bridging_race.notest.d.ts.map +1 -0
- package/dest/e2e_fees/bridging_race.notest.js +63 -0
- package/dest/e2e_fees/fees_test.d.ts +27 -12
- package/dest/e2e_fees/fees_test.d.ts.map +1 -1
- package/dest/e2e_fees/fees_test.js +106 -109
- package/dest/e2e_l1_publisher/write_json.d.ts +10 -0
- package/dest/e2e_l1_publisher/write_json.d.ts.map +1 -0
- package/dest/e2e_l1_publisher/write_json.js +58 -0
- package/dest/e2e_multi_validator/utils.d.ts +12 -0
- package/dest/e2e_multi_validator/utils.d.ts.map +1 -0
- package/dest/e2e_multi_validator/utils.js +214 -0
- package/dest/e2e_nested_contract/nested_contract_test.d.ts +10 -7
- package/dest/e2e_nested_contract/nested_contract_test.d.ts.map +1 -1
- package/dest/e2e_nested_contract/nested_contract_test.js +24 -20
- package/dest/e2e_p2p/inactivity_slash_test.d.ts +31 -0
- package/dest/e2e_p2p/inactivity_slash_test.d.ts.map +1 -0
- package/dest/e2e_p2p/inactivity_slash_test.js +136 -0
- package/dest/e2e_p2p/p2p_network.d.ts +276 -23
- package/dest/e2e_p2p/p2p_network.d.ts.map +1 -1
- package/dest/e2e_p2p/p2p_network.js +188 -133
- package/dest/e2e_p2p/shared.d.ts +43 -7
- package/dest/e2e_p2p/shared.d.ts.map +1 -1
- package/dest/e2e_p2p/shared.js +164 -19
- package/dest/e2e_token_contract/token_contract_test.d.ts +12 -6
- package/dest/e2e_token_contract/token_contract_test.d.ts.map +1 -1
- package/dest/e2e_token_contract/token_contract_test.js +50 -26
- package/dest/fixtures/e2e_prover_test.d.ts +61 -0
- package/dest/fixtures/e2e_prover_test.d.ts.map +1 -0
- package/dest/{e2e_prover → fixtures}/e2e_prover_test.js +108 -112
- package/dest/fixtures/fixtures.d.ts +6 -8
- package/dest/fixtures/fixtures.d.ts.map +1 -1
- package/dest/fixtures/fixtures.js +5 -5
- package/dest/fixtures/get_acvm_config.d.ts +2 -2
- package/dest/fixtures/get_acvm_config.d.ts.map +1 -1
- package/dest/fixtures/get_acvm_config.js +3 -15
- package/dest/fixtures/get_bb_config.d.ts +2 -2
- package/dest/fixtures/get_bb_config.d.ts.map +1 -1
- package/dest/fixtures/get_bb_config.js +10 -17
- package/dest/fixtures/index.d.ts +1 -1
- package/dest/fixtures/l1_to_l2_messaging.d.ts +11 -7
- package/dest/fixtures/l1_to_l2_messaging.d.ts.map +1 -1
- package/dest/fixtures/l1_to_l2_messaging.js +45 -19
- package/dest/fixtures/logging.d.ts +1 -1
- package/dest/fixtures/setup_p2p_test.d.ts +15 -14
- package/dest/fixtures/setup_p2p_test.d.ts.map +1 -1
- package/dest/fixtures/setup_p2p_test.js +82 -22
- package/dest/fixtures/snapshot_manager.d.ts +20 -14
- package/dest/fixtures/snapshot_manager.d.ts.map +1 -1
- package/dest/fixtures/snapshot_manager.js +154 -140
- package/dest/fixtures/token_utils.d.ts +10 -4
- package/dest/fixtures/token_utils.d.ts.map +1 -1
- package/dest/fixtures/token_utils.js +28 -12
- package/dest/fixtures/utils.d.ts +95 -54
- package/dest/fixtures/utils.d.ts.map +1 -1
- package/dest/fixtures/utils.js +456 -389
- package/dest/fixtures/web3signer.d.ts +5 -0
- package/dest/fixtures/web3signer.d.ts.map +1 -0
- package/dest/fixtures/web3signer.js +53 -0
- package/dest/fixtures/with_telemetry_utils.d.ts +2 -2
- package/dest/fixtures/with_telemetry_utils.d.ts.map +1 -1
- package/dest/fixtures/with_telemetry_utils.js +2 -2
- package/dest/index.d.ts +1 -1
- package/dest/quality_of_service/alert_checker.d.ts +2 -2
- package/dest/quality_of_service/alert_checker.d.ts.map +1 -1
- package/dest/shared/cross_chain_test_harness.d.ts +42 -35
- package/dest/shared/cross_chain_test_harness.d.ts.map +1 -1
- package/dest/shared/cross_chain_test_harness.js +104 -50
- package/dest/shared/gas_portal_test_harness.d.ts +29 -31
- package/dest/shared/gas_portal_test_harness.d.ts.map +1 -1
- package/dest/shared/gas_portal_test_harness.js +51 -30
- package/dest/shared/index.d.ts +1 -1
- package/dest/shared/jest_setup.d.ts +1 -1
- package/dest/shared/jest_setup.js +1 -1
- package/dest/shared/submit-transactions.d.ts +6 -4
- package/dest/shared/submit-transactions.d.ts.map +1 -1
- package/dest/shared/submit-transactions.js +8 -7
- package/dest/shared/uniswap_l1_l2.d.ts +16 -13
- package/dest/shared/uniswap_l1_l2.d.ts.map +1 -1
- package/dest/shared/uniswap_l1_l2.js +149 -117
- package/dest/simulators/index.d.ts +1 -1
- package/dest/simulators/lending_simulator.d.ts +7 -11
- package/dest/simulators/lending_simulator.d.ts.map +1 -1
- package/dest/simulators/lending_simulator.js +16 -17
- package/dest/simulators/token_simulator.d.ts +6 -3
- package/dest/simulators/token_simulator.d.ts.map +1 -1
- package/dest/simulators/token_simulator.js +16 -13
- package/dest/spartan/setup_test_wallets.d.ts +26 -11
- package/dest/spartan/setup_test_wallets.d.ts.map +1 -1
- package/dest/spartan/setup_test_wallets.js +202 -58
- package/dest/spartan/tx_metrics.d.ts +39 -0
- package/dest/spartan/tx_metrics.d.ts.map +1 -0
- package/dest/spartan/tx_metrics.js +95 -0
- package/dest/spartan/utils.d.ts +129 -313
- package/dest/spartan/utils.d.ts.map +1 -1
- package/dest/spartan/utils.js +559 -151
- package/package.json +65 -58
- package/src/bench/client_flows/benchmark.ts +341 -0
- package/src/bench/client_flows/client_flows_benchmark.ts +450 -0
- package/src/bench/client_flows/config.ts +61 -0
- package/src/bench/client_flows/data_extractor.ts +89 -0
- package/src/bench/utils.ts +22 -76
- package/src/e2e_blacklist_token_contract/blacklist_token_contract_test.ts +80 -77
- package/src/e2e_cross_chain_messaging/cross_chain_messaging_test.ts +70 -107
- package/src/e2e_deploy_contract/deploy_test.ts +24 -39
- package/src/e2e_epochs/epochs_test.ts +299 -65
- package/src/e2e_fees/bridging_race.notest.ts +80 -0
- package/src/e2e_fees/fees_test.ts +151 -141
- package/src/e2e_l1_publisher/write_json.ts +77 -0
- package/src/e2e_multi_validator/utils.ts +258 -0
- package/src/e2e_nested_contract/nested_contract_test.ts +29 -19
- package/src/e2e_p2p/inactivity_slash_test.ts +179 -0
- package/src/e2e_p2p/p2p_network.ts +274 -171
- package/src/e2e_p2p/shared.ts +251 -29
- package/src/e2e_token_contract/token_contract_test.ts +43 -39
- package/src/fixtures/dumps/epoch_proof_result.json +1 -1
- package/src/{e2e_prover → fixtures}/e2e_prover_test.ts +113 -160
- package/src/fixtures/fixtures.ts +5 -7
- package/src/fixtures/get_acvm_config.ts +4 -12
- package/src/fixtures/get_bb_config.ts +18 -13
- package/src/fixtures/l1_to_l2_messaging.ts +56 -24
- package/src/fixtures/setup_p2p_test.ts +127 -39
- package/src/fixtures/snapshot_manager.ts +196 -162
- package/src/fixtures/token_utils.ts +32 -15
- package/src/fixtures/utils.ts +562 -475
- package/src/fixtures/web3signer.ts +63 -0
- package/src/fixtures/with_telemetry_utils.ts +2 -2
- package/src/guides/up_quick_start.sh +7 -15
- package/src/quality_of_service/alert_checker.ts +1 -1
- package/src/shared/cross_chain_test_harness.ts +112 -80
- package/src/shared/gas_portal_test_harness.ts +59 -50
- package/src/shared/jest_setup.ts +1 -1
- package/src/shared/submit-transactions.ts +12 -8
- package/src/shared/uniswap_l1_l2.ts +187 -192
- package/src/simulators/lending_simulator.ts +15 -16
- package/src/simulators/token_simulator.ts +21 -13
- package/src/spartan/DEVELOP.md +128 -0
- package/src/spartan/setup_test_wallets.ts +252 -93
- package/src/spartan/tx_metrics.ts +130 -0
- package/src/spartan/utils.ts +641 -146
- package/dest/e2e_prover/e2e_prover_test.d.ts +0 -56
- package/dest/e2e_prover/e2e_prover_test.d.ts.map +0 -1
- package/dest/fixtures/setup_l1_contracts.d.ts +0 -6
- package/dest/fixtures/setup_l1_contracts.d.ts.map +0 -1
- package/dest/fixtures/setup_l1_contracts.js +0 -17
- package/dest/sample-dapp/connect.js +0 -12
- package/dest/sample-dapp/contracts.js +0 -10
- package/dest/sample-dapp/deploy.js +0 -35
- package/dest/sample-dapp/index.js +0 -98
- package/src/fixtures/setup_l1_contracts.ts +0 -27
- package/src/sample-dapp/connect.mjs +0 -16
- package/src/sample-dapp/contracts.mjs +0 -14
- package/src/sample-dapp/deploy.mjs +0 -40
- package/src/sample-dapp/index.mjs +0 -128
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { TxStatus } from '@aztec/stdlib/tx';
|
|
2
|
+
import { createHistogram } from 'perf_hooks';
|
|
3
|
+
export class TxInclusionMetrics {
|
|
4
|
+
aztecNode;
|
|
5
|
+
data;
|
|
6
|
+
groups;
|
|
7
|
+
blocks;
|
|
8
|
+
constructor(aztecNode){
|
|
9
|
+
this.aztecNode = aztecNode;
|
|
10
|
+
this.data = new Map();
|
|
11
|
+
this.groups = new Set();
|
|
12
|
+
this.blocks = new Map();
|
|
13
|
+
}
|
|
14
|
+
recordSentTx(tx, group) {
|
|
15
|
+
const txHash = tx.getTxHash().toString();
|
|
16
|
+
const priorityFees = tx.getGasSettings().maxPriorityFeesPerGas;
|
|
17
|
+
this.data.set(txHash, {
|
|
18
|
+
txHash,
|
|
19
|
+
sentAt: Math.trunc(Date.now() / 1000),
|
|
20
|
+
minedAt: -1,
|
|
21
|
+
attestedAt: -1,
|
|
22
|
+
blocknumber: -1,
|
|
23
|
+
priorityFee: Number(priorityFees.feePerDaGas + priorityFees.feePerL2Gas),
|
|
24
|
+
totalFee: -1,
|
|
25
|
+
positionInBlock: -1,
|
|
26
|
+
group
|
|
27
|
+
});
|
|
28
|
+
this.groups.add(group);
|
|
29
|
+
}
|
|
30
|
+
async recordMinedTx(txReceipt) {
|
|
31
|
+
const { status, txHash, blockNumber } = txReceipt;
|
|
32
|
+
if (status !== TxStatus.SUCCESS || !blockNumber) {
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
if (!this.blocks.has(blockNumber)) {
|
|
36
|
+
this.blocks.set(blockNumber, this.aztecNode.getBlock(blockNumber));
|
|
37
|
+
}
|
|
38
|
+
const block = await this.blocks.get(blockNumber);
|
|
39
|
+
const data = this.data.get(txHash.toString());
|
|
40
|
+
data.blocknumber = blockNumber;
|
|
41
|
+
data.minedAt = Number(block.header.globalVariables.timestamp);
|
|
42
|
+
data.attestedAt = -1;
|
|
43
|
+
data.totalFee = Number(txReceipt.transactionFee ?? 0n);
|
|
44
|
+
data.positionInBlock = block.body.txEffects.findIndex((txEffect)=>txEffect.txHash.equals(txHash));
|
|
45
|
+
}
|
|
46
|
+
inclusionTimeInSeconds(group) {
|
|
47
|
+
const histogram = createHistogram({});
|
|
48
|
+
for (const tx of this.data.values()){
|
|
49
|
+
if (!tx.blocknumber || tx.group !== group) {
|
|
50
|
+
continue;
|
|
51
|
+
}
|
|
52
|
+
histogram.record(tx.minedAt - tx.sentAt);
|
|
53
|
+
}
|
|
54
|
+
if (histogram.count === 0) {
|
|
55
|
+
return {
|
|
56
|
+
group,
|
|
57
|
+
count: 0,
|
|
58
|
+
mean: 0,
|
|
59
|
+
max: 0,
|
|
60
|
+
median: 0,
|
|
61
|
+
min: 0,
|
|
62
|
+
p99: 0
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
return {
|
|
66
|
+
group,
|
|
67
|
+
count: histogram.count,
|
|
68
|
+
mean: histogram.mean,
|
|
69
|
+
max: histogram.max,
|
|
70
|
+
median: histogram.percentile(50),
|
|
71
|
+
min: histogram.min,
|
|
72
|
+
p99: histogram.percentile(99)
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
toGithubActionBenchmarkJSON() {
|
|
76
|
+
const data = [];
|
|
77
|
+
for (const group of this.groups){
|
|
78
|
+
const stats = this.inclusionTimeInSeconds(group);
|
|
79
|
+
data.push({
|
|
80
|
+
name: `${group}/avg_inclusion`,
|
|
81
|
+
unit: 's',
|
|
82
|
+
value: stats.mean
|
|
83
|
+
}, {
|
|
84
|
+
name: `${group}/median_inclusion`,
|
|
85
|
+
unit: 's',
|
|
86
|
+
value: stats.median
|
|
87
|
+
}, {
|
|
88
|
+
name: `${group}/p99_inclusion`,
|
|
89
|
+
unit: 's',
|
|
90
|
+
value: stats.p99
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
return data;
|
|
94
|
+
}
|
|
95
|
+
}
|
package/dest/spartan/utils.d.ts
CHANGED
|
@@ -1,308 +1,52 @@
|
|
|
1
|
-
|
|
2
|
-
import type {
|
|
1
|
+
import type { RollupCheatCodes } from '@aztec/aztec/testing';
|
|
2
|
+
import type { L1ContractAddresses } from '@aztec/ethereum/l1-contract-addresses';
|
|
3
|
+
import type { ViemPublicClient } from '@aztec/ethereum/types';
|
|
4
|
+
import type { CheckpointNumber } from '@aztec/foundation/branded-types';
|
|
3
5
|
import type { Logger } from '@aztec/foundation/log';
|
|
4
|
-
import type
|
|
6
|
+
import { type AztecNodeAdmin, type AztecNodeAdminConfig, createAztecNodeClient } from '@aztec/stdlib/interfaces/client';
|
|
5
7
|
import { ChildProcess } from 'child_process';
|
|
6
8
|
import { z } from 'zod';
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
CONTAINER_SEQUENCER_PORT: z.ZodDefault<z.ZodNumber>;
|
|
17
|
-
CONTAINER_PROVER_NODE_PORT: z.ZodDefault<z.ZodNumber>;
|
|
18
|
-
CONTAINER_PXE_PORT: z.ZodDefault<z.ZodNumber>;
|
|
19
|
-
CONTAINER_ETHEREUM_PORT: z.ZodDefault<z.ZodNumber>;
|
|
20
|
-
CONTAINER_METRICS_PORT: z.ZodDefault<z.ZodNumber>;
|
|
21
|
-
GRAFANA_PASSWORD: z.ZodOptional<z.ZodString>;
|
|
22
|
-
METRICS_API_PATH: z.ZodDefault<z.ZodString>;
|
|
23
|
-
SPARTAN_DIR: z.ZodString;
|
|
24
|
-
ETHEREUM_HOSTS: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
|
|
25
|
-
L1_ACCOUNT_MNEMONIC: z.ZodDefault<z.ZodString>;
|
|
26
|
-
SEPOLIA_RUN: z.ZodDefault<z.ZodString>;
|
|
27
|
-
K8S: z.ZodLiteral<"local">;
|
|
9
|
+
declare const testConfigSchema: z.ZodObject<{
|
|
10
|
+
NAMESPACE: z.ZodDefault<z.ZodString>;
|
|
11
|
+
REAL_VERIFIER: z.ZodDefault<z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodEffects<z.ZodEffects<z.ZodNumber, 0 | 1, number>, boolean, number>, z.ZodEffects<z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, string, string>, boolean, string>]>>>;
|
|
12
|
+
CREATE_ETH_DEVNET: z.ZodDefault<z.ZodOptional<z.ZodUnion<[z.ZodBoolean, z.ZodEffects<z.ZodEffects<z.ZodNumber, 0 | 1, number>, boolean, number>, z.ZodEffects<z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, string, string>, boolean, string>]>>>;
|
|
13
|
+
L1_RPC_URLS_JSON: z.ZodOptional<z.ZodString>;
|
|
14
|
+
L1_ACCOUNT_MNEMONIC: z.ZodOptional<z.ZodString>;
|
|
15
|
+
AZTEC_SLOT_DURATION: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
16
|
+
AZTEC_EPOCH_DURATION: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
17
|
+
AZTEC_PROOF_SUBMISSION_WINDOW: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
28
18
|
}, "strip", z.ZodTypeAny, {
|
|
29
|
-
ETHEREUM_SLOT_DURATION: number;
|
|
30
|
-
AZTEC_SLOT_DURATION: number;
|
|
31
|
-
AZTEC_EPOCH_DURATION: number;
|
|
32
|
-
AZTEC_PROOF_SUBMISSION_WINDOW: number;
|
|
33
|
-
INSTANCE_NAME: string;
|
|
34
19
|
NAMESPACE: string;
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
CONTAINER_PXE_PORT: number;
|
|
39
|
-
CONTAINER_ETHEREUM_PORT: number;
|
|
40
|
-
CONTAINER_METRICS_PORT: number;
|
|
41
|
-
METRICS_API_PATH: string;
|
|
42
|
-
SPARTAN_DIR: string;
|
|
43
|
-
L1_ACCOUNT_MNEMONIC: string;
|
|
44
|
-
SEPOLIA_RUN: string;
|
|
45
|
-
K8S: "local";
|
|
46
|
-
ETHEREUM_HOSTS?: string | undefined;
|
|
47
|
-
GRAFANA_PASSWORD?: string | undefined;
|
|
48
|
-
}, {
|
|
49
|
-
ETHEREUM_SLOT_DURATION: number;
|
|
50
|
-
AZTEC_SLOT_DURATION: number;
|
|
51
|
-
AZTEC_EPOCH_DURATION: number;
|
|
52
|
-
AZTEC_PROOF_SUBMISSION_WINDOW: number;
|
|
53
|
-
INSTANCE_NAME: string;
|
|
54
|
-
NAMESPACE: string;
|
|
55
|
-
SPARTAN_DIR: string;
|
|
56
|
-
K8S: "local";
|
|
57
|
-
ETHEREUM_HOSTS?: string | undefined;
|
|
58
|
-
CONTAINER_NODE_PORT?: number | undefined;
|
|
59
|
-
CONTAINER_SEQUENCER_PORT?: number | undefined;
|
|
60
|
-
CONTAINER_PROVER_NODE_PORT?: number | undefined;
|
|
61
|
-
CONTAINER_PXE_PORT?: number | undefined;
|
|
62
|
-
CONTAINER_ETHEREUM_PORT?: number | undefined;
|
|
63
|
-
CONTAINER_METRICS_PORT?: number | undefined;
|
|
64
|
-
GRAFANA_PASSWORD?: string | undefined;
|
|
65
|
-
METRICS_API_PATH?: string | undefined;
|
|
20
|
+
REAL_VERIFIER: boolean;
|
|
21
|
+
CREATE_ETH_DEVNET: boolean;
|
|
22
|
+
L1_RPC_URLS_JSON?: string | undefined;
|
|
66
23
|
L1_ACCOUNT_MNEMONIC?: string | undefined;
|
|
67
|
-
SEPOLIA_RUN?: string | undefined;
|
|
68
|
-
}>;
|
|
69
|
-
declare const k8sGCloudConfigSchema: z.ZodObject<z.objectUtil.extendShape<{
|
|
70
|
-
ETHEREUM_SLOT_DURATION: z.ZodNumber;
|
|
71
|
-
AZTEC_SLOT_DURATION: z.ZodNumber;
|
|
72
|
-
AZTEC_EPOCH_DURATION: z.ZodNumber;
|
|
73
|
-
AZTEC_PROOF_SUBMISSION_WINDOW: z.ZodNumber;
|
|
74
|
-
INSTANCE_NAME: z.ZodString;
|
|
75
|
-
NAMESPACE: z.ZodString;
|
|
76
|
-
CONTAINER_NODE_PORT: z.ZodDefault<z.ZodNumber>;
|
|
77
|
-
CONTAINER_SEQUENCER_PORT: z.ZodDefault<z.ZodNumber>;
|
|
78
|
-
CONTAINER_PROVER_NODE_PORT: z.ZodDefault<z.ZodNumber>;
|
|
79
|
-
CONTAINER_PXE_PORT: z.ZodDefault<z.ZodNumber>;
|
|
80
|
-
CONTAINER_ETHEREUM_PORT: z.ZodDefault<z.ZodNumber>;
|
|
81
|
-
CONTAINER_METRICS_PORT: z.ZodDefault<z.ZodNumber>;
|
|
82
|
-
GRAFANA_PASSWORD: z.ZodOptional<z.ZodString>;
|
|
83
|
-
METRICS_API_PATH: z.ZodDefault<z.ZodString>;
|
|
84
|
-
SPARTAN_DIR: z.ZodString;
|
|
85
|
-
ETHEREUM_HOSTS: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
|
|
86
|
-
L1_ACCOUNT_MNEMONIC: z.ZodDefault<z.ZodString>;
|
|
87
|
-
SEPOLIA_RUN: z.ZodDefault<z.ZodString>;
|
|
88
|
-
K8S: z.ZodLiteral<"local">;
|
|
89
|
-
}, {
|
|
90
|
-
K8S: z.ZodLiteral<"gcloud">;
|
|
91
|
-
CLUSTER_NAME: z.ZodString;
|
|
92
|
-
REGION: z.ZodString;
|
|
93
|
-
}>, "strip", z.ZodTypeAny, {
|
|
94
|
-
ETHEREUM_SLOT_DURATION: number;
|
|
95
24
|
AZTEC_SLOT_DURATION: number;
|
|
96
25
|
AZTEC_EPOCH_DURATION: number;
|
|
97
26
|
AZTEC_PROOF_SUBMISSION_WINDOW: number;
|
|
98
|
-
INSTANCE_NAME: string;
|
|
99
|
-
NAMESPACE: string;
|
|
100
|
-
CONTAINER_NODE_PORT: number;
|
|
101
|
-
CONTAINER_SEQUENCER_PORT: number;
|
|
102
|
-
CONTAINER_PROVER_NODE_PORT: number;
|
|
103
|
-
CONTAINER_PXE_PORT: number;
|
|
104
|
-
CONTAINER_ETHEREUM_PORT: number;
|
|
105
|
-
CONTAINER_METRICS_PORT: number;
|
|
106
|
-
METRICS_API_PATH: string;
|
|
107
|
-
SPARTAN_DIR: string;
|
|
108
|
-
L1_ACCOUNT_MNEMONIC: string;
|
|
109
|
-
SEPOLIA_RUN: string;
|
|
110
|
-
K8S: "gcloud";
|
|
111
|
-
CLUSTER_NAME: string;
|
|
112
|
-
REGION: string;
|
|
113
|
-
ETHEREUM_HOSTS?: string | undefined;
|
|
114
|
-
GRAFANA_PASSWORD?: string | undefined;
|
|
115
27
|
}, {
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
INSTANCE_NAME: string;
|
|
121
|
-
NAMESPACE: string;
|
|
122
|
-
SPARTAN_DIR: string;
|
|
123
|
-
K8S: "gcloud";
|
|
124
|
-
CLUSTER_NAME: string;
|
|
125
|
-
REGION: string;
|
|
126
|
-
ETHEREUM_HOSTS?: string | undefined;
|
|
127
|
-
CONTAINER_NODE_PORT?: number | undefined;
|
|
128
|
-
CONTAINER_SEQUENCER_PORT?: number | undefined;
|
|
129
|
-
CONTAINER_PROVER_NODE_PORT?: number | undefined;
|
|
130
|
-
CONTAINER_PXE_PORT?: number | undefined;
|
|
131
|
-
CONTAINER_ETHEREUM_PORT?: number | undefined;
|
|
132
|
-
CONTAINER_METRICS_PORT?: number | undefined;
|
|
133
|
-
GRAFANA_PASSWORD?: string | undefined;
|
|
134
|
-
METRICS_API_PATH?: string | undefined;
|
|
28
|
+
NAMESPACE?: string | undefined;
|
|
29
|
+
REAL_VERIFIER?: string | number | boolean | undefined;
|
|
30
|
+
CREATE_ETH_DEVNET?: string | number | boolean | undefined;
|
|
31
|
+
L1_RPC_URLS_JSON?: string | undefined;
|
|
135
32
|
L1_ACCOUNT_MNEMONIC?: string | undefined;
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
PXE_URL: z.ZodString;
|
|
140
|
-
NODE_URL: z.ZodString;
|
|
141
|
-
ETHEREUM_HOSTS: z.ZodEffects<z.ZodString, string, string>;
|
|
142
|
-
K8S: z.ZodLiteral<"false">;
|
|
143
|
-
}, "strip", z.ZodTypeAny, {
|
|
144
|
-
PXE_URL: string;
|
|
145
|
-
ETHEREUM_HOSTS: string;
|
|
146
|
-
K8S: "false";
|
|
147
|
-
NODE_URL: string;
|
|
148
|
-
}, {
|
|
149
|
-
PXE_URL: string;
|
|
150
|
-
ETHEREUM_HOSTS: string;
|
|
151
|
-
K8S: "false";
|
|
152
|
-
NODE_URL: string;
|
|
33
|
+
AZTEC_SLOT_DURATION?: number | undefined;
|
|
34
|
+
AZTEC_EPOCH_DURATION?: number | undefined;
|
|
35
|
+
AZTEC_PROOF_SUBMISSION_WINDOW?: number | undefined;
|
|
153
36
|
}>;
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
GRAFANA_PASSWORD: z.ZodOptional<z.ZodString>;
|
|
168
|
-
METRICS_API_PATH: z.ZodDefault<z.ZodString>;
|
|
169
|
-
SPARTAN_DIR: z.ZodString;
|
|
170
|
-
ETHEREUM_HOSTS: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
|
|
171
|
-
L1_ACCOUNT_MNEMONIC: z.ZodDefault<z.ZodString>;
|
|
172
|
-
SEPOLIA_RUN: z.ZodDefault<z.ZodString>;
|
|
173
|
-
K8S: z.ZodLiteral<"local">;
|
|
174
|
-
}, "strip", z.ZodTypeAny, {
|
|
175
|
-
ETHEREUM_SLOT_DURATION: number;
|
|
176
|
-
AZTEC_SLOT_DURATION: number;
|
|
177
|
-
AZTEC_EPOCH_DURATION: number;
|
|
178
|
-
AZTEC_PROOF_SUBMISSION_WINDOW: number;
|
|
179
|
-
INSTANCE_NAME: string;
|
|
180
|
-
NAMESPACE: string;
|
|
181
|
-
CONTAINER_NODE_PORT: number;
|
|
182
|
-
CONTAINER_SEQUENCER_PORT: number;
|
|
183
|
-
CONTAINER_PROVER_NODE_PORT: number;
|
|
184
|
-
CONTAINER_PXE_PORT: number;
|
|
185
|
-
CONTAINER_ETHEREUM_PORT: number;
|
|
186
|
-
CONTAINER_METRICS_PORT: number;
|
|
187
|
-
METRICS_API_PATH: string;
|
|
188
|
-
SPARTAN_DIR: string;
|
|
189
|
-
L1_ACCOUNT_MNEMONIC: string;
|
|
190
|
-
SEPOLIA_RUN: string;
|
|
191
|
-
K8S: "local";
|
|
192
|
-
ETHEREUM_HOSTS?: string | undefined;
|
|
193
|
-
GRAFANA_PASSWORD?: string | undefined;
|
|
194
|
-
}, {
|
|
195
|
-
ETHEREUM_SLOT_DURATION: number;
|
|
196
|
-
AZTEC_SLOT_DURATION: number;
|
|
197
|
-
AZTEC_EPOCH_DURATION: number;
|
|
198
|
-
AZTEC_PROOF_SUBMISSION_WINDOW: number;
|
|
199
|
-
INSTANCE_NAME: string;
|
|
200
|
-
NAMESPACE: string;
|
|
201
|
-
SPARTAN_DIR: string;
|
|
202
|
-
K8S: "local";
|
|
203
|
-
ETHEREUM_HOSTS?: string | undefined;
|
|
204
|
-
CONTAINER_NODE_PORT?: number | undefined;
|
|
205
|
-
CONTAINER_SEQUENCER_PORT?: number | undefined;
|
|
206
|
-
CONTAINER_PROVER_NODE_PORT?: number | undefined;
|
|
207
|
-
CONTAINER_PXE_PORT?: number | undefined;
|
|
208
|
-
CONTAINER_ETHEREUM_PORT?: number | undefined;
|
|
209
|
-
CONTAINER_METRICS_PORT?: number | undefined;
|
|
210
|
-
GRAFANA_PASSWORD?: string | undefined;
|
|
211
|
-
METRICS_API_PATH?: string | undefined;
|
|
212
|
-
L1_ACCOUNT_MNEMONIC?: string | undefined;
|
|
213
|
-
SEPOLIA_RUN?: string | undefined;
|
|
214
|
-
}>, z.ZodObject<z.objectUtil.extendShape<{
|
|
215
|
-
ETHEREUM_SLOT_DURATION: z.ZodNumber;
|
|
216
|
-
AZTEC_SLOT_DURATION: z.ZodNumber;
|
|
217
|
-
AZTEC_EPOCH_DURATION: z.ZodNumber;
|
|
218
|
-
AZTEC_PROOF_SUBMISSION_WINDOW: z.ZodNumber;
|
|
219
|
-
INSTANCE_NAME: z.ZodString;
|
|
220
|
-
NAMESPACE: z.ZodString;
|
|
221
|
-
CONTAINER_NODE_PORT: z.ZodDefault<z.ZodNumber>;
|
|
222
|
-
CONTAINER_SEQUENCER_PORT: z.ZodDefault<z.ZodNumber>;
|
|
223
|
-
CONTAINER_PROVER_NODE_PORT: z.ZodDefault<z.ZodNumber>;
|
|
224
|
-
CONTAINER_PXE_PORT: z.ZodDefault<z.ZodNumber>;
|
|
225
|
-
CONTAINER_ETHEREUM_PORT: z.ZodDefault<z.ZodNumber>;
|
|
226
|
-
CONTAINER_METRICS_PORT: z.ZodDefault<z.ZodNumber>;
|
|
227
|
-
GRAFANA_PASSWORD: z.ZodOptional<z.ZodString>;
|
|
228
|
-
METRICS_API_PATH: z.ZodDefault<z.ZodString>;
|
|
229
|
-
SPARTAN_DIR: z.ZodString;
|
|
230
|
-
ETHEREUM_HOSTS: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
|
|
231
|
-
L1_ACCOUNT_MNEMONIC: z.ZodDefault<z.ZodString>;
|
|
232
|
-
SEPOLIA_RUN: z.ZodDefault<z.ZodString>;
|
|
233
|
-
K8S: z.ZodLiteral<"local">;
|
|
234
|
-
}, {
|
|
235
|
-
K8S: z.ZodLiteral<"gcloud">;
|
|
236
|
-
CLUSTER_NAME: z.ZodString;
|
|
237
|
-
REGION: z.ZodString;
|
|
238
|
-
}>, "strip", z.ZodTypeAny, {
|
|
239
|
-
ETHEREUM_SLOT_DURATION: number;
|
|
240
|
-
AZTEC_SLOT_DURATION: number;
|
|
241
|
-
AZTEC_EPOCH_DURATION: number;
|
|
242
|
-
AZTEC_PROOF_SUBMISSION_WINDOW: number;
|
|
243
|
-
INSTANCE_NAME: string;
|
|
244
|
-
NAMESPACE: string;
|
|
245
|
-
CONTAINER_NODE_PORT: number;
|
|
246
|
-
CONTAINER_SEQUENCER_PORT: number;
|
|
247
|
-
CONTAINER_PROVER_NODE_PORT: number;
|
|
248
|
-
CONTAINER_PXE_PORT: number;
|
|
249
|
-
CONTAINER_ETHEREUM_PORT: number;
|
|
250
|
-
CONTAINER_METRICS_PORT: number;
|
|
251
|
-
METRICS_API_PATH: string;
|
|
252
|
-
SPARTAN_DIR: string;
|
|
253
|
-
L1_ACCOUNT_MNEMONIC: string;
|
|
254
|
-
SEPOLIA_RUN: string;
|
|
255
|
-
K8S: "gcloud";
|
|
256
|
-
CLUSTER_NAME: string;
|
|
257
|
-
REGION: string;
|
|
258
|
-
ETHEREUM_HOSTS?: string | undefined;
|
|
259
|
-
GRAFANA_PASSWORD?: string | undefined;
|
|
260
|
-
}, {
|
|
261
|
-
ETHEREUM_SLOT_DURATION: number;
|
|
262
|
-
AZTEC_SLOT_DURATION: number;
|
|
263
|
-
AZTEC_EPOCH_DURATION: number;
|
|
264
|
-
AZTEC_PROOF_SUBMISSION_WINDOW: number;
|
|
265
|
-
INSTANCE_NAME: string;
|
|
266
|
-
NAMESPACE: string;
|
|
267
|
-
SPARTAN_DIR: string;
|
|
268
|
-
K8S: "gcloud";
|
|
269
|
-
CLUSTER_NAME: string;
|
|
270
|
-
REGION: string;
|
|
271
|
-
ETHEREUM_HOSTS?: string | undefined;
|
|
272
|
-
CONTAINER_NODE_PORT?: number | undefined;
|
|
273
|
-
CONTAINER_SEQUENCER_PORT?: number | undefined;
|
|
274
|
-
CONTAINER_PROVER_NODE_PORT?: number | undefined;
|
|
275
|
-
CONTAINER_PXE_PORT?: number | undefined;
|
|
276
|
-
CONTAINER_ETHEREUM_PORT?: number | undefined;
|
|
277
|
-
CONTAINER_METRICS_PORT?: number | undefined;
|
|
278
|
-
GRAFANA_PASSWORD?: string | undefined;
|
|
279
|
-
METRICS_API_PATH?: string | undefined;
|
|
280
|
-
L1_ACCOUNT_MNEMONIC?: string | undefined;
|
|
281
|
-
SEPOLIA_RUN?: string | undefined;
|
|
282
|
-
}>, z.ZodObject<{
|
|
283
|
-
PXE_URL: z.ZodString;
|
|
284
|
-
NODE_URL: z.ZodString;
|
|
285
|
-
ETHEREUM_HOSTS: z.ZodEffects<z.ZodString, string, string>;
|
|
286
|
-
K8S: z.ZodLiteral<"false">;
|
|
287
|
-
}, "strip", z.ZodTypeAny, {
|
|
288
|
-
PXE_URL: string;
|
|
289
|
-
ETHEREUM_HOSTS: string;
|
|
290
|
-
K8S: "false";
|
|
291
|
-
NODE_URL: string;
|
|
292
|
-
}, {
|
|
293
|
-
PXE_URL: string;
|
|
294
|
-
ETHEREUM_HOSTS: string;
|
|
295
|
-
K8S: "false";
|
|
296
|
-
NODE_URL: string;
|
|
297
|
-
}>]>;
|
|
298
|
-
export type K8sLocalConfig = z.infer<typeof k8sLocalConfigSchema>;
|
|
299
|
-
export type K8sGCloudConfig = z.infer<typeof k8sGCloudConfigSchema>;
|
|
300
|
-
export type DirectConfig = z.infer<typeof directConfigSchema>;
|
|
301
|
-
export type EnvConfig = z.infer<typeof envSchema>;
|
|
302
|
-
export declare function isK8sConfig(config: EnvConfig): config is K8sLocalConfig | K8sGCloudConfig;
|
|
303
|
-
export declare function isGCloudConfig(config: EnvConfig): config is K8sGCloudConfig;
|
|
304
|
-
export declare function setupEnvironment(env: unknown): EnvConfig;
|
|
305
|
-
export declare function startPortForward({ resource, namespace, containerPort, hostPort, }: {
|
|
37
|
+
export type TestConfig = z.infer<typeof testConfigSchema>;
|
|
38
|
+
export declare function setupEnvironment(env: unknown): TestConfig;
|
|
39
|
+
export declare function getAztecBin(): string;
|
|
40
|
+
/**
|
|
41
|
+
* Runs the Aztec binary
|
|
42
|
+
* @param args - The arguments to pass to the Aztec binary
|
|
43
|
+
* @param logger - The logger to use
|
|
44
|
+
* @param env - Optional environment variables to set for the process
|
|
45
|
+
* @returns The exit code of the Aztec binary
|
|
46
|
+
*/
|
|
47
|
+
export declare function runAztecBin(args: string[], logger: Logger, env?: Record<string, string>): Promise<number>;
|
|
48
|
+
export declare function runProjectScript(script: string, args: string[], logger: Logger, env?: Record<string, string>): Promise<number>;
|
|
49
|
+
export declare function startPortForward({ resource, namespace, containerPort, hostPort }: {
|
|
306
50
|
resource: string;
|
|
307
51
|
namespace: string;
|
|
308
52
|
containerPort: number;
|
|
@@ -311,18 +55,29 @@ export declare function startPortForward({ resource, namespace, containerPort, h
|
|
|
311
55
|
process: ChildProcess;
|
|
312
56
|
port: number;
|
|
313
57
|
}>;
|
|
314
|
-
export declare function
|
|
58
|
+
export declare function getExternalIP(namespace: string, serviceName: string): Promise<string>;
|
|
59
|
+
export declare function startPortForwardForRPC(namespace: string, index?: number): Promise<{
|
|
60
|
+
process: ChildProcess;
|
|
61
|
+
port: number;
|
|
62
|
+
}>;
|
|
63
|
+
export declare function startPortForwardForEthereum(namespace: string): Promise<{
|
|
64
|
+
process: ChildProcess;
|
|
65
|
+
port: number;
|
|
66
|
+
}>;
|
|
67
|
+
export declare function deleteResourceByName({ resource, namespace, name, force }: {
|
|
315
68
|
resource: string;
|
|
316
69
|
namespace: string;
|
|
317
70
|
name: string;
|
|
318
71
|
force?: boolean;
|
|
319
72
|
}): Promise<string>;
|
|
320
|
-
export declare function deleteResourceByLabel({ resource, namespace, label, }: {
|
|
73
|
+
export declare function deleteResourceByLabel({ resource, namespace, label, timeout, force }: {
|
|
321
74
|
resource: string;
|
|
322
75
|
namespace: string;
|
|
323
76
|
label: string;
|
|
77
|
+
timeout?: string;
|
|
78
|
+
force?: boolean;
|
|
324
79
|
}): Promise<string>;
|
|
325
|
-
export declare function waitForResourceByLabel({ resource, label, namespace, condition, timeout
|
|
80
|
+
export declare function waitForResourceByLabel({ resource, label, namespace, condition, timeout }: {
|
|
326
81
|
resource: string;
|
|
327
82
|
label: string;
|
|
328
83
|
namespace: string;
|
|
@@ -330,6 +85,7 @@ export declare function waitForResourceByLabel({ resource, label, namespace, con
|
|
|
330
85
|
timeout?: string;
|
|
331
86
|
}): Promise<string>;
|
|
332
87
|
export declare function getChartDir(spartanDir: string, chartName: string): string;
|
|
88
|
+
export declare function uninstallChaosMesh(instanceName: string, namespace: string, logger: Logger): Promise<void>;
|
|
333
89
|
/**
|
|
334
90
|
* Installs a Helm chart with the given parameters.
|
|
335
91
|
* @param instanceName - The name of the Helm chart instance.
|
|
@@ -347,7 +103,7 @@ export declare function getChartDir(spartanDir: string, chartName: string): stri
|
|
|
347
103
|
* console.log(stdout);
|
|
348
104
|
* ```
|
|
349
105
|
*/
|
|
350
|
-
export declare function installChaosMeshChart({ instanceName, targetNamespace, valuesFile, helmChartDir,
|
|
106
|
+
export declare function installChaosMeshChart({ instanceName, targetNamespace, valuesFile, helmChartDir, timeout, clean, values, logger }: {
|
|
351
107
|
instanceName: string;
|
|
352
108
|
targetNamespace: string;
|
|
353
109
|
valuesFile: string;
|
|
@@ -358,51 +114,101 @@ export declare function installChaosMeshChart({ instanceName, targetNamespace, v
|
|
|
358
114
|
values?: Record<string, string | number>;
|
|
359
115
|
logger: Logger;
|
|
360
116
|
}): Promise<string>;
|
|
361
|
-
export declare function applyProverFailure({ namespace, spartanDir, durationSeconds, logger
|
|
117
|
+
export declare function applyProverFailure({ namespace, spartanDir, durationSeconds, logger }: {
|
|
362
118
|
namespace: string;
|
|
363
119
|
spartanDir: string;
|
|
364
120
|
durationSeconds: number;
|
|
365
121
|
logger: Logger;
|
|
366
122
|
}): Promise<string>;
|
|
367
|
-
export declare function applyProverKill({ namespace, spartanDir, logger, }: {
|
|
123
|
+
export declare function applyProverKill({ namespace, spartanDir, logger, values }: {
|
|
368
124
|
namespace: string;
|
|
369
125
|
spartanDir: string;
|
|
370
126
|
logger: Logger;
|
|
127
|
+
values?: Record<string, string | number>;
|
|
371
128
|
}): Promise<string>;
|
|
372
|
-
export declare function applyProverBrokerKill({ namespace, spartanDir, logger, }: {
|
|
129
|
+
export declare function applyProverBrokerKill({ namespace, spartanDir, logger, values }: {
|
|
373
130
|
namespace: string;
|
|
374
131
|
spartanDir: string;
|
|
375
132
|
logger: Logger;
|
|
133
|
+
values?: Record<string, string | number>;
|
|
376
134
|
}): Promise<string>;
|
|
377
|
-
export declare function applyBootNodeFailure({ namespace, spartanDir, durationSeconds, logger, }: {
|
|
135
|
+
export declare function applyBootNodeFailure({ instanceName, namespace, spartanDir, durationSeconds, logger, values }: {
|
|
136
|
+
instanceName?: string;
|
|
378
137
|
namespace: string;
|
|
379
138
|
spartanDir: string;
|
|
380
139
|
durationSeconds: number;
|
|
381
140
|
logger: Logger;
|
|
141
|
+
values?: Record<string, string | number>;
|
|
382
142
|
}): Promise<string>;
|
|
383
|
-
export declare function applyValidatorKill({ namespace, spartanDir, logger, }: {
|
|
143
|
+
export declare function applyValidatorKill({ instanceName, namespace, spartanDir, logger, values }: {
|
|
144
|
+
instanceName?: string;
|
|
384
145
|
namespace: string;
|
|
385
146
|
spartanDir: string;
|
|
386
147
|
logger: Logger;
|
|
148
|
+
values?: Record<string, string | number>;
|
|
387
149
|
}): Promise<string>;
|
|
388
|
-
export declare function applyNetworkShaping({ valuesFile, namespace, spartanDir, logger
|
|
150
|
+
export declare function applyNetworkShaping({ instanceName, valuesFile, namespace, spartanDir, logger }: {
|
|
151
|
+
instanceName?: string;
|
|
389
152
|
valuesFile: string;
|
|
390
153
|
namespace: string;
|
|
391
154
|
spartanDir: string;
|
|
392
155
|
logger: Logger;
|
|
393
156
|
}): Promise<string>;
|
|
394
|
-
export declare function
|
|
157
|
+
export declare function awaitCheckpointNumber(rollupCheatCodes: RollupCheatCodes, checkpointNumber: CheckpointNumber, timeoutSeconds: number, logger: Logger): Promise<void>;
|
|
395
158
|
export declare function restartBot(namespace: string, logger: Logger): Promise<void>;
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
export declare function
|
|
401
|
-
containerPort: number;
|
|
159
|
+
/**
|
|
160
|
+
* Installs or upgrades the transfer bot Helm release for the given namespace.
|
|
161
|
+
* Intended for test setup to enable L2 traffic generation only when needed.
|
|
162
|
+
*/
|
|
163
|
+
export declare function installTransferBot({ namespace, spartanDir, logger, replicas, txIntervalSeconds, followChain, mnemonic, mnemonicStartIndex, botPrivateKey, nodeUrl, timeout, reuseValues, aztecSlotDuration }: {
|
|
402
164
|
namespace: string;
|
|
403
|
-
|
|
165
|
+
spartanDir: string;
|
|
166
|
+
logger: Logger;
|
|
167
|
+
replicas?: number;
|
|
168
|
+
txIntervalSeconds?: number;
|
|
169
|
+
followChain?: string;
|
|
170
|
+
mnemonic?: string;
|
|
171
|
+
mnemonicStartIndex?: number | string;
|
|
172
|
+
botPrivateKey?: string;
|
|
173
|
+
nodeUrl?: string;
|
|
174
|
+
timeout?: string;
|
|
175
|
+
reuseValues?: boolean;
|
|
176
|
+
aztecSlotDuration?: number;
|
|
177
|
+
}): Promise<void>;
|
|
178
|
+
/**
|
|
179
|
+
* Uninstalls the transfer bot Helm release from the given namespace.
|
|
180
|
+
* Intended for test teardown to clean up bot resources.
|
|
181
|
+
*/
|
|
182
|
+
export declare function uninstallTransferBot(namespace: string, logger: Logger): Promise<void>;
|
|
183
|
+
/**
|
|
184
|
+
* Enables or disables probabilistic transaction dropping on validators and waits for rollout.
|
|
185
|
+
* Wired to env vars P2P_DROP_TX and P2P_DROP_TX_CHANCE via Helm values.
|
|
186
|
+
*/
|
|
187
|
+
export declare function setValidatorTxDrop({ namespace, enabled, probability, logger }: {
|
|
188
|
+
namespace: string;
|
|
189
|
+
enabled: boolean;
|
|
190
|
+
probability: number;
|
|
191
|
+
logger: Logger;
|
|
404
192
|
}): Promise<void>;
|
|
405
|
-
export declare function
|
|
193
|
+
export declare function restartValidators(namespace: string, logger: Logger): Promise<void>;
|
|
194
|
+
export declare function enableValidatorDynamicBootNode(instanceName: string, namespace: string, spartanDir: string, logger: Logger): Promise<void>;
|
|
195
|
+
export declare function getSequencers(namespace: string): Promise<string[]>;
|
|
196
|
+
export declare function updateSequencersConfig(env: TestConfig, config: Partial<AztecNodeAdminConfig>): Promise<AztecNodeAdminConfig[]>;
|
|
197
|
+
export declare function getSequencersConfig(env: TestConfig): Promise<AztecNodeAdminConfig[]>;
|
|
198
|
+
export declare function withSequencersAdmin<T>(env: TestConfig, fn: (node: AztecNodeAdmin) => Promise<T>): Promise<T[]>;
|
|
199
|
+
/**
|
|
200
|
+
* Returns a public viem client to the eth execution node. If it was part of a local eth devnet,
|
|
201
|
+
* it first port-forwards the service and points to it. Otherwise, just uses the external RPC url.
|
|
202
|
+
*/
|
|
203
|
+
export declare function getPublicViemClient(env: TestConfig,
|
|
204
|
+
/** If set, will push the new process into it */
|
|
205
|
+
processes?: ChildProcess[]): Promise<{
|
|
206
|
+
url: string;
|
|
207
|
+
client: ViemPublicClient;
|
|
208
|
+
process?: ChildProcess;
|
|
209
|
+
}>;
|
|
210
|
+
/** Queries an Aztec node for the L1 deployment addresses */
|
|
211
|
+
export declare function getL1DeploymentAddresses(env: TestConfig): Promise<L1ContractAddresses>;
|
|
406
212
|
/**
|
|
407
213
|
* Rolls the Aztec pods in the given namespace.
|
|
408
214
|
* @param namespace - The namespace to roll the Aztec pods in.
|
|
@@ -411,5 +217,15 @@ export declare function updateSequencersConfig(env: EnvConfig, config: Partial<S
|
|
|
411
217
|
* This is useful for testing, but you should be aware of the implications.
|
|
412
218
|
*/
|
|
413
219
|
export declare function rollAztecPods(namespace: string): Promise<void>;
|
|
220
|
+
/**
|
|
221
|
+
* Returns the absolute path to the git repository root
|
|
222
|
+
*/
|
|
223
|
+
export declare function getGitProjectRoot(): string;
|
|
224
|
+
/** Returns a client to the RPC of the given sequencer (defaults to first) */
|
|
225
|
+
export declare function getNodeClient(env: TestConfig, index?: number): Promise<{
|
|
226
|
+
node: ReturnType<typeof createAztecNodeClient>;
|
|
227
|
+
port: number;
|
|
228
|
+
process: ChildProcess;
|
|
229
|
+
}>;
|
|
414
230
|
export {};
|
|
415
|
-
//# sourceMappingURL=
|
|
231
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zcGFydGFuL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sS0FBSyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDN0QsT0FBTyxLQUFLLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNqRixPQUFPLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzlELE9BQU8sS0FBSyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDeEUsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFLcEQsT0FBTyxFQUNMLEtBQUssY0FBYyxFQUNuQixLQUFLLG9CQUFvQixFQUV6QixxQkFBcUIsRUFDdEIsTUFBTSxpQ0FBaUMsQ0FBQztBQUV6QyxPQUFPLEVBQUUsWUFBWSxFQUF5QixNQUFNLGVBQWUsQ0FBQztBQUlwRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBTXhCLFFBQUEsTUFBTSxnQkFBZ0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQVNwQixDQUFDO0FBRUgsTUFBTSxNQUFNLFVBQVUsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sZ0JBQWdCLENBQUMsQ0FBQztBQUUxRCx3QkFBZ0IsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLE9BQU8sR0FBRyxVQUFVLENBSXpEO0FBeUJELHdCQUFnQixXQUFXLFdBRTFCO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsd0JBQWdCLFdBQVcsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUMsRUFBRSxNQUFNLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxtQkFFdkY7QUFFRCx3QkFBZ0IsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLE1B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
|