milvus/internal/writenode/meta_table_test.go
zhenshan.cao 11316525e5 Fix bug of running unittest in parallel
Signed-off-by: zhenshan.cao <zhenshan.cao@zilliz.com>
2020-12-22 22:08:03 +08:00

113 lines
2.4 KiB
Go

package writenode
import (
"context"
"testing"
"github.com/stretchr/testify/assert"
etcdkv "github.com/zilliztech/milvus-distributed/internal/kv/etcd"
"go.etcd.io/etcd/clientv3"
)
func createMetaTable(t *testing.T) *metaTable {
etcdAddr := Params.EtcdAddress
cli, err := clientv3.New(clientv3.Config{Endpoints: []string{etcdAddr}})
assert.Nil(t, err)
etcdKV := etcdkv.NewEtcdKV(cli, "/etcd/test/root/writer")
_, err = cli.Delete(context.TODO(), "/etcd/test/root/writer", clientv3.WithPrefix())
assert.Nil(t, err)
meta, err := NewMetaTable(etcdKV)
assert.Nil(t, err)
return meta
}
func TestMetaTable_AddSegmentFlush(t *testing.T) {
meta := createMetaTable(t)
defer meta.client.Close()
err := meta.AddSegmentFlush(1)
assert.Nil(t, err)
err = meta.AddSegmentFlush(2)
assert.Nil(t, err)
err = meta.AddSegmentFlush(2)
assert.NotNil(t, err)
err = meta.reloadFromKV()
assert.Nil(t, err)
}
func TestMetaTable_SetFlushTime(t *testing.T) {
meta := createMetaTable(t)
defer meta.client.Close()
var segmentID UniqueID = 1
err := meta.AddSegmentFlush(segmentID)
assert.Nil(t, err)
tsOpen := Timestamp(1000)
err = meta.SetFlushOpenTime(segmentID, tsOpen)
assert.Nil(t, err)
exp, err := meta.getFlushOpenTime(segmentID)
assert.Nil(t, err)
assert.Equal(t, tsOpen, exp)
tsClose := Timestamp(10001)
err = meta.SetFlushCloseTime(segmentID, tsClose)
assert.Nil(t, err)
exp, err = meta.getFlushCloseTime(segmentID)
assert.Nil(t, err)
assert.Equal(t, tsClose, exp)
}
func TestMetaTable_AppendBinlogPaths(t *testing.T) {
meta := createMetaTable(t)
defer meta.client.Close()
var segmentID UniqueID = 1
err := meta.AddSegmentFlush(segmentID)
assert.Nil(t, err)
exp := map[int32][]string{
1: {"a", "b", "c"},
2: {"b", "a", "c"},
}
for fieldID, dataPaths := range exp {
for _, dp := range dataPaths {
err = meta.AppendBinlogPaths(segmentID, fieldID, []string{dp})
assert.Nil(t, err)
}
}
ret, err := meta.getBinlogPaths(segmentID)
assert.Nil(t, err)
assert.Equal(t, exp, ret)
}
func TestMetaTable_CompleteFlush(t *testing.T) {
meta := createMetaTable(t)
defer meta.client.Close()
var segmentID UniqueID = 1
err := meta.AddSegmentFlush(segmentID)
assert.Nil(t, err)
ret, err := meta.checkFlushComplete(segmentID)
assert.Nil(t, err)
assert.Equal(t, false, ret)
meta.CompleteFlush(segmentID)
ret, err = meta.checkFlushComplete(segmentID)
assert.Nil(t, err)
assert.Equal(t, true, ret)
}