Skip to content

Commit 663cd96

Browse files
committed
test: adapt signer integration tests with the new states and transitions in the signer state machine
1 parent 4c017e4 commit 663cd96

File tree

5 files changed

+95
-43
lines changed

5 files changed

+95
-43
lines changed

mithril-signer/src/runtime/state_machine.rs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,22 @@ impl SignerState {
7272
matches!(*self, SignerState::Registered { epoch: _ })
7373
}
7474

75+
/// Returns `true` if the state in `ReadyToSign`
76+
pub fn is_ready_to_sign(&self) -> bool {
77+
matches!(
78+
*self,
79+
SignerState::ReadyToSign {
80+
time_point: _,
81+
last_signed_entity_type: _
82+
}
83+
)
84+
}
85+
86+
/// Returns `true` if the state in `RegisteredNotAbleToSign`
87+
pub fn is_registered_not_able_to_sign(&self) -> bool {
88+
matches!(*self, SignerState::RegisteredNotAbleToSign { epoch: _ })
89+
}
90+
7591
/// Returns `true` if the state in `Signed`
7692
pub fn is_signed(&self) -> bool {
7793
matches!(

mithril-signer/tests/create_cardano_transaction_single_signature.rs

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -42,37 +42,36 @@ async fn test_create_cardano_transaction_single_signature() {
4242
.aggregator_send_signed_entity(SignedEntityTypeDiscriminants::CardanoTransactions).await
4343
.cycle_unregistered().await.unwrap()
4444

45-
.comment("getting an epoch settings changes the state → Registered")
45+
.comment("getting an epoch settings changes the state → RegisteredNotAbleToSign")
4646
.aggregator_send_epoch_settings().await
47-
.cycle_registered().await.unwrap()
47+
.cycle_registered_not_able_to_sign().await.unwrap()
4848
.register_signers(&signers_with_stake[..2]).await.unwrap()
4949
.check_protocol_initializer(Epoch(2)).await.unwrap()
5050
.check_stake_store(Epoch(2)).await.unwrap()
5151

5252
.comment("waiting 2 epoch for the registration to be effective")
5353
.increase_epoch(2).await.unwrap()
5454
.cycle_unregistered().await.unwrap()
55-
.cycle_registered().await.unwrap()
55+
.cycle_registered_not_able_to_sign().await.unwrap()
5656

5757
.increase_epoch(3).await.unwrap()
5858
.cycle_unregistered().await.unwrap()
5959

60-
.comment("creating a new certificate pending with a cardano transaction signed entity → Registered")
61-
.increase_block_number_and_slot_number(70, SlotNumber(80), BlockNumber(170)).await.unwrap()
62-
.cycle_registered().await.unwrap()
60+
.comment("signer can now create a single signature → ReadyToSign")
61+
.cycle_ready_to_sign().await.unwrap()
6362

64-
.comment("signer can now create a single signature → Signed")
65-
.cycle_signed().await.unwrap()
63+
.comment("creating a new certificate pending with a cardano transaction signed entity → ReadyToSign")
64+
.increase_block_number_and_slot_number(70, SlotNumber(80), BlockNumber(170)).await.unwrap()
65+
.cycle_ready_to_sign().await.unwrap()
6666

67-
.comment("more cycles do not change the state = Signed")
68-
.cycle_signed().await.unwrap()
69-
.cycle_signed().await.unwrap()
67+
.comment("more cycles do not change the state = ReadyToSign")
68+
.cycle_ready_to_sign().await.unwrap()
69+
.cycle_ready_to_sign().await.unwrap()
7070

71-
.comment("new blocks means a new signature with the same stake distribution → Signed")
71+
.comment("new blocks means a new signature with the same stake distribution → ReadyToSign")
7272
.increase_block_number_and_slot_number(125, SlotNumber(205), BlockNumber(295)).await.unwrap()
7373
.cardano_chain_send_rollback(SlotNumber(205), BlockNumber(230)).await.unwrap()
74-
.cycle_registered().await.unwrap()
75-
.cycle_signed().await.unwrap()
74+
.cycle_ready_to_sign().await.unwrap()
7675

7776
.comment("metrics should be correctly computed")
7877
.check_metrics(total_signer_registrations_expected,total_signature_registrations_expected).await.unwrap()

mithril-signer/tests/create_immutable_files_full_single_signature.rs

Lines changed: 35 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -44,69 +44,77 @@ async fn test_create_immutable_files_full_single_signature() {
4444
.cycle_unregistered().await.unwrap()
4545
.check_era_checker_last_updated_at(Epoch(2)).await.unwrap()
4646

47-
.comment("getting an epoch settings changes the state → Registered")
47+
.comment("getting an epoch settings changes the state → RegisteredNotAbleToSign")
4848
.aggregator_send_epoch_settings().await
49-
.cycle_registered().await.unwrap()
49+
.cycle_registered_not_able_to_sign().await.unwrap()
5050
.register_signers(&signers_with_stake[..2]).await.unwrap()
5151
.check_protocol_initializer(Epoch(3)).await.unwrap()
5252
.check_stake_store(Epoch(3)).await.unwrap()
5353

54-
.comment("more cycles does not change the state = Registered")
55-
.cycle_registered().await.unwrap()
54+
.comment("more cycles does not change the state = RegisteredNotAbleToSign")
55+
.cycle_registered_not_able_to_sign().await.unwrap()
5656

57-
.comment("changing immutable does not change the state = Registered")
57+
.comment("changing immutable does not change the state = RegisteredNotAbleToSign")
5858
.increase_immutable(1, 3).await.unwrap()
59-
.cycle_registered().await.unwrap()
59+
.cycle_registered_not_able_to_sign().await.unwrap()
6060

6161
.comment("changing Epoch changes the state → Unregistered")
6262
.increase_epoch(3).await.unwrap()
6363
.cycle_unregistered().await.unwrap()
6464
.check_era_checker_last_updated_at(Epoch(3)).await.unwrap()
6565

66-
.comment("creating a new certificate pending with new signers and new beacon → Registered")
67-
.cycle_registered().await.unwrap()
66+
.comment("creating a new certificate pending with new signers and new beacon → RegisteredNotAbleToSign")
67+
.cycle_registered_not_able_to_sign().await.unwrap()
6868
.check_protocol_initializer(Epoch(4)).await.unwrap()
6969
.check_stake_store(Epoch(4)).await.unwrap()
7070

71-
.comment("more cycles do not change the state → Registered")
72-
.cycle_registered().await.unwrap()
73-
.cycle_registered().await.unwrap()
71+
.comment("more cycles do not change the state → RegisteredNotAbleToSign")
72+
.cycle_registered_not_able_to_sign().await.unwrap()
73+
.cycle_registered_not_able_to_sign().await.unwrap()
7474

75-
.comment("increment immutable, the state does not change = Registered")
75+
.comment("increment immutable, the state does not change = RegisteredNotAbleToSign")
7676
.increase_immutable(5, 8).await.unwrap()
77-
.cycle_registered().await.unwrap()
77+
.cycle_registered_not_able_to_sign().await.unwrap()
7878

7979
.comment("changing epoch changes the state → Unregistered")
8080
.increase_epoch(4).await.unwrap()
8181
.cycle_unregistered().await.unwrap()
8282
.check_era_checker_last_updated_at(Epoch(4)).await.unwrap()
8383

84-
.comment("creating a new certificate pending with new signers and new beacon → Registered")
85-
.cycle_registered().await.unwrap()
84+
.comment("creating a new certificate pending with new signers and new beacon → ReadyToSign")
85+
.cycle_ready_to_sign().await.unwrap()
8686
.check_protocol_initializer(Epoch(4)).await.unwrap()
8787

88-
.comment("signer can now create a single signature → Signed")
89-
.cycle_signed().await.unwrap()
88+
.comment("signer can now create a single signature → ReadyToSign")
89+
.cycle_ready_to_sign().await.unwrap()
90+
.comment("signer signs a single signature = ReadyToSign")
91+
.cycle_ready_to_sign().await.unwrap()
92+
// TODO?
93+
// .expect_new_signature()
9094

91-
.comment("more cycles do not change the state = Signed")
92-
.cycle_signed().await.unwrap()
93-
.cycle_signed().await.unwrap()
95+
// Should we remove this case?
96+
//.comment("more cycles do not change the state = ReadyToSign")
97+
//.cycle_ready_to_sign().await.unwrap()
98+
// .cycle_ready_to_sign().await.unwrap()
9499

95-
.comment("new immutable means a new signature with the same stake distribution → Signed")
100+
.comment("new immutable means a new signature with the same stake distribution → ReadyToSign")
96101
.increase_immutable(1, 9).await.unwrap()
97-
.cycle_registered().await.unwrap()
98-
.cycle_signed().await.unwrap()
102+
.cycle_ready_to_sign().await.unwrap()
103+
// TODO?
104+
// .expect_new_signature()
99105

100106
.comment("changing epoch changes the state → Unregistered")
101107
.increase_epoch(5).await.unwrap()
102108
.cycle_unregistered().await.unwrap()
103109
.check_era_checker_last_updated_at(Epoch(5)).await.unwrap()
104-
.cycle_registered().await.unwrap()
110+
.comment("signer should be able to create a single signature → ReadyToSign")
111+
.cycle_ready_to_sign().await.unwrap()
112+
.cycle_ready_to_sign().await.unwrap()
113+
// TODO?
114+
// .expect_new_signature()
115+
//.check_total_signature_registrations_metrics(3).await.unwrap()
105116
.check_protocol_initializer(Epoch(5)).await.unwrap()
106117

107-
.comment("signer should be able to create a single signature → Signed")
108-
.cycle_signed().await.unwrap()
109-
110118
.comment("metrics should be correctly computed")
111119
.check_metrics(total_signer_registrations_expected,total_signature_registrations_expected).await.unwrap()
112120
;

mithril-signer/tests/era_switch.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,12 +47,12 @@ async fn era_fail_at_startup() {
4747
.cycle_unregistered().await.unwrap()
4848
.check_era_checker_last_updated_at(Epoch(2)).await.unwrap()
4949
.aggregator_send_epoch_settings().await
50-
.cycle_registered().await.unwrap()
50+
.cycle_registered_not_able_to_sign().await.unwrap()
5151
.increase_epoch(3).await.unwrap()
5252
.cycle_unregistered().await.unwrap()
5353
.check_era_checker_last_updated_at(Epoch(3)).await.unwrap()
5454
.aggregator_send_epoch_settings().await
55-
.cycle_registered().await.unwrap()
55+
.cycle_registered_not_able_to_sign().await.unwrap()
5656
.increase_epoch(4).await.unwrap()
5757
.comment("Reaching unsupported Era Epoch")
5858
.cycle_unregistered().await

mithril-signer/tests/test_extensions/state_machine_tester.rs

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -321,6 +321,35 @@ impl StateMachineTester {
321321
)
322322
}
323323

324+
/// cycle the state machine and test the resulting state
325+
pub async fn cycle_ready_to_sign(&mut self) -> Result<&mut Self> {
326+
self.cycle().await?;
327+
328+
self.assert(
329+
self.state_machine.get_state().await.is_ready_to_sign(),
330+
format!(
331+
"state machine is in {} state (ReadyToSign was expected)",
332+
self.state_machine.get_state().await
333+
),
334+
)
335+
}
336+
337+
/// cycle the state machine and test the resulting state
338+
pub async fn cycle_registered_not_able_to_sign(&mut self) -> Result<&mut Self> {
339+
self.cycle().await?;
340+
341+
self.assert(
342+
self.state_machine
343+
.get_state()
344+
.await
345+
.is_registered_not_able_to_sign(),
346+
format!(
347+
"state machine is in {} state (RegisteredNotAbleToSign was expected)",
348+
self.state_machine.get_state().await
349+
),
350+
)
351+
}
352+
324353
/// cycle the state machine and test the resulting state
325354
pub async fn cycle_signed(&mut self) -> Result<&mut Self> {
326355
self.cycle().await?;

0 commit comments

Comments
 (0)