Skip to content

Commit

Permalink
fix(golang): add tests for routeEqual
Browse files Browse the repository at this point in the history
  • Loading branch information
redlsz committed Feb 21, 2024
1 parent fd59ac1 commit 5fb669c
Show file tree
Hide file tree
Showing 2 changed files with 55 additions and 11 deletions.
24 changes: 13 additions & 11 deletions golang/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -513,17 +513,6 @@ func (cli *defaultClient) startUp() error {
cli.log.Info("newRoute is nil, but oldRoute is not. do not update")
return true
}
routeEqual := func(old, new []*v2.MessageQueue) bool {
if len(old) != len(new) {
return false
}
for i := 0; i < len(old); i++ {
if !proto.Equal(old[i], new[i]) {
return false
}
}
return true
}
if oldRoute == nil && len(newRoute) > 0 || oldRoute != nil && !routeEqual(oldRoute.([]*v2.MessageQueue), newRoute) {
cli.router.Store(k, newRoute)
switch impl := cli.clientImpl.(type) {
Expand Down Expand Up @@ -555,6 +544,19 @@ func (cli *defaultClient) startUp() error {
ticker.Tick(f, time.Second*30, cli.done)
return nil
}

func routeEqual(old, new []*v2.MessageQueue) bool {
if len(old) != len(new) {
return false
}
for i := 0; i < len(old); i++ {
if !proto.Equal(old[i], new[i]) {
return false
}
}
return true
}

func (cli *defaultClient) notifyClientTermination() {
cli.log.Info("start notifyClientTermination")
ctx := cli.Sign(context.Background())
Expand Down
42 changes: 42 additions & 0 deletions golang/client_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ package golang
import (
"context"
"fmt"
"reflect"
"testing"
"time"

Expand Down Expand Up @@ -293,3 +294,44 @@ func TestRestoreDefaultClientSessionTwoErrors(t *testing.T) {
assert.Equal(t, "Encountered error while receiving TelemetryCommand, trying to recover", commandExecutionLog[0].Message)
assert.Equal(t, "Failed to recover, err=EOF", commandExecutionLog[1].Message)
}

func Test_routeEqual(t *testing.T) {
oldMq := &v2.MessageQueue{
Topic: &v2.Resource{
Name: "topic-test",
},
Id: 0,
Permission: v2.Permission_READ_WRITE,
Broker: &v2.Broker{
Name: "broker-test",
Id: 0,
Endpoints: fakeEndpoints(),
},
AcceptMessageTypes: []v2.MessageType{
v2.MessageType_NORMAL,
},
}
newMq := &v2.MessageQueue{
Topic: &v2.Resource{
Name: "topic-test",
},
Id: 0,
Permission: v2.Permission_READ_WRITE,
Broker: &v2.Broker{
Name: "broker-test",
Id: 0,
Endpoints: fakeEndpoints(),
},
AcceptMessageTypes: []v2.MessageType{
v2.MessageType_NORMAL,
},
}

newMq.ProtoReflect() // message internal field value will be changed

oldRoute := []*v2.MessageQueue{oldMq}
newRoute := []*v2.MessageQueue{newMq}

assert.Equal(t, false, reflect.DeepEqual(oldRoute, newRoute))
assert.Equal(t, true, routeEqual(oldRoute, newRoute))
}

0 comments on commit 5fb669c

Please sign in to comment.