mirror of
https://gitee.com/milvus-io/milvus.git
synced 2026-01-07 19:31:51 +08:00
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>
51 lines
1.3 KiB
Go
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))
|
|
}
|