mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-05-06 11:28:02 +00:00
c09d52ead7
* Use tokio runtime handle instead of TaskExecutor abstraction Before this pr we had the `TaskExecutor` abstraction which theoretically allowed that any futures executor could have been used. However, this was never tested and is currently not really required. Anyone running a node currently only used tokio and nothing else (because this was hard coded in CLI). So, this pr removes the `TaskExecutor` abstraction and relies directly on the tokio runtime handle. Besides this changes, this pr also makes sure that the http and ws rpc server use the same tokio runtime. This fixes a panic that occurred when you drop the rpc servers inside an async function (tokio doesn't like that a tokio runtime is dropped in the async context of another tokio runtime). As we don't use any custom runtime in the http rpc server anymore, this pr also removes the `rpc-http-threads` cli argument. If external parties complain that there aren't enough threads for the rpc server, we could bring support for increasing the thread count of the tokio runtime. * FMT * Fix try runtime * Fix integration tests and some other optimizations * Remove warnings
78 lines
1.9 KiB
Rust
78 lines
1.9 KiB
Rust
// This file is part of Substrate.
|
|
|
|
// Copyright (C) 2017-2021 Parity Technologies (UK) Ltd.
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
//! Test utils
|
|
|
|
#[doc(hidden)]
|
|
pub use futures;
|
|
/// Marks async function to be executed by an async runtime suitable to test environment.
|
|
///
|
|
/// # Requirements
|
|
///
|
|
/// You must have tokio in the `[dev-dependencies]` of your crate to use this macro.
|
|
///
|
|
/// # Example
|
|
///
|
|
/// ```
|
|
/// #[substrate_test_utils::test]
|
|
/// async fn basic_test() {
|
|
/// assert!(true);
|
|
/// }
|
|
/// ```
|
|
pub use substrate_test_utils_derive::test;
|
|
#[doc(hidden)]
|
|
pub use tokio;
|
|
|
|
/// Panic when the vectors are different, without taking the order into account.
|
|
///
|
|
/// # Examples
|
|
///
|
|
/// ```rust
|
|
/// #[macro_use]
|
|
/// # use substrate_test_utils::{assert_eq_uvec};
|
|
/// # fn main() {
|
|
/// assert_eq_uvec!(vec![1,2], vec![2,1]);
|
|
/// # }
|
|
/// ```
|
|
///
|
|
/// ```rust,should_panic
|
|
/// #[macro_use]
|
|
/// # use substrate_test_utils::{assert_eq_uvec};
|
|
/// # fn main() {
|
|
/// assert_eq_uvec!(vec![1,2,3], vec![2,1]);
|
|
/// # }
|
|
/// ```
|
|
#[macro_export]
|
|
macro_rules! assert_eq_uvec {
|
|
( $x:expr, $y:expr $(,)? ) => {
|
|
$crate::__assert_eq_uvec!($x, $y);
|
|
$crate::__assert_eq_uvec!($y, $x);
|
|
};
|
|
}
|
|
|
|
#[macro_export]
|
|
#[doc(hidden)]
|
|
macro_rules! __assert_eq_uvec {
|
|
( $x:expr, $y:expr ) => {
|
|
$x.iter().for_each(|e| {
|
|
if !$y.contains(e) {
|
|
panic!("vectors not equal: {:?} != {:?}", $x, $y);
|
|
}
|
|
});
|
|
};
|
|
}
|