github.com/matrixorigin/matrixone@v0.7.0/pkg/sql/plan/function/builtin/ctl/ctl_test.go (about)

     1  // Copyright 2022 Matrix Origin
     2  //
     3  // Licensed under the Apache License, Version 2.0 (the "License");
     4  // you may not use this file except in compliance with the License.
     5  // You may obtain a copy of the License at
     6  //
     7  //      http://www.apache.org/licenses/LICENSE-2.0
     8  //
     9  // Unless required by applicable law or agreed to in writing, software
    10  // distributed under the License is distributed on an "AS IS" BASIS,
    11  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    12  // See the License for the specific language governing permissions and
    13  // limitations under the License.
    14  
    15  package ctl
    16  
    17  import (
    18  	"strings"
    19  	"testing"
    20  
    21  	"github.com/matrixorigin/matrixone/pkg/testutil"
    22  
    23  	"github.com/matrixorigin/matrixone/pkg/common/mpool"
    24  	"github.com/matrixorigin/matrixone/pkg/container/types"
    25  	"github.com/matrixorigin/matrixone/pkg/container/vector"
    26  	pb "github.com/matrixorigin/matrixone/pkg/pb/ctl"
    27  	"github.com/matrixorigin/matrixone/pkg/vm/process"
    28  	"github.com/stretchr/testify/require"
    29  )
    30  
    31  func TestHandlerWithServiceTypeNotSupported(t *testing.T) {
    32  	vec1 := vector.New(types.New(types.T_varchar, types.MaxVarcharLen, 0, 0))
    33  	require.NoError(t, vec1.Append([]byte("not support service"), false, mpool.MustNewZero()))
    34  
    35  	vec2 := vector.New(types.New(types.T_varchar, types.MaxVarcharLen, 0, 0))
    36  	require.NoError(t, vec2.Append([]byte("ping"), false, mpool.MustNewZero()))
    37  
    38  	vec3 := vector.New(types.New(types.T_varchar, types.MaxVarcharLen, 0, 0))
    39  	require.NoError(t, vec3.Append([]byte(""), false, mpool.MustNewZero()))
    40  
    41  	proc := testutil.NewProcess()
    42  	_, err := Handler([]*vector.Vector{vec1, vec2, vec3}, proc)
    43  	require.Error(t, err)
    44  }
    45  
    46  func TestHandlerWithCommandNotSupported(t *testing.T) {
    47  	vec1 := vector.New(types.New(types.T_varchar, types.MaxVarcharLen, 0, 0))
    48  	require.NoError(t, vec1.Append([]byte("dn"), false, mpool.MustNewZero()))
    49  
    50  	vec2 := vector.New(types.New(types.T_varchar, types.MaxVarcharLen, 0, 0))
    51  	require.NoError(t, vec2.Append([]byte("not supported command"), false, mpool.MustNewZero()))
    52  
    53  	vec3 := vector.New(types.New(types.T_varchar, types.MaxVarcharLen, 0, 0))
    54  	require.NoError(t, vec3.Append([]byte(""), false, mpool.MustNewZero()))
    55  
    56  	proc := testutil.NewProcess()
    57  	_, err := Handler([]*vector.Vector{vec1, vec2, vec3}, proc)
    58  	require.Error(t, err)
    59  }
    60  
    61  func TestHandler(t *testing.T) {
    62  	vec1 := vector.New(types.New(types.T_varchar, types.MaxVarcharLen, 0, 0))
    63  	require.NoError(t, vec1.Append([]byte("dn"), false, mpool.MustNewZero()))
    64  
    65  	vec2 := vector.New(types.New(types.T_varchar, types.MaxVarcharLen, 0, 0))
    66  	require.NoError(t, vec2.Append([]byte("test_cmd"), false, mpool.MustNewZero()))
    67  
    68  	vec3 := vector.New(types.New(types.T_varchar, types.MaxVarcharLen, 0, 0))
    69  	require.NoError(t, vec3.Append([]byte(""), false, mpool.MustNewZero()))
    70  	proc := testutil.NewProcess()
    71  	supportedCmds[strings.ToUpper("test_cmd")] = func(proc *process.Process,
    72  		service serviceType,
    73  		parameter string,
    74  		sender requestSender) (pb.CtlResult, error) {
    75  		return pb.CtlResult{}, nil
    76  	}
    77  
    78  	vec, err := Handler([]*vector.Vector{vec1, vec2, vec3}, proc)
    79  	require.NoError(t, err)
    80  	require.NotNil(t, vec)
    81  }