Skip to content

Commit f82e6bd

Browse files
noamsp-starkwareShahakShama
authored andcommitted
refactor(starknet_gateway, starknet_mempool): align tests with InternalRpcTx change
1 parent 7b2ca04 commit f82e6bd

File tree

4 files changed

+66
-15
lines changed

4 files changed

+66
-15
lines changed

crates/papyrus_test_utils/src/lib.rs

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,8 +87,12 @@ use starknet_api::deprecated_contract_class::{
8787
use starknet_api::execution_resources::{Builtin, ExecutionResources, GasAmount, GasVector};
8888
use starknet_api::hash::{PoseidonHash, StarkHash};
8989
use starknet_api::rpc_transaction::{
90+
DeployAccountTransactionV3WithAddress,
9091
EntryPointByType as RpcEntryPointByType,
9192
EntryPointByType,
93+
InternalRpcDeclareTransactionV3,
94+
InternalRpcTransaction,
95+
InternalRpcTransactionWithoutTxHash,
9296
RpcDeclareTransaction,
9397
RpcDeclareTransactionV3,
9498
RpcDeployAccountTransaction,
@@ -749,6 +753,32 @@ auto_impl_get_test_instance! {
749753
pub max_amount: GasAmount,
750754
pub max_price_per_unit: GasPrice,
751755
}
756+
pub struct InternalRpcTransaction {
757+
pub tx: InternalRpcTransactionWithoutTxHash,
758+
pub tx_hash: TransactionHash,
759+
}
760+
pub enum InternalRpcTransactionWithoutTxHash {
761+
Declare(InternalRpcDeclareTransactionV3) = 0,
762+
Invoke(RpcInvokeTransaction) = 1,
763+
DeployAccount(DeployAccountTransactionV3WithAddress) = 2,
764+
}
765+
pub struct InternalRpcDeclareTransactionV3 {
766+
pub sender_address: ContractAddress,
767+
pub compiled_class_hash: CompiledClassHash,
768+
pub signature: TransactionSignature,
769+
pub nonce: Nonce,
770+
pub class_hash: ClassHash,
771+
pub resource_bounds: AllResourceBounds,
772+
pub tip: Tip,
773+
pub paymaster_data: PaymasterData,
774+
pub account_deployment_data: AccountDeploymentData,
775+
pub nonce_data_availability_mode: DataAvailabilityMode,
776+
pub fee_data_availability_mode: DataAvailabilityMode,
777+
}
778+
pub struct DeployAccountTransactionV3WithAddress {
779+
pub tx: RpcDeployAccountTransaction,
780+
pub contract_address: ContractAddress,
781+
}
752782
pub enum RpcTransaction {
753783
Declare(RpcDeclareTransaction) = 0,
754784
DeployAccount(RpcDeployAccountTransaction) = 1,

crates/starknet_gateway/src/gateway_test.rs

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,14 @@ use papyrus_test_utils::{get_rng, GetTestInstance};
1010
use rstest::{fixture, rstest};
1111
use starknet_api::core::{ChainId, CompiledClassHash, ContractAddress, Nonce};
1212
use starknet_api::executable_transaction::{AccountTransaction, InvokeTransaction};
13-
use starknet_api::rpc_transaction::{RpcDeclareTransaction, RpcTransaction};
14-
use starknet_api::transaction::TransactionHash;
13+
use starknet_api::rpc_transaction::{
14+
InternalRpcTransaction,
15+
InternalRpcTransactionWithoutTxHash,
16+
RpcDeclareTransaction,
17+
RpcTransaction,
18+
};
19+
use starknet_api::transaction::{InvokeTransaction, TransactionHash, TransactionVersion};
20+
use starknet_class_manager_types::test_utils::MemoryClassManagerClient;
1521
use starknet_class_manager_types::transaction_converter::TransactionConverter;
1622
use starknet_class_manager_types::{EmptyClassManagerClient, SharedClassManagerClient};
1723
use starknet_gateway_types::errors::GatewaySpecError;
@@ -119,18 +125,28 @@ async fn test_add_tx(
119125
#[case] expected_result: Result<(), MempoolClientError>,
120126
#[case] expected_error: Option<GatewaySpecError>,
121127
) {
128+
use starknet_api::transaction::TransactionHasher;
129+
122130
let (rpc_tx, address) = create_tx();
123131
let rpc_invoke_tx =
124132
assert_matches!(rpc_tx.clone(), RpcTransaction::Invoke(rpc_invoke_tx) => rpc_invoke_tx);
125-
let executable_tx = AccountTransaction::Invoke(
126-
InvokeTransaction::from_rpc_tx(rpc_invoke_tx, &ChainId::create_for_testing()).unwrap(),
127-
);
128133

129-
let tx_hash = executable_tx.tx_hash();
134+
let InvokeTransaction::V3(invoke_tx): InvokeTransaction = rpc_invoke_tx.clone().into() else {
135+
panic!("Unexpected transaction version")
136+
};
137+
138+
let tx_hash = invoke_tx
139+
.calculate_transaction_hash(&ChainId::create_for_testing(), &TransactionVersion::THREE)
140+
.unwrap();
141+
142+
let internal_invoke_tx = InternalRpcTransaction {
143+
tx: InternalRpcTransactionWithoutTxHash::Invoke(rpc_invoke_tx.clone()),
144+
tx_hash,
145+
};
130146

131147
let p2p_message_metadata = Some(BroadcastedMessageMetadata::get_test_instance(&mut get_rng()));
132148
let add_tx_args = AddTransactionArgs {
133-
tx: executable_tx,
149+
tx: internal_invoke_tx,
134150
account_state: AccountState { address, nonce: *rpc_tx.nonce() },
135151
};
136152
mock_dependencies.expect_add_tx(

crates/starknet_mempool/src/test_utils.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use std::collections::{HashMap, HashSet};
22

33
use pretty_assertions::assert_eq;
4-
use starknet_api::executable_transaction::AccountTransaction;
4+
use starknet_api::rpc_transaction::InternalRpcTransaction;
55
use starknet_api::{contract_address, nonce, tx_hash};
66
use starknet_mempool_types::errors::MempoolError;
77
use starknet_mempool_types::mempool_types::{AddTransactionArgs, CommitBlockArgs};
@@ -21,7 +21,7 @@ macro_rules! tx {
2121
) => {{
2222
use starknet_api::block::GasPrice;
2323
use starknet_api::{invoke_tx_args, tx_hash};
24-
use starknet_api::test_utils::invoke::executable_invoke_tx;
24+
use starknet_api::test_utils::invoke::internal_invoke_tx;
2525
use starknet_api::transaction::fields::{
2626
AllResourceBounds,
2727
ResourceBounds,
@@ -37,7 +37,7 @@ macro_rules! tx {
3737
..Default::default()
3838
});
3939

40-
executable_invoke_tx(invoke_tx_args!{
40+
internal_invoke_tx(invoke_tx_args!{
4141
tx_hash: tx_hash!($tx_hash),
4242
sender_address: contract_address!($address),
4343
nonce: nonce!($tx_nonce),
@@ -256,7 +256,7 @@ pub fn commit_block(
256256
pub fn get_txs_and_assert_expected(
257257
mempool: &mut Mempool,
258258
n_txs: usize,
259-
expected_txs: &[AccountTransaction],
259+
expected_txs: &[InternalRpcTransaction],
260260
) {
261261
let txs = mempool.get_txs(n_txs).unwrap();
262262
assert_eq!(txs, expected_txs);

crates/starknet_mempool_p2p/src/propagator/test.rs

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,11 @@ use papyrus_network_types::network_types::BroadcastedMessageMetadata;
1111
use papyrus_protobuf::mempool::RpcTransactionWrapper;
1212
use papyrus_test_utils::{get_rng, GetTestInstance};
1313
use starknet_api::core::ChainId;
14-
use starknet_api::rpc_transaction::RpcTransaction;
15-
use starknet_class_manager_types::transaction_converter::TransactionConverter;
14+
use starknet_api::rpc_transaction::InternalRpcTransaction;
15+
use starknet_class_manager_types::transaction_converter::{
16+
TransactionConverter,
17+
TransactionConverterTrait,
18+
};
1619
use starknet_class_manager_types::EmptyClassManagerClient;
1720
use starknet_mempool_p2p_types::communication::MempoolP2pPropagatorRequest;
1821
use starknet_sequencer_infra::component_definitions::ComponentRequestHandler;
@@ -29,14 +32,16 @@ async fn process_handle_add_tx() {
2932
let BroadcastTopicChannels { broadcasted_messages_receiver: _, broadcast_topic_client } =
3033
subscriber_channels;
3134
let BroadcastNetworkMock { mut messages_to_broadcast_receiver, .. } = mock_network;
32-
let rpc_transaction = RpcTransaction::get_test_instance(&mut get_rng());
35+
let internal_tx = InternalRpcTransaction::get_test_instance(&mut get_rng());
3336
// TODO(noamsp): use MockTransactionConverterTrait
3437
let transaction_converter =
3538
TransactionConverter::new(Arc::new(EmptyClassManagerClient), ChainId::create_for_testing());
39+
let rpc_transaction =
40+
transaction_converter.convert_internal_rpc_tx_to_rpc_tx(internal_tx.clone()).await.unwrap();
3641
let mut mempool_p2p_propagator =
3742
MempoolP2pPropagator::new(broadcast_topic_client, transaction_converter);
3843
mempool_p2p_propagator
39-
.handle_request(MempoolP2pPropagatorRequest::AddTransaction(rpc_transaction.clone()))
44+
.handle_request(MempoolP2pPropagatorRequest::AddTransaction(internal_tx))
4045
.await;
4146
let message = timeout(TIMEOUT, messages_to_broadcast_receiver.next()).await.unwrap().unwrap();
4247
assert_eq!(message, RpcTransactionWrapper(rpc_transaction));

0 commit comments

Comments
 (0)