Skip to content

Commit

Permalink
Merge pull request #46 from shogo82148/add-test-for-tracing
Browse files Browse the repository at this point in the history
add tests for tracing query
  • Loading branch information
shogo82148 committed Jan 18, 2020
2 parents b2bef7e + ad9f90f commit cc329a7
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 10 deletions.
24 changes: 20 additions & 4 deletions fakedb_test.go
Expand Up @@ -8,6 +8,7 @@ import (
"encoding/json"
"errors"
"fmt"
"io"
"sync"
)

Expand Down Expand Up @@ -64,6 +65,8 @@ type fakeStmtExt fakeStmt
// fakeStmtCtx is fakeStmt with context
type fakeStmtCtx fakeStmt

type fakeRows struct{}

var fdriver = &fakeDriver{}
var _ driver.Driver = &fakeDriver{}
var _ driver.Conn = &fakeConn{}
Expand All @@ -86,6 +89,7 @@ var _ driver.Stmt = &fakeStmtCtx{}
var _ driver.ColumnConverter = &fakeStmtCtx{}
var _ driver.StmtExecContext = &fakeStmtCtx{}
var _ driver.StmtQueryContext = &fakeStmtCtx{}
var _ driver.Rows = &fakeRows{}

func init() {
sql.Register("fakedb", fdriver)
Expand Down Expand Up @@ -211,7 +215,7 @@ func (c *fakeConnExt) Query(query string, args []driver.Value) (driver.Rows, err
c.db.Log("[Conn.Query]", "ERROR!")
return nil, errors.New("Query failed")
}
return nil, nil
return &fakeRows{}, nil
}

func (c *fakeConnCtx) Ping(ctx context.Context) error {
Expand Down Expand Up @@ -270,7 +274,7 @@ func (c *fakeConnCtx) QueryContext(ctx context.Context, query string, args []dri
c.db.Log("[Conn.QueryContext]", "ERROR!")
return nil, errors.New("Query failed")
}
return nil, nil
return &fakeRows{}, nil
}

func (tx *fakeTx) Commit() error {
Expand Down Expand Up @@ -307,7 +311,7 @@ func (stmt *fakeStmt) Query(args []driver.Value) (driver.Rows, error) {
stmt.db.Log("[Stmt.Query]", "ERROR!")
return nil, errors.New("Query failed")
}
return nil, nil
return &fakeRows{}, nil
}

func (stmt *fakeStmtExt) Close() error {
Expand Down Expand Up @@ -364,14 +368,26 @@ func (stmt *fakeStmtCtx) QueryContext(ctx context.Context, args []driver.NamedVa
stmt.db.Log("[Conn.QueryContext]", "ERROR!")
return nil, errors.New("Query failed")
}
return nil, nil
return &fakeRows{}, nil
}

func (stmt *fakeStmtCtx) ColumnConverter(idx int) driver.ValueConverter {
stmt.db.Log("[Stmt.ColumnConverter]", idx)
return driver.DefaultParameterConverter
}

func (rows *fakeRows) Columns() []string {
return []string{"id"}
}

func (rows *fakeRows) Close() error {
return nil
}

func (rows *fakeRows) Next(dest []driver.Value) error {
return io.EOF
}

func convertValuesToString(args []driver.Value) string {
buf := new(bytes.Buffer)
for _, arg := range args {
Expand Down
34 changes: 28 additions & 6 deletions tracer_test.go
Expand Up @@ -24,13 +24,12 @@ func TestTraceProxy(t *testing.T) {
t.Fatalf("Open filed: %v", err)
}

_, err = db.Exec(
"CREATE TABLE t1 (id INTEGER PRIMARY KEY)",
)
_, err = db.Exec("CREATE TABLE t1 (id INTEGER PRIMARY KEY)")
if err != nil {
t.Fatalf("create table failed: %v", err)
}

// test for transactions
err = func() error {
tx, err := db.Begin()
if err != nil {
Expand All @@ -40,12 +39,31 @@ func TestTraceProxy(t *testing.T) {
if _, err := tx.Exec("INSERT INTO t1 (id) VALUES(?)", 1); err != nil {
return err
}
rows, err := tx.Query("SELECT id FROM t1 WHERE id = ?", 1)
if err != nil {
return err
}
for rows.Next() {
}
rows.Close()
return tx.Commit()
}()
if err != nil {
t.Fatalf("do failed: %v", err)
}

// test for rollback
err = func() error {
tx, err := db.Begin()
if err != nil {
return err
}
return tx.Rollback()
}()
if err != nil {
t.Fatalf("do failed: %v", err)
}

if err := db.Close(); err != nil {
t.Fatal(err)
}
Expand All @@ -56,9 +74,13 @@ func TestTraceProxy(t *testing.T) {
regexp.MustCompile(`tracer_test.go:27: Open 0x[0-9a-f]+ ` + timeComponent),
regexp.MustCompile(`tracer_test.go:27: Exec 0x[0-9a-f]+: CREATE TABLE t1 \(id INTEGER PRIMARY KEY\); args = \[\] ` + timeComponent),
regexp.MustCompile(`.*:\d+: ResetSession 0x[0-9a-f]+ ` + timeComponent),
regexp.MustCompile(`tracer_test.go:35: Begin 0x[0-9a-f]+ ` + timeComponent),
regexp.MustCompile(`tracer_test.go:40: Exec 0x[0-9a-f]+: INSERT INTO t1 \(id\) VALUES\(\?\); args = \[1\] ` + timeComponent),
regexp.MustCompile(`tracer_test.go:43: Commit 0x[0-9a-f]+ ` + timeComponent),
regexp.MustCompile(`tracer_test.go:34: Begin 0x[0-9a-f]+ ` + timeComponent),
regexp.MustCompile(`tracer_test.go:39: Exec 0x[0-9a-f]+: INSERT INTO t1 \(id\) VALUES\(\?\); args = \[1\] ` + timeComponent),
regexp.MustCompile(`tracer_test.go:42: Query 0x[0-9a-f]+: SELECT id FROM t1 WHERE id = \?; args = \[1\] ` + timeComponent),
regexp.MustCompile(`tracer_test.go:49: Commit 0x[0-9a-f]+ ` + timeComponent),
regexp.MustCompile(`.*:\d+: ResetSession 0x[0-9a-f]+ ` + timeComponent),
regexp.MustCompile(`tracer_test.go:57: Begin 0x[0-9a-f]+ ` + timeComponent),
regexp.MustCompile(`tracer_test.go:61: Rollback 0x[0-9a-f]+ ` + timeComponent),
regexp.MustCompile(`.*:\d+: ResetSession 0x[0-9a-f]+ ` + timeComponent),
regexp.MustCompile(`.*:\d+: Close 0x[0-9a-f]+ ` + timeComponent),
}
Expand Down

0 comments on commit cc329a7

Please sign in to comment.