Skip to content

Commit

Permalink
Support reference instruction
Browse files Browse the repository at this point in the history
Signed-off-by: Florent Poinsard <[email protected]>
  • Loading branch information
frouioui committed Oct 8, 2024
1 parent 2333fef commit 4babcb3
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 4 deletions.
28 changes: 25 additions & 3 deletions go/tester/tester.go
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@ type (
skipVersion int
vitessOnly bool
mysqlOnly bool
reference bool
}

QueryRunConfig struct {
Expand Down Expand Up @@ -159,7 +160,25 @@ func (t *Tester) getVschema() func() []byte {
}
}

func (state *testerState) referenceNext() {
if state.vitessOnly || state.mysqlOnly || state.skip {
return
}
state.reference = true
}

func (state *testerState) shouldReference() bool {
if state.reference {
state.reference = false
return true
}
return false
}

func (state *testerState) skipNext() {
if state.vitessOnly || state.mysqlOnly || state.reference {
return
}
state.skip = true
}

Expand Down Expand Up @@ -287,6 +306,8 @@ func (t *Tester) Run() error {
if err != nil {
t.reporter.AddFailure(err)
}
case typ.Reference:
t.state.referenceNext()
default:
t.reporter.AddFailure(fmt.Errorf("%s not supported", q.Type.String()))
}
Expand Down Expand Up @@ -324,9 +345,10 @@ func (t *Tester) runQuery(q data.Query) {
return
}
cfg := QueryRunConfig{
ast: ast,
vitess: !t.state.mysqlOnly,
mysql: !t.state.vitessOnly,
ast: ast,
vitess: !t.state.mysqlOnly,
mysql: !t.state.vitessOnly,
reference: t.state.shouldReference(),
}
err = t.qr.runQuery(q, t.expectedErrs, cfg)
if err != nil {
Expand Down
3 changes: 2 additions & 1 deletion go/tester/tracer.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import (
"encoding/json"
"fmt"
"os"

"vitess.io/vitess/go/test/endtoend/cluster"

"vitess.io/vitess/go/mysql"
Expand Down Expand Up @@ -40,7 +41,7 @@ func NewTracerFactory(traceFile *os.File, inner QueryRunnerFactory) *TracerFacto
}

func (t *TracerFactory) NewQueryRunner(reporter Reporter, handleCreateTable CreateTableHandler, comparer utils.MySQLCompare, cluster *cluster.LocalProcessCluster, table func(name string) (ks string, err error)) QueryRunner {
inner := t.inner.NewQueryRunner(reporter, handleCreateTable, comparer, cluster, APA)
inner := t.inner.NewQueryRunner(reporter, handleCreateTable, comparer, cluster, table)
return newTracer(t.traceFile, comparer.MySQLConn, comparer.VtConn, reporter, inner)
}

Expand Down

0 comments on commit 4babcb3

Please sign in to comment.