Implement GetIndexStatistics interface (#24589)

Signed-off-by: wayblink <anyang.wang@zilliz.com>
pull/24807/head
wayblink 2023-06-12 10:26:38 +08:00 committed by GitHub
parent 6511ca78e5
commit 5ef794e8db
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
22 changed files with 1197 additions and 633 deletions

View File

@ -299,6 +299,9 @@ mock-rootcoord:
mock-datacoord:
mockery --name=DataCoord --dir=$(PWD)/internal/types --output=$(PWD)/internal/mocks --filename=mock_datacoord.go --with-expecter
mock-indexcoord:
mockery --name=IndexCoord --dir=$(PWD)/internal/types --output=$(PWD)/internal/mocks --filename=mock_indexcoord.go --with-expecter
mock-tnx-kv:
mockery --name=TxnKV --dir=$(PWD)/internal/kv --output=$(PWD)/internal/kv/mocks --filename=TxnKV.go --with-expecter

View File

@ -62,7 +62,7 @@ func Test_garbageCollector_basic(t *testing.T) {
assert.NoError(t, err)
assert.NotNil(t, segRefer)
indexCoord := mocks.NewMockIndexCoord(t)
indexCoord := mocks.NewIndexCoord(t)
t.Run("normal gc", func(t *testing.T) {
gc := newGarbageCollector(meta, newMockHandler(), segRefer, indexCoord, GcOption{
@ -148,7 +148,7 @@ func Test_garbageCollector_scan(t *testing.T) {
},
}
indexCoord := mocks.NewMockIndexCoord(t)
indexCoord := mocks.NewIndexCoord(t)
gc := newGarbageCollector(meta, newMockHandler(), segRefer, indexCoord, GcOption{
cli: cli,
enabled: true,
@ -170,7 +170,7 @@ func Test_garbageCollector_scan(t *testing.T) {
})
t.Run("missing all but save tolerance", func(t *testing.T) {
indexCoord := mocks.NewMockIndexCoord(t)
indexCoord := mocks.NewIndexCoord(t)
gc := newGarbageCollector(meta, newMockHandler(), segRefer, indexCoord, GcOption{
cli: cli,
enabled: true,
@ -196,7 +196,7 @@ func Test_garbageCollector_scan(t *testing.T) {
err = meta.AddSegment(segment)
require.NoError(t, err)
indexCoord := mocks.NewMockIndexCoord(t)
indexCoord := mocks.NewIndexCoord(t)
gc := newGarbageCollector(meta, newMockHandler(), segRefer, indexCoord, GcOption{
cli: cli,
enabled: true,
@ -225,7 +225,7 @@ func Test_garbageCollector_scan(t *testing.T) {
err = meta.AddSegment(segment)
require.NoError(t, err)
indexCoord := mocks.NewMockIndexCoord(t)
indexCoord := mocks.NewIndexCoord(t)
gc := newGarbageCollector(meta, newMockHandler(), segRefer, indexCoord, GcOption{
cli: cli,
enabled: true,
@ -242,7 +242,7 @@ func Test_garbageCollector_scan(t *testing.T) {
gc.close()
})
t.Run("missing gc all", func(t *testing.T) {
indexCoord := mocks.NewMockIndexCoord(t)
indexCoord := mocks.NewIndexCoord(t)
gc := newGarbageCollector(meta, newMockHandler(), segRefer, indexCoord, GcOption{
cli: cli,
enabled: true,
@ -264,7 +264,7 @@ func Test_garbageCollector_scan(t *testing.T) {
})
t.Run("list object with error", func(t *testing.T) {
indexCoord := mocks.NewMockIndexCoord(t)
indexCoord := mocks.NewIndexCoord(t)
gc := newGarbageCollector(meta, newMockHandler(), segRefer, indexCoord, GcOption{
cli: cli,
enabled: true,

View File

@ -2412,8 +2412,8 @@ func TestGetQueryVChanPositions(t *testing.T) {
},
},
}
svr.indexCoord = mocks.NewMockIndexCoord(t)
svr.indexCoord.(*mocks.MockIndexCoord).EXPECT().GetIndexInfos(mock.Anything, mock.Anything).Return(mockResp, nil)
svr.indexCoord = mocks.NewIndexCoord(t)
svr.indexCoord.(*mocks.IndexCoord).EXPECT().GetIndexInfos(mock.Anything, mock.Anything).Return(mockResp, nil)
t.Run("get unexisted channel", func(t *testing.T) {
vchan, err := svr.handler.GetQueryVChanPositions(&channel{Name: "chx1", CollectionID: 0}, allPartitionID)
@ -2462,8 +2462,8 @@ func TestGetQueryVChanPositions(t *testing.T) {
})
t.Run("filter non indexed segments", func(t *testing.T) {
svr.indexCoord = mocks.NewMockIndexCoord(t)
svr.indexCoord.(*mocks.MockIndexCoord).EXPECT().GetIndexInfos(mock.Anything, mock.Anything).Return(
svr.indexCoord = mocks.NewIndexCoord(t)
svr.indexCoord.(*mocks.IndexCoord).EXPECT().GetIndexInfos(mock.Anything, mock.Anything).Return(
&indexpb.GetIndexInfoResponse{Status: &commonpb.Status{ErrorCode: commonpb.ErrorCode_Success}}, nil)
vchan, err := svr.handler.GetQueryVChanPositions(&channel{Name: "ch1", CollectionID: 0}, allPartitionID)
@ -2699,8 +2699,8 @@ func TestGetQueryVChanPositions_Retrieve_unIndexed(t *testing.T) {
},
},
}
svr.indexCoord = mocks.NewMockIndexCoord(t)
svr.indexCoord.(*mocks.MockIndexCoord).EXPECT().GetIndexInfos(mock.Anything, mock.Anything).Return(mockResp, nil)
svr.indexCoord = mocks.NewIndexCoord(t)
svr.indexCoord.(*mocks.IndexCoord).EXPECT().GetIndexInfos(mock.Anything, mock.Anything).Return(mockResp, nil)
assert.Nil(t, err)
vchan, err := svr.handler.GetQueryVChanPositions(&channel{Name: "ch1", CollectionID: 0}, allPartitionID)
@ -3046,8 +3046,8 @@ func TestGetRecoveryInfo(t *testing.T) {
},
},
}
svr.indexCoord = mocks.NewMockIndexCoord(t)
svr.indexCoord.(*mocks.MockIndexCoord).EXPECT().GetIndexInfos(mock.Anything, mock.Anything).Return(mockResp, nil)
svr.indexCoord = mocks.NewIndexCoord(t)
svr.indexCoord.(*mocks.IndexCoord).EXPECT().GetIndexInfos(mock.Anything, mock.Anything).Return(mockResp, nil)
req := &datapb.GetRecoveryInfoRequest{
CollectionID: 0,
@ -3124,7 +3124,7 @@ func TestGetRecoveryInfo(t *testing.T) {
assert.Nil(t, err)
err = svr.meta.AddSegment(NewSegmentInfo(seg2))
assert.Nil(t, err)
svr.indexCoord.(*mocks.MockIndexCoord).EXPECT().GetIndexInfos(mock.Anything, mock.Anything).Return(nil, nil)
svr.indexCoord.(*mocks.IndexCoord).EXPECT().GetIndexInfos(mock.Anything, mock.Anything).Return(nil, nil)
req := &datapb.GetRecoveryInfoRequest{
CollectionID: 0,
@ -3213,8 +3213,8 @@ func TestGetRecoveryInfo(t *testing.T) {
},
},
}
svr.indexCoord = mocks.NewMockIndexCoord(t)
svr.indexCoord.(*mocks.MockIndexCoord).EXPECT().GetIndexInfos(mock.Anything, mock.Anything).Return(mockResp, nil)
svr.indexCoord = mocks.NewIndexCoord(t)
svr.indexCoord.(*mocks.IndexCoord).EXPECT().GetIndexInfos(mock.Anything, mock.Anything).Return(mockResp, nil)
err = svr.channelManager.AddNode(0)
assert.Nil(t, err)
err = svr.channelManager.Watch(&channel{Name: "vchan1", CollectionID: 0})
@ -3264,7 +3264,7 @@ func TestGetRecoveryInfo(t *testing.T) {
assert.Nil(t, err)
err = svr.meta.AddSegment(NewSegmentInfo(seg2))
assert.Nil(t, err)
svr.indexCoord.(*mocks.MockIndexCoord).EXPECT().GetIndexInfos(mock.Anything, mock.Anything).Return(nil, nil)
svr.indexCoord.(*mocks.IndexCoord).EXPECT().GetIndexInfos(mock.Anything, mock.Anything).Return(nil, nil)
req := &datapb.GetRecoveryInfoRequest{
CollectionID: 0,
@ -3333,8 +3333,8 @@ func TestGetRecoveryInfo(t *testing.T) {
},
},
}
svr.indexCoord = mocks.NewMockIndexCoord(t)
svr.indexCoord.(*mocks.MockIndexCoord).EXPECT().GetIndexInfos(mock.Anything, mock.Anything).Return(mockResp, nil)
svr.indexCoord = mocks.NewIndexCoord(t)
svr.indexCoord.(*mocks.IndexCoord).EXPECT().GetIndexInfos(mock.Anything, mock.Anything).Return(mockResp, nil)
req := &datapb.GetRecoveryInfoRequest{
CollectionID: 0,
@ -4317,7 +4317,7 @@ func newTestServer(t *testing.T, receiveCh chan any, opts ...Option) *Server {
opt(svr)
}
indexCoord := mocks.NewMockIndexCoord(t)
indexCoord := mocks.NewIndexCoord(t)
indexCoord.EXPECT().GetIndexInfos(mock.Anything, mock.Anything).Return(nil, nil).Maybe()
svr.indexCoord = indexCoord
@ -4369,7 +4369,7 @@ func newTestServerWithMeta(t *testing.T, receiveCh chan any, meta *meta, opts ..
svr.rootCoordClientCreator = func(ctx context.Context, metaRootPath string, etcdCli *clientv3.Client) (types.RootCoord, error) {
return newMockRootCoordService(), nil
}
indexCoord := mocks.NewMockIndexCoord(t)
indexCoord := mocks.NewIndexCoord(t)
indexCoord.EXPECT().GetIndexInfos(mock.Anything, mock.Anything).Return(nil, nil).Maybe()
svr.indexCoord = indexCoord

View File

@ -224,8 +224,8 @@ func TestGetRecoveryInfoV2(t *testing.T) {
},
},
}
svr.indexCoord = mocks.NewMockIndexCoord(t)
svr.indexCoord.(*mocks.MockIndexCoord).EXPECT().GetIndexInfos(mock.Anything, mock.Anything).Return(mockResp, nil)
svr.indexCoord = mocks.NewIndexCoord(t)
svr.indexCoord.(*mocks.IndexCoord).EXPECT().GetIndexInfos(mock.Anything, mock.Anything).Return(mockResp, nil)
req := &datapb.GetRecoveryInfoRequestV2{
CollectionID: 0,
@ -302,7 +302,7 @@ func TestGetRecoveryInfoV2(t *testing.T) {
assert.Nil(t, err)
err = svr.meta.AddSegment(NewSegmentInfo(seg2))
assert.Nil(t, err)
svr.indexCoord.(*mocks.MockIndexCoord).EXPECT().GetIndexInfos(mock.Anything, mock.Anything).Return(nil, nil)
svr.indexCoord.(*mocks.IndexCoord).EXPECT().GetIndexInfos(mock.Anything, mock.Anything).Return(nil, nil)
req := &datapb.GetRecoveryInfoRequestV2{
CollectionID: 0,
@ -391,8 +391,8 @@ func TestGetRecoveryInfoV2(t *testing.T) {
},
},
}
svr.indexCoord = mocks.NewMockIndexCoord(t)
svr.indexCoord.(*mocks.MockIndexCoord).EXPECT().GetIndexInfos(mock.Anything, mock.Anything).Return(mockResp, nil)
svr.indexCoord = mocks.NewIndexCoord(t)
svr.indexCoord.(*mocks.IndexCoord).EXPECT().GetIndexInfos(mock.Anything, mock.Anything).Return(mockResp, nil)
err = svr.channelManager.AddNode(0)
assert.Nil(t, err)
err = svr.channelManager.Watch(&channel{Name: "vchan1", CollectionID: 0})
@ -442,7 +442,7 @@ func TestGetRecoveryInfoV2(t *testing.T) {
assert.Nil(t, err)
err = svr.meta.AddSegment(NewSegmentInfo(seg2))
assert.Nil(t, err)
svr.indexCoord.(*mocks.MockIndexCoord).EXPECT().GetIndexInfos(mock.Anything, mock.Anything).Return(nil, nil)
svr.indexCoord.(*mocks.IndexCoord).EXPECT().GetIndexInfos(mock.Anything, mock.Anything).Return(nil, nil)
req := &datapb.GetRecoveryInfoRequestV2{
CollectionID: 0,
@ -511,8 +511,8 @@ func TestGetRecoveryInfoV2(t *testing.T) {
},
},
}
svr.indexCoord = mocks.NewMockIndexCoord(t)
svr.indexCoord.(*mocks.MockIndexCoord).EXPECT().GetIndexInfos(mock.Anything, mock.Anything).Return(mockResp, nil)
svr.indexCoord = mocks.NewIndexCoord(t)
svr.indexCoord.(*mocks.IndexCoord).EXPECT().GetIndexInfos(mock.Anything, mock.Anything).Return(mockResp, nil)
req := &datapb.GetRecoveryInfoRequestV2{
CollectionID: 0,

View File

@ -255,7 +255,7 @@ func Test_NewServer(t *testing.T) {
t.Run("Run", func(t *testing.T) {
server.dataCoord = &MockDataCoord{}
indexCoord := mocks.NewMockIndexCoord(t)
indexCoord := mocks.NewIndexCoord(t)
indexCoord.EXPECT().Init().Return(nil)
server.indexCoord = indexCoord

View File

@ -217,6 +217,20 @@ func (c *Client) DescribeIndex(ctx context.Context, req *indexpb.DescribeIndexRe
return ret.(*indexpb.DescribeIndexResponse), err
}
// GetIndexStatistics get the statistics of the index.
func (c *Client) GetIndexStatistics(ctx context.Context, req *indexpb.GetIndexStatisticsRequest) (*indexpb.GetIndexStatisticsResponse, error) {
ret, err := c.grpcClient.ReCall(ctx, func(client indexpb.IndexCoordClient) (any, error) {
if !funcutil.CheckCtxValid(ctx) {
return nil, ctx.Err()
}
return client.GetIndexStatistics(ctx, req)
})
if err != nil || ret == nil {
return nil, err
}
return ret.(*indexpb.GetIndexStatisticsResponse), err
}
// GetIndexBuildProgress describe the progress of the index.
func (c *Client) GetIndexBuildProgress(ctx context.Context, req *indexpb.GetIndexBuildProgressRequest) (*indexpb.GetIndexBuildProgressResponse, error) {
ret, err := c.grpcClient.ReCall(ctx, func(client indexpb.IndexCoordClient) (any, error) {

View File

@ -157,6 +157,16 @@ func TestIndexCoordClient(t *testing.T) {
assert.Equal(t, 1, len(resp.IndexInfos))
})
t.Run("GetIndexStatistics", func(t *testing.T) {
req := &indexpb.GetIndexStatisticsRequest{
CollectionID: 1,
IndexName: "",
}
resp, err := icc.GetIndexStatistics(ctx, req)
assert.NoError(t, err)
assert.Equal(t, 1, len(resp.IndexInfos))
})
t.Run("GetIndexBuildProgress", func(t *testing.T) {
req := &indexpb.GetIndexBuildProgressRequest{
CollectionID: 1,

View File

@ -278,6 +278,11 @@ func (s *Server) DescribeIndex(ctx context.Context, req *indexpb.DescribeIndexRe
return s.indexcoord.DescribeIndex(ctx, req)
}
// GetIndexStatistics get the information of index..
func (s *Server) GetIndexStatistics(ctx context.Context, req *indexpb.GetIndexStatisticsRequest) (*indexpb.GetIndexStatisticsResponse, error) {
return s.indexcoord.GetIndexStatistics(ctx, req)
}
// DropIndex sends the drop index request to IndexCoord.
func (s *Server) DropIndex(ctx context.Context, request *indexpb.DropIndexRequest) (*commonpb.Status, error) {
return s.indexcoord.DropIndex(ctx, request)

View File

@ -343,6 +343,10 @@ func (m *MockIndexCoord) DescribeIndex(ctx context.Context, req *indexpb.Describ
return nil, nil
}
func (m *MockIndexCoord) GetIndexStatistics(ctx context.Context, req *indexpb.GetIndexStatisticsRequest) (*indexpb.GetIndexStatisticsResponse, error) {
return nil, nil
}
func (m *MockIndexCoord) GetIndexBuildProgress(ctx context.Context, req *indexpb.GetIndexBuildProgressRequest) (*indexpb.GetIndexBuildProgressResponse, error) {
return nil, nil
}

View File

@ -602,8 +602,10 @@ func (i *IndexCoord) getIndexIDAndCreateTime(collectionID int64, indexName strin
return 0, 0, errors.New("get index id by name failed, there is no index on collection")
}
// completeIndexInfo get the building index row count and index task state
func (i *IndexCoord) completeIndexInfo(indexInfo *indexpb.IndexInfo, indexID int64, segIDs []UniqueID) error {
// completeIndexInfo get the index row count and index task state
// if realTime, calculate current statistics
// if not realTime, which means get info of the prior `CreateIndex` action, skip segments created after index's create time
func (i *IndexCoord) completeIndexInfo(indexInfo *indexpb.IndexInfo, index *model.Index, segIDs []UniqueID) error {
collectionID := indexInfo.CollectionID
indexName := indexInfo.IndexName
log.Info("IndexCoord completeIndexInfo", zap.Int64("collID", collectionID),
@ -612,7 +614,7 @@ func (i *IndexCoord) completeIndexInfo(indexInfo *indexpb.IndexInfo, indexID int
segSet := typeutil.NewSet(segIDs...)
//get index status of segSet
_, indexStateCnt := i.metaTable.GetIndexStates(indexID, typeutil.MaxTimestamp, func(segIdx *model.SegmentIndex) bool {
_, indexStateCnt := i.metaTable.GetIndexStates(index.IndexID, typeutil.MaxTimestamp, func(segIdx *model.SegmentIndex) bool {
return segSet.Contain(segIdx.SegmentID)
})
allCnt := len(segIDs)
@ -936,7 +938,7 @@ func (i *IndexCoord) DescribeIndex(ctx context.Context, req *indexpb.DescribeInd
indexInfo.TotalRows = totalRows
indexInfo.IndexedRows = indexedRows
indexInfo.PendingIndexRows = pendingIndexRows
if err := i.completeIndexInfo(indexInfo, indexID, segmentsToCheck); err != nil {
if err := i.completeIndexInfo(indexInfo, index, segmentsToCheck); err != nil {
log.Error("IndexCoord describe index fail", zap.Int64("collectionID", req.CollectionID),
zap.String("indexName", req.IndexName), zap.Error(err))
return &indexpb.DescribeIndexResponse{
@ -962,6 +964,79 @@ func (i *IndexCoord) DescribeIndex(ctx context.Context, req *indexpb.DescribeInd
}, nil
}
// GetIndexStatistics get the statistics of the index. DescribeIndex doesn't contain statistics.
func (i *IndexCoord) GetIndexStatistics(ctx context.Context, req *indexpb.GetIndexStatisticsRequest) (*indexpb.GetIndexStatisticsResponse, error) {
log.Info("IndexCoord GetIndexStatistics", zap.Int64("collectionID", req.CollectionID), zap.String("indexName", req.GetIndexName()))
if !i.isHealthy() {
log.Warn(msgIndexCoordIsUnhealthy(i.serverID))
ret := &indexpb.GetIndexStatisticsResponse{Status: &commonpb.Status{}}
setNotServingStatus(ret.GetStatus(), i.GetStateCode())
return ret, nil
}
indexes := i.metaTable.GetIndexesForCollection(req.GetCollectionID(), req.GetIndexName())
if len(indexes) == 0 {
return &indexpb.GetIndexStatisticsResponse{
Status: &commonpb.Status{
ErrorCode: commonpb.ErrorCode_IndexNotExist,
Reason: fmt.Sprint("index doesn't exist, collectionID ", req.CollectionID),
},
}, nil
}
ret := &indexpb.GetIndexStatisticsResponse{
Status: &commonpb.Status{
ErrorCode: commonpb.ErrorCode_UnexpectedError,
Reason: "",
},
}
indexInfos := make([]*indexpb.IndexInfo, 0)
for _, index := range indexes {
indexInfo := &indexpb.IndexInfo{
CollectionID: index.CollectionID,
FieldID: index.FieldID,
IndexName: index.IndexName,
TypeParams: index.TypeParams,
IndexParams: index.IndexParams,
IsAutoIndex: index.IsAutoIndex,
UserIndexParams: index.UserIndexParams,
IndexID: index.IndexID,
}
totalRows, indexedRows, pendingIndexRows, segmentsToCheck, err := i.getIndexedStats(ctx, index.CollectionID, index.IndexID, typeutil.MaxTimestamp)
if err != nil {
ret.Status.ErrorCode = commonpb.ErrorCode_UnexpectedError
ret.Status.Reason = err.Error()
return ret, nil
}
indexInfo.TotalRows = totalRows
indexInfo.IndexedRows = indexedRows
indexInfo.PendingIndexRows = pendingIndexRows
if err := i.completeIndexInfo(indexInfo, index, segmentsToCheck); err != nil {
log.Error("IndexCoord GetIndexStatistics fail", zap.Int64("collectionID", req.CollectionID), zap.String("indexName", req.IndexName), zap.Error(err))
ret.Status.Reason = err.Error()
return ret, nil
}
log.Info("IndexCoord GetIndexStatistics success",
zap.Int64("collectionID", req.CollectionID),
zap.Int64("indexID", indexInfo.IndexID),
zap.Int64("total rows", indexInfo.TotalRows),
zap.Int64("indexed rows", indexInfo.IndexedRows),
zap.Int64("pending index rows", indexInfo.PendingIndexRows),
zap.String("index state", indexInfo.State.String()),
zap.Int64s("segments", segmentsToCheck))
indexInfos = append(indexInfos, indexInfo)
}
return &indexpb.GetIndexStatisticsResponse{
Status: &commonpb.Status{
ErrorCode: commonpb.ErrorCode_Success,
},
IndexInfos: indexInfos,
}, nil
}
// ShowConfigurations returns the configurations of indexCoord matching req.Pattern
func (i *IndexCoord) ShowConfigurations(ctx context.Context, req *internalpb.ShowConfigurationsRequest) (*internalpb.ShowConfigurationsResponse, error) {
log.Debug("IndexCoord.ShowConfigurations", zap.String("pattern", req.Pattern))

View File

@ -57,6 +57,7 @@ type Mock struct {
CallGetSegmentIndexState func(ctx context.Context, req *indexpb.GetSegmentIndexStateRequest) (*indexpb.GetSegmentIndexStateResponse, error)
CallGetIndexInfos func(ctx context.Context, req *indexpb.GetIndexInfoRequest) (*indexpb.GetIndexInfoResponse, error)
CallDescribeIndex func(ctx context.Context, req *indexpb.DescribeIndexRequest) (*indexpb.DescribeIndexResponse, error)
CallGetIndexStatistics func(ctx context.Context, req *indexpb.GetIndexStatisticsRequest) (*indexpb.GetIndexStatisticsResponse, error)
CallGetIndexBuildProgress func(ctx context.Context, req *indexpb.GetIndexBuildProgressRequest) (*indexpb.GetIndexBuildProgressResponse, error)
CallDropIndex func(ctx context.Context, req *indexpb.DropIndexRequest) (*commonpb.Status, error)
CallShowConfigurations func(ctx context.Context, req *internalpb.ShowConfigurationsRequest) (*internalpb.ShowConfigurationsResponse, error)
@ -129,6 +130,10 @@ func (m *Mock) DescribeIndex(ctx context.Context, req *indexpb.DescribeIndexRequ
return m.CallDescribeIndex(ctx, req)
}
func (m *Mock) GetIndexStatistics(ctx context.Context, req *indexpb.GetIndexStatisticsRequest) (*indexpb.GetIndexStatisticsResponse, error) {
return m.CallGetIndexStatistics(ctx, req)
}
func (m *Mock) GetIndexBuildProgress(ctx context.Context, req *indexpb.GetIndexBuildProgressRequest) (*indexpb.GetIndexBuildProgressResponse, error) {
return m.CallGetIndexBuildProgress(ctx, req)
}
@ -261,6 +266,23 @@ func NewIndexCoordMock() *Mock {
},
}, nil
},
CallGetIndexStatistics: func(ctx context.Context, req *indexpb.GetIndexStatisticsRequest) (*indexpb.GetIndexStatisticsResponse, error) {
return &indexpb.GetIndexStatisticsResponse{
Status: &commonpb.Status{
ErrorCode: commonpb.ErrorCode_Success,
},
IndexInfos: []*indexpb.IndexInfo{
{
CollectionID: 1,
FieldID: 0,
IndexName: "default",
IndexID: 0,
TypeParams: nil,
IndexParams: nil,
},
},
}, nil
},
CallGetIndexBuildProgress: func(ctx context.Context, req *indexpb.GetIndexBuildProgressRequest) (*indexpb.GetIndexBuildProgressResponse, error) {
return &indexpb.GetIndexBuildProgressResponse{
Status: &commonpb.Status{

View File

@ -884,6 +884,16 @@ func TestIndexCoord_UnHealthy(t *testing.T) {
assert.Equal(t, commonpb.ErrorCode_NotReadyServe, resp.Status.ErrorCode)
})
t.Run("GetIndexStatistics", func(t *testing.T) {
req := &indexpb.GetIndexStatisticsRequest{
CollectionID: collID,
IndexName: indexName,
}
resp, err := ic.GetIndexStatistics(ctx, req)
assert.NoError(t, err)
assert.Equal(t, commonpb.ErrorCode_NotReadyServe, resp.Status.ErrorCode)
})
t.Run("GetIndexBuildProgress", func(t *testing.T) {
req := &indexpb.GetIndexBuildProgressRequest{
CollectionID: collID,
@ -1431,3 +1441,212 @@ func TestIndexCoord_GetIndexBuildProgress(t *testing.T) {
assert.Equal(t, commonpb.ErrorCode_UnexpectedError, resp.GetStatus().GetErrorCode())
})
}
func TestIndexCoord_GetIndexStatistics(t *testing.T) {
var (
collID = UniqueID(1)
partID = UniqueID(2)
fieldID = UniqueID(10)
indexID = UniqueID(100)
segIDBeforeCreateIndex = UniqueID(999)
segIDAfterCreateIndex = UniqueID(1001)
segIDFlushed = UniqueID(1002)
//buildID = UniqueID(10000)
indexName = "default_idx"
typeParams = []*commonpb.KeyValuePair{
{Key: "dim", Value: "128"},
}
indexParams = []*commonpb.KeyValuePair{
{Key: "index_type", Value: "IVF_FLAT"},
}
indexCreateTS = uint64(1000)
ctx = context.Background()
)
ic := &IndexCoord{
metaTable: &metaTable{
catalog: &indexcoord.Catalog{Txn: NewMockEtcdKV()},
collectionIndexes: map[UniqueID]map[UniqueID]*model.Index{
collID: {
//finished
indexID: {
TenantID: "",
CollectionID: collID,
FieldID: fieldID,
IndexID: indexID,
IndexName: indexName,
IsDeleted: false,
CreateTime: indexCreateTS,
TypeParams: typeParams,
IndexParams: indexParams,
IsAutoIndex: false,
UserIndexParams: nil,
},
},
},
segmentIndexes: map[UniqueID]map[UniqueID]*model.SegmentIndex{
segIDAfterCreateIndex: { // segment build after index created
indexID: &model.SegmentIndex{
IndexState: commonpb.IndexState_Finished,
SegmentID: segIDAfterCreateIndex,
CollectionID: collID,
PartitionID: partID,
NumRows: 10240,
CreateTime: indexCreateTS + 1,
},
},
segIDBeforeCreateIndex: { // segment build before index created
indexID: &model.SegmentIndex{
IndexState: commonpb.IndexState_Finished,
SegmentID: segIDBeforeCreateIndex,
CollectionID: collID,
PartitionID: partID,
NumRows: 10240,
CreateTime: indexCreateTS,
},
},
},
},
}
dcm := &DataCoordMock{
CallGetFlushedSegment: func(ctx context.Context, req *datapb.GetFlushedSegmentsRequest) (*datapb.GetFlushedSegmentsResponse, error) {
return &datapb.GetFlushedSegmentsResponse{
Status: &commonpb.Status{
ErrorCode: commonpb.ErrorCode_Success,
},
Segments: []int64{segIDBeforeCreateIndex, segIDAfterCreateIndex, segIDFlushed},
}, nil
},
CallAcquireSegmentLock: func(ctx context.Context, req *datapb.AcquireSegmentLockRequest) (*commonpb.Status, error) {
return &commonpb.Status{
ErrorCode: commonpb.ErrorCode_Success,
}, nil
},
CallReleaseSegmentLock: func(ctx context.Context, req *datapb.ReleaseSegmentLockRequest) (*commonpb.Status, error) {
return &commonpb.Status{
ErrorCode: commonpb.ErrorCode_Success,
}, nil
},
CallListSegmentsInfo: func(ctx context.Context, req *datapb.ListSegmentsInfoRequest) (*datapb.ListSegmentsInfoResponse, error) {
segmentInfos := make([]*datapb.SegmentInfo, 0)
for _, segID := range req.SegmentIDs {
segmentInfos = append(segmentInfos, &datapb.SegmentInfo{
ID: segID,
CollectionID: collID,
PartitionID: partID,
NumOfRows: 10240,
State: commonpb.SegmentState_Flushed,
StartPosition: &internalpb.MsgPosition{
Timestamp: indexCreateTS,
},
})
}
return &datapb.ListSegmentsInfoResponse{
Status: &commonpb.Status{
ErrorCode: commonpb.ErrorCode_Success,
},
Infos: segmentInfos,
}, nil
},
CallGetRecoveryInfoV2: func(ctx context.Context, req *datapb.GetRecoveryInfoRequestV2) (*datapb.GetRecoveryInfoResponseV2, error) {
return &datapb.GetRecoveryInfoResponseV2{
Status: &commonpb.Status{
ErrorCode: commonpb.ErrorCode_Success,
},
Channels: []*datapb.VchannelInfo{
{
CollectionID: collID,
ChannelName: "",
SeekPosition: nil,
UnflushedSegments: nil,
FlushedSegments: nil,
DroppedSegments: nil,
UnflushedSegmentIds: nil,
FlushedSegmentIds: []UniqueID{segIDBeforeCreateIndex, segIDAfterCreateIndex, segIDFlushed},
DroppedSegmentIds: nil,
},
},
Segments: []*datapb.SegmentInfo{
{
ID: segIDBeforeCreateIndex,
CollectionID: collID,
PartitionID: partID,
NumOfRows: 10240,
State: commonpb.SegmentState_Flushed,
StartPosition: &internalpb.MsgPosition{
Timestamp: indexCreateTS - 100,
},
},
{
ID: segIDAfterCreateIndex,
CollectionID: collID,
PartitionID: partID,
NumOfRows: 10240,
State: commonpb.SegmentState_Flushed,
StartPosition: &internalpb.MsgPosition{
Timestamp: indexCreateTS + 100,
},
},
{
ID: segIDFlushed,
CollectionID: collID,
PartitionID: partID,
NumOfRows: 10240,
State: commonpb.SegmentState_Flushed,
StartPosition: &internalpb.MsgPosition{
Timestamp: indexCreateTS + 200,
},
},
},
}, nil
},
}
err := ic.SetDataCoord(dcm)
assert.Nil(t, err)
ic.stateCode.Store(commonpb.StateCode_Healthy)
t.Run("success", func(t *testing.T) {
req := &indexpb.GetIndexStatisticsRequest{
CollectionID: collID,
IndexName: "",
}
resp, err := ic.GetIndexStatistics(ctx, req)
assert.NoError(t, err)
assert.Equal(t, commonpb.ErrorCode_Success, resp.GetStatus().GetErrorCode())
assert.Equal(t, int64(10240*3), resp.GetIndexInfos()[0].GetIndexedRows())
assert.Equal(t, int64(10240*3), resp.GetIndexInfos()[0].GetTotalRows())
})
t.Run("fail because datacoord method error", func(t *testing.T) {
req := &indexpb.GetIndexStatisticsRequest{
CollectionID: collID,
IndexName: "",
}
ic.dataCoordClient = &DataCoordMock{
CallGetFlushedSegment: func(ctx context.Context, req *datapb.GetFlushedSegmentsRequest) (*datapb.GetFlushedSegmentsResponse, error) {
return nil, errors.New("mock error")
}}
resp, err := ic.GetIndexStatistics(ctx, req)
assert.NoError(t, err)
assert.Equal(t, commonpb.ErrorCode_UnexpectedError, resp.GetStatus().GetErrorCode())
})
t.Run("GetIndexStatistics after drop index", func(t *testing.T) {
status, err := ic.DropIndex(ctx, &indexpb.DropIndexRequest{
CollectionID: collID,
PartitionIDs: nil,
IndexName: "",
DropAll: true,
})
assert.NoError(t, err)
assert.Equal(t, commonpb.ErrorCode_Success, status.GetErrorCode())
req := &indexpb.GetIndexStatisticsRequest{
CollectionID: collID,
IndexName: "",
}
resp, err := ic.GetIndexStatistics(ctx, req)
assert.NoError(t, err)
assert.Equal(t, commonpb.ErrorCode_IndexNotExist, resp.GetStatus().GetErrorCode())
})
}

View File

@ -1,4 +1,4 @@
// Code generated by mockery v2.21.1. DO NOT EDIT.
// Code generated by mockery v2.16.0. DO NOT EDIT.
package mocks
@ -89,10 +89,6 @@ func (_m *DataCoord) AssignSegmentID(ctx context.Context, req *datapb.AssignSegm
ret := _m.Called(ctx, req)
var r0 *datapb.AssignSegmentIDResponse
var r1 error
if rf, ok := ret.Get(0).(func(context.Context, *datapb.AssignSegmentIDRequest) (*datapb.AssignSegmentIDResponse, error)); ok {
return rf(ctx, req)
}
if rf, ok := ret.Get(0).(func(context.Context, *datapb.AssignSegmentIDRequest) *datapb.AssignSegmentIDResponse); ok {
r0 = rf(ctx, req)
} else {
@ -101,6 +97,7 @@ func (_m *DataCoord) AssignSegmentID(ctx context.Context, req *datapb.AssignSegm
}
}
var r1 error
if rf, ok := ret.Get(1).(func(context.Context, *datapb.AssignSegmentIDRequest) error); ok {
r1 = rf(ctx, req)
} else {
@ -134,20 +131,11 @@ func (_c *DataCoord_AssignSegmentID_Call) Return(_a0 *datapb.AssignSegmentIDResp
return _c
}
func (_c *DataCoord_AssignSegmentID_Call) RunAndReturn(run func(context.Context, *datapb.AssignSegmentIDRequest) (*datapb.AssignSegmentIDResponse, error)) *DataCoord_AssignSegmentID_Call {
_c.Call.Return(run)
return _c
}
// BroadcastAlteredCollection provides a mock function with given fields: ctx, req
func (_m *DataCoord) BroadcastAlteredCollection(ctx context.Context, req *datapb.AlterCollectionRequest) (*commonpb.Status, error) {
ret := _m.Called(ctx, req)
var r0 *commonpb.Status
var r1 error
if rf, ok := ret.Get(0).(func(context.Context, *datapb.AlterCollectionRequest) (*commonpb.Status, error)); ok {
return rf(ctx, req)
}
if rf, ok := ret.Get(0).(func(context.Context, *datapb.AlterCollectionRequest) *commonpb.Status); ok {
r0 = rf(ctx, req)
} else {
@ -156,6 +144,7 @@ func (_m *DataCoord) BroadcastAlteredCollection(ctx context.Context, req *datapb
}
}
var r1 error
if rf, ok := ret.Get(1).(func(context.Context, *datapb.AlterCollectionRequest) error); ok {
r1 = rf(ctx, req)
} else {
@ -189,20 +178,11 @@ func (_c *DataCoord_BroadcastAlteredCollection_Call) Return(_a0 *commonpb.Status
return _c
}
func (_c *DataCoord_BroadcastAlteredCollection_Call) RunAndReturn(run func(context.Context, *datapb.AlterCollectionRequest) (*commonpb.Status, error)) *DataCoord_BroadcastAlteredCollection_Call {
_c.Call.Return(run)
return _c
}
// CheckHealth provides a mock function with given fields: ctx, req
func (_m *DataCoord) CheckHealth(ctx context.Context, req *milvuspb.CheckHealthRequest) (*milvuspb.CheckHealthResponse, error) {
ret := _m.Called(ctx, req)
var r0 *milvuspb.CheckHealthResponse
var r1 error
if rf, ok := ret.Get(0).(func(context.Context, *milvuspb.CheckHealthRequest) (*milvuspb.CheckHealthResponse, error)); ok {
return rf(ctx, req)
}
if rf, ok := ret.Get(0).(func(context.Context, *milvuspb.CheckHealthRequest) *milvuspb.CheckHealthResponse); ok {
r0 = rf(ctx, req)
} else {
@ -211,6 +191,7 @@ func (_m *DataCoord) CheckHealth(ctx context.Context, req *milvuspb.CheckHealthR
}
}
var r1 error
if rf, ok := ret.Get(1).(func(context.Context, *milvuspb.CheckHealthRequest) error); ok {
r1 = rf(ctx, req)
} else {
@ -254,10 +235,6 @@ func (_m *DataCoord) DropVirtualChannel(ctx context.Context, req *datapb.DropVir
ret := _m.Called(ctx, req)
var r0 *datapb.DropVirtualChannelResponse
var r1 error
if rf, ok := ret.Get(0).(func(context.Context, *datapb.DropVirtualChannelRequest) (*datapb.DropVirtualChannelResponse, error)); ok {
return rf(ctx, req)
}
if rf, ok := ret.Get(0).(func(context.Context, *datapb.DropVirtualChannelRequest) *datapb.DropVirtualChannelResponse); ok {
r0 = rf(ctx, req)
} else {
@ -266,6 +243,7 @@ func (_m *DataCoord) DropVirtualChannel(ctx context.Context, req *datapb.DropVir
}
}
var r1 error
if rf, ok := ret.Get(1).(func(context.Context, *datapb.DropVirtualChannelRequest) error); ok {
r1 = rf(ctx, req)
} else {
@ -299,20 +277,11 @@ func (_c *DataCoord_DropVirtualChannel_Call) Return(_a0 *datapb.DropVirtualChann
return _c
}
func (_c *DataCoord_DropVirtualChannel_Call) RunAndReturn(run func(context.Context, *datapb.DropVirtualChannelRequest) (*datapb.DropVirtualChannelResponse, error)) *DataCoord_DropVirtualChannel_Call {
_c.Call.Return(run)
return _c
}
// Flush provides a mock function with given fields: ctx, req
func (_m *DataCoord) Flush(ctx context.Context, req *datapb.FlushRequest) (*datapb.FlushResponse, error) {
ret := _m.Called(ctx, req)
var r0 *datapb.FlushResponse
var r1 error
if rf, ok := ret.Get(0).(func(context.Context, *datapb.FlushRequest) (*datapb.FlushResponse, error)); ok {
return rf(ctx, req)
}
if rf, ok := ret.Get(0).(func(context.Context, *datapb.FlushRequest) *datapb.FlushResponse); ok {
r0 = rf(ctx, req)
} else {
@ -321,6 +290,7 @@ func (_m *DataCoord) Flush(ctx context.Context, req *datapb.FlushRequest) (*data
}
}
var r1 error
if rf, ok := ret.Get(1).(func(context.Context, *datapb.FlushRequest) error); ok {
r1 = rf(ctx, req)
} else {
@ -354,20 +324,11 @@ func (_c *DataCoord_Flush_Call) Return(_a0 *datapb.FlushResponse, _a1 error) *Da
return _c
}
func (_c *DataCoord_Flush_Call) RunAndReturn(run func(context.Context, *datapb.FlushRequest) (*datapb.FlushResponse, error)) *DataCoord_Flush_Call {
_c.Call.Return(run)
return _c
}
// GcConfirm provides a mock function with given fields: ctx, request
func (_m *DataCoord) GcConfirm(ctx context.Context, request *datapb.GcConfirmRequest) (*datapb.GcConfirmResponse, error) {
ret := _m.Called(ctx, request)
var r0 *datapb.GcConfirmResponse
var r1 error
if rf, ok := ret.Get(0).(func(context.Context, *datapb.GcConfirmRequest) (*datapb.GcConfirmResponse, error)); ok {
return rf(ctx, request)
}
if rf, ok := ret.Get(0).(func(context.Context, *datapb.GcConfirmRequest) *datapb.GcConfirmResponse); ok {
r0 = rf(ctx, request)
} else {
@ -376,6 +337,7 @@ func (_m *DataCoord) GcConfirm(ctx context.Context, request *datapb.GcConfirmReq
}
}
var r1 error
if rf, ok := ret.Get(1).(func(context.Context, *datapb.GcConfirmRequest) error); ok {
r1 = rf(ctx, request)
} else {
@ -409,20 +371,11 @@ func (_c *DataCoord_GcConfirm_Call) Return(_a0 *datapb.GcConfirmResponse, _a1 er
return _c
}
func (_c *DataCoord_GcConfirm_Call) RunAndReturn(run func(context.Context, *datapb.GcConfirmRequest) (*datapb.GcConfirmResponse, error)) *DataCoord_GcConfirm_Call {
_c.Call.Return(run)
return _c
}
// GetCollectionStatistics provides a mock function with given fields: ctx, req
func (_m *DataCoord) GetCollectionStatistics(ctx context.Context, req *datapb.GetCollectionStatisticsRequest) (*datapb.GetCollectionStatisticsResponse, error) {
ret := _m.Called(ctx, req)
var r0 *datapb.GetCollectionStatisticsResponse
var r1 error
if rf, ok := ret.Get(0).(func(context.Context, *datapb.GetCollectionStatisticsRequest) (*datapb.GetCollectionStatisticsResponse, error)); ok {
return rf(ctx, req)
}
if rf, ok := ret.Get(0).(func(context.Context, *datapb.GetCollectionStatisticsRequest) *datapb.GetCollectionStatisticsResponse); ok {
r0 = rf(ctx, req)
} else {
@ -431,6 +384,7 @@ func (_m *DataCoord) GetCollectionStatistics(ctx context.Context, req *datapb.Ge
}
}
var r1 error
if rf, ok := ret.Get(1).(func(context.Context, *datapb.GetCollectionStatisticsRequest) error); ok {
r1 = rf(ctx, req)
} else {
@ -464,20 +418,11 @@ func (_c *DataCoord_GetCollectionStatistics_Call) Return(_a0 *datapb.GetCollecti
return _c
}
func (_c *DataCoord_GetCollectionStatistics_Call) RunAndReturn(run func(context.Context, *datapb.GetCollectionStatisticsRequest) (*datapb.GetCollectionStatisticsResponse, error)) *DataCoord_GetCollectionStatistics_Call {
_c.Call.Return(run)
return _c
}
// GetCompactionState provides a mock function with given fields: ctx, req
func (_m *DataCoord) GetCompactionState(ctx context.Context, req *milvuspb.GetCompactionStateRequest) (*milvuspb.GetCompactionStateResponse, error) {
ret := _m.Called(ctx, req)
var r0 *milvuspb.GetCompactionStateResponse
var r1 error
if rf, ok := ret.Get(0).(func(context.Context, *milvuspb.GetCompactionStateRequest) (*milvuspb.GetCompactionStateResponse, error)); ok {
return rf(ctx, req)
}
if rf, ok := ret.Get(0).(func(context.Context, *milvuspb.GetCompactionStateRequest) *milvuspb.GetCompactionStateResponse); ok {
r0 = rf(ctx, req)
} else {
@ -486,6 +431,7 @@ func (_m *DataCoord) GetCompactionState(ctx context.Context, req *milvuspb.GetCo
}
}
var r1 error
if rf, ok := ret.Get(1).(func(context.Context, *milvuspb.GetCompactionStateRequest) error); ok {
r1 = rf(ctx, req)
} else {
@ -519,20 +465,11 @@ func (_c *DataCoord_GetCompactionState_Call) Return(_a0 *milvuspb.GetCompactionS
return _c
}
func (_c *DataCoord_GetCompactionState_Call) RunAndReturn(run func(context.Context, *milvuspb.GetCompactionStateRequest) (*milvuspb.GetCompactionStateResponse, error)) *DataCoord_GetCompactionState_Call {
_c.Call.Return(run)
return _c
}
// GetCompactionStateWithPlans provides a mock function with given fields: ctx, req
func (_m *DataCoord) GetCompactionStateWithPlans(ctx context.Context, req *milvuspb.GetCompactionPlansRequest) (*milvuspb.GetCompactionPlansResponse, error) {
ret := _m.Called(ctx, req)
var r0 *milvuspb.GetCompactionPlansResponse
var r1 error
if rf, ok := ret.Get(0).(func(context.Context, *milvuspb.GetCompactionPlansRequest) (*milvuspb.GetCompactionPlansResponse, error)); ok {
return rf(ctx, req)
}
if rf, ok := ret.Get(0).(func(context.Context, *milvuspb.GetCompactionPlansRequest) *milvuspb.GetCompactionPlansResponse); ok {
r0 = rf(ctx, req)
} else {
@ -541,6 +478,7 @@ func (_m *DataCoord) GetCompactionStateWithPlans(ctx context.Context, req *milvu
}
}
var r1 error
if rf, ok := ret.Get(1).(func(context.Context, *milvuspb.GetCompactionPlansRequest) error); ok {
r1 = rf(ctx, req)
} else {
@ -574,20 +512,11 @@ func (_c *DataCoord_GetCompactionStateWithPlans_Call) Return(_a0 *milvuspb.GetCo
return _c
}
func (_c *DataCoord_GetCompactionStateWithPlans_Call) RunAndReturn(run func(context.Context, *milvuspb.GetCompactionPlansRequest) (*milvuspb.GetCompactionPlansResponse, error)) *DataCoord_GetCompactionStateWithPlans_Call {
_c.Call.Return(run)
return _c
}
// GetComponentStates provides a mock function with given fields: ctx
func (_m *DataCoord) GetComponentStates(ctx context.Context) (*milvuspb.ComponentStates, error) {
ret := _m.Called(ctx)
var r0 *milvuspb.ComponentStates
var r1 error
if rf, ok := ret.Get(0).(func(context.Context) (*milvuspb.ComponentStates, error)); ok {
return rf(ctx)
}
if rf, ok := ret.Get(0).(func(context.Context) *milvuspb.ComponentStates); ok {
r0 = rf(ctx)
} else {
@ -596,6 +525,7 @@ func (_m *DataCoord) GetComponentStates(ctx context.Context) (*milvuspb.Componen
}
}
var r1 error
if rf, ok := ret.Get(1).(func(context.Context) error); ok {
r1 = rf(ctx)
} else {
@ -628,20 +558,11 @@ func (_c *DataCoord_GetComponentStates_Call) Return(_a0 *milvuspb.ComponentState
return _c
}
func (_c *DataCoord_GetComponentStates_Call) RunAndReturn(run func(context.Context) (*milvuspb.ComponentStates, error)) *DataCoord_GetComponentStates_Call {
_c.Call.Return(run)
return _c
}
// GetFlushAllState provides a mock function with given fields: ctx, req
func (_m *DataCoord) GetFlushAllState(ctx context.Context, req *milvuspb.GetFlushAllStateRequest) (*milvuspb.GetFlushAllStateResponse, error) {
ret := _m.Called(ctx, req)
var r0 *milvuspb.GetFlushAllStateResponse
var r1 error
if rf, ok := ret.Get(0).(func(context.Context, *milvuspb.GetFlushAllStateRequest) (*milvuspb.GetFlushAllStateResponse, error)); ok {
return rf(ctx, req)
}
if rf, ok := ret.Get(0).(func(context.Context, *milvuspb.GetFlushAllStateRequest) *milvuspb.GetFlushAllStateResponse); ok {
r0 = rf(ctx, req)
} else {
@ -650,6 +571,7 @@ func (_m *DataCoord) GetFlushAllState(ctx context.Context, req *milvuspb.GetFlus
}
}
var r1 error
if rf, ok := ret.Get(1).(func(context.Context, *milvuspb.GetFlushAllStateRequest) error); ok {
r1 = rf(ctx, req)
} else {
@ -683,20 +605,11 @@ func (_c *DataCoord_GetFlushAllState_Call) Return(_a0 *milvuspb.GetFlushAllState
return _c
}
func (_c *DataCoord_GetFlushAllState_Call) RunAndReturn(run func(context.Context, *milvuspb.GetFlushAllStateRequest) (*milvuspb.GetFlushAllStateResponse, error)) *DataCoord_GetFlushAllState_Call {
_c.Call.Return(run)
return _c
}
// GetFlushState provides a mock function with given fields: ctx, req
func (_m *DataCoord) GetFlushState(ctx context.Context, req *milvuspb.GetFlushStateRequest) (*milvuspb.GetFlushStateResponse, error) {
ret := _m.Called(ctx, req)
var r0 *milvuspb.GetFlushStateResponse
var r1 error
if rf, ok := ret.Get(0).(func(context.Context, *milvuspb.GetFlushStateRequest) (*milvuspb.GetFlushStateResponse, error)); ok {
return rf(ctx, req)
}
if rf, ok := ret.Get(0).(func(context.Context, *milvuspb.GetFlushStateRequest) *milvuspb.GetFlushStateResponse); ok {
r0 = rf(ctx, req)
} else {
@ -705,6 +618,7 @@ func (_m *DataCoord) GetFlushState(ctx context.Context, req *milvuspb.GetFlushSt
}
}
var r1 error
if rf, ok := ret.Get(1).(func(context.Context, *milvuspb.GetFlushStateRequest) error); ok {
r1 = rf(ctx, req)
} else {
@ -738,20 +652,11 @@ func (_c *DataCoord_GetFlushState_Call) Return(_a0 *milvuspb.GetFlushStateRespon
return _c
}
func (_c *DataCoord_GetFlushState_Call) RunAndReturn(run func(context.Context, *milvuspb.GetFlushStateRequest) (*milvuspb.GetFlushStateResponse, error)) *DataCoord_GetFlushState_Call {
_c.Call.Return(run)
return _c
}
// GetFlushedSegments provides a mock function with given fields: ctx, req
func (_m *DataCoord) GetFlushedSegments(ctx context.Context, req *datapb.GetFlushedSegmentsRequest) (*datapb.GetFlushedSegmentsResponse, error) {
ret := _m.Called(ctx, req)
var r0 *datapb.GetFlushedSegmentsResponse
var r1 error
if rf, ok := ret.Get(0).(func(context.Context, *datapb.GetFlushedSegmentsRequest) (*datapb.GetFlushedSegmentsResponse, error)); ok {
return rf(ctx, req)
}
if rf, ok := ret.Get(0).(func(context.Context, *datapb.GetFlushedSegmentsRequest) *datapb.GetFlushedSegmentsResponse); ok {
r0 = rf(ctx, req)
} else {
@ -760,6 +665,7 @@ func (_m *DataCoord) GetFlushedSegments(ctx context.Context, req *datapb.GetFlus
}
}
var r1 error
if rf, ok := ret.Get(1).(func(context.Context, *datapb.GetFlushedSegmentsRequest) error); ok {
r1 = rf(ctx, req)
} else {
@ -803,10 +709,6 @@ func (_m *DataCoord) GetInsertBinlogPaths(ctx context.Context, req *datapb.GetIn
ret := _m.Called(ctx, req)
var r0 *datapb.GetInsertBinlogPathsResponse
var r1 error
if rf, ok := ret.Get(0).(func(context.Context, *datapb.GetInsertBinlogPathsRequest) (*datapb.GetInsertBinlogPathsResponse, error)); ok {
return rf(ctx, req)
}
if rf, ok := ret.Get(0).(func(context.Context, *datapb.GetInsertBinlogPathsRequest) *datapb.GetInsertBinlogPathsResponse); ok {
r0 = rf(ctx, req)
} else {
@ -815,6 +717,7 @@ func (_m *DataCoord) GetInsertBinlogPaths(ctx context.Context, req *datapb.GetIn
}
}
var r1 error
if rf, ok := ret.Get(1).(func(context.Context, *datapb.GetInsertBinlogPathsRequest) error); ok {
r1 = rf(ctx, req)
} else {
@ -848,20 +751,11 @@ func (_c *DataCoord_GetInsertBinlogPaths_Call) Return(_a0 *datapb.GetInsertBinlo
return _c
}
func (_c *DataCoord_GetInsertBinlogPaths_Call) RunAndReturn(run func(context.Context, *datapb.GetInsertBinlogPathsRequest) (*datapb.GetInsertBinlogPathsResponse, error)) *DataCoord_GetInsertBinlogPaths_Call {
_c.Call.Return(run)
return _c
}
// GetMetrics provides a mock function with given fields: ctx, req
func (_m *DataCoord) GetMetrics(ctx context.Context, req *milvuspb.GetMetricsRequest) (*milvuspb.GetMetricsResponse, error) {
ret := _m.Called(ctx, req)
var r0 *milvuspb.GetMetricsResponse
var r1 error
if rf, ok := ret.Get(0).(func(context.Context, *milvuspb.GetMetricsRequest) (*milvuspb.GetMetricsResponse, error)); ok {
return rf(ctx, req)
}
if rf, ok := ret.Get(0).(func(context.Context, *milvuspb.GetMetricsRequest) *milvuspb.GetMetricsResponse); ok {
r0 = rf(ctx, req)
} else {
@ -870,6 +764,7 @@ func (_m *DataCoord) GetMetrics(ctx context.Context, req *milvuspb.GetMetricsReq
}
}
var r1 error
if rf, ok := ret.Get(1).(func(context.Context, *milvuspb.GetMetricsRequest) error); ok {
r1 = rf(ctx, req)
} else {
@ -903,20 +798,11 @@ func (_c *DataCoord_GetMetrics_Call) Return(_a0 *milvuspb.GetMetricsResponse, _a
return _c
}
func (_c *DataCoord_GetMetrics_Call) RunAndReturn(run func(context.Context, *milvuspb.GetMetricsRequest) (*milvuspb.GetMetricsResponse, error)) *DataCoord_GetMetrics_Call {
_c.Call.Return(run)
return _c
}
// GetPartitionStatistics provides a mock function with given fields: ctx, req
func (_m *DataCoord) GetPartitionStatistics(ctx context.Context, req *datapb.GetPartitionStatisticsRequest) (*datapb.GetPartitionStatisticsResponse, error) {
ret := _m.Called(ctx, req)
var r0 *datapb.GetPartitionStatisticsResponse
var r1 error
if rf, ok := ret.Get(0).(func(context.Context, *datapb.GetPartitionStatisticsRequest) (*datapb.GetPartitionStatisticsResponse, error)); ok {
return rf(ctx, req)
}
if rf, ok := ret.Get(0).(func(context.Context, *datapb.GetPartitionStatisticsRequest) *datapb.GetPartitionStatisticsResponse); ok {
r0 = rf(ctx, req)
} else {
@ -925,6 +811,7 @@ func (_m *DataCoord) GetPartitionStatistics(ctx context.Context, req *datapb.Get
}
}
var r1 error
if rf, ok := ret.Get(1).(func(context.Context, *datapb.GetPartitionStatisticsRequest) error); ok {
r1 = rf(ctx, req)
} else {
@ -958,20 +845,11 @@ func (_c *DataCoord_GetPartitionStatistics_Call) Return(_a0 *datapb.GetPartition
return _c
}
func (_c *DataCoord_GetPartitionStatistics_Call) RunAndReturn(run func(context.Context, *datapb.GetPartitionStatisticsRequest) (*datapb.GetPartitionStatisticsResponse, error)) *DataCoord_GetPartitionStatistics_Call {
_c.Call.Return(run)
return _c
}
// GetRecoveryInfo provides a mock function with given fields: ctx, req
func (_m *DataCoord) GetRecoveryInfo(ctx context.Context, req *datapb.GetRecoveryInfoRequest) (*datapb.GetRecoveryInfoResponse, error) {
ret := _m.Called(ctx, req)
var r0 *datapb.GetRecoveryInfoResponse
var r1 error
if rf, ok := ret.Get(0).(func(context.Context, *datapb.GetRecoveryInfoRequest) (*datapb.GetRecoveryInfoResponse, error)); ok {
return rf(ctx, req)
}
if rf, ok := ret.Get(0).(func(context.Context, *datapb.GetRecoveryInfoRequest) *datapb.GetRecoveryInfoResponse); ok {
r0 = rf(ctx, req)
} else {
@ -980,6 +858,7 @@ func (_m *DataCoord) GetRecoveryInfo(ctx context.Context, req *datapb.GetRecover
}
}
var r1 error
if rf, ok := ret.Get(1).(func(context.Context, *datapb.GetRecoveryInfoRequest) error); ok {
r1 = rf(ctx, req)
} else {
@ -1013,20 +892,11 @@ func (_c *DataCoord_GetRecoveryInfo_Call) Return(_a0 *datapb.GetRecoveryInfoResp
return _c
}
func (_c *DataCoord_GetRecoveryInfo_Call) RunAndReturn(run func(context.Context, *datapb.GetRecoveryInfoRequest) (*datapb.GetRecoveryInfoResponse, error)) *DataCoord_GetRecoveryInfo_Call {
_c.Call.Return(run)
return _c
}
// GetRecoveryInfoV2 provides a mock function with given fields: ctx, req
func (_m *DataCoord) GetRecoveryInfoV2(ctx context.Context, req *datapb.GetRecoveryInfoRequestV2) (*datapb.GetRecoveryInfoResponseV2, error) {
ret := _m.Called(ctx, req)
var r0 *datapb.GetRecoveryInfoResponseV2
var r1 error
if rf, ok := ret.Get(0).(func(context.Context, *datapb.GetRecoveryInfoRequestV2) (*datapb.GetRecoveryInfoResponseV2, error)); ok {
return rf(ctx, req)
}
if rf, ok := ret.Get(0).(func(context.Context, *datapb.GetRecoveryInfoRequestV2) *datapb.GetRecoveryInfoResponseV2); ok {
r0 = rf(ctx, req)
} else {
@ -1035,6 +905,7 @@ func (_m *DataCoord) GetRecoveryInfoV2(ctx context.Context, req *datapb.GetRecov
}
}
var r1 error
if rf, ok := ret.Get(1).(func(context.Context, *datapb.GetRecoveryInfoRequestV2) error); ok {
r1 = rf(ctx, req)
} else {
@ -1078,10 +949,6 @@ func (_m *DataCoord) GetSegmentInfo(ctx context.Context, req *datapb.GetSegmentI
ret := _m.Called(ctx, req)
var r0 *datapb.GetSegmentInfoResponse
var r1 error
if rf, ok := ret.Get(0).(func(context.Context, *datapb.GetSegmentInfoRequest) (*datapb.GetSegmentInfoResponse, error)); ok {
return rf(ctx, req)
}
if rf, ok := ret.Get(0).(func(context.Context, *datapb.GetSegmentInfoRequest) *datapb.GetSegmentInfoResponse); ok {
r0 = rf(ctx, req)
} else {
@ -1090,6 +957,7 @@ func (_m *DataCoord) GetSegmentInfo(ctx context.Context, req *datapb.GetSegmentI
}
}
var r1 error
if rf, ok := ret.Get(1).(func(context.Context, *datapb.GetSegmentInfoRequest) error); ok {
r1 = rf(ctx, req)
} else {
@ -1123,20 +991,11 @@ func (_c *DataCoord_GetSegmentInfo_Call) Return(_a0 *datapb.GetSegmentInfoRespon
return _c
}
func (_c *DataCoord_GetSegmentInfo_Call) RunAndReturn(run func(context.Context, *datapb.GetSegmentInfoRequest) (*datapb.GetSegmentInfoResponse, error)) *DataCoord_GetSegmentInfo_Call {
_c.Call.Return(run)
return _c
}
// GetSegmentInfoChannel provides a mock function with given fields: ctx
func (_m *DataCoord) GetSegmentInfoChannel(ctx context.Context) (*milvuspb.StringResponse, error) {
ret := _m.Called(ctx)
var r0 *milvuspb.StringResponse
var r1 error
if rf, ok := ret.Get(0).(func(context.Context) (*milvuspb.StringResponse, error)); ok {
return rf(ctx)
}
if rf, ok := ret.Get(0).(func(context.Context) *milvuspb.StringResponse); ok {
r0 = rf(ctx)
} else {
@ -1145,6 +1004,7 @@ func (_m *DataCoord) GetSegmentInfoChannel(ctx context.Context) (*milvuspb.Strin
}
}
var r1 error
if rf, ok := ret.Get(1).(func(context.Context) error); ok {
r1 = rf(ctx)
} else {
@ -1177,20 +1037,11 @@ func (_c *DataCoord_GetSegmentInfoChannel_Call) Return(_a0 *milvuspb.StringRespo
return _c
}
func (_c *DataCoord_GetSegmentInfoChannel_Call) RunAndReturn(run func(context.Context) (*milvuspb.StringResponse, error)) *DataCoord_GetSegmentInfoChannel_Call {
_c.Call.Return(run)
return _c
}
// GetSegmentStates provides a mock function with given fields: ctx, req
func (_m *DataCoord) GetSegmentStates(ctx context.Context, req *datapb.GetSegmentStatesRequest) (*datapb.GetSegmentStatesResponse, error) {
ret := _m.Called(ctx, req)
var r0 *datapb.GetSegmentStatesResponse
var r1 error
if rf, ok := ret.Get(0).(func(context.Context, *datapb.GetSegmentStatesRequest) (*datapb.GetSegmentStatesResponse, error)); ok {
return rf(ctx, req)
}
if rf, ok := ret.Get(0).(func(context.Context, *datapb.GetSegmentStatesRequest) *datapb.GetSegmentStatesResponse); ok {
r0 = rf(ctx, req)
} else {
@ -1199,6 +1050,7 @@ func (_m *DataCoord) GetSegmentStates(ctx context.Context, req *datapb.GetSegmen
}
}
var r1 error
if rf, ok := ret.Get(1).(func(context.Context, *datapb.GetSegmentStatesRequest) error); ok {
r1 = rf(ctx, req)
} else {
@ -1232,20 +1084,11 @@ func (_c *DataCoord_GetSegmentStates_Call) Return(_a0 *datapb.GetSegmentStatesRe
return _c
}
func (_c *DataCoord_GetSegmentStates_Call) RunAndReturn(run func(context.Context, *datapb.GetSegmentStatesRequest) (*datapb.GetSegmentStatesResponse, error)) *DataCoord_GetSegmentStates_Call {
_c.Call.Return(run)
return _c
}
// GetSegmentsByStates provides a mock function with given fields: ctx, req
func (_m *DataCoord) GetSegmentsByStates(ctx context.Context, req *datapb.GetSegmentsByStatesRequest) (*datapb.GetSegmentsByStatesResponse, error) {
ret := _m.Called(ctx, req)
var r0 *datapb.GetSegmentsByStatesResponse
var r1 error
if rf, ok := ret.Get(0).(func(context.Context, *datapb.GetSegmentsByStatesRequest) (*datapb.GetSegmentsByStatesResponse, error)); ok {
return rf(ctx, req)
}
if rf, ok := ret.Get(0).(func(context.Context, *datapb.GetSegmentsByStatesRequest) *datapb.GetSegmentsByStatesResponse); ok {
r0 = rf(ctx, req)
} else {
@ -1254,6 +1097,7 @@ func (_m *DataCoord) GetSegmentsByStates(ctx context.Context, req *datapb.GetSeg
}
}
var r1 error
if rf, ok := ret.Get(1).(func(context.Context, *datapb.GetSegmentsByStatesRequest) error); ok {
r1 = rf(ctx, req)
} else {
@ -1287,20 +1131,11 @@ func (_c *DataCoord_GetSegmentsByStates_Call) Return(_a0 *datapb.GetSegmentsBySt
return _c
}
func (_c *DataCoord_GetSegmentsByStates_Call) RunAndReturn(run func(context.Context, *datapb.GetSegmentsByStatesRequest) (*datapb.GetSegmentsByStatesResponse, error)) *DataCoord_GetSegmentsByStates_Call {
_c.Call.Return(run)
return _c
}
// GetStatisticsChannel provides a mock function with given fields: ctx
func (_m *DataCoord) GetStatisticsChannel(ctx context.Context) (*milvuspb.StringResponse, error) {
ret := _m.Called(ctx)
var r0 *milvuspb.StringResponse
var r1 error
if rf, ok := ret.Get(0).(func(context.Context) (*milvuspb.StringResponse, error)); ok {
return rf(ctx)
}
if rf, ok := ret.Get(0).(func(context.Context) *milvuspb.StringResponse); ok {
r0 = rf(ctx)
} else {
@ -1309,6 +1144,7 @@ func (_m *DataCoord) GetStatisticsChannel(ctx context.Context) (*milvuspb.String
}
}
var r1 error
if rf, ok := ret.Get(1).(func(context.Context) error); ok {
r1 = rf(ctx)
} else {
@ -1341,20 +1177,11 @@ func (_c *DataCoord_GetStatisticsChannel_Call) Return(_a0 *milvuspb.StringRespon
return _c
}
func (_c *DataCoord_GetStatisticsChannel_Call) RunAndReturn(run func(context.Context) (*milvuspb.StringResponse, error)) *DataCoord_GetStatisticsChannel_Call {
_c.Call.Return(run)
return _c
}
// GetTimeTickChannel provides a mock function with given fields: ctx
func (_m *DataCoord) GetTimeTickChannel(ctx context.Context) (*milvuspb.StringResponse, error) {
ret := _m.Called(ctx)
var r0 *milvuspb.StringResponse
var r1 error
if rf, ok := ret.Get(0).(func(context.Context) (*milvuspb.StringResponse, error)); ok {
return rf(ctx)
}
if rf, ok := ret.Get(0).(func(context.Context) *milvuspb.StringResponse); ok {
r0 = rf(ctx)
} else {
@ -1363,6 +1190,7 @@ func (_m *DataCoord) GetTimeTickChannel(ctx context.Context) (*milvuspb.StringRe
}
}
var r1 error
if rf, ok := ret.Get(1).(func(context.Context) error); ok {
r1 = rf(ctx)
} else {
@ -1395,20 +1223,11 @@ func (_c *DataCoord_GetTimeTickChannel_Call) Return(_a0 *milvuspb.StringResponse
return _c
}
func (_c *DataCoord_GetTimeTickChannel_Call) RunAndReturn(run func(context.Context) (*milvuspb.StringResponse, error)) *DataCoord_GetTimeTickChannel_Call {
_c.Call.Return(run)
return _c
}
// Import provides a mock function with given fields: ctx, req
func (_m *DataCoord) Import(ctx context.Context, req *datapb.ImportTaskRequest) (*datapb.ImportTaskResponse, error) {
ret := _m.Called(ctx, req)
var r0 *datapb.ImportTaskResponse
var r1 error
if rf, ok := ret.Get(0).(func(context.Context, *datapb.ImportTaskRequest) (*datapb.ImportTaskResponse, error)); ok {
return rf(ctx, req)
}
if rf, ok := ret.Get(0).(func(context.Context, *datapb.ImportTaskRequest) *datapb.ImportTaskResponse); ok {
r0 = rf(ctx, req)
} else {
@ -1417,6 +1236,7 @@ func (_m *DataCoord) Import(ctx context.Context, req *datapb.ImportTaskRequest)
}
}
var r1 error
if rf, ok := ret.Get(1).(func(context.Context, *datapb.ImportTaskRequest) error); ok {
r1 = rf(ctx, req)
} else {
@ -1450,11 +1270,6 @@ func (_c *DataCoord_Import_Call) Return(_a0 *datapb.ImportTaskResponse, _a1 erro
return _c
}
func (_c *DataCoord_Import_Call) RunAndReturn(run func(context.Context, *datapb.ImportTaskRequest) (*datapb.ImportTaskResponse, error)) *DataCoord_Import_Call {
_c.Call.Return(run)
return _c
}
// Init provides a mock function with given fields:
func (_m *DataCoord) Init() error {
ret := _m.Called()
@ -1556,10 +1371,6 @@ func (_m *DataCoord) ManualCompaction(ctx context.Context, req *milvuspb.ManualC
ret := _m.Called(ctx, req)
var r0 *milvuspb.ManualCompactionResponse
var r1 error
if rf, ok := ret.Get(0).(func(context.Context, *milvuspb.ManualCompactionRequest) (*milvuspb.ManualCompactionResponse, error)); ok {
return rf(ctx, req)
}
if rf, ok := ret.Get(0).(func(context.Context, *milvuspb.ManualCompactionRequest) *milvuspb.ManualCompactionResponse); ok {
r0 = rf(ctx, req)
} else {
@ -1568,6 +1379,7 @@ func (_m *DataCoord) ManualCompaction(ctx context.Context, req *milvuspb.ManualC
}
}
var r1 error
if rf, ok := ret.Get(1).(func(context.Context, *milvuspb.ManualCompactionRequest) error); ok {
r1 = rf(ctx, req)
} else {
@ -1601,20 +1413,11 @@ func (_c *DataCoord_ManualCompaction_Call) Return(_a0 *milvuspb.ManualCompaction
return _c
}
func (_c *DataCoord_ManualCompaction_Call) RunAndReturn(run func(context.Context, *milvuspb.ManualCompactionRequest) (*milvuspb.ManualCompactionResponse, error)) *DataCoord_ManualCompaction_Call {
_c.Call.Return(run)
return _c
}
// MarkSegmentsDropped provides a mock function with given fields: ctx, req
func (_m *DataCoord) MarkSegmentsDropped(ctx context.Context, req *datapb.MarkSegmentsDroppedRequest) (*commonpb.Status, error) {
ret := _m.Called(ctx, req)
var r0 *commonpb.Status
var r1 error
if rf, ok := ret.Get(0).(func(context.Context, *datapb.MarkSegmentsDroppedRequest) (*commonpb.Status, error)); ok {
return rf(ctx, req)
}
if rf, ok := ret.Get(0).(func(context.Context, *datapb.MarkSegmentsDroppedRequest) *commonpb.Status); ok {
r0 = rf(ctx, req)
} else {
@ -1623,6 +1426,7 @@ func (_m *DataCoord) MarkSegmentsDropped(ctx context.Context, req *datapb.MarkSe
}
}
var r1 error
if rf, ok := ret.Get(1).(func(context.Context, *datapb.MarkSegmentsDroppedRequest) error); ok {
r1 = rf(ctx, req)
} else {
@ -1656,11 +1460,6 @@ func (_c *DataCoord_MarkSegmentsDropped_Call) Return(_a0 *commonpb.Status, _a1 e
return _c
}
func (_c *DataCoord_MarkSegmentsDropped_Call) RunAndReturn(run func(context.Context, *datapb.MarkSegmentsDroppedRequest) (*commonpb.Status, error)) *DataCoord_MarkSegmentsDropped_Call {
_c.Call.Return(run)
return _c
}
// Register provides a mock function with given fields:
func (_m *DataCoord) Register() error {
ret := _m.Called()
@ -1762,10 +1561,6 @@ func (_m *DataCoord) SaveBinlogPaths(ctx context.Context, req *datapb.SaveBinlog
ret := _m.Called(ctx, req)
var r0 *commonpb.Status
var r1 error
if rf, ok := ret.Get(0).(func(context.Context, *datapb.SaveBinlogPathsRequest) (*commonpb.Status, error)); ok {
return rf(ctx, req)
}
if rf, ok := ret.Get(0).(func(context.Context, *datapb.SaveBinlogPathsRequest) *commonpb.Status); ok {
r0 = rf(ctx, req)
} else {
@ -1774,6 +1569,7 @@ func (_m *DataCoord) SaveBinlogPaths(ctx context.Context, req *datapb.SaveBinlog
}
}
var r1 error
if rf, ok := ret.Get(1).(func(context.Context, *datapb.SaveBinlogPathsRequest) error); ok {
r1 = rf(ctx, req)
} else {
@ -1807,20 +1603,11 @@ func (_c *DataCoord_SaveBinlogPaths_Call) Return(_a0 *commonpb.Status, _a1 error
return _c
}
func (_c *DataCoord_SaveBinlogPaths_Call) RunAndReturn(run func(context.Context, *datapb.SaveBinlogPathsRequest) (*commonpb.Status, error)) *DataCoord_SaveBinlogPaths_Call {
_c.Call.Return(run)
return _c
}
// SaveImportSegment provides a mock function with given fields: ctx, req
func (_m *DataCoord) SaveImportSegment(ctx context.Context, req *datapb.SaveImportSegmentRequest) (*commonpb.Status, error) {
ret := _m.Called(ctx, req)
var r0 *commonpb.Status
var r1 error
if rf, ok := ret.Get(0).(func(context.Context, *datapb.SaveImportSegmentRequest) (*commonpb.Status, error)); ok {
return rf(ctx, req)
}
if rf, ok := ret.Get(0).(func(context.Context, *datapb.SaveImportSegmentRequest) *commonpb.Status); ok {
r0 = rf(ctx, req)
} else {
@ -1829,6 +1616,7 @@ func (_m *DataCoord) SaveImportSegment(ctx context.Context, req *datapb.SaveImpo
}
}
var r1 error
if rf, ok := ret.Get(1).(func(context.Context, *datapb.SaveImportSegmentRequest) error); ok {
r1 = rf(ctx, req)
} else {
@ -1862,20 +1650,11 @@ func (_c *DataCoord_SaveImportSegment_Call) Return(_a0 *commonpb.Status, _a1 err
return _c
}
func (_c *DataCoord_SaveImportSegment_Call) RunAndReturn(run func(context.Context, *datapb.SaveImportSegmentRequest) (*commonpb.Status, error)) *DataCoord_SaveImportSegment_Call {
_c.Call.Return(run)
return _c
}
// SetSegmentState provides a mock function with given fields: ctx, req
func (_m *DataCoord) SetSegmentState(ctx context.Context, req *datapb.SetSegmentStateRequest) (*datapb.SetSegmentStateResponse, error) {
ret := _m.Called(ctx, req)
var r0 *datapb.SetSegmentStateResponse
var r1 error
if rf, ok := ret.Get(0).(func(context.Context, *datapb.SetSegmentStateRequest) (*datapb.SetSegmentStateResponse, error)); ok {
return rf(ctx, req)
}
if rf, ok := ret.Get(0).(func(context.Context, *datapb.SetSegmentStateRequest) *datapb.SetSegmentStateResponse); ok {
r0 = rf(ctx, req)
} else {
@ -1884,6 +1663,7 @@ func (_m *DataCoord) SetSegmentState(ctx context.Context, req *datapb.SetSegment
}
}
var r1 error
if rf, ok := ret.Get(1).(func(context.Context, *datapb.SetSegmentStateRequest) error); ok {
r1 = rf(ctx, req)
} else {
@ -1917,20 +1697,11 @@ func (_c *DataCoord_SetSegmentState_Call) Return(_a0 *datapb.SetSegmentStateResp
return _c
}
func (_c *DataCoord_SetSegmentState_Call) RunAndReturn(run func(context.Context, *datapb.SetSegmentStateRequest) (*datapb.SetSegmentStateResponse, error)) *DataCoord_SetSegmentState_Call {
_c.Call.Return(run)
return _c
}
// ShowConfigurations provides a mock function with given fields: ctx, req
func (_m *DataCoord) ShowConfigurations(ctx context.Context, req *internalpb.ShowConfigurationsRequest) (*internalpb.ShowConfigurationsResponse, error) {
ret := _m.Called(ctx, req)
var r0 *internalpb.ShowConfigurationsResponse
var r1 error
if rf, ok := ret.Get(0).(func(context.Context, *internalpb.ShowConfigurationsRequest) (*internalpb.ShowConfigurationsResponse, error)); ok {
return rf(ctx, req)
}
if rf, ok := ret.Get(0).(func(context.Context, *internalpb.ShowConfigurationsRequest) *internalpb.ShowConfigurationsResponse); ok {
r0 = rf(ctx, req)
} else {
@ -1939,6 +1710,7 @@ func (_m *DataCoord) ShowConfigurations(ctx context.Context, req *internalpb.Sho
}
}
var r1 error
if rf, ok := ret.Get(1).(func(context.Context, *internalpb.ShowConfigurationsRequest) error); ok {
r1 = rf(ctx, req)
} else {
@ -1972,11 +1744,6 @@ func (_c *DataCoord_ShowConfigurations_Call) Return(_a0 *internalpb.ShowConfigur
return _c
}
func (_c *DataCoord_ShowConfigurations_Call) RunAndReturn(run func(context.Context, *internalpb.ShowConfigurationsRequest) (*internalpb.ShowConfigurationsResponse, error)) *DataCoord_ShowConfigurations_Call {
_c.Call.Return(run)
return _c
}
// Start provides a mock function with given fields:
func (_m *DataCoord) Start() error {
ret := _m.Called()
@ -2013,11 +1780,6 @@ func (_c *DataCoord_Start_Call) Return(_a0 error) *DataCoord_Start_Call {
return _c
}
func (_c *DataCoord_Start_Call) RunAndReturn(run func() error) *DataCoord_Start_Call {
_c.Call.Return(run)
return _c
}
// Stop provides a mock function with given fields:
func (_m *DataCoord) Stop() error {
ret := _m.Called()
@ -2054,20 +1816,11 @@ func (_c *DataCoord_Stop_Call) Return(_a0 error) *DataCoord_Stop_Call {
return _c
}
func (_c *DataCoord_Stop_Call) RunAndReturn(run func() error) *DataCoord_Stop_Call {
_c.Call.Return(run)
return _c
}
// UnsetIsImportingState provides a mock function with given fields: ctx, req
func (_m *DataCoord) UnsetIsImportingState(ctx context.Context, req *datapb.UnsetIsImportingStateRequest) (*commonpb.Status, error) {
ret := _m.Called(ctx, req)
var r0 *commonpb.Status
var r1 error
if rf, ok := ret.Get(0).(func(context.Context, *datapb.UnsetIsImportingStateRequest) (*commonpb.Status, error)); ok {
return rf(ctx, req)
}
if rf, ok := ret.Get(0).(func(context.Context, *datapb.UnsetIsImportingStateRequest) *commonpb.Status); ok {
r0 = rf(ctx, req)
} else {
@ -2076,6 +1829,7 @@ func (_m *DataCoord) UnsetIsImportingState(ctx context.Context, req *datapb.Unse
}
}
var r1 error
if rf, ok := ret.Get(1).(func(context.Context, *datapb.UnsetIsImportingStateRequest) error); ok {
r1 = rf(ctx, req)
} else {
@ -2109,20 +1863,11 @@ func (_c *DataCoord_UnsetIsImportingState_Call) Return(_a0 *commonpb.Status, _a1
return _c
}
func (_c *DataCoord_UnsetIsImportingState_Call) RunAndReturn(run func(context.Context, *datapb.UnsetIsImportingStateRequest) (*commonpb.Status, error)) *DataCoord_UnsetIsImportingState_Call {
_c.Call.Return(run)
return _c
}
// UpdateChannelCheckpoint provides a mock function with given fields: ctx, req
func (_m *DataCoord) UpdateChannelCheckpoint(ctx context.Context, req *datapb.UpdateChannelCheckpointRequest) (*commonpb.Status, error) {
ret := _m.Called(ctx, req)
var r0 *commonpb.Status
var r1 error
if rf, ok := ret.Get(0).(func(context.Context, *datapb.UpdateChannelCheckpointRequest) (*commonpb.Status, error)); ok {
return rf(ctx, req)
}
if rf, ok := ret.Get(0).(func(context.Context, *datapb.UpdateChannelCheckpointRequest) *commonpb.Status); ok {
r0 = rf(ctx, req)
} else {
@ -2131,6 +1876,7 @@ func (_m *DataCoord) UpdateChannelCheckpoint(ctx context.Context, req *datapb.Up
}
}
var r1 error
if rf, ok := ret.Get(1).(func(context.Context, *datapb.UpdateChannelCheckpointRequest) error); ok {
r1 = rf(ctx, req)
} else {
@ -2164,20 +1910,11 @@ func (_c *DataCoord_UpdateChannelCheckpoint_Call) Return(_a0 *commonpb.Status, _
return _c
}
func (_c *DataCoord_UpdateChannelCheckpoint_Call) RunAndReturn(run func(context.Context, *datapb.UpdateChannelCheckpointRequest) (*commonpb.Status, error)) *DataCoord_UpdateChannelCheckpoint_Call {
_c.Call.Return(run)
return _c
}
// UpdateSegmentStatistics provides a mock function with given fields: ctx, req
func (_m *DataCoord) UpdateSegmentStatistics(ctx context.Context, req *datapb.UpdateSegmentStatisticsRequest) (*commonpb.Status, error) {
ret := _m.Called(ctx, req)
var r0 *commonpb.Status
var r1 error
if rf, ok := ret.Get(0).(func(context.Context, *datapb.UpdateSegmentStatisticsRequest) (*commonpb.Status, error)); ok {
return rf(ctx, req)
}
if rf, ok := ret.Get(0).(func(context.Context, *datapb.UpdateSegmentStatisticsRequest) *commonpb.Status); ok {
r0 = rf(ctx, req)
} else {
@ -2186,6 +1923,7 @@ func (_m *DataCoord) UpdateSegmentStatistics(ctx context.Context, req *datapb.Up
}
}
var r1 error
if rf, ok := ret.Get(1).(func(context.Context, *datapb.UpdateSegmentStatisticsRequest) error); ok {
r1 = rf(ctx, req)
} else {
@ -2219,20 +1957,11 @@ func (_c *DataCoord_UpdateSegmentStatistics_Call) Return(_a0 *commonpb.Status, _
return _c
}
func (_c *DataCoord_UpdateSegmentStatistics_Call) RunAndReturn(run func(context.Context, *datapb.UpdateSegmentStatisticsRequest) (*commonpb.Status, error)) *DataCoord_UpdateSegmentStatistics_Call {
_c.Call.Return(run)
return _c
}
// WatchChannels provides a mock function with given fields: ctx, req
func (_m *DataCoord) WatchChannels(ctx context.Context, req *datapb.WatchChannelsRequest) (*datapb.WatchChannelsResponse, error) {
ret := _m.Called(ctx, req)
var r0 *datapb.WatchChannelsResponse
var r1 error
if rf, ok := ret.Get(0).(func(context.Context, *datapb.WatchChannelsRequest) (*datapb.WatchChannelsResponse, error)); ok {
return rf(ctx, req)
}
if rf, ok := ret.Get(0).(func(context.Context, *datapb.WatchChannelsRequest) *datapb.WatchChannelsResponse); ok {
r0 = rf(ctx, req)
} else {
@ -2241,6 +1970,7 @@ func (_m *DataCoord) WatchChannels(ctx context.Context, req *datapb.WatchChannel
}
}
var r1 error
if rf, ok := ret.Get(1).(func(context.Context, *datapb.WatchChannelsRequest) error); ok {
r1 = rf(ctx, req)
} else {
@ -2274,11 +2004,6 @@ func (_c *DataCoord_WatchChannels_Call) Return(_a0 *datapb.WatchChannelsResponse
return _c
}
func (_c *DataCoord_WatchChannels_Call) RunAndReturn(run func(context.Context, *datapb.WatchChannelsRequest) (*datapb.WatchChannelsResponse, error)) *DataCoord_WatchChannels_Call {
_c.Call.Return(run)
return _c
}
type mockConstructorTestingTNewDataCoord interface {
mock.TestingT
Cleanup(func())

View File

@ -1,4 +1,4 @@
// Code generated by mockery v2.14.0. DO NOT EDIT.
// Code generated by mockery v2.16.0. DO NOT EDIT.
package mocks
@ -16,21 +16,21 @@ import (
mock "github.com/stretchr/testify/mock"
)
// MockIndexCoord is an autogenerated mock type for the IndexCoord type
type MockIndexCoord struct {
// IndexCoord is an autogenerated mock type for the IndexCoord type
type IndexCoord struct {
mock.Mock
}
type MockIndexCoord_Expecter struct {
type IndexCoord_Expecter struct {
mock *mock.Mock
}
func (_m *MockIndexCoord) EXPECT() *MockIndexCoord_Expecter {
return &MockIndexCoord_Expecter{mock: &_m.Mock}
func (_m *IndexCoord) EXPECT() *IndexCoord_Expecter {
return &IndexCoord_Expecter{mock: &_m.Mock}
}
// CheckHealth provides a mock function with given fields: ctx, req
func (_m *MockIndexCoord) CheckHealth(ctx context.Context, req *milvuspb.CheckHealthRequest) (*milvuspb.CheckHealthResponse, error) {
func (_m *IndexCoord) CheckHealth(ctx context.Context, req *milvuspb.CheckHealthRequest) (*milvuspb.CheckHealthResponse, error) {
ret := _m.Called(ctx, req)
var r0 *milvuspb.CheckHealthResponse
@ -52,32 +52,32 @@ func (_m *MockIndexCoord) CheckHealth(ctx context.Context, req *milvuspb.CheckHe
return r0, r1
}
// MockIndexCoord_CheckHealth_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'CheckHealth'
type MockIndexCoord_CheckHealth_Call struct {
// IndexCoord_CheckHealth_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'CheckHealth'
type IndexCoord_CheckHealth_Call struct {
*mock.Call
}
// CheckHealth is a helper method to define mock.On call
// - ctx context.Context
// - req *milvuspb.CheckHealthRequest
func (_e *MockIndexCoord_Expecter) CheckHealth(ctx interface{}, req interface{}) *MockIndexCoord_CheckHealth_Call {
return &MockIndexCoord_CheckHealth_Call{Call: _e.mock.On("CheckHealth", ctx, req)}
func (_e *IndexCoord_Expecter) CheckHealth(ctx interface{}, req interface{}) *IndexCoord_CheckHealth_Call {
return &IndexCoord_CheckHealth_Call{Call: _e.mock.On("CheckHealth", ctx, req)}
}
func (_c *MockIndexCoord_CheckHealth_Call) Run(run func(ctx context.Context, req *milvuspb.CheckHealthRequest)) *MockIndexCoord_CheckHealth_Call {
func (_c *IndexCoord_CheckHealth_Call) Run(run func(ctx context.Context, req *milvuspb.CheckHealthRequest)) *IndexCoord_CheckHealth_Call {
_c.Call.Run(func(args mock.Arguments) {
run(args[0].(context.Context), args[1].(*milvuspb.CheckHealthRequest))
})
return _c
}
func (_c *MockIndexCoord_CheckHealth_Call) Return(_a0 *milvuspb.CheckHealthResponse, _a1 error) *MockIndexCoord_CheckHealth_Call {
func (_c *IndexCoord_CheckHealth_Call) Return(_a0 *milvuspb.CheckHealthResponse, _a1 error) *IndexCoord_CheckHealth_Call {
_c.Call.Return(_a0, _a1)
return _c
}
// CreateIndex provides a mock function with given fields: ctx, req
func (_m *MockIndexCoord) CreateIndex(ctx context.Context, req *indexpb.CreateIndexRequest) (*commonpb.Status, error) {
func (_m *IndexCoord) CreateIndex(ctx context.Context, req *indexpb.CreateIndexRequest) (*commonpb.Status, error) {
ret := _m.Called(ctx, req)
var r0 *commonpb.Status
@ -99,32 +99,32 @@ func (_m *MockIndexCoord) CreateIndex(ctx context.Context, req *indexpb.CreateIn
return r0, r1
}
// MockIndexCoord_CreateIndex_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'CreateIndex'
type MockIndexCoord_CreateIndex_Call struct {
// IndexCoord_CreateIndex_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'CreateIndex'
type IndexCoord_CreateIndex_Call struct {
*mock.Call
}
// CreateIndex is a helper method to define mock.On call
// - ctx context.Context
// - req *indexpb.CreateIndexRequest
func (_e *MockIndexCoord_Expecter) CreateIndex(ctx interface{}, req interface{}) *MockIndexCoord_CreateIndex_Call {
return &MockIndexCoord_CreateIndex_Call{Call: _e.mock.On("CreateIndex", ctx, req)}
func (_e *IndexCoord_Expecter) CreateIndex(ctx interface{}, req interface{}) *IndexCoord_CreateIndex_Call {
return &IndexCoord_CreateIndex_Call{Call: _e.mock.On("CreateIndex", ctx, req)}
}
func (_c *MockIndexCoord_CreateIndex_Call) Run(run func(ctx context.Context, req *indexpb.CreateIndexRequest)) *MockIndexCoord_CreateIndex_Call {
func (_c *IndexCoord_CreateIndex_Call) Run(run func(ctx context.Context, req *indexpb.CreateIndexRequest)) *IndexCoord_CreateIndex_Call {
_c.Call.Run(func(args mock.Arguments) {
run(args[0].(context.Context), args[1].(*indexpb.CreateIndexRequest))
})
return _c
}
func (_c *MockIndexCoord_CreateIndex_Call) Return(_a0 *commonpb.Status, _a1 error) *MockIndexCoord_CreateIndex_Call {
func (_c *IndexCoord_CreateIndex_Call) Return(_a0 *commonpb.Status, _a1 error) *IndexCoord_CreateIndex_Call {
_c.Call.Return(_a0, _a1)
return _c
}
// DescribeIndex provides a mock function with given fields: ctx, req
func (_m *MockIndexCoord) DescribeIndex(ctx context.Context, req *indexpb.DescribeIndexRequest) (*indexpb.DescribeIndexResponse, error) {
func (_m *IndexCoord) DescribeIndex(ctx context.Context, req *indexpb.DescribeIndexRequest) (*indexpb.DescribeIndexResponse, error) {
ret := _m.Called(ctx, req)
var r0 *indexpb.DescribeIndexResponse
@ -146,32 +146,32 @@ func (_m *MockIndexCoord) DescribeIndex(ctx context.Context, req *indexpb.Descri
return r0, r1
}
// MockIndexCoord_DescribeIndex_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'DescribeIndex'
type MockIndexCoord_DescribeIndex_Call struct {
// IndexCoord_DescribeIndex_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'DescribeIndex'
type IndexCoord_DescribeIndex_Call struct {
*mock.Call
}
// DescribeIndex is a helper method to define mock.On call
// - ctx context.Context
// - req *indexpb.DescribeIndexRequest
func (_e *MockIndexCoord_Expecter) DescribeIndex(ctx interface{}, req interface{}) *MockIndexCoord_DescribeIndex_Call {
return &MockIndexCoord_DescribeIndex_Call{Call: _e.mock.On("DescribeIndex", ctx, req)}
func (_e *IndexCoord_Expecter) DescribeIndex(ctx interface{}, req interface{}) *IndexCoord_DescribeIndex_Call {
return &IndexCoord_DescribeIndex_Call{Call: _e.mock.On("DescribeIndex", ctx, req)}
}
func (_c *MockIndexCoord_DescribeIndex_Call) Run(run func(ctx context.Context, req *indexpb.DescribeIndexRequest)) *MockIndexCoord_DescribeIndex_Call {
func (_c *IndexCoord_DescribeIndex_Call) Run(run func(ctx context.Context, req *indexpb.DescribeIndexRequest)) *IndexCoord_DescribeIndex_Call {
_c.Call.Run(func(args mock.Arguments) {
run(args[0].(context.Context), args[1].(*indexpb.DescribeIndexRequest))
})
return _c
}
func (_c *MockIndexCoord_DescribeIndex_Call) Return(_a0 *indexpb.DescribeIndexResponse, _a1 error) *MockIndexCoord_DescribeIndex_Call {
func (_c *IndexCoord_DescribeIndex_Call) Return(_a0 *indexpb.DescribeIndexResponse, _a1 error) *IndexCoord_DescribeIndex_Call {
_c.Call.Return(_a0, _a1)
return _c
}
// DropIndex provides a mock function with given fields: ctx, req
func (_m *MockIndexCoord) DropIndex(ctx context.Context, req *indexpb.DropIndexRequest) (*commonpb.Status, error) {
func (_m *IndexCoord) DropIndex(ctx context.Context, req *indexpb.DropIndexRequest) (*commonpb.Status, error) {
ret := _m.Called(ctx, req)
var r0 *commonpb.Status
@ -193,32 +193,32 @@ func (_m *MockIndexCoord) DropIndex(ctx context.Context, req *indexpb.DropIndexR
return r0, r1
}
// MockIndexCoord_DropIndex_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'DropIndex'
type MockIndexCoord_DropIndex_Call struct {
// IndexCoord_DropIndex_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'DropIndex'
type IndexCoord_DropIndex_Call struct {
*mock.Call
}
// DropIndex is a helper method to define mock.On call
// - ctx context.Context
// - req *indexpb.DropIndexRequest
func (_e *MockIndexCoord_Expecter) DropIndex(ctx interface{}, req interface{}) *MockIndexCoord_DropIndex_Call {
return &MockIndexCoord_DropIndex_Call{Call: _e.mock.On("DropIndex", ctx, req)}
func (_e *IndexCoord_Expecter) DropIndex(ctx interface{}, req interface{}) *IndexCoord_DropIndex_Call {
return &IndexCoord_DropIndex_Call{Call: _e.mock.On("DropIndex", ctx, req)}
}
func (_c *MockIndexCoord_DropIndex_Call) Run(run func(ctx context.Context, req *indexpb.DropIndexRequest)) *MockIndexCoord_DropIndex_Call {
func (_c *IndexCoord_DropIndex_Call) Run(run func(ctx context.Context, req *indexpb.DropIndexRequest)) *IndexCoord_DropIndex_Call {
_c.Call.Run(func(args mock.Arguments) {
run(args[0].(context.Context), args[1].(*indexpb.DropIndexRequest))
})
return _c
}
func (_c *MockIndexCoord_DropIndex_Call) Return(_a0 *commonpb.Status, _a1 error) *MockIndexCoord_DropIndex_Call {
func (_c *IndexCoord_DropIndex_Call) Return(_a0 *commonpb.Status, _a1 error) *IndexCoord_DropIndex_Call {
_c.Call.Return(_a0, _a1)
return _c
}
// GetComponentStates provides a mock function with given fields: ctx
func (_m *MockIndexCoord) GetComponentStates(ctx context.Context) (*milvuspb.ComponentStates, error) {
func (_m *IndexCoord) GetComponentStates(ctx context.Context) (*milvuspb.ComponentStates, error) {
ret := _m.Called(ctx)
var r0 *milvuspb.ComponentStates
@ -240,31 +240,31 @@ func (_m *MockIndexCoord) GetComponentStates(ctx context.Context) (*milvuspb.Com
return r0, r1
}
// MockIndexCoord_GetComponentStates_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GetComponentStates'
type MockIndexCoord_GetComponentStates_Call struct {
// IndexCoord_GetComponentStates_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GetComponentStates'
type IndexCoord_GetComponentStates_Call struct {
*mock.Call
}
// GetComponentStates is a helper method to define mock.On call
// - ctx context.Context
func (_e *MockIndexCoord_Expecter) GetComponentStates(ctx interface{}) *MockIndexCoord_GetComponentStates_Call {
return &MockIndexCoord_GetComponentStates_Call{Call: _e.mock.On("GetComponentStates", ctx)}
func (_e *IndexCoord_Expecter) GetComponentStates(ctx interface{}) *IndexCoord_GetComponentStates_Call {
return &IndexCoord_GetComponentStates_Call{Call: _e.mock.On("GetComponentStates", ctx)}
}
func (_c *MockIndexCoord_GetComponentStates_Call) Run(run func(ctx context.Context)) *MockIndexCoord_GetComponentStates_Call {
func (_c *IndexCoord_GetComponentStates_Call) Run(run func(ctx context.Context)) *IndexCoord_GetComponentStates_Call {
_c.Call.Run(func(args mock.Arguments) {
run(args[0].(context.Context))
})
return _c
}
func (_c *MockIndexCoord_GetComponentStates_Call) Return(_a0 *milvuspb.ComponentStates, _a1 error) *MockIndexCoord_GetComponentStates_Call {
func (_c *IndexCoord_GetComponentStates_Call) Return(_a0 *milvuspb.ComponentStates, _a1 error) *IndexCoord_GetComponentStates_Call {
_c.Call.Return(_a0, _a1)
return _c
}
// GetIndexBuildProgress provides a mock function with given fields: ctx, req
func (_m *MockIndexCoord) GetIndexBuildProgress(ctx context.Context, req *indexpb.GetIndexBuildProgressRequest) (*indexpb.GetIndexBuildProgressResponse, error) {
func (_m *IndexCoord) GetIndexBuildProgress(ctx context.Context, req *indexpb.GetIndexBuildProgressRequest) (*indexpb.GetIndexBuildProgressResponse, error) {
ret := _m.Called(ctx, req)
var r0 *indexpb.GetIndexBuildProgressResponse
@ -286,32 +286,32 @@ func (_m *MockIndexCoord) GetIndexBuildProgress(ctx context.Context, req *indexp
return r0, r1
}
// MockIndexCoord_GetIndexBuildProgress_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GetIndexBuildProgress'
type MockIndexCoord_GetIndexBuildProgress_Call struct {
// IndexCoord_GetIndexBuildProgress_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GetIndexBuildProgress'
type IndexCoord_GetIndexBuildProgress_Call struct {
*mock.Call
}
// GetIndexBuildProgress is a helper method to define mock.On call
// - ctx context.Context
// - req *indexpb.GetIndexBuildProgressRequest
func (_e *MockIndexCoord_Expecter) GetIndexBuildProgress(ctx interface{}, req interface{}) *MockIndexCoord_GetIndexBuildProgress_Call {
return &MockIndexCoord_GetIndexBuildProgress_Call{Call: _e.mock.On("GetIndexBuildProgress", ctx, req)}
func (_e *IndexCoord_Expecter) GetIndexBuildProgress(ctx interface{}, req interface{}) *IndexCoord_GetIndexBuildProgress_Call {
return &IndexCoord_GetIndexBuildProgress_Call{Call: _e.mock.On("GetIndexBuildProgress", ctx, req)}
}
func (_c *MockIndexCoord_GetIndexBuildProgress_Call) Run(run func(ctx context.Context, req *indexpb.GetIndexBuildProgressRequest)) *MockIndexCoord_GetIndexBuildProgress_Call {
func (_c *IndexCoord_GetIndexBuildProgress_Call) Run(run func(ctx context.Context, req *indexpb.GetIndexBuildProgressRequest)) *IndexCoord_GetIndexBuildProgress_Call {
_c.Call.Run(func(args mock.Arguments) {
run(args[0].(context.Context), args[1].(*indexpb.GetIndexBuildProgressRequest))
})
return _c
}
func (_c *MockIndexCoord_GetIndexBuildProgress_Call) Return(_a0 *indexpb.GetIndexBuildProgressResponse, _a1 error) *MockIndexCoord_GetIndexBuildProgress_Call {
func (_c *IndexCoord_GetIndexBuildProgress_Call) Return(_a0 *indexpb.GetIndexBuildProgressResponse, _a1 error) *IndexCoord_GetIndexBuildProgress_Call {
_c.Call.Return(_a0, _a1)
return _c
}
// GetIndexInfos provides a mock function with given fields: ctx, req
func (_m *MockIndexCoord) GetIndexInfos(ctx context.Context, req *indexpb.GetIndexInfoRequest) (*indexpb.GetIndexInfoResponse, error) {
func (_m *IndexCoord) GetIndexInfos(ctx context.Context, req *indexpb.GetIndexInfoRequest) (*indexpb.GetIndexInfoResponse, error) {
ret := _m.Called(ctx, req)
var r0 *indexpb.GetIndexInfoResponse
@ -333,32 +333,32 @@ func (_m *MockIndexCoord) GetIndexInfos(ctx context.Context, req *indexpb.GetInd
return r0, r1
}
// MockIndexCoord_GetIndexInfos_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GetIndexInfos'
type MockIndexCoord_GetIndexInfos_Call struct {
// IndexCoord_GetIndexInfos_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GetIndexInfos'
type IndexCoord_GetIndexInfos_Call struct {
*mock.Call
}
// GetIndexInfos is a helper method to define mock.On call
// - ctx context.Context
// - req *indexpb.GetIndexInfoRequest
func (_e *MockIndexCoord_Expecter) GetIndexInfos(ctx interface{}, req interface{}) *MockIndexCoord_GetIndexInfos_Call {
return &MockIndexCoord_GetIndexInfos_Call{Call: _e.mock.On("GetIndexInfos", ctx, req)}
func (_e *IndexCoord_Expecter) GetIndexInfos(ctx interface{}, req interface{}) *IndexCoord_GetIndexInfos_Call {
return &IndexCoord_GetIndexInfos_Call{Call: _e.mock.On("GetIndexInfos", ctx, req)}
}
func (_c *MockIndexCoord_GetIndexInfos_Call) Run(run func(ctx context.Context, req *indexpb.GetIndexInfoRequest)) *MockIndexCoord_GetIndexInfos_Call {
func (_c *IndexCoord_GetIndexInfos_Call) Run(run func(ctx context.Context, req *indexpb.GetIndexInfoRequest)) *IndexCoord_GetIndexInfos_Call {
_c.Call.Run(func(args mock.Arguments) {
run(args[0].(context.Context), args[1].(*indexpb.GetIndexInfoRequest))
})
return _c
}
func (_c *MockIndexCoord_GetIndexInfos_Call) Return(_a0 *indexpb.GetIndexInfoResponse, _a1 error) *MockIndexCoord_GetIndexInfos_Call {
func (_c *IndexCoord_GetIndexInfos_Call) Return(_a0 *indexpb.GetIndexInfoResponse, _a1 error) *IndexCoord_GetIndexInfos_Call {
_c.Call.Return(_a0, _a1)
return _c
}
// GetIndexState provides a mock function with given fields: ctx, req
func (_m *MockIndexCoord) GetIndexState(ctx context.Context, req *indexpb.GetIndexStateRequest) (*indexpb.GetIndexStateResponse, error) {
func (_m *IndexCoord) GetIndexState(ctx context.Context, req *indexpb.GetIndexStateRequest) (*indexpb.GetIndexStateResponse, error) {
ret := _m.Called(ctx, req)
var r0 *indexpb.GetIndexStateResponse
@ -380,32 +380,79 @@ func (_m *MockIndexCoord) GetIndexState(ctx context.Context, req *indexpb.GetInd
return r0, r1
}
// MockIndexCoord_GetIndexState_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GetIndexState'
type MockIndexCoord_GetIndexState_Call struct {
// IndexCoord_GetIndexState_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GetIndexState'
type IndexCoord_GetIndexState_Call struct {
*mock.Call
}
// GetIndexState is a helper method to define mock.On call
// - ctx context.Context
// - req *indexpb.GetIndexStateRequest
func (_e *MockIndexCoord_Expecter) GetIndexState(ctx interface{}, req interface{}) *MockIndexCoord_GetIndexState_Call {
return &MockIndexCoord_GetIndexState_Call{Call: _e.mock.On("GetIndexState", ctx, req)}
func (_e *IndexCoord_Expecter) GetIndexState(ctx interface{}, req interface{}) *IndexCoord_GetIndexState_Call {
return &IndexCoord_GetIndexState_Call{Call: _e.mock.On("GetIndexState", ctx, req)}
}
func (_c *MockIndexCoord_GetIndexState_Call) Run(run func(ctx context.Context, req *indexpb.GetIndexStateRequest)) *MockIndexCoord_GetIndexState_Call {
func (_c *IndexCoord_GetIndexState_Call) Run(run func(ctx context.Context, req *indexpb.GetIndexStateRequest)) *IndexCoord_GetIndexState_Call {
_c.Call.Run(func(args mock.Arguments) {
run(args[0].(context.Context), args[1].(*indexpb.GetIndexStateRequest))
})
return _c
}
func (_c *MockIndexCoord_GetIndexState_Call) Return(_a0 *indexpb.GetIndexStateResponse, _a1 error) *MockIndexCoord_GetIndexState_Call {
func (_c *IndexCoord_GetIndexState_Call) Return(_a0 *indexpb.GetIndexStateResponse, _a1 error) *IndexCoord_GetIndexState_Call {
_c.Call.Return(_a0, _a1)
return _c
}
// GetIndexStatistics provides a mock function with given fields: ctx, req
func (_m *IndexCoord) GetIndexStatistics(ctx context.Context, req *indexpb.GetIndexStatisticsRequest) (*indexpb.GetIndexStatisticsResponse, error) {
ret := _m.Called(ctx, req)
var r0 *indexpb.GetIndexStatisticsResponse
if rf, ok := ret.Get(0).(func(context.Context, *indexpb.GetIndexStatisticsRequest) *indexpb.GetIndexStatisticsResponse); ok {
r0 = rf(ctx, req)
} else {
if ret.Get(0) != nil {
r0 = ret.Get(0).(*indexpb.GetIndexStatisticsResponse)
}
}
var r1 error
if rf, ok := ret.Get(1).(func(context.Context, *indexpb.GetIndexStatisticsRequest) error); ok {
r1 = rf(ctx, req)
} else {
r1 = ret.Error(1)
}
return r0, r1
}
// IndexCoord_GetIndexStatistics_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GetIndexStatistics'
type IndexCoord_GetIndexStatistics_Call struct {
*mock.Call
}
// GetIndexStatistics is a helper method to define mock.On call
// - ctx context.Context
// - req *indexpb.GetIndexStatisticsRequest
func (_e *IndexCoord_Expecter) GetIndexStatistics(ctx interface{}, req interface{}) *IndexCoord_GetIndexStatistics_Call {
return &IndexCoord_GetIndexStatistics_Call{Call: _e.mock.On("GetIndexStatistics", ctx, req)}
}
func (_c *IndexCoord_GetIndexStatistics_Call) Run(run func(ctx context.Context, req *indexpb.GetIndexStatisticsRequest)) *IndexCoord_GetIndexStatistics_Call {
_c.Call.Run(func(args mock.Arguments) {
run(args[0].(context.Context), args[1].(*indexpb.GetIndexStatisticsRequest))
})
return _c
}
func (_c *IndexCoord_GetIndexStatistics_Call) Return(_a0 *indexpb.GetIndexStatisticsResponse, _a1 error) *IndexCoord_GetIndexStatistics_Call {
_c.Call.Return(_a0, _a1)
return _c
}
// GetMetrics provides a mock function with given fields: ctx, req
func (_m *MockIndexCoord) GetMetrics(ctx context.Context, req *milvuspb.GetMetricsRequest) (*milvuspb.GetMetricsResponse, error) {
func (_m *IndexCoord) GetMetrics(ctx context.Context, req *milvuspb.GetMetricsRequest) (*milvuspb.GetMetricsResponse, error) {
ret := _m.Called(ctx, req)
var r0 *milvuspb.GetMetricsResponse
@ -427,32 +474,32 @@ func (_m *MockIndexCoord) GetMetrics(ctx context.Context, req *milvuspb.GetMetri
return r0, r1
}
// MockIndexCoord_GetMetrics_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GetMetrics'
type MockIndexCoord_GetMetrics_Call struct {
// IndexCoord_GetMetrics_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GetMetrics'
type IndexCoord_GetMetrics_Call struct {
*mock.Call
}
// GetMetrics is a helper method to define mock.On call
// - ctx context.Context
// - req *milvuspb.GetMetricsRequest
func (_e *MockIndexCoord_Expecter) GetMetrics(ctx interface{}, req interface{}) *MockIndexCoord_GetMetrics_Call {
return &MockIndexCoord_GetMetrics_Call{Call: _e.mock.On("GetMetrics", ctx, req)}
func (_e *IndexCoord_Expecter) GetMetrics(ctx interface{}, req interface{}) *IndexCoord_GetMetrics_Call {
return &IndexCoord_GetMetrics_Call{Call: _e.mock.On("GetMetrics", ctx, req)}
}
func (_c *MockIndexCoord_GetMetrics_Call) Run(run func(ctx context.Context, req *milvuspb.GetMetricsRequest)) *MockIndexCoord_GetMetrics_Call {
func (_c *IndexCoord_GetMetrics_Call) Run(run func(ctx context.Context, req *milvuspb.GetMetricsRequest)) *IndexCoord_GetMetrics_Call {
_c.Call.Run(func(args mock.Arguments) {
run(args[0].(context.Context), args[1].(*milvuspb.GetMetricsRequest))
})
return _c
}
func (_c *MockIndexCoord_GetMetrics_Call) Return(_a0 *milvuspb.GetMetricsResponse, _a1 error) *MockIndexCoord_GetMetrics_Call {
func (_c *IndexCoord_GetMetrics_Call) Return(_a0 *milvuspb.GetMetricsResponse, _a1 error) *IndexCoord_GetMetrics_Call {
_c.Call.Return(_a0, _a1)
return _c
}
// GetSegmentIndexState provides a mock function with given fields: ctx, req
func (_m *MockIndexCoord) GetSegmentIndexState(ctx context.Context, req *indexpb.GetSegmentIndexStateRequest) (*indexpb.GetSegmentIndexStateResponse, error) {
func (_m *IndexCoord) GetSegmentIndexState(ctx context.Context, req *indexpb.GetSegmentIndexStateRequest) (*indexpb.GetSegmentIndexStateResponse, error) {
ret := _m.Called(ctx, req)
var r0 *indexpb.GetSegmentIndexStateResponse
@ -474,32 +521,32 @@ func (_m *MockIndexCoord) GetSegmentIndexState(ctx context.Context, req *indexpb
return r0, r1
}
// MockIndexCoord_GetSegmentIndexState_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GetSegmentIndexState'
type MockIndexCoord_GetSegmentIndexState_Call struct {
// IndexCoord_GetSegmentIndexState_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GetSegmentIndexState'
type IndexCoord_GetSegmentIndexState_Call struct {
*mock.Call
}
// GetSegmentIndexState is a helper method to define mock.On call
// - ctx context.Context
// - req *indexpb.GetSegmentIndexStateRequest
func (_e *MockIndexCoord_Expecter) GetSegmentIndexState(ctx interface{}, req interface{}) *MockIndexCoord_GetSegmentIndexState_Call {
return &MockIndexCoord_GetSegmentIndexState_Call{Call: _e.mock.On("GetSegmentIndexState", ctx, req)}
func (_e *IndexCoord_Expecter) GetSegmentIndexState(ctx interface{}, req interface{}) *IndexCoord_GetSegmentIndexState_Call {
return &IndexCoord_GetSegmentIndexState_Call{Call: _e.mock.On("GetSegmentIndexState", ctx, req)}
}
func (_c *MockIndexCoord_GetSegmentIndexState_Call) Run(run func(ctx context.Context, req *indexpb.GetSegmentIndexStateRequest)) *MockIndexCoord_GetSegmentIndexState_Call {
func (_c *IndexCoord_GetSegmentIndexState_Call) Run(run func(ctx context.Context, req *indexpb.GetSegmentIndexStateRequest)) *IndexCoord_GetSegmentIndexState_Call {
_c.Call.Run(func(args mock.Arguments) {
run(args[0].(context.Context), args[1].(*indexpb.GetSegmentIndexStateRequest))
})
return _c
}
func (_c *MockIndexCoord_GetSegmentIndexState_Call) Return(_a0 *indexpb.GetSegmentIndexStateResponse, _a1 error) *MockIndexCoord_GetSegmentIndexState_Call {
func (_c *IndexCoord_GetSegmentIndexState_Call) Return(_a0 *indexpb.GetSegmentIndexStateResponse, _a1 error) *IndexCoord_GetSegmentIndexState_Call {
_c.Call.Return(_a0, _a1)
return _c
}
// GetStatisticsChannel provides a mock function with given fields: ctx
func (_m *MockIndexCoord) GetStatisticsChannel(ctx context.Context) (*milvuspb.StringResponse, error) {
func (_m *IndexCoord) GetStatisticsChannel(ctx context.Context) (*milvuspb.StringResponse, error) {
ret := _m.Called(ctx)
var r0 *milvuspb.StringResponse
@ -521,31 +568,31 @@ func (_m *MockIndexCoord) GetStatisticsChannel(ctx context.Context) (*milvuspb.S
return r0, r1
}
// MockIndexCoord_GetStatisticsChannel_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GetStatisticsChannel'
type MockIndexCoord_GetStatisticsChannel_Call struct {
// IndexCoord_GetStatisticsChannel_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GetStatisticsChannel'
type IndexCoord_GetStatisticsChannel_Call struct {
*mock.Call
}
// GetStatisticsChannel is a helper method to define mock.On call
// - ctx context.Context
func (_e *MockIndexCoord_Expecter) GetStatisticsChannel(ctx interface{}) *MockIndexCoord_GetStatisticsChannel_Call {
return &MockIndexCoord_GetStatisticsChannel_Call{Call: _e.mock.On("GetStatisticsChannel", ctx)}
func (_e *IndexCoord_Expecter) GetStatisticsChannel(ctx interface{}) *IndexCoord_GetStatisticsChannel_Call {
return &IndexCoord_GetStatisticsChannel_Call{Call: _e.mock.On("GetStatisticsChannel", ctx)}
}
func (_c *MockIndexCoord_GetStatisticsChannel_Call) Run(run func(ctx context.Context)) *MockIndexCoord_GetStatisticsChannel_Call {
func (_c *IndexCoord_GetStatisticsChannel_Call) Run(run func(ctx context.Context)) *IndexCoord_GetStatisticsChannel_Call {
_c.Call.Run(func(args mock.Arguments) {
run(args[0].(context.Context))
})
return _c
}
func (_c *MockIndexCoord_GetStatisticsChannel_Call) Return(_a0 *milvuspb.StringResponse, _a1 error) *MockIndexCoord_GetStatisticsChannel_Call {
func (_c *IndexCoord_GetStatisticsChannel_Call) Return(_a0 *milvuspb.StringResponse, _a1 error) *IndexCoord_GetStatisticsChannel_Call {
_c.Call.Return(_a0, _a1)
return _c
}
// Init provides a mock function with given fields:
func (_m *MockIndexCoord) Init() error {
func (_m *IndexCoord) Init() error {
ret := _m.Called()
var r0 error
@ -558,30 +605,30 @@ func (_m *MockIndexCoord) Init() error {
return r0
}
// MockIndexCoord_Init_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Init'
type MockIndexCoord_Init_Call struct {
// IndexCoord_Init_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Init'
type IndexCoord_Init_Call struct {
*mock.Call
}
// Init is a helper method to define mock.On call
func (_e *MockIndexCoord_Expecter) Init() *MockIndexCoord_Init_Call {
return &MockIndexCoord_Init_Call{Call: _e.mock.On("Init")}
func (_e *IndexCoord_Expecter) Init() *IndexCoord_Init_Call {
return &IndexCoord_Init_Call{Call: _e.mock.On("Init")}
}
func (_c *MockIndexCoord_Init_Call) Run(run func()) *MockIndexCoord_Init_Call {
func (_c *IndexCoord_Init_Call) Run(run func()) *IndexCoord_Init_Call {
_c.Call.Run(func(args mock.Arguments) {
run()
})
return _c
}
func (_c *MockIndexCoord_Init_Call) Return(_a0 error) *MockIndexCoord_Init_Call {
func (_c *IndexCoord_Init_Call) Return(_a0 error) *IndexCoord_Init_Call {
_c.Call.Return(_a0)
return _c
}
// Register provides a mock function with given fields:
func (_m *MockIndexCoord) Register() error {
func (_m *IndexCoord) Register() error {
ret := _m.Called()
var r0 error
@ -594,30 +641,30 @@ func (_m *MockIndexCoord) Register() error {
return r0
}
// MockIndexCoord_Register_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Register'
type MockIndexCoord_Register_Call struct {
// IndexCoord_Register_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Register'
type IndexCoord_Register_Call struct {
*mock.Call
}
// Register is a helper method to define mock.On call
func (_e *MockIndexCoord_Expecter) Register() *MockIndexCoord_Register_Call {
return &MockIndexCoord_Register_Call{Call: _e.mock.On("Register")}
func (_e *IndexCoord_Expecter) Register() *IndexCoord_Register_Call {
return &IndexCoord_Register_Call{Call: _e.mock.On("Register")}
}
func (_c *MockIndexCoord_Register_Call) Run(run func()) *MockIndexCoord_Register_Call {
func (_c *IndexCoord_Register_Call) Run(run func()) *IndexCoord_Register_Call {
_c.Call.Run(func(args mock.Arguments) {
run()
})
return _c
}
func (_c *MockIndexCoord_Register_Call) Return(_a0 error) *MockIndexCoord_Register_Call {
func (_c *IndexCoord_Register_Call) Return(_a0 error) *IndexCoord_Register_Call {
_c.Call.Return(_a0)
return _c
}
// ShowConfigurations provides a mock function with given fields: ctx, req
func (_m *MockIndexCoord) ShowConfigurations(ctx context.Context, req *internalpb.ShowConfigurationsRequest) (*internalpb.ShowConfigurationsResponse, error) {
func (_m *IndexCoord) ShowConfigurations(ctx context.Context, req *internalpb.ShowConfigurationsRequest) (*internalpb.ShowConfigurationsResponse, error) {
ret := _m.Called(ctx, req)
var r0 *internalpb.ShowConfigurationsResponse
@ -639,32 +686,32 @@ func (_m *MockIndexCoord) ShowConfigurations(ctx context.Context, req *internalp
return r0, r1
}
// MockIndexCoord_ShowConfigurations_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ShowConfigurations'
type MockIndexCoord_ShowConfigurations_Call struct {
// IndexCoord_ShowConfigurations_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'ShowConfigurations'
type IndexCoord_ShowConfigurations_Call struct {
*mock.Call
}
// ShowConfigurations is a helper method to define mock.On call
// - ctx context.Context
// - req *internalpb.ShowConfigurationsRequest
func (_e *MockIndexCoord_Expecter) ShowConfigurations(ctx interface{}, req interface{}) *MockIndexCoord_ShowConfigurations_Call {
return &MockIndexCoord_ShowConfigurations_Call{Call: _e.mock.On("ShowConfigurations", ctx, req)}
func (_e *IndexCoord_Expecter) ShowConfigurations(ctx interface{}, req interface{}) *IndexCoord_ShowConfigurations_Call {
return &IndexCoord_ShowConfigurations_Call{Call: _e.mock.On("ShowConfigurations", ctx, req)}
}
func (_c *MockIndexCoord_ShowConfigurations_Call) Run(run func(ctx context.Context, req *internalpb.ShowConfigurationsRequest)) *MockIndexCoord_ShowConfigurations_Call {
func (_c *IndexCoord_ShowConfigurations_Call) Run(run func(ctx context.Context, req *internalpb.ShowConfigurationsRequest)) *IndexCoord_ShowConfigurations_Call {
_c.Call.Run(func(args mock.Arguments) {
run(args[0].(context.Context), args[1].(*internalpb.ShowConfigurationsRequest))
})
return _c
}
func (_c *MockIndexCoord_ShowConfigurations_Call) Return(_a0 *internalpb.ShowConfigurationsResponse, _a1 error) *MockIndexCoord_ShowConfigurations_Call {
func (_c *IndexCoord_ShowConfigurations_Call) Return(_a0 *internalpb.ShowConfigurationsResponse, _a1 error) *IndexCoord_ShowConfigurations_Call {
_c.Call.Return(_a0, _a1)
return _c
}
// Start provides a mock function with given fields:
func (_m *MockIndexCoord) Start() error {
func (_m *IndexCoord) Start() error {
ret := _m.Called()
var r0 error
@ -677,30 +724,30 @@ func (_m *MockIndexCoord) Start() error {
return r0
}
// MockIndexCoord_Start_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Start'
type MockIndexCoord_Start_Call struct {
// IndexCoord_Start_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Start'
type IndexCoord_Start_Call struct {
*mock.Call
}
// Start is a helper method to define mock.On call
func (_e *MockIndexCoord_Expecter) Start() *MockIndexCoord_Start_Call {
return &MockIndexCoord_Start_Call{Call: _e.mock.On("Start")}
func (_e *IndexCoord_Expecter) Start() *IndexCoord_Start_Call {
return &IndexCoord_Start_Call{Call: _e.mock.On("Start")}
}
func (_c *MockIndexCoord_Start_Call) Run(run func()) *MockIndexCoord_Start_Call {
func (_c *IndexCoord_Start_Call) Run(run func()) *IndexCoord_Start_Call {
_c.Call.Run(func(args mock.Arguments) {
run()
})
return _c
}
func (_c *MockIndexCoord_Start_Call) Return(_a0 error) *MockIndexCoord_Start_Call {
func (_c *IndexCoord_Start_Call) Return(_a0 error) *IndexCoord_Start_Call {
_c.Call.Return(_a0)
return _c
}
// Stop provides a mock function with given fields:
func (_m *MockIndexCoord) Stop() error {
func (_m *IndexCoord) Stop() error {
ret := _m.Called()
var r0 error
@ -713,36 +760,36 @@ func (_m *MockIndexCoord) Stop() error {
return r0
}
// MockIndexCoord_Stop_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Stop'
type MockIndexCoord_Stop_Call struct {
// IndexCoord_Stop_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Stop'
type IndexCoord_Stop_Call struct {
*mock.Call
}
// Stop is a helper method to define mock.On call
func (_e *MockIndexCoord_Expecter) Stop() *MockIndexCoord_Stop_Call {
return &MockIndexCoord_Stop_Call{Call: _e.mock.On("Stop")}
func (_e *IndexCoord_Expecter) Stop() *IndexCoord_Stop_Call {
return &IndexCoord_Stop_Call{Call: _e.mock.On("Stop")}
}
func (_c *MockIndexCoord_Stop_Call) Run(run func()) *MockIndexCoord_Stop_Call {
func (_c *IndexCoord_Stop_Call) Run(run func()) *IndexCoord_Stop_Call {
_c.Call.Run(func(args mock.Arguments) {
run()
})
return _c
}
func (_c *MockIndexCoord_Stop_Call) Return(_a0 error) *MockIndexCoord_Stop_Call {
func (_c *IndexCoord_Stop_Call) Return(_a0 error) *IndexCoord_Stop_Call {
_c.Call.Return(_a0)
return _c
}
type mockConstructorTestingTNewMockIndexCoord interface {
type mockConstructorTestingTNewIndexCoord interface {
mock.TestingT
Cleanup(func())
}
// NewMockIndexCoord creates a new instance of MockIndexCoord. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
func NewMockIndexCoord(t mockConstructorTestingTNewMockIndexCoord) *MockIndexCoord {
mock := &MockIndexCoord{}
// NewIndexCoord creates a new instance of IndexCoord. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
func NewIndexCoord(t mockConstructorTestingTNewIndexCoord) *IndexCoord {
mock := &IndexCoord{}
mock.Mock.Test(t)
t.Cleanup(func() { mock.AssertExpectations(t) })

View File

@ -19,6 +19,7 @@ service IndexCoord {
rpc GetIndexInfos(GetIndexInfoRequest) returns (GetIndexInfoResponse){}
rpc DropIndex(DropIndexRequest) returns (common.Status) {}
rpc DescribeIndex(DescribeIndexRequest) returns (DescribeIndexResponse) {}
rpc GetIndexStatistics(GetIndexStatisticsRequest) returns (GetIndexStatisticsResponse) {}
// Deprecated: use DescribeIndex instead
rpc GetIndexBuildProgress(GetIndexBuildProgressRequest) returns (GetIndexBuildProgressResponse) {}
@ -267,3 +268,13 @@ message GetJobStatsResponse {
repeated JobInfo job_infos = 6;
bool enable_disk = 7;
}
message GetIndexStatisticsRequest {
int64 collectionID = 1;
string index_name = 2;
}
message GetIndexStatisticsResponse {
common.Status status = 1;
repeated IndexInfo index_infos = 2;
}

View File

@ -2018,6 +2018,100 @@ func (m *GetJobStatsResponse) GetEnableDisk() bool {
return false
}
type GetIndexStatisticsRequest struct {
CollectionID int64 `protobuf:"varint,1,opt,name=collectionID,proto3" json:"collectionID,omitempty"`
IndexName string `protobuf:"bytes,2,opt,name=index_name,json=indexName,proto3" json:"index_name,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *GetIndexStatisticsRequest) Reset() { *m = GetIndexStatisticsRequest{} }
func (m *GetIndexStatisticsRequest) String() string { return proto.CompactTextString(m) }
func (*GetIndexStatisticsRequest) ProtoMessage() {}
func (*GetIndexStatisticsRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_f9e019eb3fda53c2, []int{29}
}
func (m *GetIndexStatisticsRequest) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetIndexStatisticsRequest.Unmarshal(m, b)
}
func (m *GetIndexStatisticsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_GetIndexStatisticsRequest.Marshal(b, m, deterministic)
}
func (m *GetIndexStatisticsRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_GetIndexStatisticsRequest.Merge(m, src)
}
func (m *GetIndexStatisticsRequest) XXX_Size() int {
return xxx_messageInfo_GetIndexStatisticsRequest.Size(m)
}
func (m *GetIndexStatisticsRequest) XXX_DiscardUnknown() {
xxx_messageInfo_GetIndexStatisticsRequest.DiscardUnknown(m)
}
var xxx_messageInfo_GetIndexStatisticsRequest proto.InternalMessageInfo
func (m *GetIndexStatisticsRequest) GetCollectionID() int64 {
if m != nil {
return m.CollectionID
}
return 0
}
func (m *GetIndexStatisticsRequest) GetIndexName() string {
if m != nil {
return m.IndexName
}
return ""
}
type GetIndexStatisticsResponse struct {
Status *commonpb.Status `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"`
IndexInfos []*IndexInfo `protobuf:"bytes,2,rep,name=index_infos,json=indexInfos,proto3" json:"index_infos,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
func (m *GetIndexStatisticsResponse) Reset() { *m = GetIndexStatisticsResponse{} }
func (m *GetIndexStatisticsResponse) String() string { return proto.CompactTextString(m) }
func (*GetIndexStatisticsResponse) ProtoMessage() {}
func (*GetIndexStatisticsResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_f9e019eb3fda53c2, []int{30}
}
func (m *GetIndexStatisticsResponse) XXX_Unmarshal(b []byte) error {
return xxx_messageInfo_GetIndexStatisticsResponse.Unmarshal(m, b)
}
func (m *GetIndexStatisticsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
return xxx_messageInfo_GetIndexStatisticsResponse.Marshal(b, m, deterministic)
}
func (m *GetIndexStatisticsResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_GetIndexStatisticsResponse.Merge(m, src)
}
func (m *GetIndexStatisticsResponse) XXX_Size() int {
return xxx_messageInfo_GetIndexStatisticsResponse.Size(m)
}
func (m *GetIndexStatisticsResponse) XXX_DiscardUnknown() {
xxx_messageInfo_GetIndexStatisticsResponse.DiscardUnknown(m)
}
var xxx_messageInfo_GetIndexStatisticsResponse proto.InternalMessageInfo
func (m *GetIndexStatisticsResponse) GetStatus() *commonpb.Status {
if m != nil {
return m.Status
}
return nil
}
func (m *GetIndexStatisticsResponse) GetIndexInfos() []*IndexInfo {
if m != nil {
return m.IndexInfos
}
return nil
}
func init() {
proto.RegisterType((*IndexInfo)(nil), "milvus.proto.index.IndexInfo")
proto.RegisterType((*FieldIndex)(nil), "milvus.proto.index.FieldIndex")
@ -2049,152 +2143,157 @@ func init() {
proto.RegisterType((*JobInfo)(nil), "milvus.proto.index.JobInfo")
proto.RegisterType((*GetJobStatsRequest)(nil), "milvus.proto.index.GetJobStatsRequest")
proto.RegisterType((*GetJobStatsResponse)(nil), "milvus.proto.index.GetJobStatsResponse")
proto.RegisterType((*GetIndexStatisticsRequest)(nil), "milvus.proto.index.GetIndexStatisticsRequest")
proto.RegisterType((*GetIndexStatisticsResponse)(nil), "milvus.proto.index.GetIndexStatisticsResponse")
}
func init() { proto.RegisterFile("index_coord.proto", fileDescriptor_f9e019eb3fda53c2) }
var fileDescriptor_f9e019eb3fda53c2 = []byte{
// 2236 bytes of a gzipped FileDescriptorProto
// 2274 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x59, 0xcd, 0x8f, 0x1b, 0x49,
0x15, 0x4f, 0xbb, 0x3d, 0x33, 0xee, 0xd7, 0xf6, 0x7c, 0xd4, 0x66, 0xc1, 0x71, 0x12, 0x32, 0xe9,
0x6c, 0x92, 0x01, 0xb1, 0x93, 0x30, 0xcb, 0xa2, 0x05, 0x01, 0xd2, 0x64, 0xbc, 0x49, 0x9c, 0x6c,
0xa2, 0xa1, 0x1d, 0xad, 0xc4, 0x0a, 0xc9, 0xb4, 0xdd, 0xe5, 0x99, 0xda, 0x69, 0x77, 0x39, 0x5d,
0xd5, 0x49, 0x26, 0x48, 0x88, 0xcb, 0x1e, 0x58, 0x21, 0x21, 0x21, 0x24, 0xfe, 0x01, 0x4e, 0xcb,
0x7f, 0xc0, 0x85, 0x0b, 0x47, 0x2e, 0x70, 0xe7, 0xc2, 0x3f, 0xc1, 0x15, 0xd5, 0x47, 0xb7, 0xbb,
0xdb, 0xed, 0xb1, 0xe7, 0x83, 0x0b, 0xdc, 0x5c, 0xaf, 0x5f, 0x7d, 0xbd, 0xf7, 0x7b, 0xef, 0xf7,
0x5e, 0x19, 0x36, 0x48, 0xe8, 0xe3, 0x37, 0xbd, 0x01, 0xa5, 0x91, 0xbf, 0x3d, 0x8e, 0x28, 0xa7,
0x08, 0x8d, 0x48, 0xf0, 0x2a, 0x66, 0x6a, 0xb4, 0x2d, 0xbf, 0xb7, 0xea, 0x03, 0x3a, 0x1a, 0xd1,
0x50, 0xc9, 0x5a, 0x75, 0x36, 0x38, 0xc4, 0x23, 0x4f, 0x8f, 0x56, 0x49, 0xc8, 0x71, 0x14, 0x7a,
0x41, 0xf2, 0x35, 0x3b, 0xdf, 0xf9, 0x67, 0x15, 0xac, 0x8e, 0x58, 0xa3, 0x13, 0x0e, 0x29, 0x72,
0xa0, 0x3e, 0xa0, 0x41, 0x80, 0x07, 0x9c, 0xd0, 0xb0, 0xd3, 0x6e, 0x1a, 0x9b, 0xc6, 0x96, 0xe9,
0xe6, 0x64, 0xa8, 0x09, 0x2b, 0x43, 0x82, 0x03, 0xbf, 0xd3, 0x6e, 0x56, 0xe4, 0xe7, 0x64, 0x88,
0xae, 0x03, 0xa8, 0xe3, 0x86, 0xde, 0x08, 0x37, 0xcd, 0x4d, 0x63, 0xcb, 0x72, 0x2d, 0x29, 0x79,
0xee, 0x8d, 0xb0, 0x98, 0x28, 0x07, 0x9d, 0x76, 0xb3, 0xaa, 0x26, 0xea, 0x21, 0x7a, 0x00, 0x36,
0x3f, 0x1e, 0xe3, 0xde, 0xd8, 0x8b, 0xbc, 0x11, 0x6b, 0x2e, 0x6d, 0x9a, 0x5b, 0xf6, 0xce, 0xcd,
0xed, 0xdc, 0x45, 0xf5, 0x0d, 0x9f, 0xe2, 0xe3, 0x4f, 0xbd, 0x20, 0xc6, 0xfb, 0x1e, 0x89, 0x5c,
0x10, 0xb3, 0xf6, 0xe5, 0x24, 0xd4, 0x86, 0xba, 0xda, 0x5c, 0x2f, 0xb2, 0xbc, 0xe8, 0x22, 0xb6,
0x9c, 0xa6, 0x57, 0xb9, 0xa9, 0x57, 0xc1, 0x7e, 0x2f, 0xa2, 0xaf, 0x59, 0x73, 0x45, 0x1e, 0xd4,
0xd6, 0x32, 0x97, 0xbe, 0x66, 0xe2, 0x96, 0x9c, 0x72, 0x2f, 0x50, 0x0a, 0x35, 0xa9, 0x60, 0x49,
0x89, 0xfc, 0xfc, 0x21, 0x2c, 0x31, 0xee, 0x71, 0xdc, 0xb4, 0x36, 0x8d, 0xad, 0xd5, 0x9d, 0x1b,
0xa5, 0x07, 0x90, 0x16, 0xef, 0x0a, 0x35, 0x57, 0x69, 0xa3, 0x0f, 0xe1, 0xeb, 0xea, 0xf8, 0x72,
0xd8, 0x1b, 0x7a, 0x24, 0xe8, 0x45, 0xd8, 0x63, 0x34, 0x6c, 0x82, 0x34, 0xe4, 0x65, 0x92, 0xce,
0x79, 0xe8, 0x91, 0xc0, 0x95, 0xdf, 0x90, 0x03, 0x0d, 0xc2, 0x7a, 0x5e, 0xcc, 0x69, 0x4f, 0x7e,
0x6f, 0xda, 0x9b, 0xc6, 0x56, 0xcd, 0xb5, 0x09, 0xdb, 0x8d, 0x39, 0x95, 0xdb, 0xa0, 0x67, 0xb0,
0x11, 0x33, 0x1c, 0xf5, 0x72, 0xe6, 0xa9, 0x2f, 0x6a, 0x9e, 0x35, 0x31, 0xb7, 0x93, 0x31, 0xd1,
0xb7, 0x01, 0x8d, 0x71, 0xe8, 0x93, 0xf0, 0x40, 0xaf, 0x28, 0xed, 0xd0, 0x90, 0x76, 0x58, 0xd7,
0x5f, 0xa4, 0xbe, 0x30, 0x87, 0xf3, 0x85, 0x01, 0xf0, 0x50, 0xe2, 0x43, 0x9e, 0xe5, 0x87, 0x09,
0x44, 0x48, 0x38, 0xa4, 0x12, 0x5e, 0xf6, 0xce, 0xf5, 0xed, 0x69, 0x44, 0x6f, 0xa7, 0x98, 0xd4,
0x08, 0x92, 0xf0, 0x6c, 0xc2, 0x8a, 0x8f, 0x03, 0xcc, 0xb1, 0x2f, 0xa1, 0x57, 0x73, 0x93, 0x21,
0xba, 0x01, 0xf6, 0x20, 0xc2, 0xc2, 0x72, 0x9c, 0x68, 0xec, 0x55, 0x5d, 0x50, 0xa2, 0x17, 0x64,
0x84, 0x9d, 0x2f, 0xaa, 0x50, 0xef, 0xe2, 0x83, 0x11, 0x0e, 0xb9, 0x3a, 0xc9, 0x22, 0x50, 0xdf,
0x04, 0x7b, 0xec, 0x45, 0x9c, 0x68, 0x15, 0x05, 0xf7, 0xac, 0x08, 0x5d, 0x03, 0x8b, 0xe9, 0x55,
0xdb, 0x72, 0x57, 0xd3, 0x9d, 0x08, 0xd0, 0x15, 0xa8, 0x85, 0xf1, 0x48, 0x19, 0x48, 0x43, 0x3e,
0x8c, 0x47, 0x12, 0x26, 0x99, 0x60, 0x58, 0xca, 0x07, 0x43, 0x13, 0x56, 0xfa, 0x31, 0x91, 0xf1,
0xb5, 0xac, 0xbe, 0xe8, 0x21, 0xfa, 0x1a, 0x2c, 0x87, 0xd4, 0xc7, 0x9d, 0xb6, 0x86, 0xa5, 0x1e,
0xa1, 0x5b, 0xd0, 0x50, 0x46, 0x7d, 0x85, 0x23, 0x46, 0x68, 0xa8, 0x41, 0xa9, 0x90, 0xfc, 0xa9,
0x92, 0x9d, 0x15, 0x97, 0x37, 0xc0, 0x9e, 0xc6, 0x22, 0x0c, 0x27, 0x08, 0xbc, 0x03, 0x6b, 0x6a,
0xf3, 0x21, 0x09, 0x70, 0xef, 0x08, 0x1f, 0xb3, 0xa6, 0xbd, 0x69, 0x6e, 0x59, 0xae, 0x3a, 0xd3,
0x43, 0x12, 0xe0, 0xa7, 0xf8, 0x98, 0x65, 0x7d, 0x57, 0x3f, 0xd1, 0x77, 0x8d, 0xa2, 0xef, 0xd0,
0x6d, 0x58, 0x65, 0x38, 0x22, 0x5e, 0x40, 0xde, 0xe2, 0x1e, 0x23, 0x6f, 0x71, 0x73, 0x55, 0xea,
0x34, 0x52, 0x69, 0x97, 0xbc, 0xc5, 0xc2, 0x0c, 0xaf, 0x23, 0xc2, 0x71, 0xef, 0xd0, 0x0b, 0x7d,
0x3a, 0x1c, 0x36, 0xd7, 0xe4, 0x3e, 0x75, 0x29, 0x7c, 0xac, 0x64, 0xce, 0x1f, 0x0c, 0x78, 0xc7,
0xc5, 0x07, 0x84, 0x71, 0x1c, 0x3d, 0xa7, 0x3e, 0x76, 0xf1, 0xcb, 0x18, 0x33, 0x8e, 0xee, 0x43,
0xb5, 0xef, 0x31, 0xac, 0x21, 0x79, 0xad, 0xd4, 0x3a, 0xcf, 0xd8, 0xc1, 0x03, 0x8f, 0x61, 0x57,
0x6a, 0xa2, 0xef, 0xc1, 0x8a, 0xe7, 0xfb, 0x11, 0x66, 0x4c, 0x02, 0x63, 0xd6, 0xa4, 0x5d, 0xa5,
0xe3, 0x26, 0xca, 0x19, 0x2f, 0x9a, 0x59, 0x2f, 0x3a, 0xbf, 0x35, 0xe0, 0x72, 0xfe, 0x64, 0x6c,
0x4c, 0x43, 0x86, 0xd1, 0x07, 0xb0, 0x2c, 0x7c, 0x11, 0x33, 0x7d, 0xb8, 0xab, 0xa5, 0xfb, 0x74,
0xa5, 0x8a, 0xab, 0x55, 0x45, 0x4a, 0x25, 0x21, 0xe1, 0x49, 0xb8, 0xab, 0x13, 0xde, 0x2c, 0x46,
0x9a, 0x26, 0x86, 0x4e, 0x48, 0xb8, 0x8a, 0x6e, 0x17, 0x48, 0xfa, 0xdb, 0xf9, 0x29, 0x5c, 0x7e,
0x84, 0x79, 0x06, 0x13, 0xda, 0x56, 0x8b, 0x84, 0x4e, 0x9e, 0x0b, 0x2a, 0x05, 0x2e, 0x70, 0xfe,
0x68, 0xc0, 0xbb, 0x85, 0xb5, 0xcf, 0x73, 0xdb, 0x14, 0xdc, 0x95, 0xf3, 0x80, 0xdb, 0x2c, 0x82,
0xdb, 0xf9, 0x95, 0x01, 0x57, 0x1f, 0x61, 0x9e, 0x4d, 0x1c, 0x17, 0x6c, 0x09, 0xf4, 0x0d, 0x80,
0x34, 0x61, 0xb0, 0xa6, 0xb9, 0x69, 0x6e, 0x99, 0x6e, 0x46, 0xe2, 0xfc, 0xda, 0x80, 0x8d, 0xa9,
0xfd, 0xf3, 0x79, 0xc7, 0x28, 0xe6, 0x9d, 0xff, 0x96, 0x39, 0x7e, 0x67, 0xc0, 0xb5, 0x72, 0x73,
0x9c, 0xc7, 0x79, 0x3f, 0x52, 0x93, 0xb0, 0x40, 0xa9, 0x20, 0xa5, 0xdb, 0x65, 0x7c, 0x30, 0xbd,
0xa7, 0x9e, 0xe4, 0xfc, 0xdd, 0x04, 0xb4, 0x27, 0x93, 0x85, 0x62, 0x9d, 0x53, 0xb8, 0xe6, 0xcc,
0xa5, 0x4c, 0xa1, 0x60, 0xa9, 0x5e, 0x44, 0xc1, 0xb2, 0x74, 0xa6, 0x82, 0xe5, 0x1a, 0x58, 0x22,
0x6b, 0x32, 0xee, 0x8d, 0xc6, 0x92, 0x2f, 0xaa, 0xee, 0x44, 0x30, 0x5d, 0x1e, 0xac, 0x2c, 0x58,
0x1e, 0xd4, 0xce, 0x5c, 0x1e, 0xec, 0x41, 0x43, 0x1a, 0xb1, 0xed, 0x71, 0xef, 0xc5, 0xf1, 0x38,
0xe1, 0x9b, 0x02, 0xc9, 0xeb, 0x0a, 0x35, 0x51, 0x72, 0xf3, 0x73, 0x9c, 0x37, 0xf0, 0x4e, 0x92,
0x1d, 0x64, 0x0d, 0x70, 0x0a, 0x9f, 0xe6, 0xe3, 0xa9, 0x52, 0x8c, 0xa7, 0x39, 0x9e, 0x75, 0xfe,
0x5d, 0x81, 0x8d, 0x4e, 0x42, 0x5c, 0xfb, 0x1e, 0x3f, 0x94, 0x85, 0xc7, 0xc9, 0xe1, 0x36, 0x1b,
0x46, 0x19, 0x96, 0x37, 0x67, 0xb2, 0x7c, 0x35, 0xcf, 0xf2, 0xf9, 0x03, 0x2e, 0x15, 0xa1, 0x77,
0x31, 0x75, 0xee, 0x16, 0xac, 0x67, 0x58, 0x7b, 0xec, 0xf1, 0x43, 0x51, 0xeb, 0x0a, 0xda, 0x5e,
0x25, 0xd9, 0xdb, 0x33, 0x74, 0x17, 0xd6, 0x52, 0x9a, 0xf5, 0x15, 0xfb, 0xd6, 0x24, 0xcc, 0x26,
0x9c, 0xec, 0x27, 0xf4, 0x9b, 0xaf, 0x42, 0xac, 0x92, 0x2a, 0x24, 0x5b, 0x11, 0x41, 0xae, 0x22,
0x72, 0xfe, 0x6c, 0x80, 0x9d, 0x46, 0xf9, 0x82, 0xbd, 0x48, 0xce, 0x2f, 0x95, 0xa2, 0x5f, 0x6e,
0x42, 0x1d, 0x87, 0x5e, 0x3f, 0xc0, 0x1a, 0xfc, 0xa6, 0x02, 0xbf, 0x92, 0x29, 0xf0, 0x3f, 0x04,
0x7b, 0x52, 0x8f, 0x26, 0x81, 0x7c, 0x7b, 0x66, 0x41, 0x9a, 0x05, 0x85, 0x0b, 0x69, 0x61, 0xca,
0x9c, 0x2f, 0x2b, 0x13, 0xae, 0x54, 0x88, 0x3d, 0x4f, 0x46, 0xfc, 0x19, 0xd4, 0xf5, 0x2d, 0x54,
0x9d, 0xac, 0xf2, 0xe2, 0xf7, 0xcb, 0x8e, 0x55, 0xb6, 0xe9, 0x76, 0xc6, 0x8c, 0x1f, 0x87, 0x3c,
0x3a, 0x76, 0x6d, 0x36, 0x91, 0xb4, 0x7a, 0xb0, 0x5e, 0x54, 0x40, 0xeb, 0x60, 0x1e, 0xe1, 0x63,
0x6d, 0x63, 0xf1, 0x53, 0x70, 0xc8, 0x2b, 0x81, 0x1d, 0x5d, 0x3a, 0xdc, 0x38, 0x31, 0x29, 0x0f,
0xa9, 0xab, 0xb4, 0x7f, 0x50, 0xf9, 0xc8, 0x70, 0x7e, 0x6f, 0xc0, 0x7a, 0x3b, 0xa2, 0xe3, 0x53,
0xe7, 0x63, 0x07, 0xea, 0x99, 0xe2, 0x3a, 0x89, 0xde, 0x9c, 0x6c, 0x5e, 0x66, 0xbe, 0x02, 0x35,
0x3f, 0xa2, 0xe3, 0x9e, 0x17, 0x04, 0x32, 0xb0, 0x44, 0x9d, 0x19, 0xd1, 0xf1, 0x6e, 0x10, 0x88,
0x72, 0xa6, 0x8d, 0xd9, 0x20, 0x22, 0xfd, 0xd3, 0x33, 0xc5, 0x9c, 0x72, 0xe6, 0x37, 0x06, 0xbc,
0x5b, 0x58, 0xfb, 0x3c, 0xfe, 0xff, 0x71, 0x1e, 0x95, 0xca, 0xfd, 0x73, 0xda, 0xa4, 0x2c, 0x1a,
0x3d, 0x49, 0xd3, 0xf2, 0xdb, 0x03, 0x91, 0x55, 0xf6, 0x23, 0x7a, 0x20, 0x8b, 0xd0, 0x8b, 0xbb,
0xf1, 0x5f, 0x0d, 0xb8, 0x3e, 0x63, 0x8f, 0xf3, 0xdc, 0xbc, 0xd8, 0x7f, 0x57, 0xe6, 0xf5, 0xdf,
0x66, 0xb1, 0xff, 0x2e, 0x6f, 0x4f, 0xab, 0x33, 0xda, 0xd3, 0x3f, 0x55, 0xa0, 0xd1, 0xe5, 0x34,
0xf2, 0x0e, 0xf0, 0x1e, 0x0d, 0x87, 0xe4, 0x40, 0x24, 0xe6, 0xa4, 0xac, 0x37, 0xe4, 0xa5, 0xd3,
0xc2, 0xfd, 0x26, 0xd4, 0xbd, 0xc1, 0x00, 0x33, 0x26, 0xba, 0x1c, 0x9d, 0x6f, 0x2c, 0xd7, 0x56,
0xb2, 0xa7, 0x42, 0x84, 0xbe, 0x05, 0x1b, 0x0c, 0x0f, 0x22, 0xcc, 0x7b, 0x13, 0x4d, 0x8d, 0xd1,
0x35, 0xf5, 0x61, 0x37, 0xd1, 0x16, 0x7d, 0x40, 0xcc, 0x70, 0xb7, 0xfb, 0x89, 0xc6, 0xa9, 0x1e,
0x89, 0x2a, 0xac, 0x1f, 0x0f, 0x8e, 0x30, 0xcf, 0x12, 0x00, 0x28, 0x91, 0x84, 0xf8, 0x55, 0xb0,
0x22, 0x4a, 0xb9, 0xcc, 0xda, 0x92, 0xf2, 0x2d, 0xb7, 0x26, 0x04, 0x22, 0x31, 0xe9, 0x55, 0x3b,
0xbb, 0xcf, 0x34, 0xd5, 0xeb, 0x91, 0x68, 0x65, 0x3b, 0xbb, 0xcf, 0x3e, 0x0e, 0xfd, 0x31, 0x25,
0x21, 0x97, 0x29, 0xdc, 0x72, 0xb3, 0x22, 0x71, 0x3d, 0xa6, 0x2c, 0xd1, 0xe3, 0x09, 0x6f, 0x5b,
0xae, 0xad, 0x65, 0x92, 0x96, 0xff, 0x65, 0xc2, 0xba, 0x2a, 0xb5, 0x9e, 0xd0, 0x7e, 0x02, 0xa6,
0x6b, 0x60, 0x0d, 0x82, 0x58, 0x74, 0x2d, 0x1a, 0x49, 0x96, 0x3b, 0x11, 0x08, 0x8b, 0x64, 0x89,
0x26, 0xc2, 0x43, 0xf2, 0x46, 0x5b, 0x6e, 0x6d, 0xc2, 0x34, 0x52, 0x9c, 0xe5, 0x44, 0x73, 0x8a,
0x13, 0x7d, 0x8f, 0x7b, 0x9a, 0xa8, 0xaa, 0x92, 0xa8, 0x2c, 0x21, 0x51, 0x1c, 0x35, 0x45, 0x3d,
0x4b, 0x25, 0xd4, 0x93, 0xe1, 0xe2, 0xe5, 0x3c, 0x17, 0xe7, 0xa1, 0xbe, 0x52, 0x4c, 0x29, 0x8f,
0x61, 0x35, 0x31, 0xcc, 0x40, 0x62, 0x44, 0x5a, 0xaf, 0xa4, 0x9b, 0x92, 0x29, 0x31, 0x0b, 0x26,
0xb7, 0xc1, 0x72, 0xd8, 0x2a, 0x72, 0xb7, 0x75, 0x26, 0xee, 0x2e, 0x14, 0x9f, 0x70, 0x96, 0xe2,
0x33, 0xcb, 0xc3, 0x76, 0x9e, 0x87, 0x3f, 0x81, 0xf5, 0x9f, 0xc4, 0x38, 0x3a, 0x7e, 0x42, 0xfb,
0x6c, 0x31, 0x1f, 0xb7, 0xa0, 0xa6, 0x1d, 0x95, 0xa4, 0xec, 0x74, 0xec, 0xfc, 0xc3, 0x80, 0x86,
0x0c, 0xb7, 0x17, 0x1e, 0x3b, 0x4a, 0x1e, 0x71, 0x12, 0x2f, 0x1b, 0x79, 0x2f, 0x9f, 0xb1, 0x6d,
0x29, 0x79, 0x81, 0x30, 0xcb, 0x5e, 0x20, 0x4a, 0x2a, 0x99, 0x6a, 0x69, 0x25, 0x53, 0xe8, 0x83,
0x96, 0xa6, 0xfa, 0xa0, 0xaf, 0x0c, 0xd8, 0xc8, 0xd8, 0xe8, 0x3c, 0x09, 0x2f, 0x67, 0xd9, 0x4a,
0xd1, 0xb2, 0x0f, 0xf2, 0x44, 0x60, 0x96, 0xb9, 0x3a, 0x43, 0x04, 0x89, 0x8d, 0x73, 0x64, 0xf0,
0x14, 0xd6, 0x04, 0x19, 0x5f, 0x8c, 0x3b, 0xff, 0x66, 0xc0, 0xca, 0x13, 0xda, 0x97, 0x8e, 0xcc,
0x62, 0xc8, 0xc8, 0xbf, 0x6e, 0xad, 0x83, 0xe9, 0x93, 0x91, 0xce, 0xde, 0xe2, 0xa7, 0x88, 0x31,
0xc6, 0xbd, 0x88, 0x4f, 0xde, 0xe7, 0x44, 0xa9, 0x26, 0x24, 0xf2, 0x89, 0xe7, 0x0a, 0xd4, 0x70,
0xe8, 0xab, 0x8f, 0xba, 0x1e, 0xc6, 0xa1, 0x2f, 0x3f, 0x5d, 0x4c, 0x9f, 0x74, 0x19, 0x96, 0xc6,
0x74, 0xf2, 0xa6, 0xa6, 0x06, 0xce, 0x65, 0x40, 0x8f, 0x30, 0x7f, 0x42, 0xfb, 0xc2, 0x2b, 0x89,
0x79, 0x9c, 0xbf, 0x54, 0x64, 0xfb, 0x31, 0x11, 0x9f, 0xc7, 0xc1, 0x0e, 0x34, 0x14, 0x5d, 0x7d,
0x4e, 0xfb, 0xbd, 0x30, 0x4e, 0x8c, 0x62, 0x4b, 0xe1, 0x13, 0xda, 0x7f, 0x1e, 0x8f, 0xd0, 0xfb,
0xf0, 0x0e, 0x09, 0x7b, 0x63, 0xcd, 0xa0, 0xa9, 0xa6, 0xb2, 0xd2, 0x3a, 0x09, 0x13, 0x6e, 0xd5,
0xea, 0x77, 0x60, 0x0d, 0x87, 0x2f, 0x63, 0x1c, 0xe3, 0x54, 0x55, 0xd9, 0xac, 0xa1, 0xc5, 0x5a,
0x4f, 0x30, 0xa5, 0xc7, 0x8e, 0x7a, 0x2c, 0xa0, 0x9c, 0xe9, 0x9c, 0x68, 0x09, 0x49, 0x57, 0x08,
0xd0, 0x47, 0x60, 0x89, 0xe9, 0x0a, 0x5a, 0xaa, 0x8d, 0xb8, 0x5a, 0x06, 0x2d, 0xed, 0x6f, 0xb7,
0xf6, 0xb9, 0xfa, 0xc1, 0x44, 0x80, 0xe8, 0xc2, 0xda, 0x27, 0xec, 0x48, 0x33, 0x0d, 0x28, 0x51,
0x9b, 0xb0, 0xa3, 0x9d, 0x2f, 0x01, 0x40, 0x22, 0x72, 0x8f, 0xd2, 0xc8, 0x47, 0x81, 0x34, 0xf3,
0x1e, 0x1d, 0x8d, 0x69, 0x88, 0x43, 0x2e, 0xa3, 0x97, 0xa1, 0xed, 0xfc, 0x66, 0x7a, 0x30, 0xad,
0xa8, 0xdd, 0xd2, 0x7a, 0xaf, 0x54, 0xbf, 0xa0, 0xec, 0x5c, 0x42, 0x2f, 0x65, 0x29, 0x2e, 0x86,
0x84, 0x71, 0x32, 0x60, 0x7b, 0x87, 0x5e, 0x18, 0xe2, 0x00, 0xed, 0xcc, 0x78, 0xfd, 0x2a, 0x53,
0x4e, 0xf6, 0xbc, 0x55, 0xba, 0x67, 0x97, 0x47, 0x24, 0x3c, 0x48, 0x70, 0xe1, 0x5c, 0x42, 0x2f,
0xc0, 0xce, 0x3c, 0x41, 0xa0, 0x3b, 0x65, 0x66, 0x9c, 0x7e, 0xa3, 0x68, 0x9d, 0x04, 0x20, 0xe7,
0x12, 0x1a, 0x42, 0x23, 0xf7, 0x46, 0x86, 0xb6, 0x4e, 0xea, 0x00, 0xb2, 0x0f, 0x53, 0xad, 0x6f,
0x2e, 0xa0, 0x99, 0x9e, 0xfe, 0x17, 0xca, 0x60, 0x53, 0x8f, 0x4c, 0xf7, 0x66, 0x2c, 0x32, 0xeb,
0x39, 0xac, 0x75, 0x7f, 0xf1, 0x09, 0xe9, 0xe6, 0xfe, 0xe4, 0x92, 0x0a, 0x5c, 0x77, 0xe7, 0xb7,
0x39, 0x6a, 0xb7, 0xad, 0x45, 0xfb, 0x21, 0xe7, 0x12, 0xda, 0x07, 0x2b, 0xed, 0x48, 0xd0, 0x7b,
0x65, 0x13, 0x8b, 0x0d, 0xcb, 0x02, 0xce, 0xc9, 0x55, 0xfc, 0xe5, 0xce, 0x29, 0x6b, 0x38, 0xca,
0x9d, 0x53, 0xda, 0x3e, 0x38, 0x97, 0xd0, 0x2f, 0x27, 0x0f, 0xa5, 0xb9, 0x3a, 0x1b, 0xdd, 0x3f,
0xe9, 0xfa, 0x65, 0x65, 0x7f, 0xeb, 0x3b, 0xa7, 0x98, 0x91, 0x01, 0x07, 0xea, 0x1e, 0xd2, 0xd7,
0xaa, 0x82, 0x89, 0x23, 0x4f, 0xb4, 0x07, 0x25, 0x9b, 0xeb, 0x58, 0x9a, 0x56, 0x9d, 0xb9, 0xf9,
0x09, 0x33, 0xd2, 0xcd, 0x7b, 0x00, 0x8f, 0x30, 0x7f, 0x86, 0x79, 0x44, 0x06, 0xac, 0x18, 0x56,
0x93, 0x84, 0xa1, 0x15, 0x92, 0xad, 0xee, 0xce, 0xd5, 0x4b, 0x37, 0xe8, 0x83, 0xbd, 0x77, 0x88,
0x07, 0x47, 0x8f, 0xb1, 0x17, 0xf0, 0x43, 0x54, 0x3e, 0x33, 0xa3, 0x31, 0x03, 0x7b, 0x65, 0x8a,
0xc9, 0x1e, 0x3b, 0x5f, 0x2d, 0xeb, 0xbf, 0x58, 0x9f, 0x53, 0x1f, 0xff, 0xef, 0xe7, 0xc2, 0x7d,
0xb0, 0xd2, 0x1e, 0xa1, 0x3c, 0xd4, 0x8a, 0x2d, 0xc4, 0xbc, 0x50, 0xfb, 0x0c, 0xac, 0xb4, 0xda,
0x2a, 0x5f, 0xb1, 0x58, 0xb0, 0xb6, 0x6e, 0xcf, 0xd1, 0x4a, 0x4f, 0xfb, 0x1c, 0x6a, 0x49, 0x75,
0x84, 0x6e, 0xcd, 0xca, 0x0b, 0xd9, 0x95, 0xe7, 0x9c, 0xf5, 0xe7, 0x60, 0x67, 0x4a, 0x87, 0x72,
0x26, 0x98, 0x2e, 0x39, 0x5a, 0x77, 0xe7, 0xea, 0xfd, 0x7f, 0x04, 0xe4, 0x83, 0xef, 0x7e, 0xb6,
0x73, 0x40, 0xf8, 0x61, 0xdc, 0x17, 0x96, 0xbd, 0xa7, 0x34, 0xdf, 0x27, 0x54, 0xff, 0xba, 0x97,
0x9c, 0xf2, 0x9e, 0x5c, 0xe9, 0x9e, 0xb4, 0xd3, 0xb8, 0xdf, 0x5f, 0x96, 0xc3, 0x0f, 0xfe, 0x13,
0x00, 0x00, 0xff, 0xff, 0x84, 0x29, 0xf6, 0x35, 0x2f, 0x21, 0x00, 0x00,
0x15, 0x4f, 0xbb, 0x3d, 0x33, 0xee, 0xd7, 0xf6, 0x7c, 0x54, 0xb2, 0xe0, 0x38, 0x09, 0x99, 0x74,
0x36, 0xc9, 0x80, 0xc8, 0x24, 0xcc, 0xb2, 0x68, 0x41, 0x80, 0x34, 0x99, 0xd9, 0x24, 0x4e, 0x36,
0xd1, 0xd0, 0x8e, 0x56, 0x62, 0x85, 0x30, 0x6d, 0x77, 0x79, 0xa6, 0x76, 0xda, 0x5d, 0x4e, 0x57,
0x75, 0x92, 0x09, 0x12, 0x82, 0xc3, 0x1e, 0x40, 0x48, 0x08, 0x84, 0xc4, 0x3f, 0xc0, 0x69, 0xf9,
0x0f, 0xb8, 0x70, 0xe1, 0xc8, 0x05, 0xee, 0x5c, 0xf8, 0x27, 0xb8, 0xa2, 0xfa, 0xe8, 0x76, 0x77,
0xbb, 0x3d, 0xf6, 0x7c, 0x20, 0x24, 0xf6, 0xe6, 0x7a, 0xf5, 0xea, 0xa3, 0xdf, 0xfb, 0xbd, 0xf7,
0x7b, 0xaf, 0x0c, 0x6b, 0x24, 0xf4, 0xf1, 0x9b, 0x6e, 0x9f, 0xd2, 0xc8, 0xdf, 0x1c, 0x45, 0x94,
0x53, 0x84, 0x86, 0x24, 0x78, 0x15, 0x33, 0x35, 0xda, 0x94, 0xf3, 0xad, 0x7a, 0x9f, 0x0e, 0x87,
0x34, 0x54, 0xb2, 0x56, 0x9d, 0xf5, 0x0f, 0xf0, 0xd0, 0xd3, 0xa3, 0x65, 0x12, 0x72, 0x1c, 0x85,
0x5e, 0x90, 0xcc, 0x66, 0xd7, 0x3b, 0xff, 0xac, 0x82, 0xd5, 0x16, 0x7b, 0xb4, 0xc3, 0x01, 0x45,
0x0e, 0xd4, 0xfb, 0x34, 0x08, 0x70, 0x9f, 0x13, 0x1a, 0xb6, 0x77, 0x9b, 0xc6, 0xba, 0xb1, 0x61,
0xba, 0x39, 0x19, 0x6a, 0xc2, 0xd2, 0x80, 0xe0, 0xc0, 0x6f, 0xef, 0x36, 0x2b, 0x72, 0x3a, 0x19,
0xa2, 0x6b, 0x00, 0xea, 0xba, 0xa1, 0x37, 0xc4, 0x4d, 0x73, 0xdd, 0xd8, 0xb0, 0x5c, 0x4b, 0x4a,
0x9e, 0x7b, 0x43, 0x2c, 0x16, 0xca, 0x41, 0x7b, 0xb7, 0x59, 0x55, 0x0b, 0xf5, 0x10, 0x3d, 0x00,
0x9b, 0x1f, 0x8d, 0x70, 0x77, 0xe4, 0x45, 0xde, 0x90, 0x35, 0x17, 0xd6, 0xcd, 0x0d, 0x7b, 0xeb,
0xc6, 0x66, 0xee, 0x43, 0xf5, 0x17, 0x3e, 0xc5, 0x47, 0x1f, 0x7b, 0x41, 0x8c, 0xf7, 0x3c, 0x12,
0xb9, 0x20, 0x56, 0xed, 0xc9, 0x45, 0x68, 0x17, 0xea, 0xea, 0x70, 0xbd, 0xc9, 0xe2, 0xbc, 0x9b,
0xd8, 0x72, 0x99, 0xde, 0xe5, 0x86, 0xde, 0x05, 0xfb, 0xdd, 0x88, 0xbe, 0x66, 0xcd, 0x25, 0x79,
0x51, 0x5b, 0xcb, 0x5c, 0xfa, 0x9a, 0x89, 0xaf, 0xe4, 0x94, 0x7b, 0x81, 0x52, 0xa8, 0x49, 0x05,
0x4b, 0x4a, 0xe4, 0xf4, 0xfb, 0xb0, 0xc0, 0xb8, 0xc7, 0x71, 0xd3, 0x5a, 0x37, 0x36, 0x96, 0xb7,
0xae, 0x97, 0x5e, 0x40, 0x5a, 0xbc, 0x23, 0xd4, 0x5c, 0xa5, 0x8d, 0xde, 0x87, 0x2f, 0xab, 0xeb,
0xcb, 0x61, 0x77, 0xe0, 0x91, 0xa0, 0x1b, 0x61, 0x8f, 0xd1, 0xb0, 0x09, 0xd2, 0x90, 0x97, 0x48,
0xba, 0xe6, 0xa1, 0x47, 0x02, 0x57, 0xce, 0x21, 0x07, 0x1a, 0x84, 0x75, 0xbd, 0x98, 0xd3, 0xae,
0x9c, 0x6f, 0xda, 0xeb, 0xc6, 0x46, 0xcd, 0xb5, 0x09, 0xdb, 0x8e, 0x39, 0x95, 0xc7, 0xa0, 0x67,
0xb0, 0x16, 0x33, 0x1c, 0x75, 0x73, 0xe6, 0xa9, 0xcf, 0x6b, 0x9e, 0x15, 0xb1, 0xb6, 0x9d, 0x31,
0xd1, 0xd7, 0x01, 0x8d, 0x70, 0xe8, 0x93, 0x70, 0x5f, 0xef, 0x28, 0xed, 0xd0, 0x90, 0x76, 0x58,
0xd5, 0x33, 0x52, 0x5f, 0x98, 0xc3, 0xf9, 0xcc, 0x00, 0x78, 0x28, 0xf1, 0x21, 0xef, 0xf2, 0xdd,
0x04, 0x22, 0x24, 0x1c, 0x50, 0x09, 0x2f, 0x7b, 0xeb, 0xda, 0xe6, 0x24, 0xa2, 0x37, 0x53, 0x4c,
0x6a, 0x04, 0x49, 0x78, 0x36, 0x61, 0xc9, 0xc7, 0x01, 0xe6, 0xd8, 0x97, 0xd0, 0xab, 0xb9, 0xc9,
0x10, 0x5d, 0x07, 0xbb, 0x1f, 0x61, 0x61, 0x39, 0x4e, 0x34, 0xf6, 0xaa, 0x2e, 0x28, 0xd1, 0x0b,
0x32, 0xc4, 0xce, 0x67, 0x55, 0xa8, 0x77, 0xf0, 0xfe, 0x10, 0x87, 0x5c, 0xdd, 0x64, 0x1e, 0xa8,
0xaf, 0x83, 0x3d, 0xf2, 0x22, 0x4e, 0xb4, 0x8a, 0x82, 0x7b, 0x56, 0x84, 0xae, 0x82, 0xc5, 0xf4,
0xae, 0xbb, 0xf2, 0x54, 0xd3, 0x1d, 0x0b, 0xd0, 0x65, 0xa8, 0x85, 0xf1, 0x50, 0x19, 0x48, 0x43,
0x3e, 0x8c, 0x87, 0x12, 0x26, 0x99, 0x60, 0x58, 0xc8, 0x07, 0x43, 0x13, 0x96, 0x7a, 0x31, 0x91,
0xf1, 0xb5, 0xa8, 0x66, 0xf4, 0x10, 0x7d, 0x09, 0x16, 0x43, 0xea, 0xe3, 0xf6, 0xae, 0x86, 0xa5,
0x1e, 0xa1, 0x9b, 0xd0, 0x50, 0x46, 0x7d, 0x85, 0x23, 0x46, 0x68, 0xa8, 0x41, 0xa9, 0x90, 0xfc,
0xb1, 0x92, 0x9d, 0x16, 0x97, 0xd7, 0xc1, 0x9e, 0xc4, 0x22, 0x0c, 0xc6, 0x08, 0xbc, 0x0d, 0x2b,
0xea, 0xf0, 0x01, 0x09, 0x70, 0xf7, 0x10, 0x1f, 0xb1, 0xa6, 0xbd, 0x6e, 0x6e, 0x58, 0xae, 0xba,
0xd3, 0x43, 0x12, 0xe0, 0xa7, 0xf8, 0x88, 0x65, 0x7d, 0x57, 0x3f, 0xd6, 0x77, 0x8d, 0xa2, 0xef,
0xd0, 0x2d, 0x58, 0x66, 0x38, 0x22, 0x5e, 0x40, 0xde, 0xe2, 0x2e, 0x23, 0x6f, 0x71, 0x73, 0x59,
0xea, 0x34, 0x52, 0x69, 0x87, 0xbc, 0xc5, 0xc2, 0x0c, 0xaf, 0x23, 0xc2, 0x71, 0xf7, 0xc0, 0x0b,
0x7d, 0x3a, 0x18, 0x34, 0x57, 0xe4, 0x39, 0x75, 0x29, 0x7c, 0xac, 0x64, 0xce, 0x1f, 0x0c, 0xb8,
0xe8, 0xe2, 0x7d, 0xc2, 0x38, 0x8e, 0x9e, 0x53, 0x1f, 0xbb, 0xf8, 0x65, 0x8c, 0x19, 0x47, 0xf7,
0xa1, 0xda, 0xf3, 0x18, 0xd6, 0x90, 0xbc, 0x5a, 0x6a, 0x9d, 0x67, 0x6c, 0xff, 0x81, 0xc7, 0xb0,
0x2b, 0x35, 0xd1, 0xb7, 0x60, 0xc9, 0xf3, 0xfd, 0x08, 0x33, 0x26, 0x81, 0x31, 0x6d, 0xd1, 0xb6,
0xd2, 0x71, 0x13, 0xe5, 0x8c, 0x17, 0xcd, 0xac, 0x17, 0x9d, 0xdf, 0x18, 0x70, 0x29, 0x7f, 0x33,
0x36, 0xa2, 0x21, 0xc3, 0xe8, 0x3d, 0x58, 0x14, 0xbe, 0x88, 0x99, 0xbe, 0xdc, 0x95, 0xd2, 0x73,
0x3a, 0x52, 0xc5, 0xd5, 0xaa, 0x22, 0xa5, 0x92, 0x90, 0xf0, 0x24, 0xdc, 0xd5, 0x0d, 0x6f, 0x14,
0x23, 0x4d, 0x13, 0x43, 0x3b, 0x24, 0x5c, 0x45, 0xb7, 0x0b, 0x24, 0xfd, 0xed, 0xfc, 0x10, 0x2e,
0x3d, 0xc2, 0x3c, 0x83, 0x09, 0x6d, 0xab, 0x79, 0x42, 0x27, 0xcf, 0x05, 0x95, 0x02, 0x17, 0x38,
0x7f, 0x34, 0xe0, 0x9d, 0xc2, 0xde, 0x67, 0xf9, 0xda, 0x14, 0xdc, 0x95, 0xb3, 0x80, 0xdb, 0x2c,
0x82, 0xdb, 0xf9, 0xb9, 0x01, 0x57, 0x1e, 0x61, 0x9e, 0x4d, 0x1c, 0xe7, 0x6c, 0x09, 0xf4, 0x15,
0x80, 0x34, 0x61, 0xb0, 0xa6, 0xb9, 0x6e, 0x6e, 0x98, 0x6e, 0x46, 0xe2, 0xfc, 0xd2, 0x80, 0xb5,
0x89, 0xf3, 0xf3, 0x79, 0xc7, 0x28, 0xe6, 0x9d, 0xff, 0x96, 0x39, 0x7e, 0x67, 0xc0, 0xd5, 0x72,
0x73, 0x9c, 0xc5, 0x79, 0xdf, 0x53, 0x8b, 0xb0, 0x40, 0xa9, 0x20, 0xa5, 0x5b, 0x65, 0x7c, 0x30,
0x79, 0xa6, 0x5e, 0xe4, 0xfc, 0xdd, 0x04, 0xb4, 0x23, 0x93, 0x85, 0x62, 0x9d, 0x13, 0xb8, 0xe6,
0xd4, 0xa5, 0x4c, 0xa1, 0x60, 0xa9, 0x9e, 0x47, 0xc1, 0xb2, 0x70, 0xaa, 0x82, 0xe5, 0x2a, 0x58,
0x22, 0x6b, 0x32, 0xee, 0x0d, 0x47, 0x92, 0x2f, 0xaa, 0xee, 0x58, 0x30, 0x59, 0x1e, 0x2c, 0xcd,
0x59, 0x1e, 0xd4, 0x4e, 0x5d, 0x1e, 0xec, 0x40, 0x43, 0x1a, 0x71, 0xd7, 0xe3, 0xde, 0x8b, 0xa3,
0x51, 0xc2, 0x37, 0x05, 0x92, 0xd7, 0x15, 0x6a, 0xa2, 0xe4, 0xe6, 0xd7, 0x38, 0x6f, 0xe0, 0x62,
0x92, 0x1d, 0x64, 0x0d, 0x70, 0x02, 0x9f, 0xe6, 0xe3, 0xa9, 0x52, 0x8c, 0xa7, 0x19, 0x9e, 0x75,
0xfe, 0x5d, 0x81, 0xb5, 0x76, 0x42, 0x5c, 0x7b, 0x1e, 0x3f, 0x90, 0x85, 0xc7, 0xf1, 0xe1, 0x36,
0x1d, 0x46, 0x19, 0x96, 0x37, 0xa7, 0xb2, 0x7c, 0x35, 0xcf, 0xf2, 0xf9, 0x0b, 0x2e, 0x14, 0xa1,
0x77, 0x3e, 0x75, 0xee, 0x06, 0xac, 0x66, 0x58, 0x7b, 0xe4, 0xf1, 0x03, 0x51, 0xeb, 0x0a, 0xda,
0x5e, 0x26, 0xd9, 0xaf, 0x67, 0xe8, 0x0e, 0xac, 0xa4, 0x34, 0xeb, 0x2b, 0xf6, 0xad, 0x49, 0x98,
0x8d, 0x39, 0xd9, 0x4f, 0xe8, 0x37, 0x5f, 0x85, 0x58, 0x25, 0x55, 0x48, 0xb6, 0x22, 0x82, 0x5c,
0x45, 0xe4, 0xfc, 0xd9, 0x00, 0x3b, 0x8d, 0xf2, 0x39, 0x7b, 0x91, 0x9c, 0x5f, 0x2a, 0x45, 0xbf,
0xdc, 0x80, 0x3a, 0x0e, 0xbd, 0x5e, 0x80, 0x35, 0xf8, 0x4d, 0x05, 0x7e, 0x25, 0x53, 0xe0, 0x7f,
0x08, 0xf6, 0xb8, 0x1e, 0x4d, 0x02, 0xf9, 0xd6, 0xd4, 0x82, 0x34, 0x0b, 0x0a, 0x17, 0xd2, 0xc2,
0x94, 0x39, 0xbf, 0xaa, 0x8c, 0xb9, 0x52, 0x21, 0xf6, 0x2c, 0x19, 0xf1, 0x47, 0x50, 0xd7, 0x5f,
0xa1, 0xea, 0x64, 0x95, 0x17, 0xbf, 0x5d, 0x76, 0xad, 0xb2, 0x43, 0x37, 0x33, 0x66, 0xfc, 0x30,
0xe4, 0xd1, 0x91, 0x6b, 0xb3, 0xb1, 0xa4, 0xd5, 0x85, 0xd5, 0xa2, 0x02, 0x5a, 0x05, 0xf3, 0x10,
0x1f, 0x69, 0x1b, 0x8b, 0x9f, 0x82, 0x43, 0x5e, 0x09, 0xec, 0xe8, 0xd2, 0xe1, 0xfa, 0xb1, 0x49,
0x79, 0x40, 0x5d, 0xa5, 0xfd, 0x9d, 0xca, 0x07, 0x86, 0xf3, 0x7b, 0x03, 0x56, 0x77, 0x23, 0x3a,
0x3a, 0x71, 0x3e, 0x76, 0xa0, 0x9e, 0x29, 0xae, 0x93, 0xe8, 0xcd, 0xc9, 0x66, 0x65, 0xe6, 0xcb,
0x50, 0xf3, 0x23, 0x3a, 0xea, 0x7a, 0x41, 0x20, 0x03, 0x4b, 0xd4, 0x99, 0x11, 0x1d, 0x6d, 0x07,
0x81, 0x28, 0x67, 0x76, 0x31, 0xeb, 0x47, 0xa4, 0x77, 0x72, 0xa6, 0x98, 0x51, 0xce, 0xfc, 0xda,
0x80, 0x77, 0x0a, 0x7b, 0x9f, 0xc5, 0xff, 0xdf, 0xcf, 0xa3, 0x52, 0xb9, 0x7f, 0x46, 0x9b, 0x94,
0x45, 0xa3, 0x27, 0x69, 0x5a, 0xce, 0x3d, 0x10, 0x59, 0x65, 0x2f, 0xa2, 0xfb, 0xb2, 0x08, 0x3d,
0xbf, 0x2f, 0xfe, 0xab, 0x01, 0xd7, 0xa6, 0x9c, 0x71, 0x96, 0x2f, 0x2f, 0xf6, 0xdf, 0x95, 0x59,
0xfd, 0xb7, 0x59, 0xec, 0xbf, 0xcb, 0xdb, 0xd3, 0xea, 0x94, 0xf6, 0xf4, 0x4f, 0x15, 0x68, 0x74,
0x38, 0x8d, 0xbc, 0x7d, 0xbc, 0x43, 0xc3, 0x01, 0xd9, 0x17, 0x89, 0x39, 0x29, 0xeb, 0x0d, 0xf9,
0xd1, 0x69, 0xe1, 0x7e, 0x03, 0xea, 0x5e, 0xbf, 0x8f, 0x19, 0x13, 0x5d, 0x8e, 0xce, 0x37, 0x96,
0x6b, 0x2b, 0xd9, 0x53, 0x21, 0x42, 0x5f, 0x83, 0x35, 0x86, 0xfb, 0x11, 0xe6, 0xdd, 0xb1, 0xa6,
0xc6, 0xe8, 0x8a, 0x9a, 0xd8, 0x4e, 0xb4, 0x45, 0x1f, 0x10, 0x33, 0xdc, 0xe9, 0x7c, 0xa4, 0x71,
0xaa, 0x47, 0xa2, 0x0a, 0xeb, 0xc5, 0xfd, 0x43, 0xcc, 0xb3, 0x04, 0x00, 0x4a, 0x24, 0x21, 0x7e,
0x05, 0xac, 0x88, 0x52, 0x2e, 0xb3, 0xb6, 0xa4, 0x7c, 0xcb, 0xad, 0x09, 0x81, 0x48, 0x4c, 0x7a,
0xd7, 0xf6, 0xf6, 0x33, 0x4d, 0xf5, 0x7a, 0x24, 0x5a, 0xd9, 0xf6, 0xf6, 0xb3, 0x0f, 0x43, 0x7f,
0x44, 0x49, 0xc8, 0x65, 0x0a, 0xb7, 0xdc, 0xac, 0x48, 0x7c, 0x1e, 0x53, 0x96, 0xe8, 0xf2, 0x84,
0xb7, 0x2d, 0xd7, 0xd6, 0x32, 0x49, 0xcb, 0xff, 0x32, 0x61, 0x55, 0x95, 0x5a, 0x4f, 0x68, 0x2f,
0x01, 0xd3, 0x55, 0xb0, 0xfa, 0x41, 0x2c, 0xba, 0x16, 0x8d, 0x24, 0xcb, 0x1d, 0x0b, 0x84, 0x45,
0xb2, 0x44, 0x13, 0xe1, 0x01, 0x79, 0xa3, 0x2d, 0xb7, 0x32, 0x66, 0x1a, 0x29, 0xce, 0x72, 0xa2,
0x39, 0xc1, 0x89, 0xbe, 0xc7, 0x3d, 0x4d, 0x54, 0x55, 0x49, 0x54, 0x96, 0x90, 0x28, 0x8e, 0x9a,
0xa0, 0x9e, 0x85, 0x12, 0xea, 0xc9, 0x70, 0xf1, 0x62, 0x9e, 0x8b, 0xf3, 0x50, 0x5f, 0x2a, 0xa6,
0x94, 0xc7, 0xb0, 0x9c, 0x18, 0xa6, 0x2f, 0x31, 0x22, 0xad, 0x57, 0xd2, 0x4d, 0xc9, 0x94, 0x98,
0x05, 0x93, 0xdb, 0x60, 0x39, 0x6c, 0x15, 0xb9, 0xdb, 0x3a, 0x15, 0x77, 0x17, 0x8a, 0x4f, 0x38,
0x4d, 0xf1, 0x99, 0xe5, 0x61, 0x3b, 0xcf, 0xc3, 0x1f, 0xc1, 0xea, 0x0f, 0x62, 0x1c, 0x1d, 0x3d,
0xa1, 0x3d, 0x36, 0x9f, 0x8f, 0x5b, 0x50, 0xd3, 0x8e, 0x4a, 0x52, 0x76, 0x3a, 0x76, 0xfe, 0x61,
0x40, 0x43, 0x86, 0xdb, 0x0b, 0x8f, 0x1d, 0x26, 0x8f, 0x38, 0x89, 0x97, 0x8d, 0xbc, 0x97, 0x4f,
0xd9, 0xb6, 0x94, 0xbc, 0x40, 0x98, 0x65, 0x2f, 0x10, 0x25, 0x95, 0x4c, 0xb5, 0xb4, 0x92, 0x29,
0xf4, 0x41, 0x0b, 0x13, 0x7d, 0xd0, 0xe7, 0x06, 0xac, 0x65, 0x6c, 0x74, 0x96, 0x84, 0x97, 0xb3,
0x6c, 0xa5, 0x68, 0xd9, 0x07, 0x79, 0x22, 0x30, 0xcb, 0x5c, 0x9d, 0x21, 0x82, 0xc4, 0xc6, 0x39,
0x32, 0x78, 0x0a, 0x2b, 0x82, 0x8c, 0xcf, 0xc7, 0x9d, 0x7f, 0x33, 0x60, 0xe9, 0x09, 0xed, 0x49,
0x47, 0x66, 0x31, 0x64, 0xe4, 0x5f, 0xb7, 0x56, 0xc1, 0xf4, 0xc9, 0x50, 0x67, 0x6f, 0xf1, 0x53,
0xc4, 0x18, 0xe3, 0x5e, 0xc4, 0xc7, 0xef, 0x73, 0xa2, 0x54, 0x13, 0x12, 0xf9, 0xc4, 0x73, 0x19,
0x6a, 0x38, 0xf4, 0xd5, 0xa4, 0xae, 0x87, 0x71, 0xe8, 0xcb, 0xa9, 0xf3, 0xe9, 0x93, 0x2e, 0xc1,
0xc2, 0x88, 0x8e, 0xdf, 0xd4, 0xd4, 0xc0, 0xb9, 0x04, 0xe8, 0x11, 0xe6, 0x4f, 0x68, 0x4f, 0x78,
0x25, 0x31, 0x8f, 0xf3, 0x97, 0x8a, 0x6c, 0x3f, 0xc6, 0xe2, 0xb3, 0x38, 0xd8, 0x81, 0x86, 0xa2,
0xab, 0x4f, 0x69, 0xaf, 0x1b, 0xc6, 0x89, 0x51, 0x6c, 0x29, 0x7c, 0x42, 0x7b, 0xcf, 0xe3, 0x21,
0xba, 0x0b, 0x17, 0x49, 0xd8, 0x1d, 0x69, 0x06, 0x4d, 0x35, 0x95, 0x95, 0x56, 0x49, 0x98, 0x70,
0xab, 0x56, 0xbf, 0x0d, 0x2b, 0x38, 0x7c, 0x19, 0xe3, 0x18, 0xa7, 0xaa, 0xca, 0x66, 0x0d, 0x2d,
0xd6, 0x7a, 0x82, 0x29, 0x3d, 0x76, 0xd8, 0x65, 0x01, 0xe5, 0x4c, 0xe7, 0x44, 0x4b, 0x48, 0x3a,
0x42, 0x80, 0x3e, 0x00, 0x4b, 0x2c, 0x57, 0xd0, 0x52, 0x6d, 0xc4, 0x95, 0x32, 0x68, 0x69, 0x7f,
0xbb, 0xb5, 0x4f, 0xd5, 0x0f, 0x26, 0x02, 0x44, 0x17, 0xd6, 0x3e, 0x61, 0x87, 0x9a, 0x69, 0x40,
0x89, 0x76, 0x09, 0x3b, 0x74, 0x7e, 0x0c, 0x97, 0xb3, 0xaf, 0x3b, 0x84, 0x71, 0xd2, 0x3f, 0xcf,
0xea, 0xe3, 0xb7, 0x06, 0xb4, 0xca, 0x0e, 0xf8, 0x1f, 0x16, 0x5d, 0x5b, 0xbf, 0xb0, 0x01, 0xe4,
0xcc, 0x0e, 0xa5, 0x91, 0x8f, 0x02, 0x09, 0xad, 0x1d, 0x3a, 0x1c, 0xd1, 0x10, 0x87, 0x5c, 0x66,
0x2c, 0x86, 0x36, 0xf3, 0xfb, 0xe9, 0xc1, 0xa4, 0xa2, 0xb6, 0x55, 0xeb, 0xdd, 0x52, 0xfd, 0x82,
0xb2, 0x73, 0x01, 0xbd, 0x94, 0xed, 0xc7, 0xd8, 0x14, 0x3b, 0x07, 0x5e, 0x18, 0xe2, 0x00, 0x6d,
0x4d, 0x79, 0xf1, 0x2b, 0x53, 0x4e, 0xce, 0xbc, 0x59, 0x7a, 0x66, 0x87, 0x47, 0x24, 0xdc, 0x4f,
0x4c, 0xec, 0x5c, 0x40, 0x2f, 0xc0, 0xce, 0x3c, 0xbb, 0xa0, 0xdb, 0x65, 0x96, 0x9a, 0x7c, 0x97,
0x69, 0x1d, 0xe7, 0x0b, 0xe7, 0x02, 0x1a, 0x40, 0x23, 0xf7, 0x2e, 0x88, 0x36, 0x8e, 0xeb, 0x7a,
0xb2, 0x8f, 0x71, 0xad, 0xaf, 0xce, 0xa1, 0x99, 0xde, 0xfe, 0xa7, 0xca, 0x60, 0x13, 0x0f, 0x6b,
0xf7, 0xa6, 0x6c, 0x32, 0xed, 0x09, 0xb0, 0x75, 0x7f, 0xfe, 0x05, 0xe9, 0xe1, 0xfe, 0xf8, 0x23,
0x55, 0x40, 0xdd, 0x99, 0xdd, 0xda, 0xa9, 0xd3, 0x36, 0xe6, 0xed, 0x01, 0x9d, 0x0b, 0x68, 0x0f,
0xac, 0xb4, 0x0b, 0x43, 0xef, 0x96, 0x2d, 0x2c, 0x36, 0x69, 0x73, 0x38, 0x27, 0xd7, 0xe5, 0x94,
0x3b, 0xa7, 0xac, 0xc9, 0x2a, 0x77, 0x4e, 0x69, 0xcb, 0xe4, 0x5c, 0x40, 0xb1, 0x8c, 0x9d, 0x42,
0x74, 0xa3, 0xbb, 0xb3, 0xfc, 0x9b, 0x4b, 0x33, 0xad, 0xcd, 0x79, 0xd5, 0xd3, 0x63, 0x7f, 0x36,
0x7e, 0x93, 0xce, 0xb5, 0x34, 0xe8, 0xfe, 0x71, 0x5b, 0x95, 0x75, 0x58, 0xad, 0x6f, 0x9c, 0x60,
0x45, 0x06, 0x93, 0xa8, 0x73, 0x40, 0x5f, 0xab, 0x62, 0x31, 0x8e, 0x3c, 0x91, 0x0b, 0x4b, 0x0e,
0xd7, 0x21, 0x3c, 0xa9, 0x3a, 0xf5, 0xf0, 0x63, 0x56, 0xa4, 0x87, 0x77, 0x01, 0x1e, 0x61, 0xfe,
0x0c, 0xf3, 0x48, 0xd8, 0xfa, 0xf6, 0xb4, 0x3c, 0xa5, 0x15, 0x92, 0xa3, 0xee, 0xcc, 0xd4, 0x4b,
0x0f, 0xe8, 0x81, 0xbd, 0x73, 0x80, 0xfb, 0x87, 0x8f, 0xb1, 0x17, 0xf0, 0x03, 0x54, 0xbe, 0x32,
0xa3, 0x31, 0x05, 0xf2, 0x65, 0x8a, 0xc9, 0x19, 0x5b, 0x9f, 0x2f, 0xea, 0x7f, 0xb3, 0x9f, 0x53,
0x1f, 0xff, 0xff, 0xa7, 0xe0, 0x3d, 0xb0, 0xd2, 0x76, 0xac, 0x3c, 0xc2, 0x8b, 0xdd, 0xda, 0xac,
0x08, 0xff, 0x04, 0xac, 0xb4, 0xb0, 0x2d, 0xdf, 0xb1, 0xd8, 0x1b, 0xb4, 0x6e, 0xcd, 0xd0, 0x4a,
0x6f, 0xfb, 0x1c, 0x6a, 0x49, 0x21, 0x8a, 0x6e, 0x4e, 0x4b, 0x47, 0xd9, 0x9d, 0x67, 0xdc, 0xf5,
0x27, 0x60, 0x67, 0xaa, 0xb4, 0x72, 0x02, 0x9a, 0xac, 0xee, 0x5a, 0x77, 0x66, 0xea, 0x7d, 0x31,
0x02, 0xf2, 0xc1, 0x37, 0x3f, 0xd9, 0xda, 0x27, 0xfc, 0x20, 0xee, 0x09, 0xcb, 0xde, 0x53, 0x9a,
0x77, 0x09, 0xd5, 0xbf, 0xee, 0x25, 0xb7, 0xbc, 0x27, 0x77, 0xba, 0x27, 0xed, 0x34, 0xea, 0xf5,
0x16, 0xe5, 0xf0, 0xbd, 0xff, 0x04, 0x00, 0x00, 0xff, 0xff, 0xc3, 0xaf, 0xe3, 0xca, 0x9a, 0x22,
0x00, 0x00,
}
// Reference imports to suppress errors if they are not otherwise used.
@ -2218,6 +2317,7 @@ type IndexCoordClient interface {
GetIndexInfos(ctx context.Context, in *GetIndexInfoRequest, opts ...grpc.CallOption) (*GetIndexInfoResponse, error)
DropIndex(ctx context.Context, in *DropIndexRequest, opts ...grpc.CallOption) (*commonpb.Status, error)
DescribeIndex(ctx context.Context, in *DescribeIndexRequest, opts ...grpc.CallOption) (*DescribeIndexResponse, error)
GetIndexStatistics(ctx context.Context, in *GetIndexStatisticsRequest, opts ...grpc.CallOption) (*GetIndexStatisticsResponse, error)
// Deprecated: use DescribeIndex instead
GetIndexBuildProgress(ctx context.Context, in *GetIndexBuildProgressRequest, opts ...grpc.CallOption) (*GetIndexBuildProgressResponse, error)
ShowConfigurations(ctx context.Context, in *internalpb.ShowConfigurationsRequest, opts ...grpc.CallOption) (*internalpb.ShowConfigurationsResponse, error)
@ -2306,6 +2406,15 @@ func (c *indexCoordClient) DescribeIndex(ctx context.Context, in *DescribeIndexR
return out, nil
}
func (c *indexCoordClient) GetIndexStatistics(ctx context.Context, in *GetIndexStatisticsRequest, opts ...grpc.CallOption) (*GetIndexStatisticsResponse, error) {
out := new(GetIndexStatisticsResponse)
err := c.cc.Invoke(ctx, "/milvus.proto.index.IndexCoord/GetIndexStatistics", in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *indexCoordClient) GetIndexBuildProgress(ctx context.Context, in *GetIndexBuildProgressRequest, opts ...grpc.CallOption) (*GetIndexBuildProgressResponse, error) {
out := new(GetIndexBuildProgressResponse)
err := c.cc.Invoke(ctx, "/milvus.proto.index.IndexCoord/GetIndexBuildProgress", in, out, opts...)
@ -2353,6 +2462,7 @@ type IndexCoordServer interface {
GetIndexInfos(context.Context, *GetIndexInfoRequest) (*GetIndexInfoResponse, error)
DropIndex(context.Context, *DropIndexRequest) (*commonpb.Status, error)
DescribeIndex(context.Context, *DescribeIndexRequest) (*DescribeIndexResponse, error)
GetIndexStatistics(context.Context, *GetIndexStatisticsRequest) (*GetIndexStatisticsResponse, error)
// Deprecated: use DescribeIndex instead
GetIndexBuildProgress(context.Context, *GetIndexBuildProgressRequest) (*GetIndexBuildProgressResponse, error)
ShowConfigurations(context.Context, *internalpb.ShowConfigurationsRequest) (*internalpb.ShowConfigurationsResponse, error)
@ -2389,6 +2499,9 @@ func (*UnimplementedIndexCoordServer) DropIndex(ctx context.Context, req *DropIn
func (*UnimplementedIndexCoordServer) DescribeIndex(ctx context.Context, req *DescribeIndexRequest) (*DescribeIndexResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method DescribeIndex not implemented")
}
func (*UnimplementedIndexCoordServer) GetIndexStatistics(ctx context.Context, req *GetIndexStatisticsRequest) (*GetIndexStatisticsResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method GetIndexStatistics not implemented")
}
func (*UnimplementedIndexCoordServer) GetIndexBuildProgress(ctx context.Context, req *GetIndexBuildProgressRequest) (*GetIndexBuildProgressResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method GetIndexBuildProgress not implemented")
}
@ -2550,6 +2663,24 @@ func _IndexCoord_DescribeIndex_Handler(srv interface{}, ctx context.Context, dec
return interceptor(ctx, in, info, handler)
}
func _IndexCoord_GetIndexStatistics_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(GetIndexStatisticsRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(IndexCoordServer).GetIndexStatistics(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/milvus.proto.index.IndexCoord/GetIndexStatistics",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(IndexCoordServer).GetIndexStatistics(ctx, req.(*GetIndexStatisticsRequest))
}
return interceptor(ctx, in, info, handler)
}
func _IndexCoord_GetIndexBuildProgress_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(GetIndexBuildProgressRequest)
if err := dec(in); err != nil {
@ -2658,6 +2789,10 @@ var _IndexCoord_serviceDesc = grpc.ServiceDesc{
MethodName: "DescribeIndex",
Handler: _IndexCoord_DescribeIndex_Handler,
},
{
MethodName: "GetIndexStatistics",
Handler: _IndexCoord_GetIndexStatistics_Handler,
},
{
MethodName: "GetIndexBuildProgress",
Handler: _IndexCoord_GetIndexBuildProgress_Handler,

View File

@ -2352,12 +2352,84 @@ func (node *Proxy) DescribeIndex(ctx context.Context, request *milvuspb.Describe
// GetIndexStatistics get the information of index.
func (node *Proxy) GetIndexStatistics(ctx context.Context, request *milvuspb.GetIndexStatisticsRequest) (*milvuspb.GetIndexStatisticsResponse, error) {
// bank implement
return &milvuspb.GetIndexStatisticsResponse{
Status: &commonpb.Status{
ErrorCode: commonpb.ErrorCode_Success,
},
}, nil
if !node.checkHealthy() {
return &milvuspb.GetIndexStatisticsResponse{
Status: unhealthyStatus(),
}, nil
}
sp, ctx := trace.StartSpanFromContextWithOperationName(ctx, "Proxy-GetIndexStatistics")
defer sp.Finish()
traceID, _, _ := trace.InfoFromSpan(sp)
dit := &getIndexStatisticsTask{
ctx: ctx,
Condition: NewTaskCondition(ctx),
GetIndexStatisticsRequest: request,
indexCoord: node.indexCoord,
}
method := "GetIndexStatistics"
// avoid data race
tr := timerecord.NewTimeRecorder(method)
metrics.ProxyFunctionCall.WithLabelValues(strconv.FormatInt(Params.ProxyCfg.GetNodeID(), 10), method,
metrics.TotalLabel).Inc()
log.Info(
rpcReceived(method),
zap.String("traceID", traceID),
zap.String("role", typeutil.ProxyRole),
zap.String("db", request.DbName),
zap.String("collection", request.CollectionName))
log.Debug(rpcReceived(method))
if err := node.sched.ddQueue.Enqueue(dit); err != nil {
log.Warn(
rpcFailedToEnqueue(method),
zap.Error(err))
metrics.ProxyFunctionCall.WithLabelValues(strconv.FormatInt(Params.ProxyCfg.GetNodeID(), 10), method,
metrics.AbandonLabel).Inc()
return &milvuspb.GetIndexStatisticsResponse{
Status: &commonpb.Status{
ErrorCode: commonpb.ErrorCode_UnexpectedError,
Reason: err.Error(),
},
}, nil
}
log.Debug(
rpcEnqueued(method),
zap.Uint64("BeginTs", dit.BeginTs()),
zap.Uint64("EndTs", dit.EndTs()))
if err := dit.WaitToFinish(); err != nil {
log.Warn(rpcFailedToWaitToFinish(method), zap.Error(err), zap.Uint64("BeginTs", dit.BeginTs()), zap.Uint64("EndTs", dit.EndTs()))
errCode := commonpb.ErrorCode_UnexpectedError
if dit.result != nil {
errCode = dit.result.Status.GetErrorCode()
}
metrics.ProxyFunctionCall.WithLabelValues(strconv.FormatInt(Params.ProxyCfg.GetNodeID(), 10), method, metrics.FailLabel).Inc()
return &milvuspb.GetIndexStatisticsResponse{
Status: &commonpb.Status{
ErrorCode: errCode,
Reason: err.Error(),
},
}, nil
}
log.Debug(
rpcDone(method),
zap.Uint64("BeginTs", dit.BeginTs()),
zap.Uint64("EndTs", dit.EndTs()))
metrics.ProxyFunctionCall.WithLabelValues(strconv.FormatInt(Params.ProxyCfg.GetNodeID(), 10), method,
metrics.SuccessLabel).Inc()
metrics.ProxyReqLatency.WithLabelValues(strconv.FormatInt(Params.ProxyCfg.GetNodeID(), 10), method).Observe(float64(tr.ElapseSpan().Milliseconds()))
return dit.result, nil
}
// DropIndex drop the index of collection.

View File

@ -175,6 +175,16 @@ func (coord *IndexCoordMock) DescribeIndex(ctx context.Context, req *indexpb.Des
}, nil
}
// GetIndexStatistics get the statistics of the index.
func (coord *IndexCoordMock) GetIndexStatistics(ctx context.Context, req *indexpb.GetIndexStatisticsRequest) (*indexpb.GetIndexStatisticsResponse, error) {
return &indexpb.GetIndexStatisticsResponse{
Status: &commonpb.Status{
ErrorCode: commonpb.ErrorCode_Success,
},
IndexInfos: nil,
}, nil
}
// GetIndexBuildProgress get the index building progress by num rows.
func (coord *IndexCoordMock) GetIndexBuildProgress(ctx context.Context, req *indexpb.GetIndexBuildProgressRequest) (*indexpb.GetIndexBuildProgressResponse, error) {
return &indexpb.GetIndexBuildProgressResponse{
@ -249,12 +259,14 @@ func NewIndexCoordMock() *IndexCoordMock {
type GetIndexStateFunc func(ctx context.Context, request *indexpb.GetIndexStateRequest) (*indexpb.GetIndexStateResponse, error)
type DescribeIndexFunc func(ctx context.Context, request *indexpb.DescribeIndexRequest) (*indexpb.DescribeIndexResponse, error)
type GetIndexStatisticsFunc func(ctx context.Context, request *indexpb.GetIndexStatisticsRequest) (*indexpb.GetIndexStatisticsResponse, error)
type DropIndexFunc func(ctx context.Context, request *indexpb.DropIndexRequest) (*commonpb.Status, error)
type mockIndexCoord struct {
types.IndexCoord
GetIndexStateFunc
DescribeIndexFunc
GetIndexStatisticsFunc
DropIndexFunc
}
@ -276,6 +288,16 @@ func (m *mockIndexCoord) DescribeIndex(ctx context.Context, request *indexpb.Des
return nil, errors.New("mock")
}
// GetIndexStatistics get the statistics of the index.
func (m *mockIndexCoord) GetIndexStatistics(ctx context.Context, request *indexpb.GetIndexStatisticsRequest) (*indexpb.GetIndexStatisticsResponse, error) {
if m.GetIndexStatisticsFunc != nil {
log.Warn("GetIndexStatistics not nil")
return m.GetIndexStatisticsFunc(ctx, request)
}
log.Warn("DescribeIndexFunc nil")
return nil, errors.New("mock")
}
func (m *mockIndexCoord) DropIndex(ctx context.Context, request *indexpb.DropIndexRequest) (*commonpb.Status, error) {
if m.DropIndexFunc != nil {
log.Warn("DropIndexFunc not nil")

View File

@ -1199,6 +1199,20 @@ func TestProxy(t *testing.T) {
indexName = resp.IndexDescriptions[0].IndexName
})
wg.Add(1)
t.Run("get index statistics", func(t *testing.T) {
defer wg.Done()
resp, err := proxy.GetIndexStatistics(ctx, &milvuspb.GetIndexStatisticsRequest{
Base: nil,
DbName: dbName,
CollectionName: collectionName,
IndexName: "",
})
assert.NoError(t, err)
assert.Equal(t, commonpb.ErrorCode_Success, resp.Status.ErrorCode)
indexName = resp.IndexDescriptions[0].IndexName
})
wg.Add(1)
t.Run("get index build progress", func(t *testing.T) {
defer wg.Done()
@ -2423,6 +2437,14 @@ func TestProxy(t *testing.T) {
assert.NotEqual(t, commonpb.ErrorCode_Success, resp.Status.ErrorCode)
})
wg.Add(1)
t.Run("GetIndexStatistics fail, unhealthy", func(t *testing.T) {
defer wg.Done()
resp, err := proxy.GetIndexStatistics(ctx, &milvuspb.GetIndexStatisticsRequest{})
assert.NoError(t, err)
assert.NotEqual(t, commonpb.ErrorCode_Success, resp.Status.ErrorCode)
})
wg.Add(1)
t.Run("DropIndex fail, unhealthy", func(t *testing.T) {
defer wg.Done()
@ -2764,6 +2786,14 @@ func TestProxy(t *testing.T) {
assert.NotEqual(t, commonpb.ErrorCode_Success, resp.Status.ErrorCode)
})
wg.Add(1)
t.Run("GetIndexStatistics fail, dd queue full", func(t *testing.T) {
defer wg.Done()
resp, err := proxy.GetIndexStatistics(ctx, &milvuspb.GetIndexStatisticsRequest{})
assert.NoError(t, err)
assert.NotEqual(t, commonpb.ErrorCode_Success, resp.Status.ErrorCode)
})
wg.Add(1)
t.Run("DropIndex fail, dd queue full", func(t *testing.T) {
defer wg.Done()
@ -3027,6 +3057,14 @@ func TestProxy(t *testing.T) {
assert.NotEqual(t, commonpb.ErrorCode_Success, resp.Status.ErrorCode)
})
wg.Add(1)
t.Run("GetIndexStatistics fail, timeout", func(t *testing.T) {
defer wg.Done()
resp, err := proxy.GetIndexStatistics(shortCtx, &milvuspb.GetIndexStatisticsRequest{})
assert.NoError(t, err)
assert.NotEqual(t, commonpb.ErrorCode_Success, resp.Status.ErrorCode)
})
wg.Add(1)
t.Run("DropIndex fail, timeout", func(t *testing.T) {
defer wg.Done()
@ -4030,21 +4068,3 @@ func TestProxy_GetLoadState(t *testing.T) {
assert.Equal(t, commonpb.ErrorCode_InsufficientMemoryToLoad, progressResp.Status.ErrorCode)
})
}
func TestProxy_GetIndexStatistics(t *testing.T) {
factory := dependency.NewDefaultFactory(true)
ctx := context.Background()
proxy, err := NewProxy(ctx, factory)
assert.NoError(t, err)
assert.NotNil(t, proxy)
t.Run("TestProxy_GetIndexStatistics", func(t *testing.T) {
resp, err := proxy.GetIndexStatistics(ctx, &milvuspb.GetIndexStatisticsRequest{
Base: nil,
DbName: "",
CollectionName: "hello_milvus",
IndexName: "",
})
assert.NoError(t, err)
assert.Equal(t, commonpb.ErrorCode_Success, resp.Status.ErrorCode)
})
}

View File

@ -523,6 +523,122 @@ func (dit *describeIndexTask) PostExecute(ctx context.Context) error {
return nil
}
type getIndexStatisticsTask struct {
Condition
*milvuspb.GetIndexStatisticsRequest
ctx context.Context
indexCoord types.IndexCoord
result *milvuspb.GetIndexStatisticsResponse
nodeID int64
collectionID UniqueID
}
func (git *getIndexStatisticsTask) TraceCtx() context.Context {
return git.ctx
}
func (git *getIndexStatisticsTask) ID() UniqueID {
return git.Base.MsgID
}
func (git *getIndexStatisticsTask) SetID(uid UniqueID) {
git.Base.MsgID = uid
}
func (git *getIndexStatisticsTask) Name() string {
return DescribeIndexTaskName
}
func (git *getIndexStatisticsTask) Type() commonpb.MsgType {
return git.Base.MsgType
}
func (git *getIndexStatisticsTask) BeginTs() Timestamp {
return git.Base.Timestamp
}
func (git *getIndexStatisticsTask) EndTs() Timestamp {
return git.Base.Timestamp
}
func (git *getIndexStatisticsTask) SetTs(ts Timestamp) {
git.Base.Timestamp = ts
}
func (git *getIndexStatisticsTask) OnEnqueue() error {
git.Base = commonpbutil.NewMsgBase()
return nil
}
func (git *getIndexStatisticsTask) PreExecute(ctx context.Context) error {
git.Base.MsgType = commonpb.MsgType_GetIndexStatistics
git.Base.SourceID = git.nodeID
if err := validateCollectionName(git.CollectionName); err != nil {
return err
}
collID, err := globalMetaCache.GetCollectionID(ctx, git.GetDbName(), git.GetCollectionName())
if err != nil {
return err
}
git.collectionID = collID
return nil
}
func (git *getIndexStatisticsTask) Execute(ctx context.Context) error {
schema, err := globalMetaCache.GetCollectionSchema(ctx, git.GetDbName(), git.GetCollectionName())
if err != nil {
log.Error("failed to get collection schema", zap.Error(err))
return fmt.Errorf("failed to get collection schema: %s", err)
}
schemaHelper, err := typeutil.CreateSchemaHelper(schema)
if err != nil {
log.Error("failed to parse collection schema", zap.Error(err))
return fmt.Errorf("failed to parse collection schema: %s", err)
}
resp, err := git.indexCoord.GetIndexStatistics(ctx, &indexpb.GetIndexStatisticsRequest{
CollectionID: git.collectionID, IndexName: git.IndexName})
if err != nil || resp == nil {
log.Error("failed in call indexcoord GetIndexStatistics", zap.Error(err))
return err
}
git.result = &milvuspb.GetIndexStatisticsResponse{}
git.result.Status = resp.GetStatus()
if git.result.Status.ErrorCode != commonpb.ErrorCode_Success {
return errors.New(git.result.Status.Reason)
}
for _, indexInfo := range resp.IndexInfos {
field, err := schemaHelper.GetFieldFromID(indexInfo.FieldID)
if err != nil {
log.Error("failed to get collection field", zap.Error(err))
return fmt.Errorf("failed to get collection field: %d", indexInfo.FieldID)
}
params := indexInfo.GetUserIndexParams()
if params == nil {
params = indexInfo.GetIndexParams()
}
desc := &milvuspb.IndexDescription{
IndexName: indexInfo.GetIndexName(),
IndexID: indexInfo.GetIndexID(),
FieldName: field.Name,
Params: params,
IndexedRows: indexInfo.GetIndexedRows(),
TotalRows: indexInfo.GetTotalRows(),
State: indexInfo.GetState(),
IndexStateFailReason: indexInfo.GetIndexStateFailReason(),
}
git.result.IndexDescriptions = append(git.result.IndexDescriptions, desc)
}
return err
}
func (git *getIndexStatisticsTask) PostExecute(ctx context.Context) error {
return nil
}
type dropIndexTask struct {
Condition
ctx context.Context

View File

@ -600,3 +600,64 @@ func Test_parseIndexParams_AutoIndex(t *testing.T) {
assert.Error(t, err)
})
}
func TestGetIndexStatisticsTask(t *testing.T) {
collectionName := "collection1"
collectionID := UniqueID(1)
//fieldName := newTestSchema().Fields[0].Name
indexName := "_default"
Params.InitOnce()
ic := newMockIndexCoord()
ctx := context.Background()
git := getIndexStatisticsTask{
ctx: ctx,
GetIndexStatisticsRequest: &milvuspb.GetIndexStatisticsRequest{
Base: &commonpb.MsgBase{
MsgType: commonpb.MsgType_GetIndexStatistics,
},
CollectionName: collectionName,
IndexName: indexName,
},
indexCoord: ic,
result: nil,
collectionID: collectionID,
}
t.Run("pre execute get collection id fail", func(t *testing.T) {
mockCache := NewMockCache(t)
mockCache.On("GetCollectionID",
mock.Anything, // context.Context
mock.AnythingOfType("string"),
mock.AnythingOfType("string"),
).Return(collectionID, errors.New("mock error"))
globalMetaCache = mockCache
err := git.PreExecute(ctx)
assert.Error(t, err)
})
t.Run("execute GetCollectionSchema fail", func(t *testing.T) {
mockCache := NewMockCache(t)
mockCache.On("GetCollectionSchema",
mock.Anything, // context.Context
mock.AnythingOfType("string"),
mock.AnythingOfType("string"),
).Return(newTestSchema(), errors.New("mock error"))
globalMetaCache = mockCache
err := git.Execute(ctx)
assert.Error(t, err)
})
t.Run("execute indexcoord GetIndexStatistics fail", func(t *testing.T) {
mockCache := NewMockCache(t)
mockCache.On("GetCollectionSchema",
mock.Anything, // context.Context
mock.AnythingOfType("string"),
mock.AnythingOfType("string"),
).Return(newTestSchema(), nil)
globalMetaCache = mockCache
err := git.Execute(ctx)
assert.Error(t, err)
})
}

View File

@ -429,6 +429,9 @@ type IndexCoord interface {
// DescribeIndex describe the index info of the collection.
DescribeIndex(ctx context.Context, req *indexpb.DescribeIndexRequest) (*indexpb.DescribeIndexResponse, error)
// GetIndexStatistics get the statistics of the index.
GetIndexStatistics(ctx context.Context, req *indexpb.GetIndexStatisticsRequest) (*indexpb.GetIndexStatisticsResponse, error)
// GetIndexBuildProgress get the index building progress by num rows.
// Deprecated: use DescribeIndex instead
GetIndexBuildProgress(ctx context.Context, req *indexpb.GetIndexBuildProgressRequest) (*indexpb.GetIndexBuildProgressResponse, error)