use std::io; mod utils; #[test] fn test_without_durable_queue() -> io::Result<()> { let server = utils::server()?; let nats_url = &format!("localhost:{}", server.port); let nc = nats::connect(nats_url)?; { let sc = stan::connect(nc.clone(), "test-cluster", "rust-client-1")?; sc.publish("foo", "hello from rust 1")?; let sub = sc.subscribe( "foo", stan::SubscriptionConfig { durable_name: None, start: stan::SubscriptionStart::AllAvailable, ..Default::default() }, )?; assert_eq!(utils::next_message(&sub)?, "hello from rust 1"); } { let sc = stan::connect(nc.clone(), "test-cluster", "rust-client-1")?; sc.publish("foo", "hello from rust 2")?; let sub = sc.subscribe( "foo", stan::SubscriptionConfig { durable_name: None, start: stan::SubscriptionStart::AllAvailable, ..Default::default() }, )?; assert_eq!(utils::next_message(&sub)?, "hello from rust 1"); assert_eq!(utils::next_message(&sub)?, "hello from rust 2"); } Ok(()) } #[test] fn test_with_durable_queue() -> io::Result<()> { let server = utils::server()?; let nats_url = &format!("localhost:{}", server.port); let nc = nats::connect(nats_url)?; { let sc = stan::connect(nc.clone(), "test-cluster", "rust-client-1")?; sc.publish("foo", "hello from rust 1")?; let sub = sc.subscribe( "foo", stan::SubscriptionConfig { durable_name: Some("my-durable-queue"), start: stan::SubscriptionStart::AllAvailable, ..Default::default() }, )?; assert_eq!(utils::next_message(&sub)?, "hello from rust 1"); } { let sc = stan::connect(nc.clone(), "test-cluster", "rust-client-1")?; sc.publish("foo", "hello from rust 2")?; let sub = sc.subscribe( "foo", stan::SubscriptionConfig { durable_name: Some("my-durable-queue"), start: stan::SubscriptionStart::AllAvailable, ..Default::default() }, )?; assert_eq!(utils::next_message(&sub)?, "hello from rust 2"); } Ok(()) }