diff --git a/pkg/common/db/controller/msg_test.go b/pkg/common/db/controller/msg_test.go index 597f95842..cb1d58d8f 100644 --- a/pkg/common/db/controller/msg_test.go +++ b/pkg/common/db/controller/msg_test.go @@ -2,9 +2,13 @@ package controller import ( "context" + "encoding/json" + "fmt" "github.com/OpenIMSDK/Open-IM-Server/pkg/common/config" "github.com/OpenIMSDK/Open-IM-Server/pkg/common/db/unrelation" "go.mongodb.org/mongo-driver/bson" + "math/rand" + "sort" "strconv" "sync" "testing" @@ -51,6 +55,9 @@ func Test_BatchInsertChat2DB(t *testing.T) { c := mongo.GetDatabase().Collection("msg") ch := make(chan int) + rand.Seed(time.Now().UnixNano()) + + index := 10 var wg sync.WaitGroup for i := 0; i < 1000; i++ { @@ -58,11 +65,18 @@ func Test_BatchInsertChat2DB(t *testing.T) { go func() { defer wg.Done() <-ch + var arr []string for i := 0; i < 500; i++ { + arr = append(arr, strconv.Itoa(i+1)) + } + rand.Shuffle(len(arr), func(i, j int) { + arr[i], arr[j] = arr[j], arr[i] + }) + for _, s := range arr { filter := bson.M{"doc_id": "test:0"} update := bson.M{ "$addToSet": bson.M{ - "msgs.7.del_list": bson.M{"$each": []string{strconv.Itoa(i + 1)}}, + fmt.Sprintf("msgs.%d.del_list", index): bson.M{"$each": []string{s}}, }, } _, err := c.UpdateOne(context.Background(), filter, update) @@ -78,11 +92,18 @@ func Test_BatchInsertChat2DB(t *testing.T) { go func() { defer wg.Done() <-ch + var arr []string for i := 0; i < 500; i++ { + arr = append(arr, strconv.Itoa(1001+i)) + } + rand.Shuffle(len(arr), func(i, j int) { + arr[i], arr[j] = arr[j], arr[i] + }) + for _, s := range arr { filter := bson.M{"doc_id": "test:0"} update := bson.M{ "$addToSet": bson.M{ - "msgs.7.read_list": bson.M{"$each": []string{strconv.Itoa(200 + i + 1)}}, + fmt.Sprintf("msgs.%d.read_list", index): bson.M{"$each": []string{s}}, }, } _, err := c.UpdateOne(context.Background(), filter, update) @@ -100,3 +121,524 @@ func Test_BatchInsertChat2DB(t *testing.T) { wg.Wait() } + +func TestName(t *testing.T) { + s := ` [ + 189, + 498, + 310, + 163, + 313, + 335, + 327, + 342, + 123, + 97, + 4, + 362, + 210, + 298, + 436, + 9, + 369, + 432, + 132, + 69, + 248, + 93, + 91, + 112, + 145, + 194, + 84, + 443, + 179, + 241, + 257, + 237, + 169, + 460, + 33, + 441, + 126, + 187, + 390, + 402, + 51, + 35, + 455, + 175, + 389, + 61, + 309, + 467, + 492, + 453, + 159, + 276, + 165, + 417, + 173, + 157, + 12, + 209, + 269, + 36, + 226, + 356, + 92, + 267, + 482, + 318, + 219, + 119, + 176, + 245, + 74, + 13, + 450, + 196, + 215, + 28, + 167, + 366, + 442, + 201, + 341, + 68, + 2, + 484, + 328, + 44, + 423, + 403, + 105, + 109, + 480, + 271, + 134, + 336, + 299, + 148, + 365, + 135, + 277, + 87, + 244, + 301, + 218, + 59, + 280, + 283, + 55, + 499, + 133, + 316, + 407, + 146, + 56, + 394, + 386, + 297, + 285, + 137, + 58, + 214, + 142, + 6, + 124, + 48, + 60, + 212, + 75, + 50, + 412, + 458, + 127, + 45, + 266, + 202, + 368, + 138, + 260, + 41, + 193, + 88, + 114, + 410, + 95, + 382, + 416, + 281, + 434, + 359, + 98, + 462, + 300, + 352, + 230, + 247, + 117, + 64, + 287, + 405, + 224, + 19, + 259, + 305, + 220, + 150, + 477, + 111, + 448, + 78, + 103, + 7, + 385, + 151, + 429, + 325, + 273, + 317, + 470, + 454, + 170, + 223, + 5, + 307, + 396, + 315, + 53, + 154, + 446, + 24, + 255, + 227, + 76, + 456, + 250, + 321, + 330, + 391, + 355, + 49, + 479, + 387, + 216, + 39, + 251, + 312, + 217, + 136, + 262, + 322, + 344, + 466, + 242, + 100, + 388, + 38, + 323, + 376, + 379, + 279, + 239, + 85, + 306, + 181, + 485, + 120, + 333, + 334, + 17, + 395, + 81, + 374, + 147, + 139, + 185, + 42, + 1, + 424, + 199, + 225, + 113, + 438, + 128, + 338, + 156, + 493, + 46, + 160, + 11, + 3, + 171, + 464, + 62, + 238, + 431, + 440, + 302, + 65, + 308, + 348, + 125, + 174, + 195, + 77, + 392, + 249, + 82, + 350, + 444, + 232, + 186, + 494, + 384, + 275, + 129, + 294, + 246, + 357, + 102, + 96, + 73, + 15, + 263, + 296, + 236, + 29, + 340, + 152, + 149, + 143, + 437, + 172, + 190, + 34, + 158, + 254, + 295, + 483, + 397, + 337, + 72, + 343, + 178, + 404, + 270, + 346, + 205, + 377, + 486, + 497, + 370, + 414, + 240, + 360, + 490, + 94, + 256, + 8, + 54, + 398, + 183, + 228, + 162, + 399, + 289, + 83, + 86, + 197, + 243, + 57, + 25, + 288, + 488, + 372, + 168, + 206, + 188, + 491, + 452, + 353, + 478, + 421, + 221, + 430, + 184, + 204, + 26, + 211, + 140, + 155, + 468, + 161, + 420, + 303, + 30, + 449, + 131, + 500, + 20, + 71, + 79, + 445, + 425, + 293, + 411, + 400, + 320, + 474, + 272, + 413, + 329, + 177, + 122, + 21, + 347, + 314, + 451, + 101, + 367, + 311, + 40, + 476, + 415, + 418, + 363, + 282, + 469, + 89, + 274, + 481, + 475, + 203, + 268, + 393, + 261, + 200, + 121, + 164, + 472, + 10, + 284, + 14, + 358, + 153, + 383, + 67, + 473, + 373, + 191, + 144, + 16, + 345, + 361, + 433, + 116, + 331, + 489, + 66, + 106, + 487, + 426, + 99, + 27, + 141, + 264, + 439, + 371, + 213, + 18, + 253, + 292, + 130, + 409, + 278, + 419, + 90, + 496, + 447, + 465, + 461, + 339, + 80, + 31, + 70, + 233, + 326, + 37, + 265, + 252, + 222, + 118, + 198, + 406, + 286, + 380, + 104, + 304, + 351, + 408, + 180, + 22, + 364, + 381, + 401, + 234, + 375, + 459, + 319, + 229, + 207, + 291, + 52, + 463, + 427, + 23, + 235, + 32, + 208, + 192, + 349, + 231, + 354, + 435, + 182, + 428, + 332, + 378, + 290, + 108, + 258, + 471, + 115, + 47, + 457, + 166, + 43, + 495, + 63, + 110, + 107, + 422, + 324 + ]` + + var arr []int + + if err := json.Unmarshal([]byte(s), &arr); err != nil { + panic(err) + } + + sort.Ints(arr) + + for i, v := range arr { + fmt.Println(i, v, v == i+1) + if v != i+1 { + panic(fmt.Sprintf("expected %d, got %d", i+1, v)) + } + } + +}