@@ -2,6 +2,7 @@ package manager
2
2
3
3
import (
4
4
"context"
5
+ "github.com/openimsdk/openim-sdk-core/v3/integration_test/internal/config"
5
6
"github.com/openimsdk/openim-sdk-core/v3/integration_test/internal/pkg/sdk_user_simulator"
6
7
"github.com/openimsdk/openim-sdk-core/v3/integration_test/internal/pkg/utils"
7
8
"github.com/openimsdk/openim-sdk-core/v3/integration_test/internal/sdk"
@@ -11,6 +12,7 @@ import (
11
12
userPB "github.com/openimsdk/protocol/user"
12
13
"github.com/openimsdk/tools/log"
13
14
"golang.org/x/sync/errgroup"
15
+ "math"
14
16
"time"
15
17
)
16
18
@@ -22,7 +24,7 @@ func NewUserManager(m *MetaManager) *TestUserManager {
22
24
return & TestUserManager {m }
23
25
}
24
26
25
- func (t * TestUserManager ) GenUserIDs () []string {
27
+ func (t * TestUserManager ) GenAllUserIDs () []string {
26
28
ids := make ([]string , vars .UserNum )
27
29
for i := 0 ; i < vars .UserNum ; i ++ {
28
30
ids [i ] = utils .GetUserID (i )
@@ -43,13 +45,16 @@ func (t *TestUserManager) RegisterUsers(ctx context.Context, userIDs ...string)
43
45
for _ , userID := range userIDs {
44
46
users = append (users , & sdkws.UserInfo {UserID : userID , Nickname : userID })
45
47
}
46
- return t .PostWithCtx (constant .UserRegister , & userPB.UserRegisterReq {
48
+ if err := t .PostWithCtx (constant .UserRegister , & userPB.UserRegisterReq {
47
49
Secret : t .GetSecret (),
48
50
Users : users ,
49
- }, nil )
51
+ }, nil ); err != nil {
52
+ return err
53
+ }
54
+ return nil
50
55
}
51
56
52
- func (t * TestUserManager ) InitSDKAndLogin (ctx context.Context , userIDs ... string ) error {
57
+ func (t * TestUserManager ) InitSDK (ctx context.Context , userIDs ... string ) error {
53
58
tm := time .Now ()
54
59
log .ZDebug (ctx , "initSDKAndLogin begin" , "len userIDs" , len (userIDs ))
55
60
defer func () {
@@ -61,11 +66,11 @@ func (t *TestUserManager) InitSDKAndLogin(ctx context.Context, userIDs ...string
61
66
for _ , userID := range userIDs {
62
67
userID := userID
63
68
gr .Go (func () error {
64
- token , err := t .GetToken (userID , vars .PlatformID )
69
+ token , err := t .GetToken (userID , config .PlatformID )
65
70
if err != nil {
66
71
return err
67
72
}
68
- mgr , err := sdk_user_simulator .InitSDKAndLogin (userID , token , t .IMConfig )
73
+ mgr , err := sdk_user_simulator .InitSDK (userID , token , t .IMConfig )
69
74
if err != nil {
70
75
return err
71
76
}
@@ -79,3 +84,36 @@ func (t *TestUserManager) InitSDKAndLogin(ctx context.Context, userIDs ...string
79
84
}
80
85
return nil
81
86
}
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
+ }
0 commit comments