From f33fba1d4f81ada620af7b24df2823f5154fd94f Mon Sep 17 00:00:00 2001 From: Joram Wilander Date: Thu, 17 Feb 2022 17:48:51 -0500 Subject: [PATCH] Add new /test dms command (#19565) * Add new /test dms command * Remove useless team get --- app/slashcommands/auto_channels.go | 20 ++++++++++++++++++++ app/slashcommands/command_loadtest.go | 26 ++++++++++++++++++++++++++ 2 files changed, 46 insertions(+) diff --git a/app/slashcommands/auto_channels.go b/app/slashcommands/auto_channels.go index c8b5c8b920..f2db5c5e7f 100644 --- a/app/slashcommands/auto_channels.go +++ b/app/slashcommands/auto_channels.go @@ -74,3 +74,23 @@ func (cfg *AutoChannelCreator) CreateTestChannels(c *request.Context, num utils. return channels, nil } + +func (cfg *AutoChannelCreator) CreateTestDMs(c *request.Context, num utils.Range) ([]*model.Channel, error) { + numDMs := utils.RandIntFromRange(num) + dms := make([]*model.Channel, numDMs) + + users, err := cfg.a.GetUsers(&model.UserGetOptions{Page: 0, PerPage: numDMs}) + if err != nil { + return nil, err + } + + for i, user := range users { + var err *model.AppError + dms[i], err = cfg.a.GetOrCreateDirectChannel(c, cfg.userID, user.Id) + if err != nil { + return nil, err + } + } + + return dms, nil +} diff --git a/app/slashcommands/command_loadtest.go b/app/slashcommands/command_loadtest.go index a71a524039..0b744637fa 100644 --- a/app/slashcommands/command_loadtest.go +++ b/app/slashcommands/command_loadtest.go @@ -45,6 +45,12 @@ var usage = `Mattermost testing commands to help configure the system Example: /test channels fuzz 5 10 + DMs - Add a specified number of DMs for current user. Requires enough users to be loaded. + /test dms + + Example: + /test dms 5 10 + ThreadedPost - create a large threaded post /test threaded_post @@ -145,6 +151,10 @@ func (lt *LoadTestProvider) doCommand(a *app.App, c *request.Context, args *mode return lt.ChannelsCommand(a, c, args, message) } + if strings.HasPrefix(message, "dms") { + return lt.DMsCommand(a, c, args, message) + } + if strings.HasPrefix(message, "posts") { return lt.PostsCommand(a, c, args, message) } @@ -333,6 +343,22 @@ func (*LoadTestProvider) ChannelsCommand(a *app.App, c *request.Context, args *m return &model.CommandResponse{Text: "Added channels", ResponseType: model.CommandResponseTypeEphemeral}, nil } +func (*LoadTestProvider) DMsCommand(a *app.App, c *request.Context, args *model.CommandArgs, message string) (*model.CommandResponse, error) { + cmd := strings.TrimSpace(strings.TrimPrefix(message, "dms")) + + channelsr, ok := parseRange(cmd, "") + if !ok { + channelsr = utils.Range{Begin: 2, End: 5} + } + + channelCreator := NewAutoChannelCreator(a, nil, args.UserId) + if _, err := channelCreator.CreateTestDMs(c, channelsr); err != nil { + return &model.CommandResponse{Text: "Failed to create test DMs: " + err.Error(), ResponseType: model.CommandResponseTypeEphemeral}, err + } + + return &model.CommandResponse{Text: "Added DMs", ResponseType: model.CommandResponseTypeEphemeral}, nil +} + func (*LoadTestProvider) ThreadedPostCommand(a *app.App, c *request.Context, args *model.CommandArgs, message string) (*model.CommandResponse, error) { var usernames []string options := &model.UserGetOptions{InTeamId: args.TeamId, Page: 0, PerPage: 1000}