mirror of
https://github.com/serai-dex/serai.git
synced 2024-12-30 15:39:23 +00:00
cccc1fc7e6
Some checks are pending
Full Stack Tests / build (push) Waiting to run
Lint / fmt (push) Waiting to run
Lint / machete (push) Waiting to run
Lint / clippy (macos-13) (push) Waiting to run
Lint / clippy (macos-14) (push) Waiting to run
Lint / clippy (ubuntu-latest) (push) Waiting to run
Lint / clippy (windows-latest) (push) Waiting to run
Lint / deny (push) Waiting to run
Reproducible Runtime / build (push) Waiting to run
Tests / test-infra (push) Waiting to run
Tests / test-substrate (push) Waiting to run
Tests / test-serai-client (push) Waiting to run
* add genesis liquidity implementation * add missing deposit event * fix CI issues * minor fixes * make math safer * fix fmt * implement block emissions * make remove liquidity an authorized call * implement setting initial values for coins * add genesis liquidity test & misc fixes * updato develop latest * fix rotation test * fix licencing * add fast-epoch feature * only create the pool when adding liquidity first time * add initial reward era test * test whole pre ec security emissions * fix clippy * add swap-to-staked-sri feature * rebase changes * fix tests * Remove accidentally commited ETH ABI files * fix some pr comments * Finish up fixing pr comments * exclude SRI from is_allowed check * Misc changes --------- Co-authored-by: akildemir <aeg_asd@hotmail.com> Co-authored-by: Luke Parker <lukeparker5132@gmail.com>
133 lines
4.4 KiB
Rust
133 lines
4.4 KiB
Rust
pub mod tx;
|
|
pub mod validator_sets;
|
|
pub mod in_instructions;
|
|
pub mod dex;
|
|
pub mod genesis_liquidity;
|
|
|
|
#[macro_export]
|
|
macro_rules! serai_test {
|
|
($($name: ident: $test: expr)*) => {
|
|
$(
|
|
#[tokio::test]
|
|
async fn $name() {
|
|
use std::collections::HashMap;
|
|
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(),
|
|
])
|
|
.replace_env(
|
|
HashMap::from([
|
|
("RUST_LOG".to_string(), "runtime=debug".to_string()),
|
|
("KEY".to_string(), " ".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!("http://{}:{}", 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.clone()).await else { continue };
|
|
if client.latest_finalized_block_hash().await.is_err() {
|
|
continue;
|
|
}
|
|
break;
|
|
}
|
|
#[allow(clippy::redundant_closure_call)]
|
|
$test(Serai::new(serai_rpc).await.unwrap()).await;
|
|
}).await;
|
|
}
|
|
)*
|
|
}
|
|
}
|
|
|
|
#[macro_export]
|
|
macro_rules! serai_test_fast_epoch {
|
|
($($name: ident: $test: expr)*) => {
|
|
$(
|
|
#[tokio::test]
|
|
async fn $name() {
|
|
use std::collections::HashMap;
|
|
use dockertest::{
|
|
PullPolicy, StartPolicy, LogOptions, LogAction, LogPolicy, LogSource, Image,
|
|
TestBodySpecification, DockerTest,
|
|
};
|
|
|
|
serai_docker_tests::build("serai-fast-epoch".to_string());
|
|
|
|
let handle = concat!("serai_client-serai_node-", stringify!($name));
|
|
|
|
let composition = TestBodySpecification::with_image(
|
|
Image::with_repository("serai-dev-serai-fast-epoch").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(),
|
|
])
|
|
.replace_env(
|
|
HashMap::from([
|
|
("RUST_LOG".to_string(), "runtime=debug".to_string()),
|
|
("KEY".to_string(), " ".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!("http://{}:{}", 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.clone()).await else { continue };
|
|
if client.latest_finalized_block_hash().await.is_err() {
|
|
continue;
|
|
}
|
|
break;
|
|
}
|
|
#[allow(clippy::redundant_closure_call)]
|
|
$test(Serai::new(serai_rpc).await.unwrap()).await;
|
|
}).await;
|
|
}
|
|
)*
|
|
}
|
|
}
|