Zhen Ye 66cc194ab2
enhance: add partition gc at streaming arch (#42179)
issue: #41976

- make drop partition message as a broadcast message.
- add gc when drop partition message is acked.
- add a call back to handle the broadcast message when ack.
- the ack operation of broadcast message will retry until success.

Signed-off-by: chyezh <chyezh@outlook.com>
2025-05-29 23:20:30 +08:00

51 lines
1.3 KiB
Go

package registry
import (
"context"
"testing"
"time"
"github.com/cockroachdb/errors"
"github.com/stretchr/testify/assert"
"github.com/milvus-io/milvus/pkg/v2/mocks/streaming/util/mock_message"
"github.com/milvus-io/milvus/pkg/v2/streaming/util/message"
)
func TestMessageCallbackRegistration(t *testing.T) {
// Reset callbacks before test
resetMessageAckCallbacks()
// Test registering a callback
called := false
callback := func(ctx context.Context, msg message.MutableMessage) error {
called = true
return nil
}
// Register callback for DropPartition message type
RegisterMessageAckCallback(message.MessageTypeDropPartition, callback)
// Verify callback was registered
callbackFuture, ok := messageAckCallbacks[message.MessageTypeDropPartition]
assert.True(t, ok)
assert.NotNil(t, callbackFuture)
// Create a mock message
msg := mock_message.NewMockMutableMessage(t)
msg.EXPECT().MessageType().Return(message.MessageTypeDropPartition)
// Call the callback
err := CallMessageAckCallback(context.Background(), msg)
assert.NoError(t, err)
assert.True(t, called)
resetMessageAckCallbacks()
ctx, cancel := context.WithTimeout(context.Background(), time.Millisecond)
defer cancel()
err = CallMessageAckCallback(ctx, msg)
assert.Error(t, err)
assert.True(t, errors.Is(err, context.DeadlineExceeded))
}