v0.3.14-pre.003
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
// file: crates/ksp-onchain-transport-lib/unit_tests/ws_session.rs
|
||||
// version: 11
|
||||
// version: 12
|
||||
|
||||
use futures_util::SinkExt; // rust-rules: trait-import
|
||||
use futures_util::StreamExt; // rust-rules: trait-import
|
||||
@@ -1355,3 +1355,40 @@ async fn websocket_dropped_notification_receiver_triggers_remote_cleanup_and_rel
|
||||
session.close().await.expect("session close must remain bounded");
|
||||
server.await.expect("local server task must complete");
|
||||
}
|
||||
|
||||
#[tokio::test(flavor = "current_thread")]
|
||||
async fn v0_3_14_pre_003_snapshot_source_tracks_latest_value_without_owning_runtime() {
|
||||
let session_id = crate::WsSessionId::new(std::num::NonZeroU64::new(1).expect("test session ID must be non-zero"));
|
||||
let initial = crate::WsSessionSnapshot::new(
|
||||
session_id,
|
||||
"local_ws",
|
||||
crate::WsProviderName::new("local-fixture"),
|
||||
crate::WsClusterName::new("local"),
|
||||
crate::WsProtocolKind::SolanaStandard,
|
||||
crate::WsSessionState::Active,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
std::vec::Vec::new(),
|
||||
);
|
||||
let reconnecting = crate::WsSessionSnapshot::new(
|
||||
session_id,
|
||||
"local_ws",
|
||||
crate::WsProviderName::new("local-fixture"),
|
||||
crate::WsClusterName::new("local"),
|
||||
crate::WsProtocolKind::SolanaStandard,
|
||||
crate::WsSessionState::Reconnecting { attempt: 1 },
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
std::vec::Vec::new(),
|
||||
);
|
||||
let (sender, receiver) = tokio::sync::watch::channel(initial.clone());
|
||||
let mut source = crate::WsSessionSnapshotSource::new(receiver);
|
||||
assert_eq!(source.current(), initial);
|
||||
sender.send_replace(reconnecting.clone());
|
||||
assert_eq!(source.wait_for_change().await, std::option::Option::Some(reconnecting));
|
||||
drop(sender);
|
||||
assert_eq!(source.wait_for_change().await, std::option::Option::None);
|
||||
return;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user