mirror of
https://github.com/dolthub/dolt.git
synced 2026-05-06 11:20:30 -05:00
[no-release-notes] sysbench harness edits (#6605)
* [no-release-notes] sysbench harness edits * fix yaml formatting
This commit is contained in:
committed by
GitHub
parent
88e75974a3
commit
d3c1ca4828
@@ -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
|
||||
|
||||
@@ -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.
|
||||
@@ -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)
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -9,3 +9,4 @@ randType: uniform
|
||||
eventCnt: 1500
|
||||
time: 120
|
||||
histogram: true
|
||||
prepared: true
|
||||
|
||||
@@ -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
@@ -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
|
||||
@@ -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()
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user