Skip to content

Commit a54c3be

Browse files
committed
test(aggregato): in create_certificate_follower check open messages after sync
This ensure that the synchronizer create an open message for MSD and that the state machine then proceed to the next signed entity type.
1 parent 1796fdb commit a54c3be

File tree

2 files changed

+53
-23
lines changed

2 files changed

+53
-23
lines changed

mithril-aggregator/tests/create_certificate_follower.rs

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -211,6 +211,8 @@ async fn create_certificate_follower() {
211211
- the follower aggregator synchronizes signers from the leader aggregator
212212
- the follower synchronizes its chain with the leader aggregator
213213
- the follower aggregator can transition from 'Idle' to 'Ready'
214+
- the follower aggregator transition from 'Ready' to 'Signing(CardanoStakeDistribution)', skipping
215+
MithrilStakeDistribution
214216
"
215217
);
216218
let epoch_fixture = &epoch_fixtures_map[&Epoch(3)];
@@ -272,8 +274,35 @@ async fn create_certificate_follower() {
272274
assert_last_certificate_eq!(
273275
follower_tester, synchronized_from_leader => expected_certificate_on_both_aggregator
274276
);
277+
let current_msd_open_message = follower_tester
278+
.observer
279+
.get_current_open_message(SignedEntityTypeDiscriminants::MithrilStakeDistribution)
280+
.await
281+
.unwrap();
282+
assert!(
283+
current_msd_open_message
284+
.as_ref()
285+
.is_some_and(|m| m.epoch == 3 && m.is_certified),
286+
"Expected a certified OpenMessage for MithrilStakeDistribution, got:\n{current_msd_open_message:#?}"
287+
);
288+
289+
comment!(
290+
"Follower: transition to 'Signing(CardanoStakeDistribution)' directly since a\
291+
OpenMessage for MithrilStakeDistribution was stored by the synchronizer"
292+
);
275293
cycle!(follower_tester, "ready");
276-
cycle_err!(leader_tester, "signing");
294+
cycle!(follower_tester, "signing");
295+
let current_csd_open_message = follower_tester
296+
.observer
297+
.get_current_open_message(SignedEntityTypeDiscriminants::CardanoStakeDistribution)
298+
.await
299+
.unwrap();
300+
assert!(
301+
current_csd_open_message
302+
.as_ref()
303+
.is_some_and(|m| m.epoch == 3 && !m.is_certified),
304+
"Expected a non-certified OpenMessage for CardanoStakeDistribution, got:\n{current_csd_open_message:#?}"
305+
);
277306

278307
comment!(
279308
"Epoch 4:

mithril-aggregator/tests/test_extensions/runtime_tester.rs

Lines changed: 23 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -44,14 +44,15 @@ macro_rules! cycle {
4444
( $tester:expr, $expected_state:expr ) => {{
4545
use $crate::test_extensions::ExpectedMetrics;
4646

47+
let runtime_tester: &mut RuntimeTester = &mut $tester;
4748
let (runtime_cycle_success, runtime_cycle_total) =
48-
$tester.get_runtime_cycle_success_and_total_since_startup_metrics();
49+
runtime_tester.get_runtime_cycle_success_and_total_since_startup_metrics();
4950

50-
RuntimeTester::cycle(&mut $tester).await.unwrap();
51-
assert_eq!($expected_state, $tester.runtime.get_state());
51+
runtime_tester.cycle().await.unwrap();
52+
assert_eq!($expected_state, runtime_tester.runtime.get_state());
5253

5354
assert_metrics_eq!(
54-
$tester.metrics_verifier,
55+
runtime_tester.metrics_verifier,
5556
ExpectedMetrics::new()
5657
.runtime_cycle_success(runtime_cycle_success + 1)
5758
.runtime_cycle_total(runtime_cycle_total + 1)
@@ -64,17 +65,19 @@ macro_rules! cycle_err {
6465
( $tester:expr, $expected_state:expr ) => {{
6566
use $crate::test_extensions::ExpectedMetrics;
6667

68+
let runtime_tester: &mut RuntimeTester = &mut $tester;
6769
let (runtime_cycle_success, runtime_cycle_total) =
68-
$tester.get_runtime_cycle_success_and_total_since_startup_metrics();
70+
runtime_tester.get_runtime_cycle_success_and_total_since_startup_metrics();
6971

70-
let err = RuntimeTester::cycle(&mut $tester)
72+
let err = runtime_tester
73+
.cycle()
7174
.await
7275
.expect_err("cycle tick should have returned an error");
7376
slog_scope::info!("cycle_err result: {err:?}");
74-
assert_eq!($expected_state, $tester.runtime.get_state());
77+
assert_eq!($expected_state, runtime_tester.runtime.get_state());
7578

7679
assert_metrics_eq!(
77-
$tester.metrics_verifier,
80+
runtime_tester.metrics_verifier,
7881
ExpectedMetrics::new()
7982
.runtime_cycle_success(runtime_cycle_success)
8083
.runtime_cycle_total(runtime_cycle_total + 1)
@@ -85,31 +88,29 @@ macro_rules! cycle_err {
8588
#[macro_export]
8689
macro_rules! assert_last_certificate_eq {
8790
( $tester:expr, $expected_certificate:expr ) => {{
91+
let runtime_tester: &mut RuntimeTester = &mut $tester;
8892
if let Some(signed_type) = $expected_certificate.get_signed_type() {
89-
RuntimeTester::wait_until_signed_entity(&$tester, &signed_type)
90-
.await
91-
.unwrap();
93+
runtime_tester.wait_until_signed_entity(&signed_type).await.unwrap();
9294
}
9395

9496
let is_synchronized_from_leader = false;
95-
let last_certificate =
96-
RuntimeTester::get_last_expected_certificate(&mut $tester, is_synchronized_from_leader)
97-
.await
98-
.unwrap();
97+
let last_certificate = runtime_tester
98+
.get_last_expected_certificate(is_synchronized_from_leader)
99+
.await
100+
.unwrap();
99101
assert_eq!($expected_certificate, last_certificate);
100102
}};
101103
( $tester:expr, synchronized_from_leader => $expected_certificate:expr ) => {{
104+
let runtime_tester: &mut RuntimeTester = &mut $tester;
102105
if let Some(signed_type) = $expected_certificate.get_signed_type() {
103-
RuntimeTester::wait_until_certificate(&$tester, &signed_type)
104-
.await
105-
.unwrap();
106+
runtime_tester.wait_until_certificate(&signed_type).await.unwrap();
106107
}
107108

108109
let is_synchronized_from_leader = true;
109-
let last_certificate =
110-
RuntimeTester::get_last_expected_certificate(&mut $tester, is_synchronized_from_leader)
111-
.await
112-
.unwrap();
110+
let last_certificate = runtime_tester
111+
.get_last_expected_certificate(is_synchronized_from_leader)
112+
.await
113+
.unwrap();
113114
assert_eq!($expected_certificate, last_certificate);
114115
}};
115116
}

0 commit comments

Comments
 (0)