mirror of
https://gitee.com/milvus-io/milvus.git
synced 2025-12-08 10:08:42 +08:00
* Remove redundant session startup Signed-off-by: sunby <bingyi.sun@zilliz.com> * Register datanode after start success Signed-off-by: sunby <bingyi.sun@zilliz.com> * fix meta snap shot Signed-off-by: yefu.chen <yefu.chen@zilliz.com> * fix datanode message stream channel Signed-off-by: yangxuan <xuan.yang@zilliz.com> * Fix bugs when drop empty collection Signed-off-by: sunby <bingyi.sun@zilliz.com> * Fix bug of getting pchan statistics from task scheduler Signed-off-by: dragondriver <jiquan.long@zilliz.com> * Fix i/dist/dataservice test code Signed-off-by: Congqi Xia <congqi.xia@zilliz.com> * Fix epoch lifetime not applied Signed-off-by: Congqi Xia <congqi.xia@zilliz.com> * fix datanode flowgraph dd node Signed-off-by: yangxuan <xuan.yang@zilliz.com> * Fix handle datanode timetick bug Signed-off-by: sunby <bingyi.sun@zilliz.com> * Remove repack function of dml stream Signed-off-by: dragondriver <jiquan.long@zilliz.com> * fix proxynode Signed-off-by: yefu.chen <yefu.chen@zilliz.com> * Apply extended seal policy Signed-off-by: Congqi Xia <congqi.xia@zilliz.com> * add check for time tick Signed-off-by: yefu.chen <yefu.chen@zilliz.com> * fix check Signed-off-by: yefu.chen <yefu.chen@zilliz.com> * Fix the repack function of dml stream Signed-off-by: dragondriver <jiquan.long@zilliz.com> * Fix the bug when send statistics of pchan Signed-off-by: dragondriver <jiquan.long@zilliz.com> * Fix the repack function when craete dml stream Signed-off-by: dragondriver <jiquan.long@zilliz.com> * fix bugs Signed-off-by: yefu.chen <yefu.chen@zilliz.com> * fix describe collection Signed-off-by: yefu.chen <yefu.chen@zilliz.com> * Fix bug when send timestamp statistics Signed-off-by: dragondriver <jiquan.long@zilliz.com> * fix data node Signed-off-by: yefu.chen <yefu.chen@zilliz.com> * Add length check before flush request Signed-off-by: Congqi Xia <congqi.xia@zilliz.com> * add log for data node Signed-off-by: yefu.chen <yefu.chen@zilliz.com> * Fix SaveBinlog bugs Signed-off-by: sunby <bingyi.sun@zilliz.com> * Add more log in datanode Signed-off-by: yangxuan <xuan.yang@zilliz.com> * Put SegmentState.Flushing as the last one in enum to fit the client Signed-off-by: sunby <bingyi.sun@zilliz.com> * Fix params in GetInsertBinlogPaths Signed-off-by: sunby <bingyi.sun@zilliz.com> * Rename policy Signed-off-by: sunby <bingyi.sun@zilliz.com> * Remove unused ddl functions and fields Signed-off-by: Congqi Xia <congqi.xia@zilliz.com> * Remove pchan when drop collection Signed-off-by: dragondriver <jiquan.long@zilliz.com> * Add balanced assignment policy Signed-off-by: sunby <bingyi.sun@zilliz.com> * fix master ut Signed-off-by: yefu.chen <yefu.chen@zilliz.com> * Add lock in session manager Signed-off-by: Congqi Xia <congqi.xia@zilliz.com> * add log for debug Signed-off-by: yefu.chen <yefu.chen@zilliz.com> * Fix some logic bug and typo Signed-off-by: Congqi Xia <congqi.xia@zilliz.com> * Fix recover bugs Signed-off-by: sunby <bingyi.sun@zilliz.com> * Get collection scheme of a specific timestamp Signed-off-by: yangxuan <xuan.yang@zilliz.com> * Change CheckPoint to SegmentInfo in VchannelInfo Signed-off-by: sunby <bingyi.sun@zilliz.com> * Recover Unflushed segment numOfRows Signed-off-by: yangxuan <xuan.yang@zilliz.com> * Fix dataservice unit tests Signed-off-by: sunby <bingyi.sun@zilliz.com> Co-authored-by: yefu.chen <yefu.chen@zilliz.com> Co-authored-by: yangxuan <xuan.yang@zilliz.com> Co-authored-by: dragondriver <jiquan.long@zilliz.com> Co-authored-by: Congqi Xia <congqi.xia@zilliz.com>
201 lines
5.9 KiB
Go
201 lines
5.9 KiB
Go
// Copyright (C) 2019-2020 Zilliz. All rights reserved.
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance
|
|
// with the License. You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software distributed under the License
|
|
// is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
|
|
// or implied. See the License for the specific language governing permissions and limitations under the License.
|
|
|
|
package grpcdataserviceclient
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"math/rand"
|
|
"testing"
|
|
|
|
"github.com/milvus-io/milvus/internal/msgstream"
|
|
"github.com/milvus-io/milvus/internal/proto/commonpb"
|
|
"github.com/milvus-io/milvus/internal/proto/datapb"
|
|
"github.com/milvus-io/milvus/internal/proto/internalpb"
|
|
"github.com/milvus-io/milvus/internal/proto/milvuspb"
|
|
"github.com/milvus-io/milvus/internal/types"
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
type mockMaster struct {
|
|
types.MasterService
|
|
}
|
|
|
|
func (m *mockMaster) Init() error {
|
|
return nil
|
|
}
|
|
|
|
func (m *mockMaster) Start() error {
|
|
return nil
|
|
}
|
|
|
|
func (m *mockMaster) Stop() error {
|
|
return fmt.Errorf("stop error")
|
|
}
|
|
|
|
func (m *mockMaster) GetComponentStates(ctx context.Context) (*internalpb.ComponentStates, error) {
|
|
return &internalpb.ComponentStates{
|
|
State: &internalpb.ComponentInfo{
|
|
StateCode: internalpb.StateCode_Healthy,
|
|
},
|
|
Status: &commonpb.Status{
|
|
ErrorCode: commonpb.ErrorCode_Success,
|
|
},
|
|
SubcomponentStates: []*internalpb.ComponentInfo{
|
|
{
|
|
StateCode: internalpb.StateCode_Healthy,
|
|
},
|
|
},
|
|
}, nil
|
|
}
|
|
|
|
func (m *mockMaster) GetDdChannel(ctx context.Context) (*milvuspb.StringResponse, error) {
|
|
return &milvuspb.StringResponse{
|
|
Status: &commonpb.Status{
|
|
ErrorCode: commonpb.ErrorCode_Success,
|
|
Reason: "",
|
|
},
|
|
Value: "c1",
|
|
}, nil
|
|
}
|
|
|
|
func (m *mockMaster) ShowCollections(ctx context.Context, req *milvuspb.ShowCollectionsRequest) (*milvuspb.ShowCollectionsResponse, error) {
|
|
return &milvuspb.ShowCollectionsResponse{
|
|
Status: &commonpb.Status{
|
|
ErrorCode: commonpb.ErrorCode_Success,
|
|
Reason: "",
|
|
},
|
|
CollectionNames: []string{},
|
|
}, nil
|
|
}
|
|
|
|
func TestRun(t *testing.T) {
|
|
ctx := context.Background()
|
|
msFactory := msgstream.NewPmsFactory()
|
|
dsServer, err := NewServer(ctx, msFactory)
|
|
assert.Nil(t, err)
|
|
|
|
Params.Init()
|
|
Params.Port = 1000000
|
|
err = dsServer.Run()
|
|
assert.NotNil(t, err)
|
|
assert.EqualError(t, err, "listen tcp: address 1000000: invalid port")
|
|
|
|
Params.Port = rand.Int()%100 + 10000
|
|
err = dsServer.Run()
|
|
assert.Nil(t, err)
|
|
|
|
t.Run("get component states", func(t *testing.T) {
|
|
req := &internalpb.GetComponentStatesRequest{}
|
|
rsp, err := dsServer.GetComponentStates(ctx, req)
|
|
assert.Nil(t, err)
|
|
assert.Equal(t, rsp.Status.ErrorCode, commonpb.ErrorCode_Success)
|
|
})
|
|
|
|
t.Run("get time tick channel", func(t *testing.T) {
|
|
req := &internalpb.GetTimeTickChannelRequest{}
|
|
rsp, err := dsServer.GetTimeTickChannel(ctx, req)
|
|
assert.Nil(t, err)
|
|
assert.Equal(t, rsp.Status.ErrorCode, commonpb.ErrorCode_Success)
|
|
})
|
|
|
|
t.Run("get statistics channel", func(t *testing.T) {
|
|
req := &internalpb.GetStatisticsChannelRequest{}
|
|
rsp, err := dsServer.GetStatisticsChannel(ctx, req)
|
|
assert.Nil(t, err)
|
|
assert.Equal(t, rsp.Status.ErrorCode, commonpb.ErrorCode_Success)
|
|
})
|
|
|
|
t.Run("get segment info", func(t *testing.T) {
|
|
req := &datapb.GetSegmentInfoRequest{}
|
|
rsp, err := dsServer.GetSegmentInfo(ctx, req)
|
|
assert.Nil(t, err)
|
|
assert.Equal(t, rsp.Status.ErrorCode, commonpb.ErrorCode_Success)
|
|
})
|
|
|
|
//t.Run("register node", func(t *testing.T) {
|
|
// req := &datapb.RegisterNodeRequest{
|
|
// Base: &commonpb.MsgBase{},
|
|
// Address: &commonpb.Address{},
|
|
// }
|
|
// rsp, err := dsServer.RegisterNode(ctx, req)
|
|
// assert.Nil(t, err)
|
|
// assert.Equal(t, rsp.Status.ErrorCode, commonpb.ErrorCode_Success)
|
|
//})
|
|
|
|
t.Run("flush", func(t *testing.T) {
|
|
req := &datapb.FlushRequest{}
|
|
rsp, err := dsServer.Flush(ctx, req)
|
|
assert.Nil(t, err)
|
|
assert.Equal(t, rsp.ErrorCode, commonpb.ErrorCode_Success)
|
|
})
|
|
|
|
t.Run("assign segment id", func(t *testing.T) {
|
|
req := &datapb.AssignSegmentIDRequest{}
|
|
rsp, err := dsServer.AssignSegmentID(ctx, req)
|
|
assert.Nil(t, err)
|
|
assert.Equal(t, rsp.Status.ErrorCode, commonpb.ErrorCode_Success)
|
|
})
|
|
|
|
t.Run("show segments", func(t *testing.T) {
|
|
req := &datapb.ShowSegmentsRequest{}
|
|
rsp, err := dsServer.ShowSegments(ctx, req)
|
|
assert.Nil(t, err)
|
|
assert.Equal(t, rsp.Status.ErrorCode, commonpb.ErrorCode_Success)
|
|
})
|
|
|
|
t.Run("get segment states", func(t *testing.T) {
|
|
req := &datapb.GetSegmentStatesRequest{}
|
|
rsp, err := dsServer.GetSegmentStates(ctx, req)
|
|
assert.Nil(t, err)
|
|
assert.Equal(t, rsp.Status.ErrorCode, commonpb.ErrorCode_Success)
|
|
})
|
|
|
|
t.Run("get insert binlog paths", func(t *testing.T) {
|
|
req := &datapb.GetInsertBinlogPathsRequest{}
|
|
rsp, err := dsServer.GetInsertBinlogPaths(ctx, req)
|
|
assert.Nil(t, err)
|
|
assert.Equal(t, rsp.Status.ErrorCode, commonpb.ErrorCode_Success)
|
|
})
|
|
|
|
t.Run("get insert channels", func(t *testing.T) {
|
|
req := &datapb.GetInsertChannelsRequest{}
|
|
rsp, err := dsServer.GetInsertChannels(ctx, req)
|
|
assert.Nil(t, err)
|
|
assert.Equal(t, rsp.Status.ErrorCode, commonpb.ErrorCode_Success)
|
|
})
|
|
|
|
t.Run("get collection statistics", func(t *testing.T) {
|
|
req := &datapb.GetCollectionStatisticsRequest{}
|
|
rsp, err := dsServer.GetCollectionStatistics(ctx, req)
|
|
assert.Nil(t, err)
|
|
assert.Equal(t, rsp.Status.ErrorCode, commonpb.ErrorCode_Success)
|
|
})
|
|
|
|
t.Run("get partition statistics", func(t *testing.T) {
|
|
req := &datapb.GetPartitionStatisticsRequest{}
|
|
rsp, err := dsServer.GetPartitionStatistics(ctx, req)
|
|
assert.Nil(t, err)
|
|
assert.Nil(t, rsp)
|
|
})
|
|
|
|
t.Run("get segment info channel", func(t *testing.T) {
|
|
req := &datapb.GetSegmentInfoChannelRequest{}
|
|
rsp, err := dsServer.GetSegmentInfoChannel(ctx, req)
|
|
assert.Nil(t, err)
|
|
assert.Equal(t, rsp.Status.ErrorCode, commonpb.ErrorCode_Success)
|
|
})
|
|
|
|
err = dsServer.Stop()
|
|
assert.Nil(t, err)
|
|
}
|