Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

executor/aggfuncs: migrate test-infra to testify for func_json_arrayagg_test.go, func_first_row_test.go, func_avg_test.go, and func_bitfuncs_test.go #28979

Merged
merged 8 commits into from Oct 27, 2021
33 changes: 17 additions & 16 deletions executor/aggfuncs/aggfunc_test.go
Expand Up @@ -898,7 +898,7 @@ func (s *testSuite) testAggFunc(c *C, p aggTest) {
c.Assert(result, Equals, 0, Commentf("%v != %v", dt.String(), p.results[0]))
}

func (s *testSuite) testAggFuncWithoutDistinct(c *C, p aggTest) {
func testAggFuncWithoutDistinct(t *testing.T, p aggTest) {
srcChk := p.genSrcChk()

args := []expression.Expression{&expression.Column{RetType: p.dataType, Index: 0}}
Expand All @@ -908,39 +908,40 @@ func (s *testSuite) testAggFuncWithoutDistinct(c *C, p aggTest) {
if p.funcName == ast.AggFuncApproxPercentile {
args = append(args, &expression.Constant{Value: types.NewIntDatum(50), RetType: types.NewFieldType(mysql.TypeLong)})
}
desc, err := aggregation.NewAggFuncDesc(s.ctx, p.funcName, args, false)
c.Assert(err, IsNil)
ctx := mock.NewContext()
desc, err := aggregation.NewAggFuncDesc(ctx, p.funcName, args, false)
require.NoError(t, err)
if p.orderBy {
desc.OrderByItems = []*util.ByItems{
{Expr: args[0], Desc: true},
}
}
finalFunc := aggfuncs.Build(s.ctx, desc, 0)
finalFunc := aggfuncs.Build(ctx, desc, 0)
finalPr, _ := finalFunc.AllocPartialResult()
resultChk := chunk.NewChunkWithCapacity([]*types.FieldType{desc.RetTp}, 1)

iter := chunk.NewIterator4Chunk(srcChk)
for row := iter.Begin(); row != iter.End(); row = iter.Next() {
_, err = finalFunc.UpdatePartialResult(s.ctx, []chunk.Row{row}, finalPr)
c.Assert(err, IsNil)
_, err = finalFunc.UpdatePartialResult(ctx, []chunk.Row{row}, finalPr)
require.NoError(t, err)
}
p.messUpChunk(srcChk)
err = finalFunc.AppendFinalResult2Chunk(s.ctx, finalPr, resultChk)
c.Assert(err, IsNil)
err = finalFunc.AppendFinalResult2Chunk(ctx, finalPr, resultChk)
require.NoError(t, err)
dt := resultChk.GetRow(0).GetDatum(0, desc.RetTp)
result, err := dt.CompareDatum(s.ctx.GetSessionVars().StmtCtx, &p.results[1])
c.Assert(err, IsNil)
c.Assert(result, Equals, 0, Commentf("%v != %v", dt.String(), p.results[1]))
result, err := dt.CompareDatum(ctx.GetSessionVars().StmtCtx, &p.results[1])
require.NoError(t, err)
require.Zerof(t, result, "%v != %v", dt.String(), p.results[1])

// test the empty input
resultChk.Reset()
finalFunc.ResetPartialResult(finalPr)
err = finalFunc.AppendFinalResult2Chunk(s.ctx, finalPr, resultChk)
c.Assert(err, IsNil)
err = finalFunc.AppendFinalResult2Chunk(ctx, finalPr, resultChk)
require.NoError(t, err)
dt = resultChk.GetRow(0).GetDatum(0, desc.RetTp)
result, err = dt.CompareDatum(s.ctx.GetSessionVars().StmtCtx, &p.results[0])
c.Assert(err, IsNil)
c.Assert(result, Equals, 0, Commentf("%v != %v", dt.String(), p.results[0]))
result, err = dt.CompareDatum(ctx.GetSessionVars().StmtCtx, &p.results[0])
require.NoError(t, err)
require.Zerof(t, result, "%v != %v", dt.String(), p.results[0])
}

func testAggMemFunc(t *testing.T, p aggMemTest) {
Expand Down
20 changes: 13 additions & 7 deletions executor/aggfuncs/func_avg_test.go
Expand Up @@ -17,34 +17,40 @@ package aggfuncs_test
import (
"testing"

. "github.com/pingcap/check"
"github.com/pingcap/tidb/executor/aggfuncs"
"github.com/pingcap/tidb/parser/ast"
"github.com/pingcap/tidb/parser/mysql"
"github.com/pingcap/tidb/util/set"
)

func (s *testSuite) TestMergePartialResult4Avg(c *C) {
func TestMergePartialResult4Avg(t *testing.T) {
t.Parallel()

tests := []aggTest{
buildAggTester(ast.AggFuncAvg, mysql.TypeNewDecimal, 5, 2.0, 3.0, 2.375),
buildAggTester(ast.AggFuncAvg, mysql.TypeDouble, 5, 2.0, 3.0, 2.375),
}
for _, test := range tests {
s.testMergePartialResult(c, test)
testMergePartialResult(t, test)
}
}

func (s *testSuite) TestAvg(c *C) {
func TestAvg(t *testing.T) {
t.Parallel()

tests := []aggTest{
buildAggTester(ast.AggFuncAvg, mysql.TypeNewDecimal, 5, nil, 2.0),
buildAggTester(ast.AggFuncAvg, mysql.TypeDouble, 5, nil, 2.0),
}

for _, test := range tests {
s.testAggFunc(c, test)
testAggFunc(t, test)
}
}

func (s *testSuite) TestMemAvg(c *C) {
func TestMemAvg(t *testing.T) {
t.Parallel()

tests := []aggMemTest{
buildAggMemTester(ast.AggFuncAvg, mysql.TypeNewDecimal, 5,
aggfuncs.DefPartialResult4AvgDecimalSize, defaultUpdateMemDeltaGens, false),
Expand All @@ -56,7 +62,7 @@ func (s *testSuite) TestMemAvg(c *C) {
aggfuncs.DefPartialResult4AvgDistinctFloat64Size+set.DefFloat64SetBucketMemoryUsage, distinctUpdateMemDeltaGens, true),
}
for _, test := range tests {
s.testAggMemFunc(c, test)
testAggMemFunc(t, test)
}
}

Expand Down
15 changes: 10 additions & 5 deletions executor/aggfuncs/func_bitfuncs_test.go
Expand Up @@ -15,24 +15,29 @@
package aggfuncs_test

import (
. "github.com/pingcap/check"
"testing"

"github.com/pingcap/tidb/executor/aggfuncs"
"github.com/pingcap/tidb/parser/ast"
"github.com/pingcap/tidb/parser/mysql"
)

func (s *testSuite) TestMergePartialResult4BitFuncs(c *C) {
func TestMergePartialResult4BitFuncs(t *testing.T) {
t.Parallel()

tests := []aggTest{
buildAggTester(ast.AggFuncBitAnd, mysql.TypeLonglong, 5, 0, 0, 0),
buildAggTester(ast.AggFuncBitOr, mysql.TypeLonglong, 5, 7, 7, 7),
buildAggTester(ast.AggFuncBitXor, mysql.TypeLonglong, 5, 4, 5, 1),
}
for _, test := range tests {
s.testMergePartialResult(c, test)
testMergePartialResult(t, test)
}
}

func (s *testSuite) TestMemBitFunc(c *C) {
func TestMemBitFunc(t *testing.T) {
t.Parallel()

tests := []aggMemTest{
buildAggMemTester(ast.AggFuncBitAnd, mysql.TypeLonglong, 5,
aggfuncs.DefPartialResult4BitFuncSize, defaultUpdateMemDeltaGens, false),
Expand All @@ -42,6 +47,6 @@ func (s *testSuite) TestMemBitFunc(c *C) {
aggfuncs.DefPartialResult4BitFuncSize, defaultUpdateMemDeltaGens, false),
}
for _, test := range tests {
s.testAggMemFunc(c, test)
testAggMemFunc(t, test)
}
}
17 changes: 10 additions & 7 deletions executor/aggfuncs/func_first_row_test.go
Expand Up @@ -15,19 +15,20 @@
package aggfuncs_test

import (
"testing"
"time"

. "github.com/pingcap/check"
"github.com/pingcap/tidb/executor/aggfuncs"
"github.com/pingcap/tidb/parser/ast"
"github.com/pingcap/tidb/parser/mysql"

"github.com/pingcap/tidb/executor/aggfuncs"
"github.com/pingcap/tidb/types"
"github.com/pingcap/tidb/types/json"
"github.com/pingcap/tidb/util/chunk"
)

func (s *testSuite) TestMergePartialResult4FirstRow(c *C) {
func TestMergePartialResult4FirstRow(t *testing.T) {
t.Parallel()

elems := []string{"e", "d", "c", "b", "a"}
enumC, _ := types.ParseEnumName(elems, "c", mysql.DefaultCollationName)
enumE, _ := types.ParseEnumName(elems, "e", mysql.DefaultCollationName)
Expand All @@ -48,11 +49,13 @@ func (s *testSuite) TestMergePartialResult4FirstRow(c *C) {
buildAggTester(ast.AggFuncFirstRow, mysql.TypeSet, 5, setE, setED, setE),
}
for _, test := range tests {
s.testMergePartialResult(c, test)
testMergePartialResult(t, test)
}
}

func (s *testSuite) TestMemFirstRow(c *C) {
func TestMemFirstRow(t *testing.T) {
t.Parallel()

tests := []aggMemTest{
buildAggMemTester(ast.AggFuncFirstRow, mysql.TypeLonglong, 5,
aggfuncs.DefPartialResult4FirstRowIntSize, defaultUpdateMemDeltaGens, false),
Expand All @@ -76,7 +79,7 @@ func (s *testSuite) TestMemFirstRow(c *C) {
aggfuncs.DefPartialResult4FirstRowSetSize, firstRowUpdateMemDeltaGens, false),
}
for _, test := range tests {
s.testAggMemFunc(c, test)
testAggMemFunc(t, test)
}
}

Expand Down
21 changes: 14 additions & 7 deletions executor/aggfuncs/func_json_arrayagg_test.go
Expand Up @@ -15,7 +15,8 @@
package aggfuncs_test

import (
. "github.com/pingcap/check"
"testing"

"github.com/pingcap/errors"
"github.com/pingcap/tidb/executor/aggfuncs"
"github.com/pingcap/tidb/parser/ast"
Expand All @@ -25,7 +26,9 @@ import (
"github.com/pingcap/tidb/util/chunk"
)

func (s *testSuite) TestMergePartialResult4JsonArrayagg(c *C) {
func TestMergePartialResult4JsonArrayagg(t *testing.T) {
t.Parallel()

typeList := []byte{mysql.TypeLonglong, mysql.TypeDouble, mysql.TypeString, mysql.TypeJSON}

var tests []aggTest
Expand Down Expand Up @@ -58,11 +61,13 @@ func (s *testSuite) TestMergePartialResult4JsonArrayagg(c *C) {
}

for _, test := range tests {
s.testMergePartialResult(c, test)
testMergePartialResult(t, test)
}
}

func (s *testSuite) TestJsonArrayagg(c *C) {
func TestJsonArrayagg(t *testing.T) {
t.Parallel()

typeList := []byte{mysql.TypeLonglong, mysql.TypeDouble, mysql.TypeString, mysql.TypeJSON}

var tests []aggTest
Expand All @@ -84,7 +89,7 @@ func (s *testSuite) TestJsonArrayagg(c *C) {
}

for _, test := range tests {
s.testAggFuncWithoutDistinct(c, test)
testAggFuncWithoutDistinct(t, test)
}
}

Expand Down Expand Up @@ -125,7 +130,9 @@ func jsonArrayaggMemDeltaGens(srcChk *chunk.Chunk, dataType *types.FieldType) (m
return memDeltas, nil
}

func (s *testSuite) TestMemJsonArrayagg(c *C) {
func TestMemJsonArrayagg(t *testing.T) {
t.Parallel()

typeList := []byte{mysql.TypeLonglong, mysql.TypeDouble, mysql.TypeString, mysql.TypeJSON}

var tests []aggMemTest
Expand All @@ -135,6 +142,6 @@ func (s *testSuite) TestMemJsonArrayagg(c *C) {
}

for _, test := range tests {
s.testAggMemFunc(c, test)
testAggMemFunc(t, test)
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I will remove func (s *testSuite) testAggMemFunc(c *C, p aggMemTest) from agg_func_test.go and refactor func_count_test.go in my next PR, because when this PR is merged, only func_count_test.go will call the method. However, I did not include it in this change because the change in func_count_test.go is a bit larger :)

}
}