Fix received notifications for gossip signature subscriptions (#15506)
This commit is contained in:
@ -619,6 +619,7 @@ mod tests {
|
|||||||
let received_slot = 1;
|
let received_slot = 1;
|
||||||
rpc.subscriptions
|
rpc.subscriptions
|
||||||
.notify_signatures_received((received_slot, vec![tx.signatures[0]]));
|
.notify_signatures_received((received_slot, vec![tx.signatures[0]]));
|
||||||
|
|
||||||
// Test signature confirmation notification
|
// Test signature confirmation notification
|
||||||
let (response, _) = robust_poll_or_panic(receiver);
|
let (response, _) = robust_poll_or_panic(receiver);
|
||||||
let expected_res =
|
let expected_res =
|
||||||
@ -635,6 +636,39 @@ mod tests {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
assert_eq!(serde_json::to_string(&expected).unwrap(), response);
|
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]
|
#[test]
|
||||||
|
@ -1064,11 +1064,16 @@ impl RpcSubscriptions {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
NotificationEntry::SignaturesReceived(slot_signatures) => {
|
NotificationEntry::SignaturesReceived(slot_signatures) => {
|
||||||
|
RpcSubscriptions::process_signatures_received(
|
||||||
|
&slot_signatures,
|
||||||
|
&subscriptions.gossip_signature_subscriptions,
|
||||||
|
¬ifier,
|
||||||
|
);
|
||||||
RpcSubscriptions::process_signatures_received(
|
RpcSubscriptions::process_signatures_received(
|
||||||
&slot_signatures,
|
&slot_signatures,
|
||||||
&subscriptions.signature_subscriptions,
|
&subscriptions.signature_subscriptions,
|
||||||
¬ifier,
|
¬ifier,
|
||||||
)
|
);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
Err(RecvTimeoutError::Timeout) => {
|
Err(RecvTimeoutError::Timeout) => {
|
||||||
|
Reference in New Issue
Block a user