Skip to content

Commit

Permalink
Update sqlogic test harness and bump sqllogic dependency (#420)
Browse files Browse the repository at this point in the history
Bump sqllogic and improve parsing
  • Loading branch information
Vinai Rachakonda committed May 18, 2021
1 parent da7c7a0 commit 75839a9
Show file tree
Hide file tree
Showing 3 changed files with 132 additions and 5 deletions.
127 changes: 126 additions & 1 deletion enginetest/sqllogictest/main.go
Expand Up @@ -15,6 +15,8 @@
package main

import (
"encoding/csv"
"fmt"
"os"

"github.com/dolthub/sqllogictest/go/logictest"
Expand All @@ -23,17 +25,140 @@ import (
"github.com/dolthub/go-mysql-server/enginetest/sqllogictest/harness"
)

type MemoryResultRecord struct {
TestFile string
LineNum int
Query string
Duration int64
Result string
ErrorMessage string
}

func main() {
args := os.Args[1:]

if len(args) < 1 {
panic("Usage: logictest (run|parse) [version] file1 file2 ...")
panic("Usage: logictest (run|parse) file1 file2 ...")
}

if args[0] == "run" {
h := harness.NewMemoryHarness(enginetest.NewDefaultMemoryHarness())
logictest.RunTestFiles(h, args[1:]...)
} else if args[0] == "parse" {
if len(args) < 2 {
panic("Usage: logictest parse (file | dir/)")
}
parseTestResults(args[1])
} else {
panic("Unrecognized command " + args[0])
}
}

func parseTestResults(f string) {
entries, err := logictest.ParseResultFile(f)
if err != nil {
panic(err)
}

records := make([]*MemoryResultRecord, len(entries))
for i, e := range entries {
records[i] = newMemoryRecordResult(e)
}

err = writeResultsCsv(records)
if err != nil {
panic(err)
}
}

// fromResultCsvHeaders returns supported csv headers for a Result
func fromResultCsvHeaders() []string {
return []string{
"test_file",
"line_num",
"query_string",
"duration",
"result",
"error_message",
}
}

// writeResultsCsv writes []*MemoryResultRecord to stdout in csv format
func writeResultsCsv(results []*MemoryResultRecord) (err error) {
csvWriter := csv.NewWriter(os.Stdout)

// write header
headers := fromResultCsvHeaders()
if err := csvWriter.Write(headers); err != nil {
return err
}

// write rows
for _, r := range results {
row := make([]string, 0)
for _, field := range headers {
val, err := fromHeaderColumnValue(field, r)
if err != nil {
return err
}
row = append(row, val)
}
err = csvWriter.Write(row)
if err != nil {
return err
}
}

csvWriter.Flush()
if err := csvWriter.Error(); err != nil {
return err
}
return
}

func newMemoryRecordResult(e *logictest.ResultLogEntry) *MemoryResultRecord {
var result string
switch e.Result {
case logictest.Ok:
result = "ok"
case logictest.NotOk:
result = "not ok"
case logictest.Skipped:
result = "skipped"
case logictest.Timeout:
result = "timeout"
case logictest.DidNotRun:
result = "did not run"
}
return &MemoryResultRecord{
TestFile: e.TestFile,
LineNum: e.LineNum,
Query: e.Query,
Duration: e.Duration.Milliseconds(),
Result: result,
ErrorMessage: e.ErrorMessage,
}
}

// fromHeaderColumnValue returns the value from the DoltResultRecord for the given
// header field
func fromHeaderColumnValue(h string, r *MemoryResultRecord) (string, error) {
var val string
switch h {
case "test_file":
val = r.TestFile
case "line_num":
val = fmt.Sprintf("%d", r.LineNum)
case "query_string":
val = r.Query
case "duration":
val = fmt.Sprintf("%d", r.Duration)
case "result":
val = r.Result
case "error_message":
val = r.ErrorMessage
default:
return "", fmt.Errorf("unsupported header field")
}
return val, nil
}
4 changes: 2 additions & 2 deletions go.mod
Expand Up @@ -3,11 +3,11 @@ module github.com/dolthub/go-mysql-server
require (
github.com/VividCortex/gohistogram v1.0.0 // indirect
github.com/cespare/xxhash v1.1.0
github.com/dolthub/sqllogictest/go v0.0.0-20201105013724-5123fc66e12c
github.com/dolthub/sqllogictest/go v0.0.0-20201107003712-816f3ae12d81
github.com/dolthub/vitess v0.0.0-20210428165934-5801b1103b04
github.com/fastly/go-utils v0.0.0-20180712184237-d95a45783239 // indirect
github.com/go-kit/kit v0.9.0
github.com/go-sql-driver/mysql v1.4.1
github.com/go-sql-driver/mysql v1.6.0
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b
github.com/google/go-cmp v0.3.0 // indirect
github.com/google/uuid v1.2.0
Expand Down
6 changes: 4 additions & 2 deletions go.sum
Expand Up @@ -12,8 +12,8 @@ github.com/davecgh/go-spew v0.0.0-20161028175848-04cdfd42973b/go.mod h1:J7Y8YcW2
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/dolthub/sqllogictest/go v0.0.0-20201105013724-5123fc66e12c h1:ZIo6IOXU3/rJK4lp83QRq1zGhQrjQQtlmE2b7H1Vv/k=
github.com/dolthub/sqllogictest/go v0.0.0-20201105013724-5123fc66e12c/go.mod h1:siLfyv2c92W1eN/R4QqG/+RjjX5W2+gCTRjZxBjI3TY=
github.com/dolthub/sqllogictest/go v0.0.0-20201107003712-816f3ae12d81 h1:7/v8q9XGFa6q5Ap4Z/OhNkAMBaK5YeuEzwJt+NZdhiE=
github.com/dolthub/sqllogictest/go v0.0.0-20201107003712-816f3ae12d81/go.mod h1:siLfyv2c92W1eN/R4QqG/+RjjX5W2+gCTRjZxBjI3TY=
github.com/dolthub/vitess v0.0.0-20210428165934-5801b1103b04 h1:yvfUh1EqwPu10H9VpaUxBEWzqKUmKxsW689ufJWNLsg=
github.com/dolthub/vitess v0.0.0-20210428165934-5801b1103b04/go.mod h1:hUE8oSk2H5JZnvtlLBhJPYC8WZCA5AoSntdLTcBvdBM=
github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
Expand All @@ -24,6 +24,8 @@ github.com/go-kit/kit v0.9.0 h1:wDJmvq38kDhkVxi50ni9ykkdUr1PKgqKOoi01fa0Mdk=
github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=
github.com/go-sql-driver/mysql v1.4.1 h1:g24URVg0OFbNUTx9qqY1IRZ9D9z3iPyi5zKhQZpNwpA=
github.com/go-sql-driver/mysql v1.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w=
github.com/go-sql-driver/mysql v1.6.0 h1:BCTh4TKNUYmOmMUcQ3IipzF5prigylS7XXjEkfCHuOE=
github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58=
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
Expand Down

0 comments on commit 75839a9

Please sign in to comment.