p2p: fix local/remote cap/protocol mixup
This commit is contained in:
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
|
||||||
|
|
Loading…
Reference in New Issue