134 lines
3.9 KiB
Go
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{}
|