[no-release-notes] sysbench harness edits (#6605)

* [no-release-notes] sysbench harness edits

* fix yaml formatting
This commit is contained in:
Maximilian Hoffman
2023-09-06 14:10:04 -07:00
committed by GitHub
parent 88e75974a3
commit d3c1ca4828
8 changed files with 73 additions and 36 deletions
+6 -3
View File
@@ -69,13 +69,14 @@ listener:
read_timeout_millis: 28800000
write_timeout_millis: 28800000
databases:
- name: "sbtest"
path: "."
data_dir: .
YAML
# start a server
mkdir sbtest
cd sbtest
dolt init
cd ..
dolt sql-server --config="dolt-config.yaml" 2> prepare.log &
SERVER_PID="$!"
@@ -120,6 +121,8 @@ sysbench \
--mysql-user="user" \
--mysql-password="pass" \
--db-ps-mode=disable \
--time=30 \
--db-ps-mode=disable \
"$SYSBENCH_TEST" run
unset DOLT_ENABLE_CHUNK_JOURNAL
+5
View File
@@ -0,0 +1,5 @@
# Sysbench
MySQL tests expect local server (ex: `mysqld --port 3309 --local-infile=1 --socket=/tmp/mysqld2.sock`).
Interrupting a test midway can create cause "table already exists" error.
+1 -2
View File
@@ -56,7 +56,6 @@ func main() {
results := new(sysbench.Results)
u, err := driver.NewDoltUser()
for _, test := range defs.Tests {
test.Results = results
test.InitWithTmpDir(tmpdir)
for _, r := range test.Repos {
@@ -72,8 +71,8 @@ func main() {
if err != nil {
log.Fatalln(err)
}
results.Append(test.Results.Res...)
}
results.Append(test.Results.Res...)
}
if *out != "" {
of, err := os.Create(*out)
+3 -2
View File
@@ -1,13 +1,14 @@
select name, mean, mean_mult
select name, detail, mean_mult
from (
select
round(first_value(avg) over w, 2) as mean,
trim(TRAILING '.gen.lua' FROM trim(LEADING 'gen/' FROM test_name)) as name,
detail,
round(avg / lead(avg) over w, 2) as mean_mult,
round(median / lead(median) over w, 2) as med_mult,
round(sqrt(power(first_value(stdd) over w, 2) + power(last_value(stdd) over w, 2)), 3) as stdd,
row_number() over w as rn
from sysbench_results
having mod(rn,2) = 1
window w as (order by test_name rows between CURRENT ROW and 1 following)
window w as (order by test_name, detail rows between CURRENT ROW and 1 following)
) sq;
+1
View File
@@ -9,3 +9,4 @@ randType: uniform
eventCnt: 1500
time: 120
histogram: true
prepared: true
+9
View File
@@ -0,0 +1,9 @@
tests:
- name: "index scan join"
repos:
- name: dolt
server:
port: 3309
args: [ "--port", "3309", "--password", "password"]
scripts:
- index_join_scan.lua
+24 -24
View File
@@ -1,5 +1,5 @@
tests:
- name: "read"
- name: "read_prepared"
repos:
- name: dolt
server:
@@ -11,10 +11,10 @@ tests:
host: 127.0.0.1
user: root
password:
port: 3309
port: 3308
scripts:
- covering_index_scan.lua
- groupby_scan.lua
# - groupby_scan.lua
- index_join.lua
- index_join_scan.lua
- index_scan.lua
@@ -24,24 +24,24 @@ tests:
- select_random_ranges
- table_scan.lua
- types_table_scan.lua
- name: "write"
repos:
- name: dolt
server:
port: 3308
args: [ "--port", "3308" ]
- name: mysql
external-server:
name: test
host: 127.0.0.1
user: root
password:
port: 3309
scripts:
- oltp_delete_insert.lua
- oltp_insert
- oltp_read_write
- oltp_update_index
- oltp_update_non_index
- oltp_write_only
- types_delete_insert.lua
# - name: "write"
# repos:
# - name: dolt
# server:
# port: 3309
# args: [ "--port", "3309", "--password", "password"]
# - name: mysql
# external-server:
# name: test
# host: 127.0.0.1
# user: root
# password:
# port: 3308
# scripts:
# - oltp_delete_insert.lua
# - oltp_insert
# - oltp_read_write
# - oltp_update_index
# - oltp_update_non_index
# - oltp_write_only
# - types_delete_insert.lua
+24 -5
View File
@@ -55,6 +55,7 @@ type Config struct {
Histogram bool `yaml:"histogram"`
ScriptDir string `yaml:"scriptDir"`
Verbose bool `yaml:"verbose"`
Prepared bool `yaml:"prepared"`
}
func (c Config) WithScriptDir(dir string) Config {
@@ -67,6 +68,11 @@ func (c Config) WithVerbose(v bool) Config {
return c
}
func (c Config) WithPrepared(v bool) Config {
c.Prepared = v
return c
}
func (c Config) AsOpts() []string {
var ret []string
if c.DbDriver != "" {
@@ -93,6 +99,9 @@ func (c Config) AsOpts() []string {
if c.Time > 0 {
ret = append(ret, fmt.Sprintf("--time=%s", strconv.Itoa(c.Time)))
}
if c.Prepared {
ret = append(ret, fmt.Sprint("--db-ps-mode=auto"))
}
ret = append(ret,
fmt.Sprintf("--rand-seed=%s", strconv.Itoa(c.Seed)),
fmt.Sprintf("--table-size=%s", strconv.Itoa(c.TableSize)),
@@ -463,21 +472,30 @@ func modifyServerForImport(db *sql.DB) error {
// RunExternalServerTests connects to a single externally provided server to run every test
func (test *Script) RunExternalServerTests(repoName string, s *driver.ExternalServer, conf Config) error {
conf.Port = strconv.Itoa(s.Port)
conf.Password = s.Password
return test.IterSysbenchScripts(conf, test.Scripts, func(script string, prep, run, clean *exec.Cmd) error {
log.Printf("starting scipt: %s", script)
db, err := driver.ConnectDB(s.User, s.Password, s.Name, s.Host, s.Port, nil)
if err != nil {
return err
}
defer db.Close()
defer clean.Run()
buf := new(bytes.Buffer)
prep.Stdout = buf
if err := prep.Run(); err != nil {
log.Println(buf)
return err
}
buf := new(bytes.Buffer)
buf = new(bytes.Buffer)
run.Stdout = buf
err = run.Run()
if err != nil {
log.Println(buf)
return err
}
@@ -497,6 +515,7 @@ func (test *Script) RunExternalServerTests(repoName string, s *driver.ExternalSe
// RunSqlServerTests creates a new repo and server for every import test.
func (test *Script) RunSqlServerTests(repo driver.TestRepo, user driver.DoltUser, conf Config) error {
return test.IterSysbenchScripts(conf, test.Scripts, func(script string, prep, run, clean *exec.Cmd) error {
log.Printf("starting scipt: %s", script)
//make a new server for every test
server, err := newServer(user, repo, conf)
if err != nil {
@@ -522,7 +541,7 @@ func (test *Script) RunSqlServerTests(repo driver.TestRepo, user driver.DoltUser
run.Stdout = buf
err = run.Run()
if err != nil {
fmt.Println(buf)
log.Println(buf)
return err
}
@@ -535,9 +554,9 @@ func (test *Script) RunSqlServerTests(repo driver.TestRepo, user driver.DoltUser
}
test.Results.Append(r)
if conf.Verbose {
return nil
}
//if conf.Verbose {
// return nil
//}
return clean.Run()
})
}