Use insta and criterion for main integration test and benches respectively.
docker/ci: Separate integration and unit tests and benches jobs. Add directives to remove db before/after integration tests are performed. Split start/run/stop phases; add more granular smoketests. Split main integration tests into units for isolation. Signed-off-by: Jason Volk <jason@zemos.net>
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
#![cfg(test)]
|
||||
|
||||
use insta::{assert_debug_snapshot, with_settings};
|
||||
use tuwunel::Server;
|
||||
use tuwunel_core::{Args, Result, runtime};
|
||||
|
||||
@@ -12,9 +13,16 @@ fn panic_dummy() { panic!("dummy") }
|
||||
|
||||
#[test]
|
||||
fn smoke() -> Result {
|
||||
let args = Args::default_test("smoke");
|
||||
let runtime = runtime::new(Some(&args))?;
|
||||
let server = Server::new(Some(&args), Some(runtime.handle()))?;
|
||||
with_settings!({
|
||||
description => "Smoke Test",
|
||||
snapshot_suffix => "smoke_test",
|
||||
}, {
|
||||
let args = Args::default_test(&["smoke", "fresh", "cleanup"]);
|
||||
let runtime = runtime::new(Some(&args))?;
|
||||
let server = Server::new(Some(&args), Some(runtime.handle()))?;
|
||||
let result = tuwunel::exec(&server, runtime);
|
||||
|
||||
tuwunel::exec(&server, runtime)
|
||||
assert_debug_snapshot!(result);
|
||||
result
|
||||
})
|
||||
}
|
||||
|
||||
24
src/main/tests/smoke_async.rs
Normal file
24
src/main/tests/smoke_async.rs
Normal file
@@ -0,0 +1,24 @@
|
||||
#![cfg(test)]
|
||||
|
||||
use insta::{assert_debug_snapshot, with_settings};
|
||||
use tuwunel::Server;
|
||||
use tuwunel_core::{Args, Result, runtime};
|
||||
|
||||
#[test]
|
||||
fn smoke_async() -> Result {
|
||||
with_settings!({
|
||||
description => "Smoke Async",
|
||||
snapshot_suffix => "smoke_async",
|
||||
}, {
|
||||
let args = Args::default_test(&["smoke", "fresh", "cleanup"]);
|
||||
let runtime = runtime::new(Some(&args))?;
|
||||
let server = Server::new(Some(&args), Some(runtime.handle()))?;
|
||||
let result = runtime.block_on(async {
|
||||
tuwunel::async_exec(&server).await
|
||||
});
|
||||
|
||||
runtime::shutdown(&server.server, runtime)?;
|
||||
assert_debug_snapshot!(result);
|
||||
result
|
||||
})
|
||||
}
|
||||
29
src/main/tests/smoke_shutdown.rs
Normal file
29
src/main/tests/smoke_shutdown.rs
Normal file
@@ -0,0 +1,29 @@
|
||||
#![cfg(test)]
|
||||
|
||||
use insta::{assert_debug_snapshot, with_settings};
|
||||
use tracing::Level;
|
||||
use tuwunel::Server;
|
||||
use tuwunel_core::{Args, Result, runtime, utils::result::ErrLog};
|
||||
|
||||
#[test]
|
||||
fn smoke_shutdown() -> Result {
|
||||
with_settings!({
|
||||
description => "Smoke Shutdown",
|
||||
snapshot_suffix => "smoke_shutdown",
|
||||
}, {
|
||||
let args = Args::default_test(&["fresh", "cleanup"]);
|
||||
let runtime = runtime::new(Some(&args))?;
|
||||
let server = Server::new(Some(&args), Some(runtime.handle()))?;
|
||||
let result = runtime.block_on(async {
|
||||
tuwunel::async_start(&server).await?;
|
||||
let run = tuwunel::async_run(&server);
|
||||
server.server.shutdown().log_err(Level::WARN).ok();
|
||||
run.await?;
|
||||
tuwunel::async_stop(&server).await
|
||||
});
|
||||
|
||||
runtime::shutdown(&server.server, runtime)?;
|
||||
assert_debug_snapshot!(result);
|
||||
result
|
||||
})
|
||||
}
|
||||
8
src/main/tests/snapshots/smoke__smoke@smoke_test.snap
Normal file
8
src/main/tests/snapshots/smoke__smoke@smoke_test.snap
Normal file
@@ -0,0 +1,8 @@
|
||||
---
|
||||
source: src/main/tests/smoke.rs
|
||||
description: Smoke Test
|
||||
expression: result
|
||||
---
|
||||
Ok(
|
||||
(),
|
||||
)
|
||||
@@ -0,0 +1,8 @@
|
||||
---
|
||||
source: src/main/tests/smoke_async.rs
|
||||
description: Smoke Async
|
||||
expression: result
|
||||
---
|
||||
Ok(
|
||||
(),
|
||||
)
|
||||
@@ -0,0 +1,8 @@
|
||||
---
|
||||
source: src/main/tests/smoke_shutdown.rs
|
||||
description: Smoke Shutdown
|
||||
expression: result
|
||||
---
|
||||
Ok(
|
||||
(),
|
||||
)
|
||||
Reference in New Issue
Block a user