Zhen Ye c171280f63
enhance: support replicate message in wal. (#44456)
issue: #44123

- support replicate message  in wal of milvus.
- support CDC-replicate recovery from wal.
- fix some CDC replicator bugs

Signed-off-by: chyezh <chyezh@outlook.com>
2025-09-22 17:06:11 +08:00

42 lines
1.3 KiB
Go

package recovery
import (
"math/rand"
"testing"
"time"
"github.com/stretchr/testify/mock"
"github.com/milvus-io/milvus/internal/streamingnode/server/wal/utility"
"github.com/milvus-io/milvus/pkg/v2/mocks/streaming/mock_walimpls"
"github.com/milvus-io/milvus/pkg/v2/streaming/util/types"
"github.com/milvus-io/milvus/pkg/v2/streaming/walimpls/impls/rmq"
"github.com/milvus-io/milvus/pkg/v2/util/paramtable"
"github.com/milvus-io/milvus/pkg/v2/util/tsoutil"
)
func TestTruncator(t *testing.T) {
w := mock_walimpls.NewMockWALImpls(t)
w.EXPECT().Truncate(mock.Anything, mock.Anything).Return(nil)
paramtable.Get().Save(paramtable.Get().StreamingCfg.WALTruncateSampleInterval.Key, "1ms")
paramtable.Get().Save(paramtable.Get().StreamingCfg.WALTruncateRetentionInterval.Key, "2ms")
truncator := newSamplingTruncator(&WALCheckpoint{
MessageID: rmq.NewRmqID(1),
TimeTick: 1,
Magic: utility.RecoveryMagicStreamingInitialized,
}, w, newRecoveryStorageMetrics(types.PChannelInfo{Name: "test", Term: 1}))
for i := 0; i < 20; i++ {
time.Sleep(1 * time.Millisecond)
for rand.Int31n(3) < 1 {
truncator.SampleCheckpoint(&WALCheckpoint{
MessageID: rmq.NewRmqID(int64(i)),
TimeTick: tsoutil.ComposeTSByTime(time.Now(), 0),
Magic: utility.RecoveryMagicStreamingInitialized,
})
}
}
truncator.Close()
}