Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
194 changes: 0 additions & 194 deletions batcher/aligned-batcher/src/retry/batcher_retryables.rs
Original file line number Diff line number Diff line change
Expand Up @@ -222,197 +222,3 @@ pub async fn cancel_create_new_task_retryable(
"Receipt not found".to_string(),
)))
}

#[cfg(test)]
mod test {
use super::*;
use crate::{
config::{ContractDeploymentOutput, ECDSAConfig},
eth::{
self, get_provider, payment_service::BatcherPaymentService, utils::get_batcher_signer,
},
};
use ethers::{
contract::abigen,
types::{Address, U256},
utils::{Anvil, AnvilInstance},
};
use std::str::FromStr;

abigen!(
BatcherPaymentServiceContract,
"../aligned-sdk/abi/BatcherPaymentService.json"
);

async fn setup_anvil(port: u16) -> (AnvilInstance, BatcherPaymentService) {
let anvil = Anvil::new()
.port(port)
.arg("--load-state")
.arg("../../contracts/scripts/anvil/state/alignedlayer-deployed-anvil-state.json")
.spawn();

let eth_rpc_provider = eth::get_provider(format!("http://localhost:{}", port))
.expect("Failed to get provider");

let deployment_output = ContractDeploymentOutput::new(
"../../contracts/script/output/devnet/alignedlayer_deployment_output.json".to_string(),
);

let payment_service_addr = deployment_output.addresses.batcher_payment_service.clone();

let batcher_signer = get_batcher_signer(
eth_rpc_provider,
ECDSAConfig {
private_key_store_path: "../../config-files/anvil.batcher.ecdsa.key.json"
.to_string(),
private_key_store_password: "".to_string(),
},
)
.await
.unwrap();

let payment_service =
eth::payment_service::get_batcher_payment_service(batcher_signer, payment_service_addr)
.await
.expect("Failed to get Batcher Payment Service contract");
(anvil, payment_service)
}

#[tokio::test]
async fn test_get_user_balance_retryable() {
let payment_service;
let dummy_user_addr =
Address::from_str("0x8969c5eD335650692Bc04293B07F5BF2e7A673C0").unwrap();
{
let _anvil;
(_anvil, payment_service) = setup_anvil(8545u16).await;

let balance =
get_user_balance_retryable(&payment_service, &payment_service, &dummy_user_addr)
.await
.unwrap();

assert_eq!(balance, U256::zero());
// Anvil is killed when the scope is left
}

let result =
get_user_balance_retryable(&payment_service, &payment_service, &dummy_user_addr).await;
assert!(matches!(result, Err(RetryError::Transient(_))));

// restart anvil
let (_anvil, _) = setup_anvil(8545u16).await;
let balance =
get_user_balance_retryable(&payment_service, &payment_service, &dummy_user_addr)
.await
.unwrap();

assert_eq!(balance, U256::zero());
}

#[tokio::test]
async fn test_user_balance_is_unlocked_retryable() {
let payment_service;
let dummy_user_addr =
Address::from_str("0x8969c5eD335650692Bc04293B07F5BF2e7A673C0").unwrap();

{
let _anvil;
(_anvil, payment_service) = setup_anvil(8546u16).await;
let unlocked = user_balance_is_unlocked_retryable(
&payment_service,
&payment_service,
&dummy_user_addr,
)
.await
.unwrap();

assert_eq!(unlocked, false);
// Anvil is killed when the scope is left
}

let result = user_balance_is_unlocked_retryable(
&payment_service,
&payment_service,
&dummy_user_addr,
)
.await;
assert!(matches!(result, Err(RetryError::Transient(_))));

// restart Anvil
let (_anvil, _) = setup_anvil(8546u16).await;
let unlocked = user_balance_is_unlocked_retryable(
&payment_service,
&payment_service,
&dummy_user_addr,
)
.await
.unwrap();

assert_eq!(unlocked, false);
}

#[tokio::test]
async fn test_get_user_nonce_retryable() {
let payment_service;
let dummy_user_addr =
Address::from_str("0x8969c5eD335650692Bc04293B07F5BF2e7A673C0").unwrap();
{
let _anvil;
(_anvil, payment_service) = setup_anvil(8547u16).await;
let nonce = get_user_nonce_from_ethereum_retryable(
&payment_service,
&payment_service,
dummy_user_addr,
)
.await
.unwrap();

assert_eq!(nonce, U256::zero());
// Anvil is killed when the scope is left
}

let result = get_user_nonce_from_ethereum_retryable(
&payment_service,
&payment_service,
dummy_user_addr,
)
.await;
assert!(matches!(result, Err(RetryError::Transient(_))));

// restart Anvil
let (_anvil, _) = setup_anvil(8547u16).await;

let nonce = get_user_nonce_from_ethereum_retryable(
&payment_service,
&payment_service,
dummy_user_addr,
)
.await
.unwrap();

assert_eq!(nonce, U256::zero());
}

#[tokio::test]
async fn test_get_gas_price_retryable() {
let eth_rpc_provider;
{
let (_anvil, _payment_service) = setup_anvil(8548u16).await;
eth_rpc_provider = get_provider("http://localhost:8548".to_string())
.expect("Failed to get ethereum websocket provider");
let result = get_gas_price_retryable(&eth_rpc_provider, &eth_rpc_provider).await;

assert!(result.is_ok());
// Anvil is killed when the scope is left
}
let result = get_gas_price_retryable(&eth_rpc_provider, &eth_rpc_provider).await;
assert!(matches!(result, Err(RetryError::Transient(_))));

// restart Anvil
let (_anvil, _) = setup_anvil(8548u16).await;
let result = get_gas_price_retryable(&eth_rpc_provider, &eth_rpc_provider).await;

assert!(result.is_ok());
}
}
29 changes: 0 additions & 29 deletions config-files/config-aggregator-test.yaml

This file was deleted.

Loading
Loading