@@ -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