Skip to content

Commit

Permalink
Add translator_sv2 test
Browse files Browse the repository at this point in the history
  • Loading branch information
jbesraa committed Nov 26, 2024
1 parent 67a3f00 commit 8389498
Show file tree
Hide file tree
Showing 4 changed files with 84 additions and 25 deletions.
40 changes: 20 additions & 20 deletions roles/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions roles/tests-integration/tests/common/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -405,9 +405,9 @@ pub async fn start_sv2_translator(upstream: SocketAddr) -> SocketAddr {
.expect("failed");
let listening_address = get_available_address();
let listening_port = listening_address.port();
let hashrate = measure_hashrate(3) as f32 / 100.0;
let hashrate = measure_hashrate(3) as f32 / 20.0;
let min_individual_miner_hashrate = hashrate;
let shares_per_minute = 60.0;
let shares_per_minute = 100.0;
let channel_diff_update_interval = 60;
let channel_nominal_hashrate = hashrate;
let downstream_difficulty_config =
Expand Down
2 changes: 1 addition & 1 deletion roles/tests-integration/tests/common/sniffer.rs
Original file line number Diff line number Diff line change
Expand Up @@ -519,7 +519,7 @@ macro_rules! assert_mining_message {
assert_message!(Mining, Mining, $msg, $expected_message_variant, $($expected_property, $expected_property_value),*);
};
($msg:expr, $expected_message_variant:ident) => {
assert_message!(Mining, Mining, $msg, $expected_message_variant);
assert_message!(Mining, Mining, $msg, $expected_message_variant);
};
}

Expand Down
63 changes: 61 additions & 2 deletions roles/tests-integration/tests/pool_integration.rs
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
mod common;

use std::convert::TryInto;
use std::{convert::TryInto, time::Duration};

use common::{InterceptMessage, MessageDirection};
use const_sv2::MESSAGE_TYPE_SETUP_CONNECTION_ERROR;
use roles_logic_sv2::{
common_messages_sv2::{Protocol, SetupConnection, SetupConnectionError},
parsers::{CommonMessages, PoolMessages, TemplateDistribution},
parsers::{CommonMessages, Mining, PoolMessages, TemplateDistribution},
};
use tokio::time::sleep;

// This test starts a Template Provider and a Pool, and checks if they exchange the correct
// messages upon connection.
Expand Down Expand Up @@ -94,3 +95,61 @@ async fn test_sniffer_interrupter() {
assert_common_message!(&sniffer.next_message_from_downstream(), SetupConnection);
assert_common_message!(&sniffer.next_message_from_upstream(), SetupConnectionError);
}

// covers
// https://github.com/stratum-mining/stratum/blob/main/test/message-generator/test/translation-proxy/translation-proxy.json
#[tokio::test]
async fn translation_proxy() {
let pool_jdc_sniffer_addr = common::get_available_address();
let tp_addr = common::get_available_address();
let pool_addr = common::get_available_address();

let pool_jdc_sniffer = common::start_sniffer(
"0".to_string(),
pool_jdc_sniffer_addr,
pool_addr,
false,
None,
)
.await;
let _tp = common::start_template_provider(tp_addr.port()).await;
let _pool_1 = common::start_pool(Some(pool_addr), Some(tp_addr)).await;
let jds_addr = common::start_jds(tp_addr).await;
let jdc_addr = common::start_jdc(pool_jdc_sniffer_addr, tp_addr, jds_addr).await;
let mining_proxy_addr = common::start_sv2_translator(jdc_addr).await;
let _ = common::start_mining_device_sv1(mining_proxy_addr).await;
sleep(Duration::from_secs(3)).await;

assert_common_message!(
&pool_jdc_sniffer.next_message_from_downstream(),
SetupConnection
);
assert_common_message!(
&pool_jdc_sniffer.next_message_from_upstream(),
SetupConnectionSuccess
);
assert_mining_message!(
&pool_jdc_sniffer.next_message_from_downstream(),
OpenExtendedMiningChannel
);
assert_mining_message!(
&pool_jdc_sniffer.next_message_from_upstream(),
OpenExtendedMiningChannelSuccess
);
assert_mining_message!(
&pool_jdc_sniffer.next_message_from_upstream(),
NewExtendedMiningJob
);
assert_mining_message!(
&pool_jdc_sniffer.next_message_from_downstream(),
SetCustomMiningJob
);
assert_mining_message!(
&pool_jdc_sniffer.next_message_from_upstream(),
SetNewPrevHash
);
assert_mining_message!(
&pool_jdc_sniffer.next_message_from_downstream(),
SubmitSharesExtended
);
}

0 comments on commit 8389498

Please sign in to comment.