Skip to content

Commit

Permalink
e2e test for rewards with a 3-validator network
Browse files Browse the repository at this point in the history
  • Loading branch information
brentstone committed Dec 4, 2022
1 parent 77de649 commit 3293278
Showing 1 changed file with 152 additions and 0 deletions.
152 changes: 152 additions & 0 deletions tests/src/e2e/ledger_tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -749,6 +749,158 @@ fn pos_bonds() -> Result<()> {
Ok(())
}

#[test]
fn pos_rewards() -> Result<()> {
let test = setup::network(
|genesis| {
let parameters = ParametersConfig {
min_num_of_blocks: 3,
epochs_per_year: 31_536_000,
max_expected_time_per_block: 1,
..genesis.parameters
};
let pos_params = PosParamsConfig {
pipeline_len: 2,
unbonding_len: 4,
..genesis.pos_params
};
let genesis = GenesisConfig {
parameters,
pos_params,
..genesis
};
setup::add_validators(2, genesis)
},
None,
)?;

// 1. Run 3 genesis validator ledger nodes
let mut validator_0 =
run_as!(test, Who::Validator(0), Bin::Node, &["ledger"], Some(40))?;
validator_0.exp_string("Anoma ledger node started")?;
validator_0.exp_string("This node is a validator")?;

let mut validator_1 =
run_as!(test, Who::Validator(1), Bin::Node, &["ledger"], Some(40))?;
validator_1.exp_string("Anoma ledger node started")?;
validator_1.exp_string("This node is a validator")?;

let mut validator_2 =
run_as!(test, Who::Validator(2), Bin::Node, &["ledger"], Some(40))?;
validator_2.exp_string("Anoma ledger node started")?;
validator_2.exp_string("This node is a validator")?;

let bg_validator_0 = validator_0.background();
let bg_validator_1 = validator_1.background();
let bg_validator_2 = validator_2.background();

let validator_zero_rpc = get_actor_rpc(&test, &Who::Validator(0));
let validator_one_rpc = get_actor_rpc(&test, &Who::Validator(1));
let validator_two_rpc = get_actor_rpc(&test, &Who::Validator(2));
println!("\nDBG0\n");
// Submit a delegation from Bertha to validator-0
let tx_args = vec![
"bond",
"--validator",
"validator-0",
"--source",
BERTHA,
"--amount",
"10000.0",
"--fee-amount",
"0",
"--gas-limit",
"0",
"--fee-token",
NAM,
"--ledger-address",
&validator_zero_rpc,
];
println!("\nDBG1\n");

let mut client = run!(test, Bin::Client, tx_args, Some(40))?;
client.exp_string("Transaction is valid.")?;
client.assert_success();

// Check that all validator nodes processed the tx with same result
let mut validator_0 = bg_validator_0.foreground();
let mut validator_1 = bg_validator_1.foreground();
let mut validator_2 = bg_validator_2.foreground();

let expected_result = "all VPs accepted transaction";
validator_0.exp_string(expected_result)?;
validator_1.exp_string(expected_result)?;
validator_2.exp_string(expected_result)?;

let bg_validator_0 = validator_0.background();
let bg_validator_1 = validator_1.background();
let bg_validator_2 = validator_2.background();

// Let validator-1 self-bond
let tx_args = vec![
"bond",
"--validator",
"validator-1",
"--amount",
"30000.0",
"--fee-amount",
"0",
"--gas-limit",
"0",
"--fee-token",
NAM,
"--ledger-address",
&validator_one_rpc,
];
let mut client =
run_as!(test, Who::Validator(1), Bin::Client, tx_args, Some(40))?;
client.exp_string("Transaction is valid.")?;
client.assert_success();

// Let validator-2 self-bond
let tx_args = vec![
"bond",
"--validator",
"validator-2",
"--amount",
"25000.0",
"--fee-amount",
"0",
"--gas-limit",
"0",
"--fee-token",
NAM,
"--ledger-address",
&validator_two_rpc,
];
let mut client =
run_as!(test, Who::Validator(2), Bin::Client, tx_args, Some(40))?;
client.exp_string("Transaction is valid.")?;
client.assert_success();
println!("\nDBG7\n");

// Wait some epochs
let epoch = get_epoch(&test, &validator_zero_rpc)?;
let wait_epoch = epoch + 4;
println!(
"Current epoch: {}, earliest epoch for withdrawal: {}",
epoch, wait_epoch
);

let start = Instant::now();
let loop_timeout = Duration::new(40, 0);
loop {
if Instant::now().duration_since(start) > loop_timeout {
panic!("Timed out waiting for epoch: {}", wait_epoch);
}
let epoch = get_epoch(&test, &validator_zero_rpc)?;
if epoch >= wait_epoch {
break;
}
}
Ok(())
}

/// PoS validator creation test. In this test we:
///
/// 1. Run the ledger node with shorter epochs for faster progression
Expand Down

0 comments on commit 3293278

Please sign in to comment.