@aztec/end-to-end 0.0.1-commit.b655e406 → 0.0.1-commit.c31f2472

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.
Files changed (209) hide show
  1. package/dest/bench/client_flows/benchmark.d.ts +3 -2
  2. package/dest/bench/client_flows/benchmark.d.ts.map +1 -1
  3. package/dest/bench/client_flows/benchmark.js +21 -1
  4. package/dest/bench/client_flows/client_flows_benchmark.d.ts +21 -15
  5. package/dest/bench/client_flows/client_flows_benchmark.d.ts.map +1 -1
  6. package/dest/bench/client_flows/client_flows_benchmark.js +129 -119
  7. package/dest/bench/client_flows/config.d.ts +1 -1
  8. package/dest/bench/client_flows/data_extractor.d.ts +1 -1
  9. package/dest/bench/client_flows/data_extractor.js +7 -27
  10. package/dest/bench/utils.d.ts +8 -7
  11. package/dest/bench/utils.d.ts.map +1 -1
  12. package/dest/bench/utils.js +27 -18
  13. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts +6 -7
  14. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.d.ts.map +1 -1
  15. package/dest/e2e_blacklist_token_contract/blacklist_token_contract_test.js +96 -112
  16. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts +19 -13
  17. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.d.ts.map +1 -1
  18. package/dest/e2e_cross_chain_messaging/cross_chain_messaging_test.js +91 -70
  19. package/dest/e2e_deploy_contract/deploy_test.d.ts +5 -4
  20. package/dest/e2e_deploy_contract/deploy_test.d.ts.map +1 -1
  21. package/dest/e2e_deploy_contract/deploy_test.js +18 -13
  22. package/dest/e2e_epochs/epochs_test.d.ts +17 -9
  23. package/dest/e2e_epochs/epochs_test.d.ts.map +1 -1
  24. package/dest/e2e_epochs/epochs_test.js +48 -23
  25. package/dest/e2e_fees/bridging_race.notest.d.ts +1 -1
  26. package/dest/e2e_fees/bridging_race.notest.js +5 -7
  27. package/dest/e2e_fees/fees_test.d.ts +20 -16
  28. package/dest/e2e_fees/fees_test.d.ts.map +1 -1
  29. package/dest/e2e_fees/fees_test.js +127 -139
  30. package/dest/e2e_l1_publisher/write_json.d.ts +4 -3
  31. package/dest/e2e_l1_publisher/write_json.d.ts.map +1 -1
  32. package/dest/e2e_l1_publisher/write_json.js +18 -19
  33. package/dest/e2e_multi_validator/utils.d.ts +1 -1
  34. package/dest/e2e_multi_validator/utils.js +1 -1
  35. package/dest/e2e_nested_contract/nested_contract_test.d.ts +6 -9
  36. package/dest/e2e_nested_contract/nested_contract_test.d.ts.map +1 -1
  37. package/dest/e2e_nested_contract/nested_contract_test.js +31 -38
  38. package/dest/e2e_p2p/inactivity_slash_test.d.ts +3 -3
  39. package/dest/e2e_p2p/inactivity_slash_test.d.ts.map +1 -1
  40. package/dest/e2e_p2p/inactivity_slash_test.js +7 -6
  41. package/dest/e2e_p2p/p2p_network.d.ts +225 -18
  42. package/dest/e2e_p2p/p2p_network.d.ts.map +1 -1
  43. package/dest/e2e_p2p/p2p_network.js +121 -110
  44. package/dest/e2e_p2p/shared.d.ts +11 -11
  45. package/dest/e2e_p2p/shared.d.ts.map +1 -1
  46. package/dest/e2e_p2p/shared.js +15 -21
  47. package/dest/e2e_token_contract/token_contract_test.d.ts +16 -9
  48. package/dest/e2e_token_contract/token_contract_test.d.ts.map +1 -1
  49. package/dest/e2e_token_contract/token_contract_test.js +89 -91
  50. package/dest/fixtures/e2e_prover_test.d.ts +12 -18
  51. package/dest/fixtures/e2e_prover_test.d.ts.map +1 -1
  52. package/dest/fixtures/e2e_prover_test.js +101 -109
  53. package/dest/fixtures/fixtures.d.ts +2 -3
  54. package/dest/fixtures/fixtures.d.ts.map +1 -1
  55. package/dest/fixtures/fixtures.js +2 -3
  56. package/dest/fixtures/get_acvm_config.d.ts +1 -1
  57. package/dest/fixtures/get_acvm_config.js +1 -1
  58. package/dest/fixtures/get_bb_config.d.ts +1 -1
  59. package/dest/fixtures/get_bb_config.d.ts.map +1 -1
  60. package/dest/fixtures/index.d.ts +1 -1
  61. package/dest/fixtures/l1_to_l2_messaging.d.ts +4 -3
  62. package/dest/fixtures/l1_to_l2_messaging.d.ts.map +1 -1
  63. package/dest/fixtures/l1_to_l2_messaging.js +2 -2
  64. package/dest/fixtures/logging.d.ts +1 -1
  65. package/dest/fixtures/setup.d.ts +218 -0
  66. package/dest/fixtures/setup.d.ts.map +1 -0
  67. package/dest/fixtures/setup.js +695 -0
  68. package/dest/fixtures/setup_p2p_test.d.ts +6 -7
  69. package/dest/fixtures/setup_p2p_test.d.ts.map +1 -1
  70. package/dest/fixtures/setup_p2p_test.js +41 -28
  71. package/dest/fixtures/token_utils.d.ts +5 -2
  72. package/dest/fixtures/token_utils.d.ts.map +1 -1
  73. package/dest/fixtures/token_utils.js +13 -7
  74. package/dest/fixtures/utils.d.ts +5 -192
  75. package/dest/fixtures/utils.d.ts.map +1 -1
  76. package/dest/fixtures/utils.js +4 -648
  77. package/dest/fixtures/web3signer.d.ts +1 -1
  78. package/dest/fixtures/web3signer.js +1 -1
  79. package/dest/fixtures/with_telemetry_utils.d.ts +2 -2
  80. package/dest/fixtures/with_telemetry_utils.d.ts.map +1 -1
  81. package/dest/fixtures/with_telemetry_utils.js +2 -2
  82. package/dest/index.d.ts +1 -1
  83. package/dest/quality_of_service/grafana_client.d.ts +41 -0
  84. package/dest/quality_of_service/grafana_client.d.ts.map +1 -0
  85. package/dest/quality_of_service/{alert_checker.js → grafana_client.js} +1 -1
  86. package/dest/quality_of_service/prometheus_client.d.ts +38 -0
  87. package/dest/quality_of_service/prometheus_client.d.ts.map +1 -0
  88. package/dest/quality_of_service/prometheus_client.js +67 -0
  89. package/dest/shared/cross_chain_test_harness.d.ts +7 -6
  90. package/dest/shared/cross_chain_test_harness.d.ts.map +1 -1
  91. package/dest/shared/cross_chain_test_harness.js +14 -14
  92. package/dest/shared/gas_portal_test_harness.d.ts +2 -2
  93. package/dest/shared/gas_portal_test_harness.d.ts.map +1 -1
  94. package/dest/shared/gas_portal_test_harness.js +2 -2
  95. package/dest/shared/index.d.ts +2 -2
  96. package/dest/shared/index.d.ts.map +1 -1
  97. package/dest/shared/jest_setup.d.ts +1 -1
  98. package/dest/shared/submit-transactions.d.ts +3 -3
  99. package/dest/shared/submit-transactions.d.ts.map +1 -1
  100. package/dest/shared/submit-transactions.js +9 -11
  101. package/dest/shared/uniswap_l1_l2.d.ts +3 -27
  102. package/dest/shared/uniswap_l1_l2.d.ts.map +1 -1
  103. package/dest/shared/uniswap_l1_l2.js +55 -35
  104. package/dest/simulators/index.d.ts +1 -1
  105. package/dest/simulators/lending_simulator.d.ts +2 -2
  106. package/dest/simulators/lending_simulator.d.ts.map +1 -1
  107. package/dest/simulators/lending_simulator.js +6 -4
  108. package/dest/simulators/token_simulator.d.ts +1 -1
  109. package/dest/simulators/token_simulator.d.ts.map +1 -1
  110. package/dest/spartan/setup_test_wallets.d.ts +8 -5
  111. package/dest/spartan/setup_test_wallets.d.ts.map +1 -1
  112. package/dest/spartan/setup_test_wallets.js +85 -23
  113. package/dest/spartan/tx_metrics.d.ts +88 -0
  114. package/dest/spartan/tx_metrics.d.ts.map +1 -0
  115. package/dest/spartan/tx_metrics.js +422 -0
  116. package/dest/spartan/utils/bot.d.ts +27 -0
  117. package/dest/spartan/utils/bot.d.ts.map +1 -0
  118. package/dest/spartan/utils/bot.js +141 -0
  119. package/dest/spartan/utils/chaos.d.ts +79 -0
  120. package/dest/spartan/utils/chaos.d.ts.map +1 -0
  121. package/dest/spartan/utils/chaos.js +142 -0
  122. package/dest/spartan/utils/clients.d.ts +39 -0
  123. package/dest/spartan/utils/clients.d.ts.map +1 -0
  124. package/dest/spartan/utils/clients.js +90 -0
  125. package/dest/spartan/utils/config.d.ts +36 -0
  126. package/dest/spartan/utils/config.d.ts.map +1 -0
  127. package/dest/spartan/utils/config.js +20 -0
  128. package/dest/spartan/utils/health.d.ts +63 -0
  129. package/dest/spartan/utils/health.d.ts.map +1 -0
  130. package/dest/spartan/utils/health.js +202 -0
  131. package/dest/spartan/utils/helm.d.ts +15 -0
  132. package/dest/spartan/utils/helm.d.ts.map +1 -0
  133. package/dest/spartan/utils/helm.js +47 -0
  134. package/dest/spartan/utils/index.d.ts +9 -0
  135. package/dest/spartan/utils/index.d.ts.map +1 -0
  136. package/dest/spartan/utils/index.js +18 -0
  137. package/dest/spartan/utils/k8s.d.ts +98 -0
  138. package/dest/spartan/utils/k8s.d.ts.map +1 -0
  139. package/dest/spartan/utils/k8s.js +257 -0
  140. package/dest/spartan/utils/nodes.d.ts +31 -0
  141. package/dest/spartan/utils/nodes.d.ts.map +1 -0
  142. package/dest/spartan/utils/nodes.js +290 -0
  143. package/dest/spartan/utils/scripts.d.ts +16 -0
  144. package/dest/spartan/utils/scripts.d.ts.map +1 -0
  145. package/dest/spartan/utils/scripts.js +66 -0
  146. package/dest/spartan/utils.d.ts +2 -218
  147. package/dest/spartan/utils.d.ts.map +1 -1
  148. package/dest/spartan/utils.js +1 -749
  149. package/package.json +43 -40
  150. package/src/bench/client_flows/benchmark.ts +24 -2
  151. package/src/bench/client_flows/client_flows_benchmark.ts +152 -170
  152. package/src/bench/client_flows/data_extractor.ts +6 -28
  153. package/src/bench/utils.ts +30 -20
  154. package/src/e2e_blacklist_token_contract/blacklist_token_contract_test.ts +104 -142
  155. package/src/e2e_cross_chain_messaging/cross_chain_messaging_test.ts +140 -124
  156. package/src/e2e_deploy_contract/deploy_test.ts +22 -15
  157. package/src/e2e_epochs/epochs_test.ts +96 -56
  158. package/src/e2e_fees/bridging_race.notest.ts +5 -11
  159. package/src/e2e_fees/fees_test.ts +180 -219
  160. package/src/e2e_l1_publisher/write_json.ts +20 -19
  161. package/src/e2e_multi_validator/utils.ts +1 -1
  162. package/src/e2e_nested_contract/nested_contract_test.ts +33 -55
  163. package/src/e2e_p2p/inactivity_slash_test.ts +10 -9
  164. package/src/e2e_p2p/p2p_network.ts +181 -180
  165. package/src/e2e_p2p/shared.ts +35 -29
  166. package/src/e2e_token_contract/token_contract_test.ts +103 -118
  167. package/src/fixtures/e2e_prover_test.ts +112 -150
  168. package/src/fixtures/fixtures.ts +2 -5
  169. package/src/fixtures/get_acvm_config.ts +1 -1
  170. package/src/fixtures/l1_to_l2_messaging.ts +4 -2
  171. package/src/fixtures/setup.ts +1017 -0
  172. package/src/fixtures/setup_p2p_test.ts +38 -29
  173. package/src/fixtures/token_utils.ts +8 -7
  174. package/src/fixtures/utils.ts +27 -947
  175. package/src/fixtures/web3signer.ts +1 -1
  176. package/src/fixtures/with_telemetry_utils.ts +2 -2
  177. package/src/guides/up_quick_start.sh +1 -1
  178. package/src/quality_of_service/{alert_checker.ts → grafana_client.ts} +1 -1
  179. package/src/quality_of_service/prometheus_client.ts +113 -0
  180. package/src/shared/cross_chain_test_harness.ts +19 -36
  181. package/src/shared/gas_portal_test_harness.ts +3 -3
  182. package/src/shared/index.ts +1 -1
  183. package/src/shared/submit-transactions.ts +9 -15
  184. package/src/shared/uniswap_l1_l2.ts +65 -86
  185. package/src/simulators/lending_simulator.ts +7 -5
  186. package/src/spartan/DEVELOP.md +7 -0
  187. package/src/spartan/setup_test_wallets.ts +119 -28
  188. package/src/spartan/tx_metrics.ts +376 -0
  189. package/src/spartan/utils/bot.ts +185 -0
  190. package/src/spartan/utils/chaos.ts +253 -0
  191. package/src/spartan/utils/clients.ts +100 -0
  192. package/src/spartan/utils/config.ts +26 -0
  193. package/src/spartan/utils/health.ts +255 -0
  194. package/src/spartan/utils/helm.ts +84 -0
  195. package/src/spartan/utils/index.ts +62 -0
  196. package/src/spartan/utils/k8s.ts +375 -0
  197. package/src/spartan/utils/nodes.ts +323 -0
  198. package/src/spartan/utils/scripts.ts +63 -0
  199. package/src/spartan/utils.ts +1 -942
  200. package/dest/fixtures/setup_l1_contracts.d.ts +0 -6
  201. package/dest/fixtures/setup_l1_contracts.d.ts.map +0 -1
  202. package/dest/fixtures/setup_l1_contracts.js +0 -17
  203. package/dest/fixtures/snapshot_manager.d.ts +0 -95
  204. package/dest/fixtures/snapshot_manager.d.ts.map +0 -1
  205. package/dest/fixtures/snapshot_manager.js +0 -505
  206. package/dest/quality_of_service/alert_checker.d.ts +0 -41
  207. package/dest/quality_of_service/alert_checker.d.ts.map +0 -1
  208. package/src/fixtures/setup_l1_contracts.ts +0 -26
  209. package/src/fixtures/snapshot_manager.ts +0 -665
@@ -0,0 +1,88 @@
1
+ import type { AztecNode } from '@aztec/aztec.js/node';
2
+ import type { Logger } from '@aztec/foundation/log';
3
+ import type { TopicType } from '@aztec/stdlib/p2p';
4
+ import { Tx, type TxReceipt } from '@aztec/stdlib/tx';
5
+ /** Metrics class for proving-related benchmarks. */
6
+ export declare class ProvingMetrics {
7
+ private prefix;
8
+ private successfulTxs;
9
+ private proofDuration;
10
+ private activeAgents;
11
+ private avgQueueTime;
12
+ private jobRetries;
13
+ private jobDuration;
14
+ private timedOutJobs;
15
+ private resolvedJobs;
16
+ private rejectedJobs;
17
+ private epochProvingDuration;
18
+ private provenTransactions;
19
+ private provenBlocks;
20
+ constructor(prefix: string);
21
+ recordSuccessfulTxs(count: number): void;
22
+ recordProofDuration(seconds: number): void;
23
+ recordActiveAgents(count: number): void;
24
+ recordAvgQueueTime(ms: number): void;
25
+ recordJobRetries(count: number): void;
26
+ recordJobDuration(ms: number): void;
27
+ recordTimedOutJobs(count: number): void;
28
+ recordResolvedJobs(count: number): void;
29
+ recordRejectedJobs(count: number): void;
30
+ recordEpochProvingDuration(seconds: number): void;
31
+ recordProvenTransactions(count: number): void;
32
+ recordProvenBlocks(count: number): void;
33
+ toGithubActionBenchmarkJSON(): Array<{
34
+ name: string;
35
+ unit: string;
36
+ value: number;
37
+ }>;
38
+ }
39
+ export type TxInclusionData = {
40
+ txHash: string;
41
+ sentAt: number;
42
+ minedAt: number;
43
+ attestedAt: number;
44
+ blocknumber: number;
45
+ priorityFee: number;
46
+ totalFee: number;
47
+ positionInBlock: number;
48
+ group: string;
49
+ };
50
+ export declare class TxInclusionMetrics {
51
+ private aztecNode;
52
+ private logger?;
53
+ private data;
54
+ private groups;
55
+ private blocks;
56
+ private p2pGossipLatencyByTopic;
57
+ private attestationLatency;
58
+ private attestationCounts;
59
+ private reqRespStats;
60
+ private peerStats;
61
+ private mempoolMinedDelay;
62
+ constructor(aztecNode: AztecNode, logger?: Logger | undefined);
63
+ recordSentTx(tx: Tx, group: string): void;
64
+ recordMinedTx(txReceipt: TxReceipt): Promise<void>;
65
+ inclusionTimeInSeconds(group: string): {
66
+ count: number;
67
+ group: string;
68
+ min: number;
69
+ mean: number;
70
+ max: number;
71
+ median: number;
72
+ p99: number;
73
+ };
74
+ recordP2PGossipLatency(topicName: TopicType, p50: number, p95: number): void;
75
+ recordAttestationLatency(p50: number, p95: number): void;
76
+ recordAttestationCounts(success: number, failedBad: number, failedNode: number): void;
77
+ recordReqRespStats(fraction: number, delayP50: number, delayP95: number): void;
78
+ recordPeerStats(avgCount: number, connectionDurationP50: number, connectionDurationP95: number): void;
79
+ recordMempoolMinedDelay(txP50: number, txP95: number, attestationP50: number, attestationP95: number): void;
80
+ toGithubActionBenchmarkJSON(): Array<{
81
+ name: string;
82
+ unit: string;
83
+ value: number;
84
+ range?: number;
85
+ extra?: string;
86
+ }>;
87
+ }
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHhfbWV0cmljcy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NwYXJ0YW4vdHhfbWV0cmljcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUVwRCxPQUFPLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsRUFBRSxFQUFFLEtBQUssU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFJdEQsb0RBQW9EO0FBQ3BELHFCQUFhLGNBQWM7SUFjYixPQUFPLENBQUMsTUFBTTtJQWIxQixPQUFPLENBQUMsYUFBYSxDQUFxQjtJQUMxQyxPQUFPLENBQUMsYUFBYSxDQUFxQjtJQUMxQyxPQUFPLENBQUMsWUFBWSxDQUFxQjtJQUN6QyxPQUFPLENBQUMsWUFBWSxDQUFxQjtJQUN6QyxPQUFPLENBQUMsVUFBVSxDQUFxQjtJQUN2QyxPQUFPLENBQUMsV0FBVyxDQUFxQjtJQUN4QyxPQUFPLENBQUMsWUFBWSxDQUFxQjtJQUN6QyxPQUFPLENBQUMsWUFBWSxDQUFxQjtJQUN6QyxPQUFPLENBQUMsWUFBWSxDQUFxQjtJQUN6QyxPQUFPLENBQUMsb0JBQW9CLENBQXFCO0lBQ2pELE9BQU8sQ0FBQyxrQkFBa0IsQ0FBcUI7SUFDL0MsT0FBTyxDQUFDLFlBQVksQ0FBcUI7SUFFekMsWUFBb0IsTUFBTSxFQUFFLE1BQU0sRUFBSTtJQUV0QyxtQkFBbUIsQ0FBQyxLQUFLLEVBQUUsTUFBTSxHQUFHLElBQUksQ0FFdkM7SUFFRCxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsTUFBTSxHQUFHLElBQUksQ0FFekM7SUFFRCxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsTUFBTSxHQUFHLElBQUksQ0FFdEM7SUFFRCxrQkFBa0IsQ0FBQyxFQUFF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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tx_metrics.d.ts","sourceRoot":"","sources":["../../src/spartan/tx_metrics.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,422 @@
1
+ import { createHistogram } from 'perf_hooks';
2
+ /** Metrics class for proving-related benchmarks. */ export class ProvingMetrics {
3
+ prefix;
4
+ successfulTxs;
5
+ proofDuration;
6
+ activeAgents;
7
+ avgQueueTime;
8
+ jobRetries;
9
+ jobDuration;
10
+ timedOutJobs;
11
+ resolvedJobs;
12
+ rejectedJobs;
13
+ epochProvingDuration;
14
+ provenTransactions;
15
+ provenBlocks;
16
+ constructor(prefix){
17
+ this.prefix = prefix;
18
+ }
19
+ recordSuccessfulTxs(count) {
20
+ this.successfulTxs = count;
21
+ }
22
+ recordProofDuration(seconds) {
23
+ this.proofDuration = seconds;
24
+ }
25
+ recordActiveAgents(count) {
26
+ this.activeAgents = count;
27
+ }
28
+ recordAvgQueueTime(ms) {
29
+ this.avgQueueTime = ms;
30
+ }
31
+ recordJobRetries(count) {
32
+ this.jobRetries = count;
33
+ }
34
+ recordJobDuration(ms) {
35
+ this.jobDuration = ms;
36
+ }
37
+ recordTimedOutJobs(count) {
38
+ this.timedOutJobs = count;
39
+ }
40
+ recordResolvedJobs(count) {
41
+ this.resolvedJobs = count;
42
+ }
43
+ recordRejectedJobs(count) {
44
+ this.rejectedJobs = count;
45
+ }
46
+ recordEpochProvingDuration(seconds) {
47
+ this.epochProvingDuration = seconds;
48
+ }
49
+ recordProvenTransactions(count) {
50
+ this.provenTransactions = count;
51
+ }
52
+ recordProvenBlocks(count) {
53
+ this.provenBlocks = count;
54
+ }
55
+ toGithubActionBenchmarkJSON() {
56
+ const data = [];
57
+ if (this.successfulTxs !== undefined) {
58
+ data.push({
59
+ name: `${this.prefix}/successful_txs`,
60
+ unit: 'count',
61
+ value: this.successfulTxs
62
+ });
63
+ }
64
+ if (this.proofDuration !== undefined) {
65
+ data.push({
66
+ name: `${this.prefix}/proof_duration`,
67
+ unit: 's',
68
+ value: this.proofDuration
69
+ });
70
+ }
71
+ if (this.activeAgents !== undefined) {
72
+ data.push({
73
+ name: `${this.prefix}/active_agents`,
74
+ unit: 'count',
75
+ value: this.activeAgents
76
+ });
77
+ }
78
+ if (this.avgQueueTime !== undefined) {
79
+ data.push({
80
+ name: `${this.prefix}/avg_queue_time`,
81
+ unit: 'ms',
82
+ value: this.avgQueueTime
83
+ });
84
+ }
85
+ if (this.jobRetries !== undefined) {
86
+ data.push({
87
+ name: `${this.prefix}/job_retries`,
88
+ unit: 'count',
89
+ value: this.jobRetries
90
+ });
91
+ }
92
+ if (this.jobDuration !== undefined) {
93
+ data.push({
94
+ name: `${this.prefix}/job_duration`,
95
+ unit: 'ms',
96
+ value: this.jobDuration
97
+ });
98
+ }
99
+ if (this.timedOutJobs !== undefined) {
100
+ data.push({
101
+ name: `${this.prefix}/timed_out_jobs`,
102
+ unit: 'count',
103
+ value: this.timedOutJobs
104
+ });
105
+ }
106
+ if (this.resolvedJobs !== undefined) {
107
+ data.push({
108
+ name: `${this.prefix}/resolved_jobs`,
109
+ unit: 'count',
110
+ value: this.resolvedJobs
111
+ });
112
+ }
113
+ if (this.rejectedJobs !== undefined) {
114
+ data.push({
115
+ name: `${this.prefix}/rejected_jobs`,
116
+ unit: 'count',
117
+ value: this.rejectedJobs
118
+ });
119
+ }
120
+ if (this.epochProvingDuration !== undefined) {
121
+ data.push({
122
+ name: `${this.prefix}/epoch_proving_duration`,
123
+ unit: 's',
124
+ value: this.epochProvingDuration
125
+ });
126
+ }
127
+ if (this.provenTransactions !== undefined) {
128
+ data.push({
129
+ name: `${this.prefix}/proven_transactions`,
130
+ unit: 'count',
131
+ value: this.provenTransactions
132
+ });
133
+ }
134
+ if (this.provenBlocks !== undefined) {
135
+ data.push({
136
+ name: `${this.prefix}/proven_blocks`,
137
+ unit: 'count',
138
+ value: this.provenBlocks
139
+ });
140
+ }
141
+ const scenario = process.env.BENCH_SCENARIO?.trim();
142
+ if (!scenario) {
143
+ return data;
144
+ }
145
+ const scenarioPrefix = `scenario/${scenario}/`;
146
+ return data.map((entry)=>({
147
+ ...entry,
148
+ name: `${scenarioPrefix}${entry.name}`
149
+ }));
150
+ }
151
+ }
152
+ export class TxInclusionMetrics {
153
+ aztecNode;
154
+ logger;
155
+ data;
156
+ groups;
157
+ blocks;
158
+ p2pGossipLatencyByTopic;
159
+ attestationLatency;
160
+ attestationCounts;
161
+ reqRespStats;
162
+ peerStats;
163
+ mempoolMinedDelay;
164
+ constructor(aztecNode, logger){
165
+ this.aztecNode = aztecNode;
166
+ this.logger = logger;
167
+ this.data = new Map();
168
+ this.groups = new Set();
169
+ this.blocks = new Map();
170
+ this.p2pGossipLatencyByTopic = {};
171
+ }
172
+ recordSentTx(tx, group) {
173
+ const txHash = tx.getTxHash().toString();
174
+ const priorityFees = tx.getGasSettings().maxPriorityFeesPerGas;
175
+ if (this.data.has(txHash)) {
176
+ this.logger?.debug(`Overwriting tx inclusion data for ${txHash}`, {
177
+ txHash,
178
+ group
179
+ });
180
+ }
181
+ this.data.set(txHash, {
182
+ txHash,
183
+ sentAt: Math.trunc(Date.now() / 1000),
184
+ minedAt: -1,
185
+ attestedAt: -1,
186
+ blocknumber: -1,
187
+ priorityFee: Number(priorityFees.feePerDaGas + priorityFees.feePerL2Gas),
188
+ totalFee: -1,
189
+ positionInBlock: -1,
190
+ group
191
+ });
192
+ this.groups.add(group);
193
+ }
194
+ async recordMinedTx(txReceipt) {
195
+ const { txHash, blockNumber } = txReceipt;
196
+ if (!txReceipt.isMined() || !txReceipt.hasExecutionSucceeded() || !blockNumber) {
197
+ this.logger?.debug('Skipping mined tx record due to receipt status', {
198
+ txHash: txHash.toString(),
199
+ status: txReceipt.status,
200
+ blockNumber
201
+ });
202
+ return;
203
+ }
204
+ if (!this.blocks.has(blockNumber)) {
205
+ this.blocks.set(blockNumber, this.aztecNode.getBlock(blockNumber));
206
+ }
207
+ const block = await this.blocks.get(blockNumber);
208
+ if (!block) {
209
+ this.logger?.warn('Failed to load block for mined tx receipt', {
210
+ txHash: txHash.toString(),
211
+ blockNumber
212
+ });
213
+ return;
214
+ }
215
+ const data = this.data.get(txHash.toString());
216
+ if (!data) {
217
+ const message = `Missing sent tx record for mined tx ${txHash.toString()}`;
218
+ this.logger?.warn(message, {
219
+ txHash: txHash.toString(),
220
+ blockNumber
221
+ });
222
+ throw new Error(message);
223
+ }
224
+ data.blocknumber = blockNumber;
225
+ data.minedAt = Number(block.header.globalVariables.timestamp);
226
+ data.attestedAt = -1;
227
+ data.totalFee = Number(txReceipt.transactionFee ?? 0n);
228
+ data.positionInBlock = block.body.txEffects.findIndex((txEffect)=>txEffect.txHash.equals(txHash));
229
+ }
230
+ inclusionTimeInSeconds(group) {
231
+ const histogram = createHistogram({});
232
+ for (const tx of this.data.values()){
233
+ if (!tx.blocknumber || tx.group !== group || tx.minedAt === -1) {
234
+ continue;
235
+ }
236
+ histogram.record(tx.minedAt - tx.sentAt);
237
+ }
238
+ if (histogram.count === 0) {
239
+ return {
240
+ group,
241
+ count: 0,
242
+ mean: 0,
243
+ max: 0,
244
+ median: 0,
245
+ min: 0,
246
+ p99: 0
247
+ };
248
+ }
249
+ return {
250
+ group,
251
+ count: histogram.count,
252
+ mean: histogram.mean,
253
+ max: histogram.max,
254
+ median: histogram.percentile(50),
255
+ min: histogram.min,
256
+ p99: histogram.percentile(99)
257
+ };
258
+ }
259
+ recordP2PGossipLatency(topicName, p50, p95) {
260
+ this.p2pGossipLatencyByTopic[topicName] = {
261
+ p50,
262
+ p95
263
+ };
264
+ }
265
+ recordAttestationLatency(p50, p95) {
266
+ this.attestationLatency = {
267
+ p50,
268
+ p95
269
+ };
270
+ }
271
+ recordAttestationCounts(success, failedBad, failedNode) {
272
+ this.attestationCounts = {
273
+ success,
274
+ failedBad,
275
+ failedNode
276
+ };
277
+ }
278
+ recordReqRespStats(fraction, delayP50, delayP95) {
279
+ this.reqRespStats = {
280
+ fraction,
281
+ delayP50,
282
+ delayP95
283
+ };
284
+ }
285
+ recordPeerStats(avgCount, connectionDurationP50, connectionDurationP95) {
286
+ this.peerStats = {
287
+ avgCount,
288
+ connectionDurationP50,
289
+ connectionDurationP95
290
+ };
291
+ }
292
+ recordMempoolMinedDelay(txP50, txP95, attestationP50, attestationP95) {
293
+ this.mempoolMinedDelay = {
294
+ txP50,
295
+ txP95,
296
+ attestationP50,
297
+ attestationP95
298
+ };
299
+ }
300
+ toGithubActionBenchmarkJSON() {
301
+ const data = [];
302
+ for (const group of this.groups){
303
+ const stats = this.inclusionTimeInSeconds(group);
304
+ data.push({
305
+ name: `${group}/avg_inclusion`,
306
+ unit: 's',
307
+ value: stats.mean
308
+ }, {
309
+ name: `${group}/median_inclusion`,
310
+ unit: 's',
311
+ value: stats.median
312
+ }, {
313
+ name: `${group}/p99_inclusion`,
314
+ unit: 's',
315
+ value: stats.p99
316
+ });
317
+ }
318
+ for (const [topic, { p50, p95 }] of Object.entries(this.p2pGossipLatencyByTopic)){
319
+ data.push({
320
+ name: `p2p_gossip_latency/${topic}/p50`,
321
+ unit: 'ms',
322
+ value: p50
323
+ });
324
+ data.push({
325
+ name: `p2p_gossip_latency/${topic}/p95`,
326
+ unit: 'ms',
327
+ value: p95
328
+ });
329
+ }
330
+ if (this.attestationLatency) {
331
+ data.push({
332
+ name: 'attestation_latency/p50',
333
+ unit: 'ms',
334
+ value: this.attestationLatency.p50
335
+ }, {
336
+ name: 'attestation_latency/p95',
337
+ unit: 'ms',
338
+ value: this.attestationLatency.p95
339
+ });
340
+ }
341
+ if (this.attestationCounts) {
342
+ const { success, failedBad, failedNode } = this.attestationCounts;
343
+ const total = success + failedBad + failedNode;
344
+ const ratio = total > 0 ? success / total : 0;
345
+ data.push({
346
+ name: 'attestation/success_count',
347
+ unit: 'count',
348
+ value: success
349
+ }, {
350
+ name: 'attestation/failed_bad_proposal_count',
351
+ unit: 'count',
352
+ value: failedBad
353
+ }, {
354
+ name: 'attestation/failed_node_issue_count',
355
+ unit: 'count',
356
+ value: failedNode
357
+ }, {
358
+ name: 'attestation/success_ratio',
359
+ unit: 'ratio',
360
+ value: ratio
361
+ });
362
+ }
363
+ if (this.reqRespStats) {
364
+ data.push({
365
+ name: 'req_resp/txs_requested_fraction',
366
+ unit: 'ratio',
367
+ value: this.reqRespStats.fraction
368
+ }, {
369
+ name: 'req_resp/delay_p50',
370
+ unit: 'ms',
371
+ value: this.reqRespStats.delayP50
372
+ }, {
373
+ name: 'req_resp/delay_p95',
374
+ unit: 'ms',
375
+ value: this.reqRespStats.delayP95
376
+ });
377
+ }
378
+ if (this.peerStats) {
379
+ data.push({
380
+ name: 'peers/avg_count',
381
+ unit: 'peers',
382
+ value: this.peerStats.avgCount
383
+ }, {
384
+ name: 'peers/connection_duration_p50',
385
+ unit: 'ms',
386
+ value: this.peerStats.connectionDurationP50
387
+ }, {
388
+ name: 'peers/connection_duration_p95',
389
+ unit: 'ms',
390
+ value: this.peerStats.connectionDurationP95
391
+ });
392
+ }
393
+ if (this.mempoolMinedDelay) {
394
+ data.push({
395
+ name: 'mempool/tx_mined_delay_p50',
396
+ unit: 'ms',
397
+ value: this.mempoolMinedDelay.txP50
398
+ }, {
399
+ name: 'mempool/tx_mined_delay_p95',
400
+ unit: 'ms',
401
+ value: this.mempoolMinedDelay.txP95
402
+ }, {
403
+ name: 'mempool/attestation_mined_delay_p50',
404
+ unit: 'ms',
405
+ value: this.mempoolMinedDelay.attestationP50
406
+ }, {
407
+ name: 'mempool/attestation_mined_delay_p95',
408
+ unit: 'ms',
409
+ value: this.mempoolMinedDelay.attestationP95
410
+ });
411
+ }
412
+ const scenario = process.env.BENCH_SCENARIO?.trim();
413
+ if (!scenario) {
414
+ return data;
415
+ }
416
+ const scenarioPrefix = `scenario/${scenario}/`;
417
+ return data.map((entry)=>({
418
+ ...entry,
419
+ name: `${scenarioPrefix}${entry.name}`
420
+ }));
421
+ }
422
+ }
@@ -0,0 +1,27 @@
1
+ import type { Logger } from '@aztec/foundation/log';
2
+ export declare function restartBot(namespace: string, log: Logger): Promise<void>;
3
+ /**
4
+ * Installs or upgrades the transfer bot Helm release for the given namespace.
5
+ * Intended for test setup to enable L2 traffic generation only when needed.
6
+ */
7
+ export declare function installTransferBot({ namespace, spartanDir, logger: log, replicas, txIntervalSeconds, followChain, mnemonic, mnemonicStartIndex, botPrivateKey, nodeUrl, timeout, reuseValues, aztecSlotDuration }: {
8
+ namespace: string;
9
+ spartanDir: string;
10
+ logger: Logger;
11
+ replicas?: number;
12
+ txIntervalSeconds?: number;
13
+ followChain?: string;
14
+ mnemonic?: string;
15
+ mnemonicStartIndex?: number | string;
16
+ botPrivateKey?: string;
17
+ nodeUrl?: string;
18
+ timeout?: string;
19
+ reuseValues?: boolean;
20
+ aztecSlotDuration?: number;
21
+ }): Promise<void>;
22
+ /**
23
+ * Uninstalls the transfer bot Helm release from the given namespace.
24
+ * Intended for test teardown to clean up bot resources.
25
+ */
26
+ export declare function uninstallTransferBot(namespace: string, log: Logger): Promise<void>;
27
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm90LmQudHMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc3BhcnRhbi91dGlscy9ib3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFXcEQsd0JBQXNCLFVBQVUsQ0FBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxNQUFNLGlCQWE5RDtBQUVEOzs7R0FHRztBQUNILHdCQUFzQixrQkFBa0IsQ0FBQyxFQUN2QyxTQUFTLEVBQ1QsVUFBVSxFQUNWLE1BQU0sRUFBRSxHQUFHLEVBQ1gsUUFBWSxFQUNaLGlCQUFzQixFQUN0QixXQUF1QixFQUN2QixRQUEyRyxFQUMzRyxrQkFBa0IsRUFDbEIsYUFBc0UsRUFDdEUsT0FBTyxFQUNQLE9BQWUsRUFDZixXQUFrQixFQUNsQixpQkFBaUUsRUFDbEUsRUFBRTtJQUNELFNBQVMsRUFBRSxNQUFNLENBQUM7SUFDbEIsVUFBVSxFQUFFLE1BQU0sQ0FBQztJQUNuQixNQUFNLEVBQUUsTUFBTSxDQUFDO0lBQ2YsUUFBUSxDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQ2xCLGlCQUFpQixDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQzNCLFdBQVcsQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUNyQixRQUFRLENBQUMsRUFBRSxNQUFNLENBQUM7SUFDbEIsa0JBQWtCLENBQUMsRUFBRSxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBQ3JDLGFBQWEsQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUN2QixPQUFPLENBQUMsRUFBRSxNQUFNLENBQUM7SUFDakIsT0FBTyxDQUFDLEVBQUUsTUFBTSxDQUFDO0lBQ2pCLFdBQVcsQ0FBQyxFQUFFLE9BQU8sQ0FBQztJQUN0QixpQkFBaUIsQ0FBQyxFQUFFLE1BQU0sQ0FBQztDQUM1QixpQkFnSEE7QUFFRDs7O0dBR0c7QUFDSCx3QkFBc0Isb0JBQW9CLENBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsTUFBTSxpQkFReEUifQ==
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bot.d.ts","sourceRoot":"","sources":["../../../src/spartan/utils/bot.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAWpD,wBAAsB,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,iBAa9D;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CAAC,EACvC,SAAS,EACT,UAAU,EACV,MAAM,EAAE,GAAG,EACX,QAAY,EACZ,iBAAsB,EACtB,WAAuB,EACvB,QAA2G,EAC3G,kBAAkB,EAClB,aAAsE,EACtE,OAAO,EACP,OAAe,EACf,WAAkB,EAClB,iBAAiE,EAClE,EAAE;IACD,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kBAAkB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACrC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,iBAgHA;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,iBAQxE"}