Skip to content

Commit

Permalink
test: Split gosdk cases into different packages and add rg cases (#39694
Browse files Browse the repository at this point in the history
)

issue: #33419

---------

Signed-off-by: ThreadDao <[email protected]>
  • Loading branch information
ThreadDao authored Feb 26, 2025
1 parent 476cf61 commit 5f71bb2
Show file tree
Hide file tree
Showing 23 changed files with 1,311 additions and 381 deletions.
16 changes: 16 additions & 0 deletions tests/go_client/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -178,6 +178,22 @@ go test -run TestYourFeature ./testcases/

# Run with verbose output
go test -v ./testcases/...

# gotestsum
Recommend you to use gotestsum https://github.com/gotestyourself/gotestsum

# Run all default cases
gotestsum --format testname --hide-summary=output -v ./testcases/... --addr=127.0.0.1:19530 -timeout=30m

# Run a specified file
gotestsum --format testname --hide-summary=output ./testcases/collection_test.go ./testcases/main_test.go --addr=127.0.0.1:19530

# Run L3 rg cases
gotestsum --format testname --hide-summary=output -v ./testcases/advcases/... --addr=127.0.0.1:19530 -timeout=30m -tags=rg

# Run advanced rg cases and default cases
# rg cases conflicts with default cases, so -p=1 is required
gotestsum --format testname --hide-summary=output -v ./testcases/... --addr=127.0.0.1:19530 -timeout=30m -tags=rg -p 1
```

## Contributing
Expand Down
36 changes: 36 additions & 0 deletions tests/go_client/base/milvus_client.go
Original file line number Diff line number Diff line change
Expand Up @@ -322,3 +322,39 @@ func (mc *MilvusClient) HybridSearch(ctx context.Context, option client.HybridSe
resultSets, err := mc.mClient.HybridSearch(ctx, option, callOptions...)
return resultSets, err
}

// ListResourceGroups list all resource groups
func (mc *MilvusClient) ListResourceGroups(ctx context.Context, option client.ListResourceGroupsOption, callOptions ...grpc.CallOption) ([]string, error) {
resourceGroups, err := mc.mClient.ListResourceGroups(ctx, option, callOptions...)
return resourceGroups, err
}

// CreateResourceGroup create resource group
func (mc *MilvusClient) CreateResourceGroup(ctx context.Context, option client.CreateResourceGroupOption, callOptions ...grpc.CallOption) error {
err := mc.mClient.CreateResourceGroup(ctx, option, callOptions...)
return err
}

// DropResourceGroup drop resource group
func (mc *MilvusClient) DropResourceGroup(ctx context.Context, option client.DropResourceGroupOption, callOptions ...grpc.CallOption) error {
err := mc.mClient.DropResourceGroup(ctx, option, callOptions...)
return err
}

// DescribeResourceGroup describe resource group
func (mc *MilvusClient) DescribeResourceGroup(ctx context.Context, option client.DescribeResourceGroupOption, callOptions ...grpc.CallOption) (*entity.ResourceGroup, error) {
resourceGroup, err := mc.mClient.DescribeResourceGroup(ctx, option, callOptions...)
return resourceGroup, err
}

// UpdateResourceGroup update resource group
func (mc *MilvusClient) UpdateResourceGroup(ctx context.Context, option client.UpdateResourceGroupOption, callOptions ...grpc.CallOption) error {
err := mc.mClient.UpdateResourceGroup(ctx, option, callOptions...)
return err
}

// TransferReplica transfer replica
func (mc *MilvusClient) TransferReplica(ctx context.Context, option client.TransferReplicaOption, callOptions ...grpc.CallOption) error {
err := mc.mClient.TransferReplica(ctx, option, callOptions...)
return err
}
53 changes: 53 additions & 0 deletions tests/go_client/common/response_checker.go
Original file line number Diff line number Diff line change
Expand Up @@ -222,3 +222,56 @@ func CheckIndex(t *testing.T, actualIdxDesc client.IndexDescription, idx index.I
require.Equal(t, opt.pendingIndexRows, actualIdxDesc.PendingIndexRows)
}
}

func CheckTransfer(t *testing.T, actualRgs []*entity.ResourceGroupTransfer, expRgs []*entity.ResourceGroupTransfer) {
if len(expRgs) == 0 {
require.Len(t, actualRgs, 0)
} else {
_expRgs := make([]string, 0, len(expRgs))
_actualRgs := make([]string, 0, len(actualRgs))
for _, rg := range expRgs {
_expRgs = append(_expRgs, rg.ResourceGroup)
}
for _, rg := range actualRgs {
_actualRgs = append(_actualRgs, rg.ResourceGroup)
}
require.ElementsMatch(t, _expRgs, _actualRgs)
}
}

func CheckResourceGroupConfig(t *testing.T, actualConfig *entity.ResourceGroupConfig, expConfig *entity.ResourceGroupConfig) {
if expConfig.Requests.NodeNum != 0 {
require.EqualValuesf(t, expConfig.Requests.NodeNum, actualConfig.Requests.NodeNum, "Requests.NodeNum mismatch")
}

if expConfig.Limits.NodeNum != 0 {
require.EqualValuesf(t, expConfig.Limits.NodeNum, actualConfig.Limits.NodeNum, "Limits.NodeNum mismatch")
}

if expConfig.TransferFrom != nil {
CheckTransfer(t, expConfig.TransferFrom, actualConfig.TransferFrom)
}

if expConfig.TransferTo != nil {
CheckTransfer(t, expConfig.TransferTo, actualConfig.TransferTo)
}
if expConfig.NodeFilter.NodeLabels != nil {
require.EqualValues(t, expConfig.NodeFilter, actualConfig.NodeFilter)
}
}

func CheckResourceGroup(t *testing.T, actualRg *entity.ResourceGroup, expRg *entity.ResourceGroup) {
require.EqualValues(t, expRg.Name, actualRg.Name, "ResourceGroup name mismatch")
require.EqualValues(t, expRg.Capacity, actualRg.Capacity, "ResourceGroup capacity mismatch")
if expRg.NumAvailableNode >= 0 {
require.EqualValues(t, expRg.NumAvailableNode, len(actualRg.Nodes), "AvailableNodesNumber mismatch")
}

if expRg.Config != nil {
CheckResourceGroupConfig(t, actualRg.Config, expRg.Config)
}

if expRg.Nodes != nil {
require.ElementsMatch(t, expRg.Nodes, actualRg.Nodes, "Nodes count mismatch")
}
}
12 changes: 12 additions & 0 deletions tests/go_client/testcases/advcases/main_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package advcases

import (
"os"
"testing"

"github.com/milvus-io/milvus/tests/go_client/testcases/helper"
)

func TestMain(m *testing.M) {
os.Exit(helper.RunTests(m))
}
Loading

0 comments on commit 5f71bb2

Please sign in to comment.