Skip to content

Commit ee076df

Browse files
committed
fix(kes): fake KES signer dummy signature creates flakiness in tests
1 parent e73bd0a commit ee076df

File tree

5 files changed

+45
-25
lines changed

5 files changed

+45
-25
lines changed

internal/mithril-dmq/src/model/builder.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,7 @@ mod tests {
9595
use mithril_cardano_node_chain::test::double::FakeChainObserver;
9696
use mithril_common::{
9797
crypto_helper::TryToBytes,
98+
current_function,
9899
entities::{BlockNumber, ChainPoint, TimePoint},
99100
test::{crypto_helper::KesSignerFake, double::Dummy},
100101
};
@@ -117,7 +118,8 @@ mod tests {
117118

118119
#[tokio::test]
119120
async fn test_build_dmq_message() {
120-
let (kes_signature, operational_certificate) = KesSignerFake::dummy_signature();
121+
let (kes_signature, operational_certificate) =
122+
KesSignerFake::dummy_signature(current_function!());
121123
let kes_signer = Arc::new(KesSignerFake::new(vec![Ok((
122124
kes_signature,
123125
operational_certificate.clone(),

internal/mithril-dmq/src/publisher/client/pallas.rs

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -140,9 +140,11 @@ mod tests {
140140
})
141141
}
142142

143-
#[tokio::test]
143+
#[tokio::test(flavor = "multi_thread")]
144144
async fn pallas_dmq_signature_publisher_success() {
145-
let socket_path = create_temp_dir(current_function!()).join("node.socket");
145+
let current_function_name = current_function!();
146+
147+
let socket_path = create_temp_dir(current_function_name).join("node.socket");
146148
let reply_success = true;
147149
let server = setup_dmq_server(socket_path.clone(), reply_success);
148150
let client = tokio::spawn(async move {
@@ -155,7 +157,7 @@ mod tests {
155157
DmqMessageBuilder::new(
156158
{
157159
let (kes_signature, operational_certificate) =
158-
KesSignerFake::dummy_signature();
160+
KesSignerFake::dummy_signature(current_function_name);
159161
let kes_signer = KesSignerFake::new(vec![Ok((
160162
kes_signature,
161163
operational_certificate.clone(),
@@ -177,9 +179,10 @@ mod tests {
177179
res.unwrap().unwrap();
178180
}
179181

180-
#[tokio::test]
182+
#[tokio::test(flavor = "multi_thread")]
181183
async fn pallas_dmq_signature_publisher_fails() {
182-
let socket_path = create_temp_dir(current_function!()).join("node.socket");
184+
let current_function_name = current_function!();
185+
let socket_path = create_temp_dir(current_function_name).join("node.socket");
183186
let reply_success = false;
184187
let server = setup_dmq_server(socket_path.clone(), reply_success);
185188
let client = tokio::spawn(async move {
@@ -192,7 +195,7 @@ mod tests {
192195
DmqMessageBuilder::new(
193196
{
194197
let (kes_signature, operational_certificate) =
195-
KesSignerFake::dummy_signature();
198+
KesSignerFake::dummy_signature(current_function_name);
196199
let kes_signer = KesSignerFake::new(vec![Ok((
197200
kes_signature,
198201
operational_certificate.clone(),

internal/mithril-dmq/tests/consumer_client_server.rs

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,11 @@ use mithril_dmq::{
1515
DmqMessage, DmqMessageBuilder, test::payload::DmqMessageTestPayload,
1616
};
1717

18-
async fn create_fake_msg(bytes: &[u8]) -> DmqMessage {
18+
async fn create_fake_msg(bytes: &[u8], test_directory: &str) -> DmqMessage {
1919
let dmq_builder = DmqMessageBuilder::new(
2020
{
21-
let (kes_signature, operational_certificate) = KesSignerFake::dummy_signature();
21+
let (kes_signature, operational_certificate) =
22+
KesSignerFake::dummy_signature(test_directory);
2223
let kes_signer =
2324
KesSignerFake::new(vec![Ok((kes_signature, operational_certificate.clone()))]);
2425

@@ -33,9 +34,10 @@ async fn create_fake_msg(bytes: &[u8]) -> DmqMessage {
3334

3435
#[tokio::test(flavor = "multi_thread")]
3536
async fn dmq_consumer_client_server() {
37+
let current_function_name = current_function!();
3638
let cardano_network = CardanoNetwork::TestNet(0);
3739
let socket_path =
38-
TempDir::create_with_short_path("dmq_consumer_client_server", current_function!())
40+
TempDir::create_with_short_path("dmq_consumer_client_server", current_function_name)
3941
.join("node.socket");
4042
let (stop_tx, stop_rx) = watch::channel(());
4143

@@ -66,10 +68,16 @@ async fn dmq_consumer_client_server() {
6668
slog_scope::logger(),
6769
);
6870
let mut messages = vec![];
69-
signature_dmq_tx.send(create_fake_msg(b"msg_1").await).unwrap();
70-
signature_dmq_tx.send(create_fake_msg(b"msg_2").await).unwrap();
71+
signature_dmq_tx
72+
.send(create_fake_msg(b"msg_1", current_function_name).await)
73+
.unwrap();
74+
signature_dmq_tx
75+
.send(create_fake_msg(b"msg_2", current_function_name).await)
76+
.unwrap();
7177
messages.extend_from_slice(&consumer_client.consume_messages().await.unwrap());
72-
signature_dmq_tx.send(create_fake_msg(b"msg_3").await).unwrap();
78+
signature_dmq_tx
79+
.send(create_fake_msg(b"msg_3", current_function_name).await)
80+
.unwrap();
7381
messages.extend_from_slice(&consumer_client.consume_messages().await.unwrap());
7482

7583
messages.into_iter().map(|(msg, _)| msg).collect::<Vec<_>>()
@@ -100,7 +108,9 @@ async fn dmq_consumer_client_server() {
100108
slog_scope::logger(),
101109
);
102110
let mut messages = vec![];
103-
signature_dmq_tx.send(create_fake_msg(b"msg_4").await).unwrap();
111+
signature_dmq_tx
112+
.send(create_fake_msg(b"msg_4", current_function_name).await)
113+
.unwrap();
104114
messages.extend_from_slice(&consumer_client.consume_messages().await.unwrap());
105115
stop_tx.send(()).unwrap();
106116

internal/mithril-dmq/tests/publisher_client_server.rs

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,11 @@ use mithril_dmq::{
1515
DmqPublisherServer, DmqPublisherServerPallas, test::payload::DmqMessageTestPayload,
1616
};
1717

18-
async fn create_fake_msg(bytes: &[u8]) -> DmqMessage {
18+
async fn create_fake_msg(bytes: &[u8], test_directory: &str) -> DmqMessage {
1919
let dmq_builder = DmqMessageBuilder::new(
2020
{
21-
let (kes_signature, operational_certificate) = KesSignerFake::dummy_signature();
21+
let (kes_signature, operational_certificate) =
22+
KesSignerFake::dummy_signature(test_directory);
2223
let kes_signer =
2324
KesSignerFake::new(vec![Ok((kes_signature, operational_certificate.clone()))]);
2425

@@ -33,9 +34,10 @@ async fn create_fake_msg(bytes: &[u8]) -> DmqMessage {
3334

3435
#[tokio::test]
3536
async fn dmq_publisher_client_server() {
37+
let current_function_name = current_function!();
3638
let cardano_network = CardanoNetwork::TestNet(0);
3739
let socket_path =
38-
TempDir::create_with_short_path("dmq_publisher_client_server", current_function!())
40+
TempDir::create_with_short_path("dmq_publisher_client_server", current_function_name)
3941
.join("node.socket");
4042
let (stop_tx, stop_rx) = watch::channel(());
4143

@@ -64,7 +66,8 @@ async fn dmq_publisher_client_server() {
6466
async move {
6567
let dmq_builder = DmqMessageBuilder::new(
6668
{
67-
let (kes_signature, operational_certificate) = KesSignerFake::dummy_signature();
69+
let (kes_signature, operational_certificate) =
70+
KesSignerFake::dummy_signature(current_function_name);
6871
let kes_signer = KesSignerFake::new(vec![
6972
Ok((kes_signature, operational_certificate.clone())),
7073
Ok((kes_signature, operational_certificate.clone())),
@@ -105,7 +108,8 @@ async fn dmq_publisher_client_server() {
105108
async move {
106109
let dmq_builder = DmqMessageBuilder::new(
107110
{
108-
let (kes_signature, operational_certificate) = KesSignerFake::dummy_signature();
111+
let (kes_signature, operational_certificate) =
112+
KesSignerFake::dummy_signature(current_function_name);
109113
let kes_signer = KesSignerFake::new(vec![
110114
Ok((kes_signature, operational_certificate.clone())),
111115
Ok((kes_signature, operational_certificate.clone())),
@@ -153,9 +157,9 @@ async fn dmq_publisher_client_server() {
153157
let (_, _, messages) = tokio::try_join!(server, client, recorder).unwrap();
154158
assert_eq!(
155159
vec![
156-
create_fake_msg(b"msg_1").await,
157-
create_fake_msg(b"msg_2").await,
158-
create_fake_msg(b"msg_3").await,
160+
create_fake_msg(b"msg_1", current_function_name).await,
161+
create_fake_msg(b"msg_2", current_function_name).await,
162+
create_fake_msg(b"msg_3", current_function_name).await,
159163
],
160164
messages
161165
);

mithril-common/src/test/crypto_helper/cardano/kes/signer_fake.rs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,18 +27,19 @@ impl KesSignerFake {
2727
}
2828

2929
/// Returns a dummy signature result that is always successful.
30-
pub fn dummy_signature() -> (Sum6KesSig, OpCert) {
30+
pub fn dummy_signature(test_directory: &str) -> (Sum6KesSig, OpCert) {
3131
let KesCryptographicMaterialForTest {
3232
party_id: _,
3333
operational_certificate_file,
3434
kes_secret_key_file,
3535
} = create_kes_cryptographic_material(
3636
1 as KesPartyIndexForTest,
3737
0 as KesPeriod,
38-
"fake_kes_signer_returns_signature_batches_in_expected_order",
38+
&format!("{}-kes", test_directory),
3939
);
4040
let message = b"Test message for KES signing";
41-
let kes_signer = KesSignerStandard::new(kes_secret_key_file, operational_certificate_file);
41+
let kes_signer =
42+
KesSignerStandard::new(kes_secret_key_file.clone(), operational_certificate_file);
4243
let kes_signing_period = 1;
4344
let (kes_signature, op_cert) = kes_signer
4445
.sign(message, kes_signing_period)

0 commit comments

Comments
 (0)