Skip to content

Commit 4b44ee7

Browse files
committed
test/e2e: comet tx indexer
1 parent edaabb1 commit 4b44ee7

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;
@@ -2852,3 +2854,95 @@ fn test_genesis_manipulation() -> Result<()> {
28522854

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

0 commit comments

Comments
 (0)