()
| 887 | db.commit().await.unwrap(); |
| 888 | |
| 889 | // Latest should still be epoch 5, not 3 |
| 890 | let (latest, _) = db.get_latest_finalized_checkpoint().await.0.unwrap(); |
| 891 | assert_eq!(latest.digest, checkpoint5.digest); |
| 892 | |
| 893 | // Store epoch 7 (newer than current latest) |
| 894 | db.store_finalized_checkpoint(7, &checkpoint7, Block::genesis([0; 32])) |
| 895 | .await |
| 896 | .unwrap(); |
| 897 | db.commit().await.unwrap(); |
| 898 | |
| 899 | // Latest should now be epoch 7 |
| 900 | let (latest, _) = db.get_latest_finalized_checkpoint().await.0.unwrap(); |
| 901 | assert_eq!(latest.digest, checkpoint7.digest); |
| 902 | |
| 903 | // All checkpoints should still be individually accessible |
| 904 | let (cp3, _) = db.get_finalized_checkpoint(3).await.unwrap(); |
| 905 | let (cp5, _) = db.get_finalized_checkpoint(5).await.unwrap(); |
| 906 | let (cp7, _) = db.get_finalized_checkpoint(7).await.unwrap(); |
| 907 | assert_eq!(cp3.digest, checkpoint3.digest); |
| 908 | assert_eq!(cp5.digest, checkpoint5.digest); |
| 909 | assert_eq!(cp7.digest, checkpoint7.digest); |
| 910 | }); |
| 911 | } |
| 912 | |
| 913 | #[test] |
| 914 | fn test_checkpoint_overwrite() { |
| 915 | let cfg = commonware_runtime::deterministic::Config::default().with_seed(7); |
| 916 | let executor = Runner::from(cfg); |
| 917 | executor.start(|context| async move { |
| 918 | let mut db = |
| 919 | create_test_db_with_context::<_, MinPk>("test_checkpoint_overwrite", context).await; |
| 920 | |
| 921 | // Create two different checkpoints for the same epoch |
| 922 | let mut state1 = ConsensusState::default(); |
| 923 | state1.set_latest_height(100); |
| 924 | |
| 925 | let checkpoint1 = summit_types::checkpoint::Checkpoint::new(&state1); |
| 926 | |
| 927 | let mut state2 = ConsensusState::default(); |
| 928 | state2.set_latest_height(200); |
| 929 | let checkpoint2 = summit_types::checkpoint::Checkpoint::new(&state2); |
| 930 | |
| 931 | // Store first checkpoint for epoch 2 |
nothing calls this directly
no test coverage detected