You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@rocketmq.apache.org by hu...@apache.org on 2019/07/15 01:05:20 UTC
[rocketmq-client-go] branch native updated: [ISSUE #75] Add
internal/route.go unit tests (#116)
This is an automated email from the ASF dual-hosted git repository.
huzongtang pushed a commit to branch native
in repository https://gitbox.apache.org/repos/asf/rocketmq-client-go.git
The following commit(s) were added to refs/heads/native by this push:
new 25f4036 [ISSUE #75] Add internal/route.go unit tests (#116)
25f4036 is described below
commit 25f403678ec98ca65678b89bdb4b40224bef68dd
Author: 兰园望月 <13...@qq.com>
AuthorDate: Mon Jul 15 09:05:16 2019 +0800
[ISSUE #75] Add internal/route.go unit tests (#116)
* add route test
* test AddBroker and repair encodeMessages
---
internal/client.go | 1 +
internal/route_test.go | 111 ++++++++++++++++++++++++++++++++++++++++++++++++-
2 files changed, 111 insertions(+), 1 deletion(-)
diff --git a/internal/client.go b/internal/client.go
index 09b7ca3..35ad9e7 100644
--- a/internal/client.go
+++ b/internal/client.go
@@ -600,6 +600,7 @@ func encodeMessages(message []*primitive.Message) []byte {
index := 0
for index < len(message) {
buffer.Write(message[index].Body)
+ index ++
}
return buffer.Bytes()
}
diff --git a/internal/route_test.go b/internal/route_test.go
index 7bc0846..ee95755 100644
--- a/internal/route_test.go
+++ b/internal/route_test.go
@@ -18,9 +18,118 @@ limitations under the License.
package internal
import (
+ . "github.com/smartystreets/goconvey/convey"
"testing"
)
+const (
+ topic = "TopicTest"
+)
+
+func init() {
+ srvs := []string{"127.0.0.1:9876"}
+ namesrv, err := NewNamesrv(srvs...)
+ if err != nil {
+ panic("register namesrv fail")
+ }
+ RegisterNamsrv(namesrv)
+}
+
+func TestAddBroker(t *testing.T) {
+ Convey("Given a starting topic", t, func() {
+ remoteRouteData, err := queryTopicRouteInfoFromServer(topic)
+ So(err, ShouldBeNil)
+ AddBroker(remoteRouteData)
+
+ Convey("brokerData from brokerAddressesMap by brokeName should be deep equal remoteBrokeData from server", func() {
+ for _, remoteBrokerData := range remoteRouteData.BrokerDataList {
+ brokerName := remoteBrokerData.BrokerName
+ brokerData, ok := brokerAddressesMap.Load(brokerName)
+ So(ok, ShouldBeTrue)
+ So(brokerData, ShouldResemble, remoteBrokerData)
+ }
+ })
+ })
+}
+
func TestUpdateTopicRouteInfo(t *testing.T) {
- UpdateTopicRouteInfo("test")
+ Convey("Given a starting topic", t, func() {
+ updatedRouteData := UpdateTopicRouteInfo(topic)
+
+ Convey("updatedRouteData should be deep equal remoteRouteData", func() {
+ remoteRouteData, err := queryTopicRouteInfoFromServer(topic)
+ So(err, ShouldBeNil)
+ So(updatedRouteData, ShouldResemble, remoteRouteData)
+ })
+ Convey("updatedRouteData should be deep equal localRouteData", func() {
+ localRouteData, exist := routeDataMap.Load(topic)
+ So(exist, ShouldBeTrue)
+ So(updatedRouteData, ShouldResemble, localRouteData)
+ })
+ })
}
+
+func TestFindBrokerAddrByTopic(t *testing.T) {
+ Convey("Given a starting topic", t, func() {
+ addr := FindBrokerAddrByTopic(topic)
+ remoteRouteData, err := queryTopicRouteInfoFromServer(topic)
+ So(err, ShouldBeNil)
+ brokerAddrList := remoteRouteData.BrokerDataList
+
+ Convey("addr from FindBrokerAddrByTopic should be contained in remoteRouteData", func() {
+ flag := false
+ for _, brokerData := range brokerAddrList {
+ for _, ba := range brokerData.BrokerAddresses {
+ if ba == addr {
+ flag = true
+ break
+ }
+ }
+ }
+ So(flag, ShouldBeTrue)
+ })
+ })
+}
+
+func TestFindBrokerAddrByName(t *testing.T) {
+ Convey("Given a starting topic", t, func() {
+ remoteRouteData, err := queryTopicRouteInfoFromServer(topic)
+ So(err, ShouldBeNil)
+ brokerAddrList := remoteRouteData.BrokerDataList
+
+ Convey("addr from FindBrokerAddrByName should be equal remoteBrokerAddr from server", func() {
+ for _, brokerData := range brokerAddrList {
+ brokerName := brokerData.BrokerName
+ addr := FindBrokerAddrByName(brokerName)
+ remoteBrokerAddr := brokerData.BrokerAddresses[MasterId]
+ So(addr, ShouldEqual, remoteBrokerAddr)
+ }
+ })
+ })
+}
+
+func TestFindBrokerAddressInSubscribe(t *testing.T) {
+ Convey("Given a starting topic", t, func() {
+ remoteRouteData, err := queryTopicRouteInfoFromServer(topic)
+ So(err, ShouldBeNil)
+ brokerAddrList := remoteRouteData.BrokerDataList
+
+ Convey("range BrokerAddress and compare them in turn", func() {
+ for _, brokerData := range brokerAddrList {
+ brokerName := brokerData.BrokerName
+ for id, ba := range brokerData.BrokerAddresses {
+ findBrokerRes := FindBrokerAddressInSubscribe(brokerName, id, true)
+ res := &FindBrokerResult{
+ BrokerAddr: ba,
+ Slave: false,
+ BrokerVersion: findBrokerVersion(brokerName, ba),
+ }
+ if id != MasterId {
+ res.Slave = true
+ }
+ So(findBrokerRes, ShouldResemble, res)
+ }
+ }
+ })
+ })
+}
\ No newline at end of file