Skip to content

Commit 541feda

Browse files
committed
Move HyperlaneDb mock to common place so that we can re-use it over code base
1 parent 4f36f75 commit 541feda

12 files changed

Lines changed: 156 additions & 543 deletions

File tree

rust/main/agents/relayer/src/msg/db_loader/tests.rs

Lines changed: 3 additions & 168 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,10 @@ use tracing::info_span;
1010

1111
use hyperlane_base::{
1212
cache::{LocalCache, MeteredCache, MeteredCacheConfig, MeteredCacheMetrics, OptionalCache},
13-
db::{
14-
test_utils, DbResult, HyperlaneRocksDB, InterchainGasExpenditureData,
15-
InterchainGasPaymentData,
16-
},
17-
};
18-
use hyperlane_core::{
19-
identifiers::UniqueIdentifier, test_utils::dummy_domain, GasPaymentKey, InterchainGasPayment,
20-
InterchainGasPaymentMeta, MerkleTreeInsertion, PendingOperationStatus, H256,
13+
db::{test_utils, HyperlaneRocksDB},
14+
tests::mock_hyperlane_db::MockHyperlaneDb as MockDb,
2115
};
16+
use hyperlane_core::test_utils::dummy_domain;
2217
use hyperlane_operation_verifier::{
2318
ApplicationOperationVerifier, ApplicationOperationVerifierReport,
2419
};
@@ -171,166 +166,6 @@ async fn get_first_n_operations_from_db_loader(
171166
pending_messages
172167
}
173168

174-
mockall::mock! {
175-
pub Db {}
176-
177-
impl Debug for Db {
178-
fn fmt<'a>(&self, f: &mut std::fmt::Formatter<'a>) -> std::fmt::Result;
179-
}
180-
181-
impl HyperlaneDb for Db {
182-
/// Retrieve the nonce of the highest processed message we're aware of
183-
fn retrieve_highest_seen_message_nonce(&self) -> DbResult<Option<u32>>;
184-
185-
/// Retrieve a message by its nonce
186-
fn retrieve_message_by_nonce(&self, nonce: u32) -> DbResult<Option<HyperlaneMessage>>;
187-
188-
/// Retrieve whether a message has been processed
189-
fn retrieve_processed_by_nonce(&self, nonce: &u32) -> DbResult<Option<bool>>;
190-
191-
/// Get the origin domain of the database
192-
fn domain(&self) -> &HyperlaneDomain;
193-
194-
fn store_message_id_by_nonce(&self, nonce: &u32, id: &H256) -> DbResult<()>;
195-
196-
fn retrieve_message_id_by_nonce(&self, nonce: &u32) -> DbResult<Option<H256>>;
197-
198-
fn store_message_by_id(&self, id: &H256, message: &HyperlaneMessage) -> DbResult<()>;
199-
200-
fn retrieve_message_by_id(&self, id: &H256) -> DbResult<Option<HyperlaneMessage>>;
201-
202-
fn store_dispatched_block_number_by_nonce(
203-
&self,
204-
nonce: &u32,
205-
block_number: &u64,
206-
) -> DbResult<()>;
207-
208-
fn retrieve_dispatched_block_number_by_nonce(&self, nonce: &u32) -> DbResult<Option<u64>>;
209-
210-
/// Store whether a message was processed by its nonce
211-
fn store_processed_by_nonce(&self, nonce: &u32, processed: &bool) -> DbResult<()>;
212-
213-
fn store_processed_by_gas_payment_meta(
214-
&self,
215-
meta: &InterchainGasPaymentMeta,
216-
processed: &bool,
217-
) -> DbResult<()>;
218-
219-
fn retrieve_processed_by_gas_payment_meta(
220-
&self,
221-
meta: &InterchainGasPaymentMeta,
222-
) -> DbResult<Option<bool>>;
223-
224-
fn store_interchain_gas_expenditure_data_by_message_id(
225-
&self,
226-
message_id: &H256,
227-
data: &InterchainGasExpenditureData,
228-
) -> DbResult<()>;
229-
230-
fn retrieve_interchain_gas_expenditure_data_by_message_id(
231-
&self,
232-
message_id: &H256,
233-
) -> DbResult<Option<InterchainGasExpenditureData>>;
234-
235-
/// Store the status of an operation by its message id
236-
fn store_status_by_message_id(
237-
&self,
238-
message_id: &H256,
239-
status: &PendingOperationStatus,
240-
) -> DbResult<()>;
241-
242-
/// Retrieve the status of an operation by its message id
243-
fn retrieve_status_by_message_id(
244-
&self,
245-
message_id: &H256,
246-
) -> DbResult<Option<PendingOperationStatus>>;
247-
248-
fn store_interchain_gas_payment_data_by_gas_payment_key(
249-
&self,
250-
key: &GasPaymentKey,
251-
data: &InterchainGasPaymentData,
252-
) -> DbResult<()>;
253-
254-
fn retrieve_interchain_gas_payment_data_by_gas_payment_key(
255-
&self,
256-
key: &GasPaymentKey,
257-
) -> DbResult<Option<InterchainGasPaymentData>>;
258-
259-
fn store_gas_payment_by_sequence(
260-
&self,
261-
sequence: &u32,
262-
payment: &InterchainGasPayment,
263-
) -> DbResult<()>;
264-
265-
fn retrieve_gas_payment_by_sequence(
266-
&self,
267-
sequence: &u32,
268-
) -> DbResult<Option<InterchainGasPayment>>;
269-
270-
fn store_gas_payment_block_by_sequence(
271-
&self,
272-
sequence: &u32,
273-
block_number: &u64,
274-
) -> DbResult<()>;
275-
276-
fn retrieve_gas_payment_block_by_sequence(&self, sequence: &u32) -> DbResult<Option<u64>>;
277-
278-
/// Store the retry count for a pending message by its message id
279-
fn store_pending_message_retry_count_by_message_id(
280-
&self,
281-
message_id: &H256,
282-
count: &u32,
283-
) -> DbResult<()>;
284-
285-
/// Retrieve the retry count for a pending message by its message id
286-
fn retrieve_pending_message_retry_count_by_message_id(
287-
&self,
288-
message_id: &H256,
289-
) -> DbResult<Option<u32>>;
290-
291-
fn store_merkle_tree_insertion_by_leaf_index(
292-
&self,
293-
leaf_index: &u32,
294-
insertion: &MerkleTreeInsertion,
295-
) -> DbResult<()>;
296-
297-
/// Retrieve the merkle tree insertion event by its leaf index
298-
fn retrieve_merkle_tree_insertion_by_leaf_index(
299-
&self,
300-
leaf_index: &u32,
301-
) -> DbResult<Option<MerkleTreeInsertion>>;
302-
303-
fn store_merkle_leaf_index_by_message_id(
304-
&self,
305-
message_id: &H256,
306-
leaf_index: &u32,
307-
) -> DbResult<()>;
308-
309-
/// Retrieve the merkle leaf index of a message in the merkle tree
310-
fn retrieve_merkle_leaf_index_by_message_id(&self, message_id: &H256) -> DbResult<Option<u32>>;
311-
312-
fn store_merkle_tree_insertion_block_number_by_leaf_index(
313-
&self,
314-
leaf_index: &u32,
315-
block_number: &u64,
316-
) -> DbResult<()>;
317-
318-
fn retrieve_merkle_tree_insertion_block_number_by_leaf_index(
319-
&self,
320-
leaf_index: &u32,
321-
) -> DbResult<Option<u64>>;
322-
323-
fn store_highest_seen_message_nonce_number(&self, nonce: &u32) -> DbResult<()>;
324-
325-
/// Retrieve the nonce of the highest processed message we're aware of
326-
fn retrieve_highest_seen_message_nonce_number(&self) -> DbResult<Option<u32>>;
327-
328-
fn store_payload_uuids_by_message_id(&self, message_id: &H256, payload_uuids: Vec<UniqueIdentifier>) -> DbResult<()>;
329-
330-
fn retrieve_payload_uuids_by_message_id(&self, message_id: &H256) -> DbResult<Option<Vec<UniqueIdentifier>>>;
331-
}
332-
}
333-
334169
#[tokio::test]
335170
async fn test_full_pending_message_persistence_flow() {
336171
test_utils::run_test_db(|db| async move {

rust/main/agents/relayer/src/msg/message_processor/tests/tests_common.rs

Lines changed: 4 additions & 125 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,11 @@ use prometheus::{IntGauge, IntGaugeVec};
99
use serde::Serialize;
1010
use tokio::sync::broadcast;
1111

12-
use hyperlane_base::db::{
13-
DbResult, HyperlaneDb, InterchainGasExpenditureData, InterchainGasPaymentData,
14-
};
12+
// Re-export for use in other test modules
13+
pub use hyperlane_base::tests::mock_hyperlane_db::MockHyperlaneDb;
1514
use hyperlane_core::{
16-
identifiers::UniqueIdentifier, ChainResult, GasPaymentKey, HyperlaneDomain, HyperlaneMessage,
17-
InterchainGasPayment, InterchainGasPaymentMeta, MerkleTreeInsertion, PendingOperation,
18-
PendingOperationResult, PendingOperationStatus, ReprepareReason, TryBatchAs, TxOutcome, H256,
19-
U256,
15+
ChainResult, HyperlaneDomain, HyperlaneMessage, PendingOperation, PendingOperationResult,
16+
PendingOperationStatus, ReprepareReason, TryBatchAs, TxOutcome, H256, U256,
2017
};
2118
use lander::{Entrypoint, FullPayload, LanderError, PayloadStatus, PayloadUuid};
2219

@@ -136,124 +133,6 @@ impl PendingOperation for MockQueueOperation {
136133

137134
impl TryBatchAs<HyperlaneMessage> for MockQueueOperation {}
138135

139-
// Mock HyperlaneDb
140-
mock! {
141-
pub HyperlaneDb {}
142-
143-
impl HyperlaneDb for HyperlaneDb {
144-
fn retrieve_payload_uuids_by_message_id(
145-
&self,
146-
message_id: &H256,
147-
) -> DbResult<Option<Vec<PayloadUuid>>>;
148-
fn retrieve_highest_seen_message_nonce(&self) -> DbResult<Option<u32>>;
149-
fn retrieve_message_by_nonce(&self, nonce: u32) -> DbResult<Option<HyperlaneMessage>>;
150-
fn retrieve_processed_by_nonce(&self, nonce: &u32) -> DbResult<Option<bool>>;
151-
fn domain(&self) -> &HyperlaneDomain;
152-
fn store_message_id_by_nonce(&self, nonce: &u32, id: &H256) -> DbResult<()>;
153-
fn retrieve_message_id_by_nonce(&self, nonce: &u32) -> DbResult<Option<H256>>;
154-
fn store_message_by_id(&self, id: &H256, message: &HyperlaneMessage) -> DbResult<()>;
155-
fn retrieve_message_by_id(&self, id: &H256) -> DbResult<Option<HyperlaneMessage>>;
156-
fn store_dispatched_block_number_by_nonce(
157-
&self,
158-
nonce: &u32,
159-
block_number: &u64,
160-
) -> DbResult<()>;
161-
fn retrieve_dispatched_block_number_by_nonce(&self, nonce: &u32) -> DbResult<Option<u64>>;
162-
fn store_processed_by_nonce(&self, nonce: &u32, processed: &bool) -> DbResult<()>;
163-
fn store_processed_by_gas_payment_meta(
164-
&self,
165-
meta: &InterchainGasPaymentMeta,
166-
processed: &bool,
167-
) -> DbResult<()>;
168-
fn retrieve_processed_by_gas_payment_meta(
169-
&self,
170-
meta: &InterchainGasPaymentMeta,
171-
) -> DbResult<Option<bool>>;
172-
fn store_interchain_gas_expenditure_data_by_message_id(
173-
&self,
174-
message_id: &H256,
175-
data: &InterchainGasExpenditureData,
176-
) -> DbResult<()>;
177-
fn retrieve_interchain_gas_expenditure_data_by_message_id(
178-
&self,
179-
message_id: &H256,
180-
) -> DbResult<Option<InterchainGasExpenditureData>>;
181-
fn store_status_by_message_id(
182-
&self,
183-
message_id: &H256,
184-
status: &PendingOperationStatus,
185-
) -> DbResult<()>;
186-
fn retrieve_status_by_message_id(
187-
&self,
188-
message_id: &H256,
189-
) -> DbResult<Option<PendingOperationStatus>>;
190-
fn store_interchain_gas_payment_data_by_gas_payment_key(
191-
&self,
192-
key: &GasPaymentKey,
193-
data: &InterchainGasPaymentData,
194-
) -> DbResult<()>;
195-
fn retrieve_interchain_gas_payment_data_by_gas_payment_key(
196-
&self,
197-
key: &GasPaymentKey,
198-
) -> DbResult<Option<InterchainGasPaymentData>>;
199-
fn store_gas_payment_by_sequence(
200-
&self,
201-
sequence: &u32,
202-
payment: &InterchainGasPayment,
203-
) -> DbResult<()>;
204-
fn retrieve_gas_payment_by_sequence(
205-
&self,
206-
sequence: &u32,
207-
) -> DbResult<Option<InterchainGasPayment>>;
208-
fn store_gas_payment_block_by_sequence(
209-
&self,
210-
sequence: &u32,
211-
block_number: &u64,
212-
) -> DbResult<()>;
213-
fn retrieve_gas_payment_block_by_sequence(&self, sequence: &u32) -> DbResult<Option<u64>>;
214-
fn store_pending_message_retry_count_by_message_id(
215-
&self,
216-
message_id: &H256,
217-
count: &u32,
218-
) -> DbResult<()>;
219-
fn retrieve_pending_message_retry_count_by_message_id(
220-
&self,
221-
message_id: &H256,
222-
) -> DbResult<Option<u32>>;
223-
fn store_merkle_tree_insertion_by_leaf_index(
224-
&self,
225-
leaf_index: &u32,
226-
insertion: &MerkleTreeInsertion,
227-
) -> DbResult<()>;
228-
fn retrieve_merkle_tree_insertion_by_leaf_index(
229-
&self,
230-
leaf_index: &u32,
231-
) -> DbResult<Option<MerkleTreeInsertion>>;
232-
fn store_merkle_leaf_index_by_message_id(
233-
&self,
234-
message_id: &H256,
235-
leaf_index: &u32,
236-
) -> DbResult<()>;
237-
fn retrieve_merkle_leaf_index_by_message_id(&self, message_id: &H256) -> DbResult<Option<u32>>;
238-
fn store_merkle_tree_insertion_block_number_by_leaf_index(
239-
&self,
240-
leaf_index: &u32,
241-
block_number: &u64,
242-
) -> DbResult<()>;
243-
fn retrieve_merkle_tree_insertion_block_number_by_leaf_index(
244-
&self,
245-
leaf_index: &u32,
246-
) -> DbResult<Option<u64>>;
247-
fn store_highest_seen_message_nonce_number(&self, nonce: &u32) -> DbResult<()>;
248-
fn retrieve_highest_seen_message_nonce_number(&self) -> DbResult<Option<u32>>;
249-
fn store_payload_uuids_by_message_id(
250-
&self,
251-
message_id: &H256,
252-
payloads_uuid: Vec<UniqueIdentifier>,
253-
) -> DbResult<()>;
254-
}
255-
}
256-
257136
// Mock DispatcherEntrypoint
258137
mock! {
259138
pub DispatcherEntrypoint {}

rust/main/agents/relayer/src/msg/metadata/multisig/merkle_root_multisig.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,10 +88,10 @@ mod tests {
8888
use std::collections::HashMap;
8989
use std::sync::Arc;
9090

91-
use hyperlane_base::tests::dummy_validators;
9291
use hyperlane_base::tests::mock_checkpoint_syncer::{
9392
build_mock_checkpoint_syncs, generate_multisig_signed_checkpoint,
9493
};
94+
use hyperlane_base::tests::test_validators::dummy_validators;
9595
use hyperlane_base::{CheckpointSyncer, MultisigCheckpointSyncer};
9696
use hyperlane_core::accumulator::merkle::Proof;
9797
use hyperlane_core::accumulator::TREE_DEPTH;

rust/main/agents/relayer/src/msg/metadata/multisig/message_id_multisig.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,10 +93,10 @@ mod tests {
9393
use std::collections::HashMap;
9494
use std::sync::Arc;
9595

96-
use hyperlane_base::tests::dummy_validators;
9796
use hyperlane_base::tests::mock_checkpoint_syncer::{
9897
build_mock_checkpoint_syncs, generate_multisig_signed_checkpoint,
9998
};
99+
use hyperlane_base::tests::test_validators::dummy_validators;
100100
use hyperlane_base::{CheckpointSyncer, MultisigCheckpointSyncer};
101101
use hyperlane_core::{
102102
ChainResult, Checkpoint, CheckpointWithMessageId, HyperlaneChain, HyperlaneContract,

0 commit comments

Comments
 (0)