fix: [2.5] improve error handling and unit tests for InitMetaCache function (#40324)

- issue: #40320
- pr: #40322

Signed-off-by: SimFG <bang.fu@zilliz.com>
This commit is contained in:
SimFG 2025-03-05 11:08:13 +08:00 committed by GitHub
parent cc7d4ce399
commit 6ab8e84f1e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 37 additions and 1 deletions

View File

@ -361,7 +361,7 @@ func InitMetaCache(ctx context.Context, rootCoord types.RootCoordClient, queryCo
// The privilege info is a little more. And to get this info, the query operation of involving multiple table queries is required. // The privilege info is a little more. And to get this info, the query operation of involving multiple table queries is required.
resp, err := rootCoord.ListPolicy(ctx, &internalpb.ListPolicyRequest{}) resp, err := rootCoord.ListPolicy(ctx, &internalpb.ListPolicyRequest{})
if err != nil { if err = merr.CheckRPCCall(resp, err); err != nil {
log.Error("fail to init meta cache", zap.Error(err)) log.Error("fail to init meta cache", zap.Error(err))
return err return err
} }

View File

@ -385,6 +385,42 @@ func TestMetaCacheGetCollectionWithUpdate(t *testing.T) {
}) })
} }
func TestMetaCache_InitCache(t *testing.T) {
t.Run("success", func(t *testing.T) {
ctx := context.Background()
rootCoord := mocks.NewMockRootCoordClient(t)
queryCoord := mocks.NewMockQueryCoordClient(t)
queryCoord.EXPECT().ShowCollections(mock.Anything, mock.Anything).Return(&querypb.ShowCollectionsResponse{}, nil).Maybe()
rootCoord.EXPECT().ListPolicy(mock.Anything, mock.Anything, mock.Anything).Return(&internalpb.ListPolicyResponse{Status: merr.Success()}, nil).Once()
mgr := newShardClientMgr()
err := InitMetaCache(ctx, rootCoord, queryCoord, mgr)
assert.NoError(t, err)
})
t.Run("failed to list policy", func(t *testing.T) {
ctx := context.Background()
rootCoord := mocks.NewMockRootCoordClient(t)
queryCoord := mocks.NewMockQueryCoordClient(t)
rootCoord.EXPECT().ListPolicy(mock.Anything, mock.Anything, mock.Anything).Return(
&internalpb.ListPolicyResponse{Status: merr.Status(errors.New("mock list policy error"))},
nil).Once()
mgr := newShardClientMgr()
err := InitMetaCache(ctx, rootCoord, queryCoord, mgr)
assert.Error(t, err)
})
t.Run("rpc error", func(t *testing.T) {
ctx := context.Background()
rootCoord := mocks.NewMockRootCoordClient(t)
queryCoord := mocks.NewMockQueryCoordClient(t)
rootCoord.EXPECT().ListPolicy(mock.Anything, mock.Anything, mock.Anything).Return(
nil, errors.New("mock list policy rpc errorr")).Once()
mgr := newShardClientMgr()
err := InitMetaCache(ctx, rootCoord, queryCoord, mgr)
assert.Error(t, err)
})
}
func TestMetaCache_GetCollectionName(t *testing.T) { func TestMetaCache_GetCollectionName(t *testing.T) {
ctx := context.Background() ctx := context.Background()
rootCoord := &MockRootCoordClientInterface{} rootCoord := &MockRootCoordClientInterface{}