Skip to content

Commit 80a6571

Browse files
committed
test(dmq): make publisher integration test check client/server deconnection
1 parent 18da2a0 commit 80a6571

File tree

1 file changed

+46
-7
lines changed

1 file changed

+46
-7
lines changed

internal/mithril-dmq/tests/publisher_client_server.rs

Lines changed: 46 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,8 @@ async fn create_fake_msg(bytes: &[u8]) -> DmqMessage {
1919
let dmq_builder = DmqMessageBuilder::new(
2020
{
2121
let (kes_signature, operational_certificate) = KesSignerFake::dummy_signature();
22-
let kes_signer = KesSignerFake::new(vec![
23-
Ok((kes_signature, operational_certificate.clone())),
24-
Ok((kes_signature, operational_certificate.clone())), // TODO: remove this line once the hack of KES signature is removed in DMQ message builder
25-
]);
22+
let kes_signer =
23+
KesSignerFake::new(vec![Ok((kes_signature, operational_certificate.clone()))]);
2624

2725
Arc::new(kes_signer)
2826
},
@@ -41,6 +39,7 @@ async fn dmq_publisher_client_server() {
4139
.join("node.socket");
4240
let (stop_tx, stop_rx) = watch::channel(());
4341

42+
// Start the server
4443
let (signature_dmq_tx, signature_dmq_rx) = unbounded_channel::<DmqMessage>();
4544
let server = tokio::spawn({
4645
let socket_path = socket_path.clone();
@@ -59,6 +58,7 @@ async fn dmq_publisher_client_server() {
5958
}
6059
});
6160

61+
// Start a first client, publish messages and wait for its deconnection
6262
let client = tokio::spawn({
6363
let socket_path = socket_path.clone();
6464
async move {
@@ -68,8 +68,6 @@ async fn dmq_publisher_client_server() {
6868
let kes_signer = KesSignerFake::new(vec![
6969
Ok((kes_signature, operational_certificate.clone())),
7070
Ok((kes_signature, operational_certificate.clone())),
71-
Ok((kes_signature, operational_certificate.clone())), // TODO: remove this line once the hack of KES signature is removed in DMQ message builder
72-
Ok((kes_signature, operational_certificate.clone())), // TODO: remove this line once the hack of KES signature is removed in DMQ message builder
7371
]);
7472

7573
Arc::new(kes_signer)
@@ -94,13 +92,49 @@ async fn dmq_publisher_client_server() {
9492
.publish_message(DmqMessageTestPayload::new(b"msg_2"))
9593
.await
9694
.unwrap();
95+
}
96+
});
97+
client.await.unwrap();
98+
99+
// Sleep to avoid refused connection from the server
100+
tokio::time::sleep(std::time::Duration::from_millis(10)).await;
101+
102+
// Start a second client and publish messages
103+
let client = tokio::spawn({
104+
let socket_path = socket_path.clone();
105+
async move {
106+
let dmq_builder = DmqMessageBuilder::new(
107+
{
108+
let (kes_signature, operational_certificate) = KesSignerFake::dummy_signature();
109+
let kes_signer = KesSignerFake::new(vec![
110+
Ok((kes_signature, operational_certificate.clone())),
111+
Ok((kes_signature, operational_certificate.clone())),
112+
]);
113+
114+
Arc::new(kes_signer)
115+
},
116+
Arc::new(FakeChainObserver::default()),
117+
)
118+
.set_ttl(100);
119+
let publisher_client = DmqPublisherClientPallas::<DmqMessageTestPayload>::new(
120+
socket_path,
121+
cardano_network,
122+
dmq_builder,
123+
slog_scope::logger(),
124+
);
125+
126+
publisher_client
127+
.publish_message(DmqMessageTestPayload::new(b"msg_3"))
128+
.await
129+
.unwrap();
97130

98131
stop_tx
99132
.send(())
100133
.expect("Failed to send stop signal to DMQ publisher server");
101134
}
102135
});
103136

137+
// Record messages received by the server
104138
let recorder = tokio::spawn(async move {
105139
let messages: Vec<DmqMessage> = {
106140
let mut messages = vec![];
@@ -115,9 +149,14 @@ async fn dmq_publisher_client_server() {
115149
messages
116150
});
117151

152+
// Check that all messages have been correctly received
118153
let (_, _, messages) = tokio::try_join!(server, client, recorder).unwrap();
119154
assert_eq!(
120-
vec![create_fake_msg(b"msg_1").await, create_fake_msg(b"msg_2").await],
155+
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,
159+
],
121160
messages
122161
);
123162
}

0 commit comments

Comments
 (0)