This commit is contained in:
2022-03-17 15:54:23 +08:00
commit 437c38533d
25 changed files with 6943 additions and 0 deletions

171
chat/test/action_test.go Normal file
View File

@@ -0,0 +1,171 @@
package test
import (
"bytes"
"context"
"math/rand"
"os"
"testing"
"time"
"github.com/golang/protobuf/proto"
comet "gitlab.33.cn/chat/im/api/comet/grpc"
"gitlab.33.cn/chat/imparse"
"gitlab.33.cn/chat/imparse/chat"
biz "gitlab.33.cn/chat/imparse/proto"
)
type msg []byte
var sourceData = []msg{}
func TestMain(t *testing.M) {
sourceData = genTestFrames()
os.Exit(t.Run())
}
func genTestFrames() []msg {
p := comet.Proto{
Ver: 0,
Op: int32(comet.Op_SendMsg),
Seq: 1,
Ack: 0,
Body: nil,
}
pro := biz.Proto{
EventType: biz.Proto_common,
Body: nil,
}
comm := biz.Common{
ChannelType: biz.Channel_ToUser,
Mid: 0,
Seq: "client-msg",
From: "client-from",
Target: "client-target",
MsgType: biz.MsgType_Text,
Msg: nil,
}
data2, err := proto.Marshal(&comm)
if err != nil {
panic(err)
}
pro.Body = data2
data1, err := proto.Marshal(&pro)
if err != nil {
panic(err)
}
p.Body = data1
data, err := proto.Marshal(&p)
if err != nil {
panic(err)
}
return []msg{data}
}
type testDB struct {
}
func (db *testDB) GetMsg(ctx context.Context, from, seq string) (*imparse.MsgIndex, error) {
return nil, nil
}
func (db *testDB) AddMsg(ctx context.Context, uid string, m *imparse.MsgIndex) error {
return nil
}
func (db *testDB) GetMid(ctx context.Context) (id int64, err error) {
//将时间戳设置成种子数
rand.Seed(time.Now().UnixNano())
id = int64(rand.Intn(100))
return
}
type testExec struct {
}
func (e *testExec) Transport(ctx context.Context, id int64, key, from, target string, ch imparse.Channel, frameType imparse.FrameType, data []byte) error {
return nil
}
func (e *testExec) RevAck(ctx context.Context, id int64, keys []string, data []byte) error {
return nil
}
func TestStandard_Filter(t *testing.T) {
//全局初始化
var db testDB
var e testExec
var exec = imparse.NewStandardAnswer(&db, &e, nil, nil)
var parser chat.StandardParse
//局部初始化
//来源模式 1. ws推送2. http推送3. 测试命令行
from := "server-client"
key := "server-key"
for _, m := range sourceData {
ctx := context.Background()
f, err := parser.NewFrame(key, from, bytes.NewReader(m))
if err != nil {
t.Error(err)
return
}
_, err = exec.Filter(ctx, f)
if err != nil {
t.Error(err)
continue
}
err = exec.Transport(ctx, f)
if err != nil {
t.Error(err)
continue
}
_, err = exec.Ack(ctx, f)
if err != nil {
t.Error(err)
continue
}
}
}
func BenchmarkCreateFrame(b *testing.B) {
//全局初始化
var db testDB
var e testExec
var exec = imparse.NewStandardAnswer(&db, &e, nil, nil)
var parser chat.StandardParse
data := sourceData[0]
//局部初始化
//来源模式 1. ws推送2. http推送3. 测试命令行
from := "server-client"
key := "server-key"
for n := 0; n < b.N; n++ {
ctx := context.Background()
f, err := parser.NewFrame(key, from, bytes.NewReader(data))
if err != nil {
b.Error(err)
return
}
_, err = exec.Filter(ctx, f)
if err != nil {
b.Error(err)
continue
}
err = exec.Transport(ctx, f)
if err != nil {
b.Error(err)
continue
}
_, err = exec.Ack(ctx, f)
if err != nil {
b.Error(err)
continue
}
}
}