mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-04-27 09:17:58 +00:00
450ca2baca
* rename overseer-gen to orchestra Also drop `gum` and use `tracing`. * make orchestra compile as standalone * introduce Spawner trait to split from sp_core Finalizes the independence of orchestra from polkadot-overseer * slip of the pen * other fixins * remove unused import * Update node/overseer/orchestra/proc-macro/src/impl_builder.rs Co-authored-by: Vsevolod Stakhov <vsevolod.stakhov@parity.io> * Update node/overseer/orchestra/proc-macro/src/impl_builder.rs Co-authored-by: Vsevolod Stakhov <vsevolod.stakhov@parity.io> * orchestra everywhere * leaky data * Bump scale-info from 2.1.1 to 2.1.2 (#5552) Bumps [scale-info](https://github.com/paritytech/scale-info) from 2.1.1 to 2.1.2. - [Release notes](https://github.com/paritytech/scale-info/releases) - [Changelog](https://github.com/paritytech/scale-info/blob/master/CHANGELOG.md) - [Commits](https://github.com/paritytech/scale-info/compare/v2.1.1...v2.1.2) --- updated-dependencies: - dependency-name: scale-info dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> * Add missing markdown code block delimiter (#5555) * bitfield-signing: remove util::jobs usage (#5523) * Switch to pooling copy-on-write instantiation strategy for WASM (companion for Substrate#11232) (#5337) * Switch to pooling copy-on-write instantiation strategy for WASM * Fix compilation of `polkadot-test-service` * Update comments * Move `max_memory_size` to `Semantics` * Rename `WasmInstantiationStrategy` to `WasmtimeInstantiationStrategy` * Update a safety comment * update lockfile for {"substrate"} Co-authored-by: parity-processbot <> * Fix build Co-authored-by: Vsevolod Stakhov <vsevolod.stakhov@parity.io> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Malte Kliemann <mail@maltekliemann.com> Co-authored-by: Chris Sosnin <48099298+slumber@users.noreply.github.com> Co-authored-by: Koute <koute@users.noreply.github.com>
141 lines
3.7 KiB
Rust
141 lines
3.7 KiB
Rust
// Copyright 2021 Parity Technologies (UK) Ltd.
|
|
// This file is part of Polkadot.
|
|
|
|
// Polkadot is free software: you can redistribute it and/or modify
|
|
// it under the terms of the GNU General Public License as published by
|
|
// the Free Software Foundation, either version 3 of the License, or
|
|
// (at your option) any later version.
|
|
|
|
// Polkadot is distributed in the hope that it will be useful,
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
// GNU General Public License for more details.
|
|
|
|
// You should have received a copy of the GNU General Public License
|
|
// along with Polkadot. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
use super::*;
|
|
|
|
use polkadot_node_subsystem_test_helpers::*;
|
|
|
|
use polkadot_node_subsystem::{
|
|
messages::AvailabilityStoreMessage,
|
|
overseer::{dummy::DummySubsystem, gen::TimeoutExt, Subsystem, AssociateOutgoing},
|
|
SubsystemError,
|
|
};
|
|
|
|
#[derive(Clone, Debug)]
|
|
struct BlackHoleInterceptor;
|
|
|
|
impl<Sender> MessageInterceptor<Sender> for BlackHoleInterceptor
|
|
where
|
|
Sender: overseer::AvailabilityStoreSenderTrait
|
|
+ Clone
|
|
+ 'static,
|
|
{
|
|
type Message = AvailabilityStoreMessage;
|
|
fn intercept_incoming(
|
|
&self,
|
|
_sender: &mut Sender,
|
|
msg: FromOrchestra<Self::Message>,
|
|
) -> Option<FromOrchestra<Self::Message>> {
|
|
match msg {
|
|
FromOrchestra::Communication { msg: _msg } => None,
|
|
// to conclude the test cleanly
|
|
sig => Some(sig),
|
|
}
|
|
}
|
|
}
|
|
|
|
#[derive(Clone, Debug)]
|
|
struct PassInterceptor;
|
|
|
|
impl<Sender> MessageInterceptor<Sender> for PassInterceptor
|
|
where
|
|
Sender: overseer::AvailabilityStoreSenderTrait
|
|
+ Clone
|
|
+ 'static,
|
|
{
|
|
type Message = AvailabilityStoreMessage;
|
|
}
|
|
|
|
async fn overseer_send<T: Into<AllMessages>>(overseer: &mut TestSubsystemContextHandle<T>, msg: T) {
|
|
overseer.send(FromOrchestra::Communication { msg }).await;
|
|
}
|
|
|
|
use sp_core::testing::TaskExecutor;
|
|
|
|
fn launch_harness<F, M, Sub, G>(test_gen: G)
|
|
where
|
|
F: Future<Output = TestSubsystemContextHandle<M>> + Send,
|
|
M: AssociateOutgoing + std::fmt::Debug + Send + 'static,
|
|
// <M as AssociateOutgoing>::OutgoingMessages: From<M>,
|
|
Sub: Subsystem<TestSubsystemContext<M, SpawnGlue<TaskExecutor>>, SubsystemError>,
|
|
G: Fn(TestSubsystemContextHandle<M>) -> (F, Sub),
|
|
{
|
|
let pool = TaskExecutor::new();
|
|
let (context, overseer) = make_subsystem_context(pool);
|
|
|
|
let (test_fut, subsystem) = test_gen(overseer);
|
|
let subsystem = async move {
|
|
subsystem.start(context).future.await.unwrap();
|
|
};
|
|
futures::pin_mut!(test_fut);
|
|
futures::pin_mut!(subsystem);
|
|
|
|
futures::executor::block_on(futures::future::join(
|
|
async move {
|
|
let mut overseer = test_fut.await;
|
|
overseer.send(FromOrchestra::Signal(OverseerSignal::Conclude)).await;
|
|
},
|
|
subsystem,
|
|
))
|
|
.1;
|
|
}
|
|
|
|
#[test]
|
|
fn integrity_test_intercept() {
|
|
launch_harness(|mut overseer| {
|
|
let sub = DummySubsystem;
|
|
|
|
let sub_intercepted = InterceptedSubsystem::new(sub, BlackHoleInterceptor);
|
|
|
|
(
|
|
async move {
|
|
let (tx, rx) = futures::channel::oneshot::channel();
|
|
overseer_send(
|
|
&mut overseer,
|
|
AvailabilityStoreMessage::QueryChunk(Default::default(), 0.into(), tx),
|
|
)
|
|
.await;
|
|
let _ = rx.timeout(std::time::Duration::from_millis(100)).await.unwrap();
|
|
overseer
|
|
},
|
|
sub_intercepted,
|
|
)
|
|
})
|
|
}
|
|
|
|
#[test]
|
|
fn integrity_test_pass() {
|
|
launch_harness(|mut overseer| {
|
|
let sub = DummySubsystem;
|
|
|
|
let sub_intercepted = InterceptedSubsystem::new(sub, PassInterceptor);
|
|
|
|
(
|
|
async move {
|
|
let (tx, rx) = futures::channel::oneshot::channel();
|
|
overseer_send(
|
|
&mut overseer,
|
|
AvailabilityStoreMessage::QueryChunk(Default::default(), 0.into(), tx),
|
|
)
|
|
.await;
|
|
let _ = rx.timeout(std::time::Duration::from_millis(100)).await.unwrap();
|
|
overseer
|
|
},
|
|
sub_intercepted,
|
|
)
|
|
})
|
|
}
|