|
|
|
@@ -73,30 +73,30 @@ var topicMatcherCreationTest = struct {
|
|
|
|
|
matcher []map[[4]byte]struct{}
|
|
|
|
|
}{
|
|
|
|
|
binary: [][][]byte{
|
|
|
|
|
[][]byte{},
|
|
|
|
|
[][]byte{
|
|
|
|
|
{},
|
|
|
|
|
{
|
|
|
|
|
[]byte("Topic A"),
|
|
|
|
|
},
|
|
|
|
|
[][]byte{
|
|
|
|
|
{
|
|
|
|
|
[]byte("Topic B1"),
|
|
|
|
|
[]byte("Topic B2"),
|
|
|
|
|
[]byte("Topic B3"),
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
textual: [][]string{
|
|
|
|
|
[]string{},
|
|
|
|
|
[]string{"Topic A"},
|
|
|
|
|
[]string{"Topic B1", "Topic B2", "Topic B3"},
|
|
|
|
|
{},
|
|
|
|
|
{"Topic A"},
|
|
|
|
|
{"Topic B1", "Topic B2", "Topic B3"},
|
|
|
|
|
},
|
|
|
|
|
matcher: []map[[4]byte]struct{}{
|
|
|
|
|
map[[4]byte]struct{}{},
|
|
|
|
|
map[[4]byte]struct{}{
|
|
|
|
|
[4]byte{0x25, 0xfc, 0x95, 0x66}: struct{}{},
|
|
|
|
|
{},
|
|
|
|
|
{
|
|
|
|
|
{0x25, 0xfc, 0x95, 0x66}: {},
|
|
|
|
|
},
|
|
|
|
|
map[[4]byte]struct{}{
|
|
|
|
|
[4]byte{0x93, 0x6d, 0xec, 0x09}: struct{}{},
|
|
|
|
|
[4]byte{0x25, 0x23, 0x34, 0xd3}: struct{}{},
|
|
|
|
|
[4]byte{0x6b, 0xc2, 0x73, 0xd1}: struct{}{},
|
|
|
|
|
{
|
|
|
|
|
{0x93, 0x6d, 0xec, 0x09}: {},
|
|
|
|
|
{0x25, 0x23, 0x34, 0xd3}: {},
|
|
|
|
|
{0x6b, 0xc2, 0x73, 0xd1}: {},
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
@@ -106,14 +106,14 @@ func TestTopicMatcherCreation(t *testing.T) {
|
|
|
|
|
|
|
|
|
|
matcher := newTopicMatcherFromBinary(test.binary...)
|
|
|
|
|
for i, cond := range matcher.conditions {
|
|
|
|
|
for topic, _ := range cond {
|
|
|
|
|
for topic := range cond {
|
|
|
|
|
if _, ok := test.matcher[i][topic]; !ok {
|
|
|
|
|
t.Errorf("condition %d; extra topic found: 0x%x", i, topic[:])
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
for i, cond := range test.matcher {
|
|
|
|
|
for topic, _ := range cond {
|
|
|
|
|
for topic := range cond {
|
|
|
|
|
if _, ok := matcher.conditions[i][topic]; !ok {
|
|
|
|
|
t.Errorf("condition %d; topic not found: 0x%x", i, topic[:])
|
|
|
|
|
}
|
|
|
|
@@ -122,14 +122,14 @@ func TestTopicMatcherCreation(t *testing.T) {
|
|
|
|
|
|
|
|
|
|
matcher = newTopicMatcherFromStrings(test.textual...)
|
|
|
|
|
for i, cond := range matcher.conditions {
|
|
|
|
|
for topic, _ := range cond {
|
|
|
|
|
for topic := range cond {
|
|
|
|
|
if _, ok := test.matcher[i][topic]; !ok {
|
|
|
|
|
t.Errorf("condition %d; extra topic found: 0x%x", i, topic[:])
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
for i, cond := range test.matcher {
|
|
|
|
|
for topic, _ := range cond {
|
|
|
|
|
for topic := range cond {
|
|
|
|
|
if _, ok := matcher.conditions[i][topic]; !ok {
|
|
|
|
|
t.Errorf("condition %d; topic not found: 0x%x", i, topic[:])
|
|
|
|
|
}
|
|
|
|
@@ -155,49 +155,49 @@ var topicMatcherTests = []struct {
|
|
|
|
|
},
|
|
|
|
|
// Fixed topic matcher should match strictly, but only prefix
|
|
|
|
|
{
|
|
|
|
|
filter: [][]string{[]string{"a"}, []string{"b"}},
|
|
|
|
|
filter: [][]string{{"a"}, {"b"}},
|
|
|
|
|
topics: []string{"a"},
|
|
|
|
|
match: false,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
filter: [][]string{[]string{"a"}, []string{"b"}},
|
|
|
|
|
filter: [][]string{{"a"}, {"b"}},
|
|
|
|
|
topics: []string{"a", "b"},
|
|
|
|
|
match: true,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
filter: [][]string{[]string{"a"}, []string{"b"}},
|
|
|
|
|
filter: [][]string{{"a"}, {"b"}},
|
|
|
|
|
topics: []string{"a", "b", "c"},
|
|
|
|
|
match: true,
|
|
|
|
|
},
|
|
|
|
|
// Multi-matcher should match any from a sub-group
|
|
|
|
|
{
|
|
|
|
|
filter: [][]string{[]string{"a1", "a2"}},
|
|
|
|
|
filter: [][]string{{"a1", "a2"}},
|
|
|
|
|
topics: []string{"a"},
|
|
|
|
|
match: false,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
filter: [][]string{[]string{"a1", "a2"}},
|
|
|
|
|
filter: [][]string{{"a1", "a2"}},
|
|
|
|
|
topics: []string{"a1"},
|
|
|
|
|
match: true,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
filter: [][]string{[]string{"a1", "a2"}},
|
|
|
|
|
filter: [][]string{{"a1", "a2"}},
|
|
|
|
|
topics: []string{"a2"},
|
|
|
|
|
match: true,
|
|
|
|
|
},
|
|
|
|
|
// Wild-card condition should match anything
|
|
|
|
|
{
|
|
|
|
|
filter: [][]string{[]string{}, []string{"b"}},
|
|
|
|
|
filter: [][]string{{}, {"b"}},
|
|
|
|
|
topics: []string{"a"},
|
|
|
|
|
match: false,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
filter: [][]string{[]string{}, []string{"b"}},
|
|
|
|
|
filter: [][]string{{}, {"b"}},
|
|
|
|
|
topics: []string{"a", "b"},
|
|
|
|
|
match: true,
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
filter: [][]string{[]string{}, []string{"b"}},
|
|
|
|
|
filter: [][]string{{}, {"b"}},
|
|
|
|
|
topics: []string{"b", "b"},
|
|
|
|
|
match: true,
|
|
|
|
|
},
|
|
|
|
|