Skip to content

Commit 150227b

Browse files
authored
test: support parameter passing and function calling (#619)
* test: support parameter passing and function calling * test: fix init sdk in register * fix: add log parameter * fix: import cycle * fix: move config file * fix: init config file
1 parent c174891 commit 150227b

File tree

18 files changed

+230
-87
lines changed

18 files changed

+230
-87
lines changed

go.mod

+1-2
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ require (
66
github.com/golang/protobuf v1.5.4
77
github.com/gorilla/websocket v1.4.2
88
github.com/jinzhu/copier v0.4.0
9-
github.com/lestrrat-go/file-rotatelogs v2.4.0+incompatible // indirect
109
github.com/pkg/errors v0.9.1
1110
google.golang.org/protobuf v1.33.0 // indirect
1211
gorm.io/driver/sqlite v1.5.5
@@ -18,7 +17,7 @@ require golang.org/x/net v0.22.0
1817
require (
1918
github.com/google/go-cmp v0.6.0
2019
github.com/openimsdk/protocol v0.0.69-alpha.37
21-
github.com/openimsdk/tools v0.0.49-alpha.44
20+
github.com/openimsdk/tools v0.0.49-alpha.56
2221
github.com/patrickmn/go-cache v2.1.0+incompatible
2322
golang.org/x/image v0.15.0
2423
golang.org/x/sync v0.6.0

go.sum

+2-2
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,8 @@ github.com/mattn/go-sqlite3 v1.14.22 h1:2gZY6PC6kBnID23Tichd1K+Z0oS6nE/XwU+Vz/5o
2727
github.com/mattn/go-sqlite3 v1.14.22/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y=
2828
github.com/openimsdk/protocol v0.0.69-alpha.37 h1:2gtDkippSBfbXIP++BEQsz4e+qjk86ddnh4b7p40/HY=
2929
github.com/openimsdk/protocol v0.0.69-alpha.37/go.mod h1:OZQA9FR55lseYoN2Ql1XAHYKHJGu7OMNkUbuekrKCM8=
30-
github.com/openimsdk/tools v0.0.49-alpha.44 h1:anefO8hvQwJrYL+V4ifSge/CveZHIpjPeik6BgETuG8=
31-
github.com/openimsdk/tools v0.0.49-alpha.44/go.mod h1:zc0maZ2ohXlHd0ylY5JnCE8uqq/hslhcfcKa6iO5PCU=
30+
github.com/openimsdk/tools v0.0.49-alpha.56 h1:dPUgJEFBV7roleqDmOEezoDooFF222ZQG0qf7mYrFkw=
31+
github.com/openimsdk/tools v0.0.49-alpha.56/go.mod h1:oiSQU5Z6fzjxKFjbqDHImD8EmCIwClU1Rkur1sK12Po=
3232
github.com/patrickmn/go-cache v2.1.0+incompatible h1:HRMgzkcYKYpi3C8ajMPV8OFXaaRUnok+kx1WdO15EQc=
3333
github.com/patrickmn/go-cache v2.1.0+incompatible/go.mod h1:3Qf8kWWT7OJRJbdiICTKqZju1ZixQ/KpMGzzAfe6+WQ=
3434
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package config
2+
3+
import (
4+
"github.com/openimsdk/openim-sdk-core/v3/pkg/constant"
5+
"github.com/openimsdk/openim-sdk-core/v3/sdk_struct"
6+
)
7+
8+
const (
9+
TestIP = "127.0.0.1"
10+
APIAddr = "http://" + TestIP + ":10002"
11+
WsAddr = "ws://" + TestIP + ":10001"
12+
Secret = "openIM123"
13+
PlatformID = constant.WindowsPlatformID
14+
LogLevel = uint32(5)
15+
DataDir = "../"
16+
LogFilePath = "../"
17+
)
18+
19+
func GetConf() sdk_struct.IMConfig {
20+
var cf sdk_struct.IMConfig
21+
cf.ApiAddr = APIAddr
22+
cf.WsAddr = WsAddr
23+
cf.DataDir = DataDir
24+
cf.LogLevel = LogLevel
25+
cf.IsExternalExtensions = true
26+
cf.PlatformID = int32(PlatformID)
27+
cf.LogFilePath = LogFilePath
28+
cf.IsLogStandardOutput = true
29+
return cf
30+
}

integration_test/internal/manager/manager.go

+3-4
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,7 @@ package manager
22

33
import (
44
"context"
5-
"github.com/openimsdk/openim-sdk-core/v3/integration_test/internal/pkg/initialization"
6-
"github.com/openimsdk/openim-sdk-core/v3/integration_test/internal/vars"
5+
"github.com/openimsdk/openim-sdk-core/v3/integration_test/internal/config"
76
"github.com/openimsdk/openim-sdk-core/v3/internal/util"
87
"github.com/openimsdk/openim-sdk-core/v3/pkg/ccontext"
98
"github.com/openimsdk/openim-sdk-core/v3/pkg/constant"
@@ -23,10 +22,10 @@ type MetaManager struct {
2322
}
2423

2524
func NewMetaManager() *MetaManager {
26-
conf := initialization.GetConf()
25+
conf := config.GetConf()
2726
return &MetaManager{
2827
IMConfig: conf,
29-
secret: vars.Secret,
28+
secret: config.Secret,
3029
}
3130
}
3231

integration_test/internal/manager/user_manager.go

+44-6
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package manager
22

33
import (
44
"context"
5+
"github.com/openimsdk/openim-sdk-core/v3/integration_test/internal/config"
56
"github.com/openimsdk/openim-sdk-core/v3/integration_test/internal/pkg/sdk_user_simulator"
67
"github.com/openimsdk/openim-sdk-core/v3/integration_test/internal/pkg/utils"
78
"github.com/openimsdk/openim-sdk-core/v3/integration_test/internal/sdk"
@@ -11,6 +12,7 @@ import (
1112
userPB "github.com/openimsdk/protocol/user"
1213
"github.com/openimsdk/tools/log"
1314
"golang.org/x/sync/errgroup"
15+
"math"
1416
"time"
1517
)
1618

@@ -22,7 +24,7 @@ func NewUserManager(m *MetaManager) *TestUserManager {
2224
return &TestUserManager{m}
2325
}
2426

25-
func (t *TestUserManager) GenUserIDs() []string {
27+
func (t *TestUserManager) GenAllUserIDs() []string {
2628
ids := make([]string, vars.UserNum)
2729
for i := 0; i < vars.UserNum; i++ {
2830
ids[i] = utils.GetUserID(i)
@@ -43,13 +45,16 @@ func (t *TestUserManager) RegisterUsers(ctx context.Context, userIDs ...string)
4345
for _, userID := range userIDs {
4446
users = append(users, &sdkws.UserInfo{UserID: userID, Nickname: userID})
4547
}
46-
return t.PostWithCtx(constant.UserRegister, &userPB.UserRegisterReq{
48+
if err := t.PostWithCtx(constant.UserRegister, &userPB.UserRegisterReq{
4749
Secret: t.GetSecret(),
4850
Users: users,
49-
}, nil)
51+
}, nil); err != nil {
52+
return err
53+
}
54+
return nil
5055
}
5156

52-
func (t *TestUserManager) InitSDKAndLogin(ctx context.Context, userIDs ...string) error {
57+
func (t *TestUserManager) InitSDK(ctx context.Context, userIDs ...string) error {
5358
tm := time.Now()
5459
log.ZDebug(ctx, "initSDKAndLogin begin", "len userIDs", len(userIDs))
5560
defer func() {
@@ -61,11 +66,11 @@ func (t *TestUserManager) InitSDKAndLogin(ctx context.Context, userIDs ...string
6166
for _, userID := range userIDs {
6267
userID := userID
6368
gr.Go(func() error {
64-
token, err := t.GetToken(userID, vars.PlatformID)
69+
token, err := t.GetToken(userID, config.PlatformID)
6570
if err != nil {
6671
return err
6772
}
68-
mgr, err := sdk_user_simulator.InitSDKAndLogin(userID, token, t.IMConfig)
73+
mgr, err := sdk_user_simulator.InitSDK(userID, token, t.IMConfig)
6974
if err != nil {
7075
return err
7176
}
@@ -79,3 +84,36 @@ func (t *TestUserManager) InitSDKAndLogin(ctx context.Context, userIDs ...string
7984
}
8085
return nil
8186
}
87+
88+
func (t *TestUserManager) LoginByRate(ctx context.Context, rate float64) error {
89+
right := int(math.Ceil(rate * float64(vars.UserNum)))
90+
userIDs := vars.UserIDs[:right]
91+
return t.Login(ctx, userIDs...)
92+
}
93+
94+
func (t *TestUserManager) Login(ctx context.Context, userIDs ...string) error {
95+
tm := time.Now()
96+
log.ZDebug(ctx, "login begin", "len userIDs", len(userIDs))
97+
defer func() {
98+
log.ZDebug(ctx, "login end", "time consuming", time.Since(tm))
99+
}()
100+
101+
gr, ctx := errgroup.WithContext(ctx)
102+
gr.SetLimit(vars.ErrGroupCommonLimit)
103+
for _, userID := range userIDs {
104+
userID := userID
105+
gr.Go(func() error {
106+
token, err := t.GetToken(userID, config.PlatformID)
107+
userNum := utils.MustGetUserNum(userID)
108+
err = sdk.TestSDKs[userNum].SDK.Login(ctx, userID, token)
109+
if err != nil {
110+
return err
111+
}
112+
return nil
113+
})
114+
}
115+
if err := gr.Wait(); err != nil {
116+
return err
117+
}
118+
return nil
119+
}

integration_test/internal/pkg/initialization/config.go

-19
This file was deleted.

integration_test/internal/pkg/initialization/flag.go

+10-1
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,25 @@ import (
77

88
func InitFlag() {
99
flag.IntVar(&vars.UserNum, "u", 1000, "user num")
10-
flag.IntVar(&vars.SuperUserNum, "r", 50, "number of users with all friends")
10+
flag.IntVar(&vars.SuperUserNum, "su", 50, "number of users with all friends")
1111
flag.IntVar(&vars.LargeGroupNum, "gl", 50, "number of big group")
1212
flag.IntVar(&vars.CommonGroupNum, "gs", 500, "number of small group")
1313
flag.IntVar(&vars.CommonGroupMemberNum, "gsm", 10, "number of small group member num")
1414
flag.IntVar(&vars.SingleMessageNum, "sm", 5, "number of single message each user send")
1515
flag.IntVar(&vars.GroupMessageNum, "gm", 1, "number of group message each user send")
16+
17+
flag.BoolVar(&vars.ShouldRegister, "reg", false, "determine whether register")
18+
flag.BoolVar(&vars.ShouldCreateGroup, "crg", false, "determine whether create group")
19+
20+
flag.BoolVar(&vars.ShouldCheckGroupNum, "ckgn", false, "determine whether check group num")
21+
22+
flag.Float64Var(&vars.LoginRate, "lgr", 100, "number of login user rate")
1623
}
1724

1825
// SetFlagLimit prevent parameters from exceeding the limit
1926
func SetFlagLimit() {
2027
vars.UserNum = min(vars.UserNum, vars.MaxUserNum)
2128
vars.CommonGroupNum = min(vars.CommonGroupMemberNum, vars.UserNum)
29+
30+
vars.LoginRate = min(vars.LoginRate, 100)
2231
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package initialization
2+
3+
import (
4+
"context"
5+
"github.com/openimsdk/openim-sdk-core/v3/integration_test/internal/manager"
6+
)
7+
8+
func InitSDK(ctx context.Context) error {
9+
userMng := manager.NewUserManager(manager.NewMetaManager())
10+
userIDs := userMng.GenAllUserIDs()
11+
err := userMng.InitSDK(ctx, userIDs...)
12+
if err != nil {
13+
return err
14+
}
15+
return nil
16+
}

integration_test/internal/pkg/sdk_user_simulator/user.go

+4-10
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
11
package sdk_user_simulator
22

33
import (
4-
"github.com/openimsdk/openim-sdk-core/v3/integration_test/internal/vars"
4+
"github.com/openimsdk/openim-sdk-core/v3/integration_test/internal/config"
55
"github.com/openimsdk/openim-sdk-core/v3/sdk_struct"
66

77
"github.com/openimsdk/openim-sdk-core/v3/open_im_sdk"
8-
"github.com/openimsdk/openim-sdk-core/v3/pkg/ccontext"
98
"github.com/openimsdk/openim-sdk-core/v3/pkg/utils"
109
"github.com/openimsdk/openim-sdk-core/v3/version"
1110
"github.com/openimsdk/tools/log"
@@ -20,20 +19,15 @@ func GetRelativeServerTime() int64 {
2019
return utils.GetCurrentTimestampByMill() + timeOffset
2120
}
2221

23-
func InitSDKAndLogin(userID, token string, cf sdk_struct.IMConfig) (*open_im_sdk.LoginMgr, error) {
22+
func InitSDK(userID, token string, cf sdk_struct.IMConfig) (*open_im_sdk.LoginMgr, error) {
2423
userForSDK := open_im_sdk.NewLoginMgr()
2524
var testConnListener testConnListener
2625
userForSDK.InitSDK(cf, &testConnListener)
27-
if err := log.InitFromConfig(userID+"_open-im-sdk-core", "", int(vars.LogLevel), true, false, cf.DataDir, 0, 24, version.Version, false); err != nil {
26+
if err := log.InitFromConfig(userID+"_open-im-sdk-core", "", int(config.LogLevel), true, false, cf.DataDir, 0, 24, version.Version, true); err != nil {
2827
return nil, err
2928
}
3029
SetListener(userForSDK, userID)
31-
32-
ctx := ccontext.WithOperationID(userForSDK.BaseCtx(), utils.OperationIDGenerator())
33-
err := userForSDK.Login(ctx, userID, token)
34-
if err != nil {
35-
return nil, err
36-
}
30+
userForSDK.SetToken(userID, token)
3731
return userForSDK, nil
3832
}
3933

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package checker
2+
3+
import (
4+
"context"
5+
"github.com/openimsdk/tools/log"
6+
)
7+
8+
const (
9+
errChanLen = 10
10+
)
11+
12+
var (
13+
checkErrChan = make(chan error, errChanLen)
14+
)
15+
16+
func InsertToErrChan(ctx context.Context, err error) {
17+
select {
18+
case checkErrChan <- err:
19+
default:
20+
log.ZInfo(ctx, "checkErrChan is full")
21+
}
22+
}
23+
24+
func CloseAndGetCheckErrChan() <-chan error {
25+
close(checkErrChan)
26+
return checkErrChan
27+
}

integration_test/internal/process/checker/group.go

+12-3
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,14 @@ import (
44
"context"
55
"github.com/openimsdk/openim-sdk-core/v3/integration_test/internal/sdk"
66
"github.com/openimsdk/openim-sdk-core/v3/integration_test/internal/vars"
7+
"github.com/openimsdk/tools/errs"
78
"github.com/openimsdk/tools/log"
89
"golang.org/x/sync/errgroup"
910
"sync"
1011
"time"
1112
)
1213

13-
func CheckGroupNum(ctx context.Context) (map[string]*CountChecker, error) {
14+
func CheckGroupNum(ctx context.Context) error {
1415
tm := time.Now()
1516
log.ZDebug(ctx, "checkGroupNum begin")
1617
defer func() {
@@ -42,10 +43,18 @@ func CheckGroupNum(ctx context.Context) (map[string]*CountChecker, error) {
4243
})
4344
}
4445
if err := gr.Wait(); err != nil {
45-
return nil, err
46+
return err
4647
}
4748

48-
return checkers, nil
49+
if len(checkers) != 0 {
50+
for k, ck := range checkers {
51+
log.ZInfo(ctx, "group num un correct", "userID", k, "group num", ck.TotalCount, "correct num", ck.CorrectCount)
52+
}
53+
err := errs.New("check group number un correct!").Wrap()
54+
InsertToErrChan(ctx, err)
55+
}
56+
57+
return nil
4958
}
5059

5160
func calCorrectGroupNum() int {

integration_test/internal/process/v1.go

+5-17
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,7 @@ package process
33
import (
44
"context"
55
"github.com/openimsdk/openim-sdk-core/v3/integration_test/internal/manager"
6-
"github.com/openimsdk/openim-sdk-core/v3/integration_test/internal/process/checker"
7-
"github.com/openimsdk/tools/errs"
6+
"github.com/openimsdk/openim-sdk-core/v3/integration_test/internal/vars"
87
"github.com/openimsdk/tools/log"
98
"time"
109
)
@@ -31,30 +30,19 @@ func ProV1(ctx context.Context) error {
3130
return err
3231
}
3332

34-
checkerMap, err := checker.CheckGroupNum(ctx)
35-
if err != nil {
36-
return err
37-
}
38-
if len(checkerMap) != 0 {
39-
for k, ck := range checkerMap {
40-
log.ZInfo(ctx, "group num un correct", "userID", k, "group num", ck.TotalCount, "correct num", ck.CorrectCount)
41-
}
42-
err = errs.New("check group number un correct!").Wrap()
43-
return err
44-
}
4533
return nil
4634
}
4735

4836
func RegisterAndLogin(ctx context.Context, userMng *manager.TestUserManager) error {
4937
t := time.Now()
5038
log.ZDebug(ctx, "registerAndLogin begin")
5139

52-
userIDs = userMng.GenUserIDs()
40+
userIDs = vars.UserIDs
5341
err := userMng.RegisterUsers(ctx, userIDs...)
5442
if err != nil {
5543
return err
5644
}
57-
err = userMng.InitSDKAndLogin(ctx, userIDs...)
45+
err = userMng.InitSDK(ctx, userIDs...)
5846
if err != nil {
5947
return err
6048
}
@@ -67,8 +55,8 @@ func Login(ctx context.Context, userMng *manager.TestUserManager) error {
6755
t := time.Now()
6856
log.ZDebug(ctx, "login begin")
6957

70-
userIDs = userMng.GenUserIDs()
71-
err := userMng.InitSDKAndLogin(ctx, userIDs...)
58+
userIDs = vars.UserIDs
59+
err := userMng.Login(ctx, userIDs...)
7260
if err != nil {
7361
return err
7462
}

0 commit comments

Comments
 (0)