From 9025d8bd90382fef688d004a1516182ced5bb27f Mon Sep 17 00:00:00 2001 From: wangchuxiao Date: Tue, 1 Nov 2022 16:54:23 +0800 Subject: [PATCH] test cron --- internal/cron_task/clear_msg_test.go | 34 ++++++++++++++++++++++++++++ internal/cron_task/cron_task.go | 8 ++++--- pkg/common/db/mongoModel.go | 6 ++--- 3 files changed, 42 insertions(+), 6 deletions(-) create mode 100644 internal/cron_task/clear_msg_test.go diff --git a/internal/cron_task/clear_msg_test.go b/internal/cron_task/clear_msg_test.go new file mode 100644 index 000000000..b1621c26d --- /dev/null +++ b/internal/cron_task/clear_msg_test.go @@ -0,0 +1,34 @@ +package cronTask + +import ( + "Open_IM/pkg/common/constant" + "Open_IM/pkg/common/log" + "Open_IM/pkg/utils" + "testing" +) + +func TestDeleteMongoMsgAndResetRedisSeq(t *testing.T) { + operationID := getCronTaskOperationID() + testUserIDList := []string{"test_del_id1", "test_del_id2", "test_del_id3", "test_del_id4", "test_del_id5"} + for _, userID := range testUserIDList { + operationID = userID + "-" + operationID + if err := DeleteMongoMsgAndResetRedisSeq(operationID, userID); err != nil { + t.Error("checkMaxSeqWithMongo failed", userID) + } + if err := checkMaxSeqWithMongo(operationID, userID, constant.WriteDiffusion); err != nil { + t.Error("checkMaxSeqWithMongo failed", userID) + } + } + + testWorkingGroupIDList := []string{"test_del_id1", "test_del_id2", "test_del_id3", "test_del_id4", "test_del_id5"} + for _, groupID := range testWorkingGroupIDList { + operationID = groupID + "-" + operationID + log.NewDebug(operationID, utils.GetSelfFuncName(), "groupID:", groupID, "userIDList:", testUserIDList) + if err := ResetUserGroupMinSeq(operationID, groupID, testUserIDList); err != nil { + t.Error("checkMaxSeqWithMongo failed", groupID) + } + if err := checkMaxSeqWithMongo(operationID, groupID, constant.ReadDiffusion); err != nil { + t.Error("checkMaxSeqWithMongo failed", groupID) + } + } +} diff --git a/internal/cron_task/cron_task.go b/internal/cron_task/cron_task.go index 59a06fef1..62543e4e4 100644 --- a/internal/cron_task/cron_task.go +++ b/internal/cron_task/cron_task.go @@ -20,6 +20,7 @@ func StartCronTask() { c := cron.New() fmt.Println("config", config.Config.Mongo.ChatRecordsClearTime) _, err := c.AddFunc(config.Config.Mongo.ChatRecordsClearTime, func() { + // user msg clear operationID := getCronTaskOperationID() log.NewInfo(operationID, "====================== start del cron task ======================") userIDList, err := im_mysql_model.SelectAllUserID() @@ -37,8 +38,10 @@ func StartCronTask() { log.NewError(operationID, utils.GetSelfFuncName(), err.Error()) } + // working group msg clear workingGroupIDList, err := im_mysql_model.GetGroupIDListByGroupType(constant.WorkingGroup) if err == nil { + log.NewDebug(operationID, utils.GetSelfFuncName(), "workingGroupIDList: ", workingGroupIDList) for _, groupID := range workingGroupIDList { userIDList, err = rocksCache.GetGroupMemberIDListFromCache(groupID) if err != nil { @@ -55,20 +58,19 @@ func StartCronTask() { } } else { log.NewError(operationID, utils.GetSelfFuncName(), err.Error()) - return } log.NewInfo(operationID, "====================== start del cron finished ======================") }) if err != nil { - fmt.Println("start cron failed", err.Error()) + fmt.Println("start cron failed", err.Error(), config.Config.Mongo.ChatRecordsClearTime) panic(err) } c.Start() fmt.Println("start cron task success") for { - time.Sleep(time.Second) + time.Sleep(10 * time.Second) } } diff --git a/pkg/common/db/mongoModel.go b/pkg/common/db/mongoModel.go index 8695bca35..2234e0306 100644 --- a/pkg/common/db/mongoModel.go +++ b/pkg/common/db/mongoModel.go @@ -264,17 +264,17 @@ func (d *DataBases) GetUserMsgListByIndex(ID string, index int64) (*UserChat, er c := d.mongoClient.Database(config.Config.Mongo.DBDatabase).Collection(cChat) regex := fmt.Sprintf("^%s", ID) findOpts := options.Find().SetLimit(1).SetSkip(index).SetSort(bson.M{"uid": 1}) - var msgs []UserChat + var msgs []*UserChat cursor, err := c.Find(ctx, bson.M{"uid": bson.M{"$regex": regex}}, findOpts) if err != nil { - return nil, err + return nil, utils.Wrap(err, "") } err = cursor.Decode(&msgs) if err != nil { return nil, utils.Wrap(err, "") } if len(msgs) > 0 { - return &msgs[0], err + return msgs[0], err } else { return nil, errors.New("get msg list failed") }