mirror of
https://github.com/serai-dex/serai.git
synced 2024-12-26 05:29:55 +00:00
899a9604e1
* Move pallet-asset-conversion * update licensing * initial integration * Integrate Currency & Assets types * integrate liquidity tokens * fmt * integrate dex pallet tests * fmt * compilation error fixes * integrate dex benchmarks * fmt * cargo clippy * replace all occurrences of "asset" with "coin" * add the actual add liq/swap logic to in-instructions * add client side & tests * fix deny * Lint and changes - Renames InInstruction::AddLiquidity to InInstruction::SwapAndAddLiquidity - Makes create_pool an internal function - Makes dex-pallet exclusively create pools against a native coin - Removes various fees - Adds new crates to GH workflow * Fix rebase artifacts * Correct other rebase artifact * Correct CI specification for liquidity-tokens * Correct primitives' test to the standardized pallet account scheme --------- Co-authored-by: Luke Parker <lukeparker5132@gmail.com>
61 lines
2 KiB
Rust
61 lines
2 KiB
Rust
pub mod tx;
|
|
pub mod validator_sets;
|
|
pub mod in_instructions;
|
|
pub mod dex;
|
|
|
|
#[macro_export]
|
|
macro_rules! serai_test {
|
|
($($name: ident: $test: expr)*) => {
|
|
$(
|
|
#[tokio::test]
|
|
async fn $name() {
|
|
use dockertest::{
|
|
PullPolicy, StartPolicy, LogOptions, LogAction, LogPolicy, LogSource, Image,
|
|
TestBodySpecification, DockerTest,
|
|
};
|
|
|
|
serai_docker_tests::build("serai".to_string());
|
|
|
|
let handle = concat!("serai_client-serai_node-", stringify!($name));
|
|
|
|
let composition = TestBodySpecification::with_image(
|
|
Image::with_repository("serai-dev-serai").pull_policy(PullPolicy::Never),
|
|
)
|
|
.replace_cmd(vec![
|
|
"serai-node".to_string(),
|
|
"--dev".to_string(),
|
|
"--unsafe-rpc-external".to_string(),
|
|
"--rpc-cors".to_string(),
|
|
"all".to_string(),
|
|
])
|
|
.set_publish_all_ports(true)
|
|
.set_handle(handle)
|
|
.set_start_policy(StartPolicy::Strict)
|
|
.set_log_options(Some(LogOptions {
|
|
action: LogAction::Forward,
|
|
policy: LogPolicy::Always,
|
|
source: LogSource::Both,
|
|
}));
|
|
|
|
let mut test = DockerTest::new().with_network(dockertest::Network::Isolated);
|
|
test.provide_container(composition);
|
|
test.run_async(|ops| async move {
|
|
// Sleep until the Substrate RPC starts
|
|
let serai_rpc = ops.handle(handle).host_port(9944).unwrap();
|
|
let serai_rpc = format!("ws://{}:{}", serai_rpc.0, serai_rpc.1);
|
|
// Bound execution to 60 seconds
|
|
for _ in 0 .. 60 {
|
|
tokio::time::sleep(core::time::Duration::from_secs(1)).await;
|
|
let Ok(client) = Serai::new(&serai_rpc).await else { continue };
|
|
if client.latest_block_hash().await.is_err() {
|
|
continue;
|
|
}
|
|
break;
|
|
}
|
|
#[allow(clippy::redundant_closure_call)]
|
|
$test(Serai::new(&serai_rpc).await.unwrap()).await;
|
|
}).await;
|
|
}
|
|
)*
|
|
}
|
|
}
|