Skip to content

Commit

Permalink
fix tests
Browse files Browse the repository at this point in the history
  • Loading branch information
mangas committed May 14, 2024
1 parent 03c21c3 commit 29e3fb0
Show file tree
Hide file tree
Showing 5 changed files with 164 additions and 163 deletions.
78 changes: 50 additions & 28 deletions chain/ethereum/src/network.rs
Original file line number Diff line number Diff line change
Expand Up @@ -92,25 +92,30 @@ impl Default for EthereumNetworkAdapters {

impl EthereumNetworkAdapters {
#[cfg(debug_assertions)]
pub fn for_testing(
adapters: Vec<EthereumNetworkAdapter>,
pub async fn for_testing(
mut adapters: Vec<EthereumNetworkAdapter>,
call_only: Vec<EthereumNetworkAdapter>,
) -> Self {
use std::cmp::Ordering;

use graph::slog::{o, Discard, Logger};

use graph::components::adapter::MockIdentValidator;
let chain_id: ChainId = "testing".into();
adapters.sort_by(|a, b| {
a.capabilities
.partial_cmp(&b.capabilities)
.unwrap_or(Ordering::Equal)
});

Self::new(
chain_id.clone(),
ProviderManager::new(
Logger::root(Discard, o!()),
vec![(chain_id, adapters)].into_iter(),
Arc::new(MockIdentValidator),
),
call_only,
None,
)
let provider = ProviderManager::new(
Logger::root(Discard, o!()),
vec![(chain_id.clone(), adapters)].into_iter(),
Arc::new(MockIdentValidator),
);
provider.mark_all_valid().await;

Self::new(chain_id, provider, call_only, None)
}

pub fn new(
Expand Down Expand Up @@ -515,7 +520,8 @@ mod tests {
eth_call_adapter.clone(),
SubgraphLimit::Limit(3),
)],
);
)
.await;
// one reference above and one inside adapters struct
assert_eq!(Arc::strong_count(&eth_call_adapter), 2);
assert_eq!(Arc::strong_count(&eth_adapter), 2);
Expand Down Expand Up @@ -608,7 +614,7 @@ mod tests {
archive: true,
traces: false,
},
eth_adapter.clone(),
eth_call_adapter.clone(),
SubgraphLimit::Unlimited,
)],
vec![EthereumNetworkAdapter::new(
Expand All @@ -617,14 +623,17 @@ mod tests {
archive: true,
traces: false,
},
eth_call_adapter.clone(),
SubgraphLimit::Limit(3),
eth_adapter.clone(),
SubgraphLimit::Limit(2),
)],
);
)
.await;
// one reference above and one inside adapters struct
assert_eq!(Arc::strong_count(&eth_call_adapter), 2);
assert_eq!(Arc::strong_count(&eth_adapter), 2);

// verify that after all call_only were exhausted, we can still
// get normal adapters
let keep: Vec<Arc<EthereumAdapter>> = vec![0; 10]
.iter()
.map(|_| adapters.call_or_cheapest(None).unwrap())
Expand Down Expand Up @@ -688,7 +697,8 @@ mod tests {
eth_adapter.clone(),
SubgraphLimit::Limit(3),
)],
);
)
.await;
// one reference above and one inside adapters struct
assert_eq!(Arc::strong_count(&eth_call_adapter), 2);
assert_eq!(Arc::strong_count(&eth_adapter), 2);
Expand Down Expand Up @@ -734,7 +744,8 @@ mod tests {
SubgraphLimit::Limit(3),
)],
vec![],
);
)
.await;
// one reference above and one inside adapters struct
assert_eq!(Arc::strong_count(&eth_adapter), 2);
assert_eq!(
Expand Down Expand Up @@ -829,6 +840,8 @@ mod tests {
.into_iter(),
Arc::new(MockIdentValidator),
);
manager.mark_all_valid().await;

let no_retest_adapters = EthereumNetworkAdapters::new(
chain_id.clone(),
manager.cheap_clone(),
Expand Down Expand Up @@ -917,17 +930,13 @@ mod tests {
});
let manager = ProviderManager::<EthereumNetworkAdapter>::new(
logger.clone(),
vec![(
chain_id.clone(),
no_retest_adapters
.iter()
.cloned()
.chain(always_retest_adapters.iter().cloned())
.collect(),
)]
.into_iter(),
always_retest_adapters
.iter()
.cloned()
.map(|a| (chain_id.clone(), vec![a])),
Arc::new(MockIdentValidator),
);
manager.mark_all_valid().await;

let always_retest_adapters = EthereumNetworkAdapters::new(
chain_id.clone(),
Expand All @@ -946,6 +955,17 @@ mod tests {
.provider(),
no_error_provider
);

let manager = ProviderManager::<EthereumNetworkAdapter>::new(
logger.clone(),
no_retest_adapters
.iter()
.cloned()
.map(|a| (chain_id.clone(), vec![a])),
Arc::new(MockIdentValidator),
);
manager.mark_all_valid().await;

let no_retest_adapters =
EthereumNetworkAdapters::new(chain_id.clone(), manager, vec![], Some(0f64));
assert_eq!(
Expand Down Expand Up @@ -986,6 +1006,8 @@ mod tests {
.into_iter(),
Arc::new(MockIdentValidator),
);
manager.mark_all_valid().await;

let no_available_adapter = EthereumNetworkAdapters::new(chain_id, manager, vec![], None);
let res = no_available_adapter
.cheapest_with(&NodeCapabilities {
Expand Down
11 changes: 10 additions & 1 deletion graph/src/blockchain/types.rs
Original file line number Diff line number Diff line change
Expand Up @@ -316,13 +316,22 @@ impl From<BlockPtr> for BlockNumber {
}
}

#[derive(Clone, Debug, PartialEq, Eq, Hash, Default)]
#[derive(Clone, Debug, PartialEq, Eq, Hash)]
/// A collection of attributes that (kind of) uniquely identify a blockchain.
pub struct ChainIdentifier {
pub net_version: String,
pub genesis_block_hash: BlockHash,
}

impl Default for ChainIdentifier {
fn default() -> Self {
Self {
net_version: String::default(),
genesis_block_hash: BlockHash::from(H256::zero()),
}
}
}

impl fmt::Display for ChainIdentifier {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(
Expand Down
Loading

0 comments on commit 29e3fb0

Please sign in to comment.