Skip to content

Commit b1fe21b

Browse files
committed
Fix signer integration tests
Make them compatible with the certified only signer registration mode.
1 parent 1713bdd commit b1fe21b

File tree

2 files changed

+34
-30
lines changed

2 files changed

+34
-30
lines changed

mithril-signer/tests/state_machine.rs

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,20 @@
11
mod test_extensions;
22

3-
use mithril_common::entities::Epoch;
3+
use mithril_common::{
4+
crypto_helper::tests_setup,
5+
entities::{Epoch, SignerWithStake},
6+
};
47

58
use test_extensions::StateMachineTester;
69

710
#[rustfmt::skip]
811
#[tokio::test]
912
async fn test_create_single_signature() {
10-
let mut tester = StateMachineTester::init().await;
13+
14+
let protocol_parameters = tests_setup::setup_protocol_parameters();
15+
let signers = tests_setup::setup_signers(10, &protocol_parameters);
16+
let signers_with_stake = signers.iter().map(|(signer_with_stake, _, _)| signer_with_stake.to_owned()).collect::<Vec<SignerWithStake>>();
17+
let mut tester = StateMachineTester::init(&signers_with_stake).await.expect("state machine tester init should not fail");
1118

1219
tester
1320
.comment("state machine starts and remains in Unregistered state until a epoch settings is got")
@@ -25,7 +32,7 @@ async fn test_create_single_signature() {
2532
.comment("getting an epoch settings changes the state → Registered")
2633
.aggregator_send_epoch_settings().await
2734
.cycle_registered().await.unwrap()
28-
.register_signers(2).await.unwrap()
35+
.register_signers(&signers_with_stake[..2]).await.unwrap()
2936
.check_protocol_initializer(Epoch(3)).await.unwrap()
3037
.check_stake_store(Epoch(3)).await.unwrap()
3138

mithril-signer/tests/test_extensions/state_machine_tester.rs

Lines changed: 24 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -45,20 +45,30 @@ pub struct StateMachineTester {
4545
}
4646

4747
impl StateMachineTester {
48-
pub async fn init() -> Self {
48+
pub async fn init(signers_with_stake: &[SignerWithStake]) -> Result<Self> {
49+
let selected_signer_with_stake = signers_with_stake.first().ok_or_else(|| {
50+
TestError::AssertFailed("there should be at least one signer with stakes".to_string())
51+
})?;
52+
let selected_signer_party_id = selected_signer_with_stake.party_id.clone();
53+
let selected_signer_temp_dir =
54+
tests_setup::setup_temp_directory_for_signer(&selected_signer_party_id, false);
4955
let config = Config {
5056
aggregator_endpoint: "http://0.0.0.0:8000".to_string(),
5157
cardano_cli_path: PathBuf::new(),
5258
cardano_node_socket_path: PathBuf::new(),
5359
db_directory: PathBuf::new(),
5460
network: "devnet".to_string(),
5561
network_magic: Some(42),
56-
party_id: Some("99999999999999999999999999999999".to_string()),
62+
party_id: Some(selected_signer_party_id),
5763
run_interval: 5000,
5864
data_stores_directory: PathBuf::new(),
5965
store_retention_limit: None,
60-
kes_secret_key_path: None,
61-
operational_certificate_path: None,
66+
kes_secret_key_path: selected_signer_temp_dir
67+
.as_ref()
68+
.map(|dir| dir.join("kes.sk")),
69+
operational_certificate_path: selected_signer_temp_dir
70+
.as_ref()
71+
.map(|dir| dir.join("opcert.cert")),
6272
};
6373

6474
let decorator = slog_term::PlainDecorator::new(slog_term::TestStdoutWriter);
@@ -103,22 +113,9 @@ impl StateMachineTester {
103113
stake_store: stake_store.clone(),
104114
};
105115
// set up stake distribution
106-
let protocol_parameters = tests_setup::setup_protocol_parameters();
107-
let mut signers: Vec<SignerWithStake> =
108-
tests_setup::setup_signers(10, &protocol_parameters)
109-
.into_iter()
110-
.map(|(signer_with_stake, _, _)| signer_with_stake)
111-
.collect();
112-
signers.push(SignerWithStake {
113-
party_id: "99999999999999999999999999999999".to_string(),
114-
stake: 999,
115-
verification_key: "".to_string(),
116-
verification_key_signature: None,
117-
operational_certificate: None,
118-
kes_period: None,
119-
});
120-
121-
chain_observer.set_signers(signers).await;
116+
chain_observer
117+
.set_signers(signers_with_stake.to_owned())
118+
.await;
122119

123120
let runner = Box::new(SignerRunner::new(config, services));
124121

@@ -128,7 +125,7 @@ impl StateMachineTester {
128125
Duration::from_secs(5),
129126
);
130127

131-
StateMachineTester {
128+
Ok(StateMachineTester {
132129
state_machine,
133130
immutable_observer,
134131
chain_observer,
@@ -137,7 +134,7 @@ impl StateMachineTester {
137134
stake_store,
138135
comment_no: 0,
139136
_logs_guard: logs_guard,
140-
}
137+
})
141138
}
142139

143140
fn assert(&mut self, condition: bool, description: String) -> Result<&mut Self> {
@@ -279,11 +276,11 @@ impl StateMachineTester {
279276
}
280277

281278
/// register the signer in the certificate handler
282-
pub async fn register_signers(&mut self, count: u64) -> Result<&mut Self> {
283-
let protocol_parameters = tests_setup::setup_protocol_parameters();
284-
for (signer_with_stake, _signer, _protocol_initializer) in
285-
tests_setup::setup_signers(count, &protocol_parameters)
286-
{
279+
pub async fn register_signers(
280+
&mut self,
281+
signers_with_stake: &[SignerWithStake],
282+
) -> Result<&mut Self> {
283+
for signer_with_stake in signers_with_stake {
287284
self.certificate_handler
288285
.register_signer(&signer_with_stake.to_owned().into())
289286
.await

0 commit comments

Comments
 (0)