Skip to content
Snippets Groups Projects
Select Git revision
  • bf1d94b32164ee8798f5c49e34979cd5ca38041d
  • master default protected
  • 3.0
  • develop
  • revert-2069-tripleVersion
  • 3.1
  • rest-protocol
  • feat/remoting_rocketmq
  • dapr-support
  • 1.5
  • 1.4
  • 1.3
  • 1.2
  • 1.1
  • v3.0.3-rc2
  • v3.0.3-rc1
  • v3.0.2
  • v1.5.8
  • v1.5.9-rc1
  • v3.0.1
  • v1.5.8-rc1
  • v3.0.0
  • v3.0.0-rc4-1
  • v3.0.0-rc4
  • v3.0.0-rc3
  • v1.5.7
  • v1.5.7-rc2
  • v3.0.0-rc2
  • remove
  • v1.5.7-rc1
  • v3.0.0-rc1
  • v1.5.7-rc1-tmp
  • 1.5.6
  • v1.5.6
34 results

rest_protocol.go

Blame
  • plan_test.go 2.67 KiB
    package querynode
    
    import (
    	"encoding/binary"
    	"math"
    	"testing"
    
    	"github.com/golang/protobuf/proto"
    	"github.com/stretchr/testify/assert"
    
    	"github.com/zilliztech/milvus-distributed/internal/proto/servicepb"
    )
    
    func TestPlan_Plan(t *testing.T) {
    	collectionName := "collection0"
    	collectionID := UniqueID(0)
    	collectionMeta := genTestCollectionMeta(collectionName, collectionID)
    	schemaBlob := proto.MarshalTextString(collectionMeta.Schema)
    	assert.NotEqual(t, "", schemaBlob)
    
    	collection := newCollection(collectionMeta.ID, schemaBlob)
    
    	dslString := "{\"bool\": { \n\"vector\": {\n \"vec\": {\n \"metric_type\": \"L2\", \n \"params\": {\n \"nprobe\": 10 \n},\n \"query\": \"$0\",\"topk\": 10 \n } \n } \n } \n }"
    
    	plan, err := createPlan(*collection, dslString)
    	assert.NoError(t, err)
    	assert.NotEqual(t, plan, nil)
    	topk := plan.getTopK()
    	assert.Equal(t, int(topk), 10)
    	metricType := plan.getMetricType()
    	assert.Equal(t, metricType, "L2")
    	plan.delete()
    	deleteCollection(collection)
    }
    
    func TestPlan_PlaceholderGroup(t *testing.T) {
    	collectionName := "collection0"
    	collectionID := UniqueID(0)
    	collectionMeta := genTestCollectionMeta(collectionName, collectionID)
    	schemaBlob := proto.MarshalTextString(collectionMeta.Schema)
    	assert.NotEqual(t, "", schemaBlob)
    
    	collection := newCollection(collectionMeta.ID, schemaBlob)
    
    	dslString := "{\"bool\": { \n\"vector\": {\n \"vec\": {\n \"metric_type\": \"L2\", \n \"params\": {\n \"nprobe\": 10 \n},\n \"query\": \"$0\",\"topk\": 10 \n } \n } \n } \n }"
    
    	plan, err := createPlan(*collection, dslString)
    	assert.NoError(t, err)
    	assert.NotNil(t, plan)
    
    	var searchRawData1 []byte
    	var searchRawData2 []byte
    	const DIM = 16
    	var vec = [DIM]float32{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}
    	for i, ele := range vec {
    		buf := make([]byte, 4)
    		binary.LittleEndian.PutUint32(buf, math.Float32bits(ele+float32(i*2)))
    		searchRawData1 = append(searchRawData1, buf...)
    	}
    	for i, ele := range vec {
    		buf := make([]byte, 4)
    		binary.LittleEndian.PutUint32(buf, math.Float32bits(ele+float32(i*4)))
    		searchRawData2 = append(searchRawData2, buf...)
    	}
    	placeholderValue := servicepb.PlaceholderValue{
    		Tag:    "$0",
    		Type:   servicepb.PlaceholderType_VECTOR_FLOAT,
    		Values: [][]byte{searchRawData1, searchRawData2},
    	}
    
    	placeholderGroup := servicepb.PlaceholderGroup{
    		Placeholders: []*servicepb.PlaceholderValue{&placeholderValue},
    	}
    
    	placeGroupByte, err := proto.Marshal(&placeholderGroup)
    	assert.Nil(t, err)
    	holder, err := parserPlaceholderGroup(plan, placeGroupByte)
    	assert.NoError(t, err)
    	assert.NotNil(t, holder)
    	numQueries := holder.getNumOfQuery()
    	assert.Equal(t, int(numQueries), 2)
    
    	plan.delete()
    	holder.delete()
    	deleteCollection(collection)
    }