Files
wehub-resource-sync 5357c39144
Fuzzer / Run Fuzzer (push) Has been cancelled
Race tests / Go race tests (ubuntu-22.04) (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 13:01:40 +08:00

134 lines
3.9 KiB
Go

// Copyright 2019-2022 Dolthub, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package benchmark_runner
import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestConfigTestGetTests(t *testing.T) {
empty := &testConfigImpl{Name: "test_name"}
one := &testConfigImpl{Name: "test_one", N: 3}
two := &testConfigImpl{Name: "test_two", N: 2}
three := &testConfigImpl{Name: "test_three", N: 1}
opts := &testConfigImpl{
Name: "test_options",
N: 1,
Options: []string{"--create_secondary=on", "--auto_inc=off"},
}
serverConfig := &doltServerConfigImpl{Version: "test-version", Host: "localhost", ResultsFormat: CsvFormat}
tests := []struct {
description string
config SysbenchConfig
expectedTests []testTest
expectedError error
}{
{
description: "should error if no test name is defined",
config: &sysbenchRunnerConfigImpl{
Servers: []ServerConfig{serverConfig},
Tests: []TestConfig{
&testConfigImpl{Name: ""},
},
},
expectedTests: nil,
expectedError: ErrTestNameNotDefined,
},
{
description: "should create single test if N is < 1",
config: &sysbenchRunnerConfigImpl{
Servers: []ServerConfig{serverConfig},
Tests: []TestConfig{empty},
},
expectedTests: []testTest{
&testTestImpl{
&sysbenchTestImpl{
Name: "test_name",
Params: serverConfig.GetTestingParams(empty),
},
},
},
},
{
description: "should return a test for each N defined on the TestConfigImpl",
config: &sysbenchRunnerConfigImpl{
Servers: []ServerConfig{serverConfig},
Tests: []TestConfig{one, two, three},
},
expectedTests: []testTest{
&testTestImpl{&sysbenchTestImpl{Name: "test_one", Params: serverConfig.GetTestingParams(one)}},
&testTestImpl{&sysbenchTestImpl{Name: "test_one", Params: serverConfig.GetTestingParams(one)}},
&testTestImpl{&sysbenchTestImpl{Name: "test_one", Params: serverConfig.GetTestingParams(one)}},
&testTestImpl{&sysbenchTestImpl{Name: "test_two", Params: serverConfig.GetTestingParams(two)}},
&testTestImpl{&sysbenchTestImpl{Name: "test_two", Params: serverConfig.GetTestingParams(two)}},
&testTestImpl{&sysbenchTestImpl{Name: "test_three", Params: serverConfig.GetTestingParams(three)}},
},
},
{
description: "should apply user options to test params",
config: &sysbenchRunnerConfigImpl{
Servers: []ServerConfig{serverConfig},
Tests: []TestConfig{opts},
},
expectedTests: []testTest{
&testTestImpl{&sysbenchTestImpl{Name: "test_options", Params: serverConfig.GetTestingParams(opts)}},
},
},
}
for _, test := range tests {
t.Run(test.description, func(t *testing.T) {
svs := test.config.GetServerConfigs()
for _, s := range svs {
actual, err := GetTests(test.config, s)
assert.Equal(t, test.expectedError, err)
assert.Equal(t, len(test.expectedTests), len(actual))
updatedExpected := make([]SysbenchTest, len(actual))
for idx, a := range actual {
e := test.expectedTests[idx]
e.SetId(a.GetId())
updatedExpected[idx] = e.GetSysbenchTest()
}
assert.ElementsMatch(t, updatedExpected, actual)
}
})
}
}
type testTest interface {
SetId(id string)
GetSysbenchTest() SysbenchTest
SysbenchTest
}
type testTestImpl struct {
*sysbenchTestImpl
}
func (t *testTestImpl) GetSysbenchTest() SysbenchTest {
return t.sysbenchTestImpl
}
func (t *testTestImpl) SetId(id string) {
t.id = id
}
var _ testTest = &testTestImpl{}