Fix received notifications for gossip signature subscriptions (#15506)

This commit is contained in:
Justin Starry
2021-02-24 16:59:22 +08:00
committed by GitHub
parent c2e8814dce
commit 61ed980ac0
2 changed files with 40 additions and 1 deletions

View File

@ -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]

View File

@ -1064,11 +1064,16 @@ impl RpcSubscriptions {
);
}
NotificationEntry::SignaturesReceived(slot_signatures) => {
RpcSubscriptions::process_signatures_received(
&slot_signatures,
&subscriptions.gossip_signature_subscriptions,
&notifier,
);
RpcSubscriptions::process_signatures_received(
&slot_signatures,
&subscriptions.signature_subscriptions,
&notifier,
)
);
}
},
Err(RecvTimeoutError::Timeout) => {