p2p: fix local/remote cap/protocol mixup

This commit is contained in:
Péter Szilágyi 2015-06-26 20:45:13 +03:00
parent d84638bd31
commit 216fc267fa

@ -199,68 +199,68 @@ func TestNewPeer(t *testing.T) {
func TestMatchProtocols(t *testing.T) { func TestMatchProtocols(t *testing.T) {
tests := []struct { tests := []struct {
Local []Cap Remote []Cap
Remote []Protocol Local []Protocol
Match map[string]protoRW Match map[string]protoRW
}{ }{
{ {
// No remote protocols // No remote capabilities
Local: []Cap{{Name: "a"}}, Local: []Protocol{{Name: "a"}},
}, },
{ {
// No local capabilities // No local protocols
Remote: []Protocol{{Name: "a"}}, Remote: []Cap{{Name: "a"}},
}, },
{ {
// No mutual protocols // No mutual protocols
Local: []Cap{{Name: "a"}}, Remote: []Cap{{Name: "a"}},
Remote: []Protocol{{Name: "b"}}, Local: []Protocol{{Name: "b"}},
}, },
{ {
// Some matches, some differences // Some matches, some differences
Local: []Cap{{Name: "local"}, {Name: "match1"}, {Name: "match2"}}, Remote: []Cap{{Name: "local"}, {Name: "match1"}, {Name: "match2"}},
Remote: []Protocol{{Name: "match1"}, {Name: "match2"}, {Name: "remote"}}, Local: []Protocol{{Name: "match1"}, {Name: "match2"}, {Name: "remote"}},
Match: map[string]protoRW{"match1": {Protocol: Protocol{Name: "match1"}}, "match2": {Protocol: Protocol{Name: "match2"}}}, Match: map[string]protoRW{"match1": {Protocol: Protocol{Name: "match1"}}, "match2": {Protocol: Protocol{Name: "match2"}}},
}, },
{ {
// Various alphabetical ordering // Various alphabetical ordering
Local: []Cap{{Name: "aa"}, {Name: "ab"}, {Name: "bb"}, {Name: "ba"}}, Remote: []Cap{{Name: "aa"}, {Name: "ab"}, {Name: "bb"}, {Name: "ba"}},
Remote: []Protocol{{Name: "ba"}, {Name: "bb"}, {Name: "ab"}, {Name: "aa"}}, Local: []Protocol{{Name: "ba"}, {Name: "bb"}, {Name: "ab"}, {Name: "aa"}},
Match: map[string]protoRW{"aa": {Protocol: Protocol{Name: "aa"}}, "ab": {Protocol: Protocol{Name: "ab"}}, "ba": {Protocol: Protocol{Name: "ba"}}, "bb": {Protocol: Protocol{Name: "bb"}}}, Match: map[string]protoRW{"aa": {Protocol: Protocol{Name: "aa"}}, "ab": {Protocol: Protocol{Name: "ab"}}, "ba": {Protocol: Protocol{Name: "ba"}}, "bb": {Protocol: Protocol{Name: "bb"}}},
}, },
{ {
// No mutual versions // No mutual versions
Local: []Cap{{Version: 1}}, Remote: []Cap{{Version: 1}},
Remote: []Protocol{{Version: 2}}, Local: []Protocol{{Version: 2}},
}, },
{ {
// Multiple versions, single common // Multiple versions, single common
Local: []Cap{{Version: 1}, {Version: 2}}, Remote: []Cap{{Version: 1}, {Version: 2}},
Remote: []Protocol{{Version: 2}, {Version: 3}}, Local: []Protocol{{Version: 2}, {Version: 3}},
Match: map[string]protoRW{"": {Protocol: Protocol{Version: 2}}}, Match: map[string]protoRW{"": {Protocol: Protocol{Version: 2}}},
}, },
{ {
// Multiple versions, multiple common // Multiple versions, multiple common
Local: []Cap{{Version: 1}, {Version: 2}, {Version: 3}, {Version: 4}}, Remote: []Cap{{Version: 1}, {Version: 2}, {Version: 3}, {Version: 4}},
Remote: []Protocol{{Version: 2}, {Version: 3}}, Local: []Protocol{{Version: 2}, {Version: 3}},
Match: map[string]protoRW{"": {Protocol: Protocol{Version: 3}}}, Match: map[string]protoRW{"": {Protocol: Protocol{Version: 3}}},
}, },
{ {
// Various version orderings // Various version orderings
Local: []Cap{{Version: 4}, {Version: 1}, {Version: 3}, {Version: 2}}, Remote: []Cap{{Version: 4}, {Version: 1}, {Version: 3}, {Version: 2}},
Remote: []Protocol{{Version: 2}, {Version: 3}, {Version: 1}}, Local: []Protocol{{Version: 2}, {Version: 3}, {Version: 1}},
Match: map[string]protoRW{"": {Protocol: Protocol{Version: 3}}}, Match: map[string]protoRW{"": {Protocol: Protocol{Version: 3}}},
}, },
{ {
// Versions overriding sub-protocol lengths // Versions overriding sub-protocol lengths
Local: []Cap{{Version: 1}, {Version: 2}, {Version: 3}, {Name: "a"}}, Remote: []Cap{{Version: 1}, {Version: 2}, {Version: 3}, {Name: "a"}},
Remote: []Protocol{{Version: 1, Length: 1}, {Version: 2, Length: 2}, {Version: 3, Length: 3}, {Name: "a"}}, Local: []Protocol{{Version: 1, Length: 1}, {Version: 2, Length: 2}, {Version: 3, Length: 3}, {Name: "a"}},
Match: map[string]protoRW{"": {Protocol: Protocol{Version: 3}}, "a": {Protocol: Protocol{Name: "a"}, offset: 3}}, Match: map[string]protoRW{"": {Protocol: Protocol{Version: 3}}, "a": {Protocol: Protocol{Name: "a"}, offset: 3}},
}, },
} }
for i, tt := range tests { for i, tt := range tests {
result := matchProtocols(tt.Remote, tt.Local, nil) result := matchProtocols(tt.Local, tt.Remote, nil)
if len(result) != len(tt.Match) { if len(result) != len(tt.Match) {
t.Errorf("test %d: negotiation mismatch: have %v, want %v", i, len(result), len(tt.Match)) t.Errorf("test %d: negotiation mismatch: have %v, want %v", i, len(result), len(tt.Match))
continue continue