mirror of
https://github.com/scsibug/nostr-rs-relay.git
synced 2024-11-09 21:29:06 -05:00
test: simple integration test to start and stop relay
This commit is contained in:
parent
4fa8616c73
commit
786a354776
55
tests/integration_test.rs
Normal file
55
tests/integration_test.rs
Normal file
|
@ -0,0 +1,55 @@
|
||||||
|
use console_subscriber::ConsoleLayer;
|
||||||
|
use log::*;
|
||||||
|
use nostr_rs_relay::config;
|
||||||
|
use nostr_rs_relay::server::start_server;
|
||||||
|
use std::sync::mpsc as syncmpsc;
|
||||||
|
use std::sync::mpsc::{Receiver as MpscReceiver, Sender as MpscSender};
|
||||||
|
use std::thread;
|
||||||
|
use std::thread::JoinHandle;
|
||||||
|
use std::time::Duration;
|
||||||
|
|
||||||
|
struct Relay {
|
||||||
|
handle: JoinHandle<()>,
|
||||||
|
shutdown_tx: MpscSender<()>,
|
||||||
|
}
|
||||||
|
|
||||||
|
fn start_relay(port: u16) -> Relay {
|
||||||
|
ConsoleLayer::builder().with_default_env().init();
|
||||||
|
let _ = env_logger::try_init();
|
||||||
|
info!("Starting up from main");
|
||||||
|
// replace default settings
|
||||||
|
let mut settings = config::Settings::default();
|
||||||
|
settings.database.in_memory = true;
|
||||||
|
settings.network.port = port;
|
||||||
|
let (shutdown_tx, shutdown_rx): (MpscSender<()>, MpscReceiver<()>) = syncmpsc::channel();
|
||||||
|
let handle = thread::spawn(|| {
|
||||||
|
let _ = start_server(settings, shutdown_rx);
|
||||||
|
});
|
||||||
|
return Relay {
|
||||||
|
handle,
|
||||||
|
shutdown_tx,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn startup() {
|
||||||
|
let relay = start_relay(8080);
|
||||||
|
// just make sure we can startup and shut down.
|
||||||
|
// if we send a shutdown message before the server is listening,
|
||||||
|
// we will get a SendError. Keep sending until someone is
|
||||||
|
// listening.
|
||||||
|
loop {
|
||||||
|
let shutdown_res = relay.shutdown_tx.send(());
|
||||||
|
match shutdown_res {
|
||||||
|
Ok(()) => {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
Err(_) => {
|
||||||
|
thread::sleep(Duration::from_millis(100));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// wait for relay to shutdown
|
||||||
|
let thread_join = relay.handle.join();
|
||||||
|
assert!(thread_join.is_ok());
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user