Skip to content

Commit 8f51fe4

Browse files
feat(Governance): Add additional node provider rewards check to upgrade_canisters_with_golden_nns_state test (#8433)
This pull request adds an additional check for Node Provider rewards. The new assertion ensures that rewards are distributed over contiguous periods, preventing any gaps in days between subsequent reward distributions.
1 parent 0e06650 commit 8f51fe4

File tree

1 file changed

+27
-4
lines changed

1 file changed

+27
-4
lines changed

rs/nns/integration_tests/src/upgrade_canisters_with_golden_nns_state.rs

Lines changed: 27 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -404,6 +404,7 @@ mod sanity_check {
404404
use super::*;
405405
use ic_nervous_system_common::ONE_MONTH_SECONDS;
406406
use ic_nns_governance::governance::NODE_PROVIDER_REWARD_PERIOD_SECONDS;
407+
use ic_nns_governance_api::DateUtc;
407408

408409
/// Metrics fetched from canisters either before or after testing.
409410
pub struct Metrics {
@@ -442,10 +443,11 @@ mod sanity_check {
442443
fn advance_time(state_machine: &StateMachine, before_timestamp: u64) {
443444
// Advance time in the state machine to just before the next node provider
444445
// rewards distribution time.
446+
let seconds_to_node_provider_reward_distribution = before_timestamp
447+
+ NODE_PROVIDER_REWARD_PERIOD_SECONDS
448+
- state_machine.get_time().as_secs_since_unix_epoch();
445449
state_machine.advance_time(std::time::Duration::from_secs(
446-
before_timestamp + NODE_PROVIDER_REWARD_PERIOD_SECONDS
447-
- state_machine.get_time().as_secs_since_unix_epoch()
448-
- 1,
450+
seconds_to_node_provider_reward_distribution - 1,
449451
));
450452
for _ in 0..100 {
451453
state_machine.advance_time(std::time::Duration::from_secs(1));
@@ -454,7 +456,9 @@ mod sanity_check {
454456

455457
// Advance time in the state machine by one month to ensure that voting rewards
456458
// are also distributed.
457-
state_machine.advance_time(std::time::Duration::from_secs(ONE_MONTH_SECONDS));
459+
state_machine.advance_time(std::time::Duration::from_secs(
460+
ONE_MONTH_SECONDS - seconds_to_node_provider_reward_distribution,
461+
));
458462
for _ in 0..100 {
459463
state_machine.advance_time(std::time::Duration::from_secs(1));
460464
state_machine.tick();
@@ -546,6 +550,25 @@ mod sanity_check {
546550
assert_increased(before, after, "node provider rewards timestamp");
547551
},
548552
);
553+
554+
// Check node provider rewards cover contiguous periods.
555+
let before_end_date = self
556+
.before
557+
.governance_most_recent_monthly_node_provider_rewards
558+
.end_date
559+
.clone()
560+
.unwrap();
561+
let expected_after_start_date = DateUtc {
562+
year: before_end_date.year,
563+
month: before_end_date.month,
564+
day: before_end_date.day + 1,
565+
};
566+
assert_eq!(
567+
self.after
568+
.governance_most_recent_monthly_node_provider_rewards
569+
.start_date,
570+
Some(expected_after_start_date)
571+
);
549572
}
550573

551574
fn check_metric<T>(&self, transform: impl Fn(&Metrics) -> T, assertion: impl Fn(T, T)) {

0 commit comments

Comments
 (0)