light: give free credits for reserved peers (#9448)

* light: give free credits for reserved peers

* Fix ethcore-light tests

* Test free_flow_params
This commit is contained in:
Wei Tang
2018-09-10 19:45:49 +08:00
committed by GitHub
parent 2177a0179e
commit 44531e3009
6 changed files with 59 additions and 5 deletions

View File

@@ -87,6 +87,10 @@ impl IoContext for Expect {
fn persistent_peer_id(&self, _peer: PeerId) -> Option<NodeId> {
None
}
fn is_reserved_peer(&self, peer: PeerId) -> bool {
peer == 0xff
}
}
// can't implement directly for Arc due to cross-crate orphan rules.
@@ -190,6 +194,10 @@ fn write_handshake(status: &Status, capabilities: &Capabilities, proto: &LightPr
::net::status::write_handshake(status, capabilities, Some(&*flow_params))
}
fn write_free_handshake(status: &Status, capabilities: &Capabilities, proto: &LightProtocol) -> Vec<u8> {
::net::status::write_handshake(status, capabilities, Some(&proto.free_flow_params))
}
// helper for setting up the protocol handler and provider.
fn setup(capabilities: Capabilities) -> (Arc<TestProviderInner>, LightProtocol) {
let provider = Arc::new(TestProviderInner {
@@ -231,6 +239,19 @@ fn handshake_expected() {
proto.on_connect(1, &Expect::Send(1, packet::STATUS, packet_body));
}
#[test]
fn reserved_handshake_expected() {
let capabilities = capabilities();
let (provider, proto) = setup(capabilities);
let status = status(provider.client.chain_info());
let packet_body = write_free_handshake(&status, &capabilities, &proto);
proto.on_connect(0xff, &Expect::Send(0xff, packet::STATUS, packet_body));
}
#[test]
#[should_panic]
fn genesis_mismatch() {