| /* |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with |
| * this work for additional information regarding copyright ownership. |
| * The ASF licenses this file to You under the Apache License, Version 2.0 |
| * (the "License"); you may not use this file except in compliance with |
| * the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| package utils |
| |
| import ( |
| rmq_client "github.com/apache/rocketmq-clients/golang" |
| "github.com/stretchr/testify/assert" |
| "math" |
| "sort" |
| "testing" |
| "time" |
| ) |
| |
| // check msg with msgId received only once |
| func CheckMsgsWithMsgId(t *testing.T, sendMsgsCollector *SendMsgsCollector, recvMsgsCollector *RecvMsgsCollector) { |
| assert.Equal(t, len(sendMsgsCollector.MsgIds), len(recvMsgsCollector.MsgIds), "they should be equal") |
| sort.Strings(recvMsgsCollector.MsgIds) |
| sort.Strings(sendMsgsCollector.MsgIds) |
| assert.Equal(t, sendMsgsCollector.MsgIds, recvMsgsCollector.MsgIds, "they should be equal") |
| } |
| |
| // check msg with msgId tag keys body received only once |
| func CheckMsgsWithAll(t *testing.T, sendMsgsCollector *SendMsgsCollector, recvMsgsCollector *RecvMsgsCollector) { |
| assert.Equal(t, len(sendMsgsCollector.MsgIds), len(recvMsgsCollector.MsgIds), "they should be equal") |
| for i, msg := range sendMsgsCollector.SendMsgs { |
| var matchedMsgViews *rmq_client.MessageView |
| for j, msgViews := range recvMsgsCollector.RecvMsgViews { |
| if sendMsgsCollector.MsgIds[i] == msgViews.GetMessageId() { |
| matchedMsgViews = recvMsgsCollector.RecvMsgViews[j] |
| break |
| } |
| } |
| assert.Equal(t, sendMsgsCollector.MsgIds[i], matchedMsgViews.GetMessageId(), "they should be equal") |
| assert.Equal(t, msg.GetKeys(), matchedMsgViews.GetKeys(), "they should be equal") |
| assert.Equal(t, msg.GetTag(), matchedMsgViews.GetTag(), "they should be equal") |
| assert.Equal(t, msg.Body, matchedMsgViews.GetBody(), "they should be equal") |
| } |
| } |
| |
| func CheckDelayMsgsWithMsgId(t *testing.T, sendMsgsCollector *SendMsgsCollector, recvMsgsCollector *RecvMsgsCollector, acceptableVariation float64) { |
| CheckMsgsWithMsgId(t, sendMsgsCollector, recvMsgsCollector) |
| for i, msg := range sendMsgsCollector.SendMsgs { |
| var matchedMsgViews *rmq_client.MessageView |
| for j, msgViews := range recvMsgsCollector.RecvMsgViews { |
| if sendMsgsCollector.MsgIds[i] == msgViews.GetMessageId() { |
| matchedMsgViews = recvMsgsCollector.RecvMsgViews[j] |
| break |
| } |
| } |
| assert.Equal(t, msg.GetDeliveryTimestamp(), matchedMsgViews.GetDeliveryTimestamp(), "they should be equal") |
| assert.True(t, math.Abs(float64(time.Now().Unix())-float64(msg.GetDeliveryTimestamp().Unix())) < acceptableVariation, "they should be equal") |
| } |
| } |
| |
| func CheckFIFOMsgsWithMsgId(t *testing.T, sendMsgsCollector *SendMsgsCollector, recvMsgsCollector *RecvMsgsCollector) { |
| assert.Equal(t, len(sendMsgsCollector.MsgIds), len(recvMsgsCollector.MsgIds), "they should be equal") |
| assert.Equal(t, sendMsgsCollector.MsgIds, recvMsgsCollector.MsgIds, "they should be equal") |
| } |
| |
| func CheckTransactionMsgsWithMsgId(t *testing.T, sendMsgsCollector *SendMsgsCollector, recvMsgsCollector *RecvMsgsCollector) { |
| CheckMsgsWithMsgId(t, sendMsgsCollector, recvMsgsCollector) |
| } |