mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-06-14 15:41:02 +00:00
Whole subsystem test for new availability-distribution (#2552)
* WIP: Whole subsystem test. * New tests compile. * Avoid needless runtime queries for no validator nodes. * Make tx and rx publicly accessible in virtual overseer. This simplifies mocking in some cases, as tx can be cloned, but rx can not. * Whole subsystem test working. * Update node/network/availability-distribution/src/session_cache.rs Co-authored-by: Andronik Ordian <write@reusable.software> * Update node/network/availability-distribution/src/session_cache.rs Co-authored-by: Andronik Ordian <write@reusable.software> * Document better what `None` return value means. * Get rid of BitVec dependency. * Update Cargo.lock * Hopefully fixed implementers guide build. Co-authored-by: Andronik Ordian <write@reusable.software>
This commit is contained in:
@@ -51,6 +51,13 @@ enum SinkState<T> {
|
||||
/// The sink half of a single-item sink that does not resolve until the item has been read.
|
||||
pub struct SingleItemSink<T>(Arc<Mutex<SinkState<T>>>);
|
||||
|
||||
// Derive clone not possible, as it puts `Clone` constraint on `T` which is not sensible here.
|
||||
impl<T> Clone for SingleItemSink<T> {
|
||||
fn clone(&self) -> Self {
|
||||
Self(self.0.clone())
|
||||
}
|
||||
}
|
||||
|
||||
/// The stream half of a single-item sink.
|
||||
pub struct SingleItemStream<T>(Arc<Mutex<SinkState<T>>>);
|
||||
|
||||
@@ -213,8 +220,14 @@ impl<M: Send + 'static, S: SpawnNamed + Send + 'static> SubsystemContext
|
||||
|
||||
/// A handle for interacting with the subsystem context.
|
||||
pub struct TestSubsystemContextHandle<M> {
|
||||
tx: SingleItemSink<FromOverseer<M>>,
|
||||
rx: mpsc::UnboundedReceiver<AllMessages>,
|
||||
/// Direct access to sender of messages.
|
||||
///
|
||||
/// Useful for shared ownership situations (one can have multiple senders, but only one
|
||||
/// receiver.
|
||||
pub tx: SingleItemSink<FromOverseer<M>>,
|
||||
|
||||
/// Direct access to the receiver.
|
||||
pub rx: mpsc::UnboundedReceiver<AllMessages>,
|
||||
}
|
||||
|
||||
impl<M> TestSubsystemContextHandle<M> {
|
||||
|
||||
Reference in New Issue
Block a user