Skip to content

Commit 070d9e5

Browse files
authored
ETCM-12351 Dolos data sources stub crate (#1031)
1 parent 4406d58 commit 070d9e5

File tree

25 files changed

+357
-55
lines changed

25 files changed

+357
-55
lines changed

Cargo.lock

Lines changed: 28 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -321,7 +321,9 @@ sp-block-producer-metadata = { path = "toolkit/block-producer-metadata/primitive
321321

322322
# Data Sources
323323
partner-chains-db-sync-data-sources = { path = "toolkit/data-sources/db-sync" }
324+
partner-chains-dolos-data-sources = { path = "toolkit/data-sources/dolos" }
324325
partner-chains-mock-data-sources = { path = "toolkit/data-sources/mock", default-features = false }
326+
partner-chains-data-source-metrics = { path = "toolkit/data-sources/metrics" }
325327

326328
# Governed Map
327329
sp-governed-map = { path = "toolkit/governed-map/primitives", default-features = false }

demo/node/Cargo.toml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,15 @@ partner-chains-db-sync-data-sources = { workspace = true, features = [
101101
"block-participation",
102102
"bridge",
103103
] }
104+
partner-chains-dolos-data-sources = { workspace = true, features = [
105+
"block-source",
106+
"candidate-source",
107+
"governed-map",
108+
"mc-hash",
109+
"sidechain-rpc",
110+
"block-participation",
111+
"bridge",
112+
] }
104113
partner-chains-mock-data-sources = { workspace = true, features = [
105114
"block-source",
106115
"candidate-source",
@@ -110,6 +119,7 @@ partner-chains-mock-data-sources = { workspace = true, features = [
110119
"block-participation",
111120
"bridge",
112121
] }
122+
partner-chains-data-source-metrics = { workspace = true }
113123
tokio = { workspace = true }
114124
sp-block-participation = { workspace = true, features = ["std"] }
115125
sp-block-producer-metadata = { workspace = true, features = ["std"] }

demo/node/src/data_sources.rs

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,7 @@
11
use authority_selection_inherents::AuthoritySelectionDataSource;
22
use pallet_sidechain_rpc::SidechainRpcDataSource;
3-
use partner_chains_db_sync_data_sources::{
4-
BlockDataSourceImpl, CachedTokenBridgeDataSourceImpl, CandidatesDataSourceImpl,
5-
GovernedMapDataSourceCachedImpl, McFollowerMetrics, McHashDataSourceImpl,
6-
SidechainRpcDataSourceImpl, StakeDistributionDataSourceImpl,
7-
};
3+
use partner_chains_data_source_metrics::McFollowerMetrics;
84
use partner_chains_demo_runtime::AccountId;
9-
use partner_chains_mock_data_sources::{
10-
AuthoritySelectionDataSourceMock, BlockDataSourceMock, GovernedMapDataSourceMock,
11-
McHashDataSourceMock, SidechainRpcDataSourceMock, StakeDistributionDataSourceMock,
12-
TokenBridgeDataSourceMock,
13-
};
145
use sc_service::error::Error as ServiceError;
156
use sidechain_mc_hash::McHashDataSource;
167
use sp_block_participation::inherent_data::BlockParticipationDataSource;
@@ -90,14 +81,15 @@ pub(crate) async fn create_cached_data_sources(
9081
ServiceError::Application(format!("Failed to create mock data sources: {err}").into())
9182
}),
9283

93-
DataSourceType::Dolos => {
94-
Err(ServiceError::Application("Dolos data source is not implemented yet.".into()))
95-
},
84+
DataSourceType::Dolos => create_dolos_data_sources().map_err(|err| {
85+
ServiceError::Application(format!("Failed to create dolos data sources: {err}").into())
86+
}),
9687
}
9788
}
9889

9990
pub fn create_mock_data_sources()
10091
-> std::result::Result<DataSources, Box<dyn Error + Send + Sync + 'static>> {
92+
use partner_chains_mock_data_sources::*;
10193
let block = Arc::new(BlockDataSourceMock::new_from_env()?);
10294
Ok(DataSources {
10395
sidechain_rpc: Arc::new(SidechainRpcDataSourceMock::new(block.clone())),
@@ -109,6 +101,19 @@ pub fn create_mock_data_sources()
109101
})
110102
}
111103

104+
pub fn create_dolos_data_sources()
105+
-> std::result::Result<DataSources, Box<dyn Error + Send + Sync + 'static>> {
106+
use partner_chains_dolos_data_sources::*;
107+
Ok(DataSources {
108+
sidechain_rpc: Arc::new(SidechainRpcDataSourceImpl::new()),
109+
mc_hash: Arc::new(McHashDataSourceImpl::new()),
110+
authority_selection: Arc::new(AuthoritySelectionDataSourceImpl::new()),
111+
block_participation: Arc::new(StakeDistributionDataSourceImpl::new()),
112+
governed_map: Arc::new(GovernedMapDataSourceImpl::default()),
113+
bridge: Arc::new(TokenBridgeDataSourceImpl::new()),
114+
})
115+
}
116+
112117
pub const CANDIDATES_FOR_EPOCH_CACHE_SIZE: usize = 64;
113118
pub const STAKE_CACHE_SIZE: usize = 100;
114119
pub const GOVERNED_MAP_CACHE_SIZE: u16 = 100;
@@ -117,6 +122,7 @@ pub const BRIDGE_TRANSFER_CACHE_LOOKAHEAD: u32 = 1000;
117122
pub async fn create_cached_db_sync_data_sources(
118123
metrics_opt: Option<McFollowerMetrics>,
119124
) -> Result<DataSources, Box<dyn Error + Send + Sync + 'static>> {
125+
use partner_chains_db_sync_data_sources::*;
120126
let pool = partner_chains_db_sync_data_sources::get_connection_from_env().await?;
121127
// block data source is reused between mc_hash and sidechain_rpc to share cache
122128
let block = Arc::new(BlockDataSourceImpl::new_from_env(pool.clone()).await?);

demo/node/src/service.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,7 @@ use crate::data_sources::DataSources;
44
use crate::inherent_data::{CreateInherentDataConfig, ProposalCIDP, VerifierCIDP};
55
use crate::rpc::GrandpaDeps;
66
use authority_selection_inherents::AuthoritySelectionDataSource;
7-
use partner_chains_db_sync_data_sources::McFollowerMetrics;
8-
use partner_chains_db_sync_data_sources::register_metrics_warn_errors;
7+
use partner_chains_data_source_metrics::{McFollowerMetrics, register_metrics_warn_errors};
98
use partner_chains_demo_runtime::{self, RuntimeApi, opaque::Block};
109
use sc_client_api::BlockBackend;
1110
use sc_consensus_aura::{ImportQueueParams, SlotProportion, StartAuraParams};

toolkit/data-sources/db-sync/Cargo.toml

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,29 +30,32 @@ log = { workspace = true }
3030
thiserror = { workspace = true }
3131
blake2b_simd = { workspace = true }
3232
figment = { workspace = true }
33-
substrate-prometheus-endpoint = { workspace = true }
3433
derive-new = { workspace = true }
3534
lru = { workspace = true }
3635
sp-timestamp = { workspace = true, features = ["std"] }
37-
sp-governed-map = { workspace = true, features = [
38-
"std",
39-
], optional = true }
36+
sp-governed-map = { workspace = true, features = ["std"], optional = true }
4037
sidechain-mc-hash = { workspace = true, optional = true }
4138
pallet-sidechain-rpc = { workspace = true, optional = true }
4239
authority-selection-inherents = { workspace = true, features = [
4340
"std",
4441
], optional = true }
4542
cardano-serialization-lib = { workspace = true }
43+
partner-chains-data-source-metrics = { workspace = true }
4644
partner-chains-plutus-data = { workspace = true }
4745
sp-block-participation = { workspace = true, features = [
4846
"std",
4947
], optional = true }
50-
sp-partner-chains-bridge = { workspace = true, optional = true, features = ["std"] }
48+
sp-partner-chains-bridge = { workspace = true, optional = true, features = [
49+
"std",
50+
] }
5151

5252
[dev-dependencies]
5353
tokio-test = "0.4.3"
5454
ctor = "0.5.0"
55-
testcontainers-modules = { version = "0.13.0", features = ["blocking", "postgres"] }
55+
testcontainers-modules = { version = "0.13.0", features = [
56+
"blocking",
57+
"postgres",
58+
] }
5659
pretty_assertions = { workspace = true }
5760
paste = { workspace = true }
5861

toolkit/data-sources/db-sync/src/bridge/mod.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
//! # Usage
1515
//!
1616
//! ```rust
17+
//! use partner_chains_data_source_metrics::*;
1718
//! use partner_chains_db_sync_data_sources::*;
1819
//! use sqlx::PgPool;
1920
//! use std::{ error::Error, sync::Arc };
@@ -42,9 +43,8 @@
4243
//! }
4344
//! ```
4445
45-
use crate::McFollowerMetrics;
4646
use crate::db_model::*;
47-
use crate::metrics::observed_async_trait;
47+
use partner_chains_data_source_metrics::{McFollowerMetrics, observed_async_trait};
4848
use partner_chains_plutus_data::bridge::{TokenTransferDatum, TokenTransferDatumV1};
4949
use sidechain_domain::McBlockHash;
5050
use sp_partner_chains_bridge::*;

toolkit/data-sources/db-sync/src/candidates/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@ use crate::db_model::{
44
self, Address, Asset, BlockNumber, DbSyncConfigurationProvider, EpochNumber, MainchainTxOutput,
55
StakePoolEntry,
66
};
7-
use crate::metrics::{McFollowerMetrics, observed_async_trait};
87
use authority_selection_inherents::*;
98
use itertools::Itertools;
109
use log::error;
10+
use partner_chains_data_source_metrics::{McFollowerMetrics, observed_async_trait};
1111
use partner_chains_plutus_data::{
1212
d_param::DParamDatum, permissioned_candidates::PermissionedCandidateDatums,
1313
registered_candidates::RegisterValidatorDatum,

toolkit/data-sources/db-sync/src/candidates/tests.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
use crate::candidates::CandidatesDataSourceImpl;
22
use crate::db_model::{DbSyncConfigurationProvider, TxInConfiguration, index_exists_unsafe};
3-
use crate::metrics::mock::test_metrics;
43
use authority_selection_inherents::AuthoritySelectionDataSource;
54
use hex_literal::hex;
5+
use partner_chains_data_source_metrics::mock::test_metrics;
66
use sidechain_domain::*;
77
use sqlx::PgPool;
88
use std::cell::OnceCell;

toolkit/data-sources/db-sync/src/governed_map/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@ use crate::DataSourceError::ExpectedDataNotFound;
33
use crate::Result;
44
use crate::block::BlockDataSourceImpl;
55
use crate::db_model::{DbSyncConfigurationProvider, GovernedMapAction, TxInConfiguration};
6-
use crate::metrics::{McFollowerMetrics, observed_async_trait};
76
use db_sync_sqlx::{Asset, BlockNumber};
87
use itertools::Itertools;
98
use log::warn;
9+
use partner_chains_data_source_metrics::{McFollowerMetrics, observed_async_trait};
1010
use partner_chains_plutus_data::governed_map::GovernedMapDatum;
1111
use sidechain_domain::byte_string::ByteString;
1212
use sidechain_domain::*;

0 commit comments

Comments
 (0)