Skip to content

Commit f8e0200

Browse files
committed
test/e2e: comet tx indexer
1 parent a057d87 commit f8e0200

File tree

1 file changed

+94
-0
lines changed

1 file changed

+94
-0
lines changed

crates/tests/src/e2e/ledger_tests.rs

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,10 @@ use namada_apps_lib::wallet::defaults::is_use_device;
3131
use namada_apps_lib::wallet::{self, Alias};
3232
use namada_core::chain::ChainId;
3333
use namada_core::token::NATIVE_MAX_DECIMAL_PLACES;
34+
use namada_node::tendermint_config::TxIndexConfig;
3435
use namada_sdk::address::Address;
3536
use namada_sdk::chain::{ChainIdPrefix, Epoch};
37+
use namada_sdk::tendermint_rpc::Client;
3638
use namada_sdk::time::DateTimeUtc;
3739
use namada_sdk::token;
3840
use namada_test_utils::TestWasms;
@@ -2853,3 +2855,95 @@ fn test_genesis_manipulation() -> Result<()> {
28532855

28542856
Ok(())
28552857
}
2858+
2859+
#[test]
2860+
fn comet_tx_indexer() -> Result<()> {
2861+
use namada_apps_lib::config::Config;
2862+
use namada_sdk::{tendermint, tendermint_rpc};
2863+
2864+
let test = Arc::new(setup::network(
2865+
|genesis, base_dir: &_| {
2866+
setup::set_validators(1, genesis, base_dir, |_| 0, vec![])
2867+
},
2868+
None,
2869+
)?);
2870+
2871+
// Enable comet tx indexer
2872+
let update_config = |mut config: Config| {
2873+
config.ledger.cometbft.tx_index = TxIndexConfig {
2874+
indexer: namada_node::tendermint_config::TxIndexer::Kv,
2875+
};
2876+
config
2877+
};
2878+
2879+
let validator_base_dir = test.get_base_dir(Who::Validator(0));
2880+
let validator_config = update_config(Config::load(
2881+
&validator_base_dir,
2882+
&test.net.chain_id,
2883+
None,
2884+
));
2885+
validator_config
2886+
.write(&validator_base_dir, &test.net.chain_id, true)
2887+
.unwrap();
2888+
2889+
set_ethereum_bridge_mode(
2890+
&test,
2891+
&test.net.chain_id,
2892+
Who::Validator(0),
2893+
ethereum_bridge::ledger::Mode::Off,
2894+
None,
2895+
);
2896+
2897+
// 1. Run the ledger node
2898+
let bg_ledger =
2899+
start_namada_ledger_node_wait_wasm(&test, Some(0), Some(40))?
2900+
.background();
2901+
2902+
let validator_rpc = get_actor_rpc(&test, Who::Validator(0));
2903+
2904+
// A token transfer tx args
2905+
let tx_args = apply_use_device(vec![
2906+
"transparent-transfer",
2907+
"--source",
2908+
BERTHA,
2909+
"--target",
2910+
ALBERT,
2911+
"--token",
2912+
NAM,
2913+
"--amount",
2914+
"1.01",
2915+
"--signing-keys",
2916+
BERTHA_KEY,
2917+
"--node",
2918+
&validator_rpc,
2919+
]);
2920+
let mut client = run!(*test, Bin::Client, tx_args, Some(80))?;
2921+
let expected = "CometBFT tx hash: ";
2922+
let (_unread, matched) = client.exp_regex(&format!("{expected}.*\n"))?;
2923+
let comet_tx_hash = matched.trim().split_once(expected).unwrap().1;
2924+
client.assert_success();
2925+
2926+
// Wait to commit a block
2927+
let mut ledger = bg_ledger.foreground();
2928+
ledger.exp_regex(r"Committed block hash.*, height: [0-9]+")?;
2929+
2930+
// Check the tx result in Comet's indexer
2931+
let client = tendermint_rpc::HttpClient::builder(
2932+
tendermint_rpc::HttpClientUrl::from_str(&validator_rpc).unwrap(),
2933+
)
2934+
.compat_mode(tendermint_rpc::client::CompatMode::V0_38)
2935+
.timeout(std::time::Duration::from_secs(30))
2936+
.build()
2937+
.unwrap();
2938+
let result = test
2939+
.async_runtime()
2940+
.block_on(
2941+
client
2942+
.tx(tendermint::Hash::from_str(comet_tx_hash).unwrap(), false),
2943+
)
2944+
.unwrap();
2945+
assert!(result.tx_result.code.is_ok());
2946+
assert!(result.tx_result.gas_used > 0);
2947+
2948+
Ok(())
2949+
}

0 commit comments

Comments
 (0)