Fix received notifications for gossip signature subscriptions (#15506)
This commit is contained in:
@ -619,6 +619,7 @@ mod tests {
|
||||
let received_slot = 1;
|
||||
rpc.subscriptions
|
||||
.notify_signatures_received((received_slot, vec![tx.signatures[0]]));
|
||||
|
||||
// Test signature confirmation notification
|
||||
let (response, _) = robust_poll_or_panic(receiver);
|
||||
let expected_res =
|
||||
@ -635,6 +636,39 @@ mod tests {
|
||||
}
|
||||
});
|
||||
assert_eq!(serde_json::to_string(&expected).unwrap(), response);
|
||||
|
||||
// Test "received" for gossip subscription
|
||||
let session = create_session();
|
||||
let (subscriber, _id_receiver, receiver) = Subscriber::new_test("signatureNotification");
|
||||
rpc.signature_subscribe(
|
||||
session,
|
||||
subscriber,
|
||||
tx.signatures[0].to_string(),
|
||||
Some(RpcSignatureSubscribeConfig {
|
||||
commitment: Some(CommitmentConfig::confirmed()),
|
||||
enable_received_notification: Some(true),
|
||||
}),
|
||||
);
|
||||
let received_slot = 2;
|
||||
rpc.subscriptions
|
||||
.notify_signatures_received((received_slot, vec![tx.signatures[0]]));
|
||||
|
||||
// Test signature confirmation notification
|
||||
let (response, _) = robust_poll_or_panic(receiver);
|
||||
let expected_res =
|
||||
RpcSignatureResult::ReceivedSignature(ReceivedSignatureResult::ReceivedSignature);
|
||||
let expected = json!({
|
||||
"jsonrpc": "2.0",
|
||||
"method": "signatureNotification",
|
||||
"params": {
|
||||
"result": {
|
||||
"context": { "slot": received_slot },
|
||||
"value": expected_res,
|
||||
},
|
||||
"subscription": 2,
|
||||
}
|
||||
});
|
||||
assert_eq!(serde_json::to_string(&expected).unwrap(), response);
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -1064,11 +1064,16 @@ impl RpcSubscriptions {
|
||||
);
|
||||
}
|
||||
NotificationEntry::SignaturesReceived(slot_signatures) => {
|
||||
RpcSubscriptions::process_signatures_received(
|
||||
&slot_signatures,
|
||||
&subscriptions.gossip_signature_subscriptions,
|
||||
¬ifier,
|
||||
);
|
||||
RpcSubscriptions::process_signatures_received(
|
||||
&slot_signatures,
|
||||
&subscriptions.signature_subscriptions,
|
||||
¬ifier,
|
||||
)
|
||||
);
|
||||
}
|
||||
},
|
||||
Err(RecvTimeoutError::Timeout) => {
|
||||
|
Reference in New Issue
Block a user