(t *testing.T)
| 454 | } |
| 455 | |
| 456 | func TestDB_MergeForZSet(t *testing.T) { |
| 457 | runForMergeModes(t, func(t *testing.T, mode mergeTestMode) { |
| 458 | bucket := "bucket" |
| 459 | key := testutils.GetTestBytes(0) |
| 460 | n := 1000 |
| 461 | opts := DefaultOptions |
| 462 | opts.SegmentSize = KB |
| 463 | opts.EnableMergeV2 = mode.enableMergeV2 |
| 464 | opts.Dir = fmt.Sprintf("/tmp/test-zset-merge-%s/", mode.name) |
| 465 | |
| 466 | for _, idxMode := range []EntryIdxMode{HintKeyValAndRAMIdxMode, HintKeyAndRAMIdxMode} { |
| 467 | removeDir(opts.Dir) |
| 468 | opts.EntryIdxMode = idxMode |
| 469 | db, err := Open(opts) |
| 470 | if exist := db.bucketMgr.ExistBucket(DataStructureSortedSet, bucket); !exist { |
| 471 | txCreateBucket(t, db, DataStructureSortedSet, bucket, nil) |
| 472 | } |
| 473 | require.NoError(t, err) |
| 474 | |
| 475 | err = db.Merge() |
| 476 | require.Equal(t, ErrDontNeedMerge, err) |
| 477 | |
| 478 | for i := 0; i < n; i++ { |
| 479 | score, _ := strconv2.IntToFloat64(i) |
| 480 | txZAdd(t, db, bucket, key, testutils.GetTestBytes(i), score, nil, nil) |
| 481 | } |
| 482 | |
| 483 | for i := 0; i < n; i++ { |
| 484 | score, _ := strconv2.IntToFloat64(i) |
| 485 | txZScore(t, db, bucket, key, testutils.GetTestBytes(i), score, nil) |
| 486 | } |
| 487 | |
| 488 | for i := 0; i < n/2; i++ { |
| 489 | txZRem(t, db, bucket, key, testutils.GetTestBytes(i), nil) |
| 490 | } |
| 491 | |
| 492 | for i := 0; i < n/2; i++ { |
| 493 | score, _ := strconv2.IntToFloat64(i) |
| 494 | txZScore(t, db, bucket, key, testutils.GetTestBytes(i), score, ErrSortedSetMemberNotExist) |
| 495 | } |
| 496 | |
| 497 | for i := n / 2; i < n; i++ { |
| 498 | score, _ := strconv2.IntToFloat64(i) |
| 499 | txZScore(t, db, bucket, key, testutils.GetTestBytes(i), score, nil) |
| 500 | } |
| 501 | |
| 502 | dbCnt, err := db.getRecordCount() |
| 503 | require.NoError(t, err) |
| 504 | require.Equal(t, int64(n/2), dbCnt) |
| 505 | |
| 506 | require.NoError(t, db.Merge()) |
| 507 | |
| 508 | dbCnt, err = db.getRecordCount() |
| 509 | require.NoError(t, err) |
| 510 | require.Equal(t, int64(n/2), dbCnt) |
| 511 | |
| 512 | for i := 0; i < n/2; i++ { |
| 513 | score, _ := strconv2.IntToFloat64(i) |
nothing calls this directly
no test coverage detected